V1.6: MeasureIt - measurement tools

Hi, I’m trying to practice with this awsome tool. I have a problem… I don’t know if depends on my bad usage. When I use more cameras, render result of measureit always depends on first camera I created. If I change main camera(ctrl+0), main render result is ok but not measureit one that depends on first camera I created. What do you say? Thank you very much! samuele

I don’t think adding an ‘a’ or ‘b’ to an add-on’s version setting is possible. The last time I checked it only accepted three integers (e.g. 2, 7, 9). I wanted to save bumping the version number up to 1.71 for the next update I have planned.

I found the number panel layout a bit confusing myself. I considered adding some labels, but wanted to keep the panel short enough so that it would still be mostly visible for people with a cramped 3D Viewport.

I am not sure I understand. I tried to reproduce the issue with a quick test and the measurements showed up in renders after switching the active camera from the first camera to a second I added. When I switched back from the second camera to the first camera the measurements still worked.

@ Antonioya

Thanks so much for bring this good addon for the measures in Blender !

@ nBrun
Thanks for Update!

Measureit changed it’s behavoir whereby I have to enable show all measures to see any. As well color the measure of area changes the color of the text and color the text changes the color of the area. None of these problems are really a problem up until now though. Thanks

I haven’t run into either problem myself. If it helps with troubleshooting, I don’t think this has anything to do with recent changes to the code. I didn’t make any changes to how colors get drawn in the viewport and the only change I made to the visibility code was adding a check for custom layers. If you are able to find the cause, be sure to post it here or on the official Blender developer site.

Oh, sorry nBurn, it’s a my mistake. I had to select the correct camera for render from Scene panel in Properties panel…

Thank you very much for your job.

Samuele

Quick question, is there a way to summarize segments between different objects or do I have to merge them all together to get a totals?
Really awesome plugin btw, using it alot right now since i´m planning to build the upper floor in our new house that will be arriving shortly.

What I´m trying to calculate is the amount of “studding” (is the english word according to the internetz) needed for the inner walls .

Honestly I’m not very familiar with MeasureIt’s sum feature. From a quick look at the code it seems like you would have to merge all the objects together to get segment sums working in this case. MeasureIt’s sum data appears to be stored at the object level inside a custom “MeasureGenerator” property that gets added to each object you create measurements for and these MeasureGenerator properties can’t access data from other MeasureGenerator properties.

It also (annoyingly) appears that once you merge objects with Blender, only the “active” object retains its MeasureIt data, the objects being merged into the active object lose all their measurements. :frowning:

Yeah, those are my findings as well, havent looked at the code though but what you describe is what I´m experiencing, which is kinda annoying. But I think I´ll just make a wall at a time and then sum them up manually.

First off, have to say this is a fantastic addon. Many thanks to Antonioya and nBurn for the work on it.

I’d love to see the ability to measure angles between three objects in the same way that we can between verts. This is essential for getting angle data during animations. I know that Leon Cheung was able to get this to work by using the AnimAll addon. That’s a good temp solution. But I’m looking for a solution that works with objects, which are easier to animate and support links, bones, etc.

nBurn, you’ve looked at the code. Is this something that’s possible?

Hmm… probably not with the current version. Technically possible to add? Maybe, depends on what you’re looking to do. Is it just get the angle between object origins or something else? If it’s just object origins, I think MeasureIt’s “Link” option already has code to measure distance between origins, so it should be possible to rework that to into an additional “Angle Link” option. For stuff like bone joints, I can’t say. I’m not familiar with the Python side of armature data. If it’s possible, it may require substantial changes to the code as MeasureIt wasn’t intended for working with non-mesh objects.

We’re using Blender to visualize vehicle designs. One of the vehicles uses crank shaft pistons. The engineering team would like to see the rotation of the crank arms in degrees throughout the visualization.

Ideally, I’d rig the mechanics of the vehicle so that the pistons are working properly. Then I’d parent three nulls to the crank shaft, apply MeasureIt, and monitor the angles during the animation.

I’ve tried applying MeasureIt to the vertices, but it doesn’t see bone-driven deformations nor does it see shape key deformations. Leon Cheung’s solution of using AnimAll does work, but it requires us to manually key the vertex positions. That means we can’t rig and drive the animation using object-based controllers, which is how we’d normally do things. So I was curious to see if MeasureIt could be modified to work with objects to derive angles.

Having MeasureIt work with object origins should be possible, but it might be a while before I could add a feature like that.

Would the angle measurements need to be rendered or is just having the angle measure visible in the 3D View enough? I have an experimental version of an older add-on that works with object origins and can show changes in angle measures during animation, but the measurements aren’t renderable.

I don’t anticipate needing to render anything. Having them visible would be a great start. Our ultimate goal is to export the data to a .csv file for every frame in the animation. Right now, I’m copying the data manually, so being able to see it would be a huge time-saver. But in the long run, we’re looking for a way to export the data to a .csv so that we can animate and pass off to the engineering team for evaluation very quickly.

Ugh, that sounds extremely tedious. No programmers in the engineering department? I’m not very familiar with how frames are processed in Blender, but that sounds like something that could easily be done with a few print statements.

Anyways, I found my script that can do measurements on the fly, but it’s not very user friendly. It was an experiment based on another script I released several months ago called “Exact Offsets”. It can only do one measurement at a time (distance with 2 points or an angle with 3 points) and blocks a lot of Blender functionality while it’s running.

It is basically the same as the Exact Offsets described in this wiki page with the addition of allowing the arrow keys for moving between animation frames
LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW
and ALT+A for playing and pausing animation (assuming you have the default hotkeys).

Download link

Unfortunately not, although that’s something that we’re hoping to resolve this year. Along those lines, if you’re open for freelance work, let me know. There may be an opportunity to farm out work in the near future.

That’s awesome. Thanks so much! I’ll give it a run-through and ping you if I have questions. :slight_smile:

This addon is awesome. It does exactly what I was looking for. Great work! Is it possible in Blender to assign the numeric readout to a variable and then make that variable visible to other tools? I’m thinking about how I work with data via Blueprints in Unreal. I can make the variable’s data available to other tools, blueprints, etc. If I can get this data out of your addon, I should be able to hack a python script together that exports that data to a csv file.

Well this is weird, not sure how I missed the new replies here. I was sure I checked this thread a few days a go.

Hmm… Possibly? I’m busy for the next month but, if it’s small projects (say less than a day of work) I might be able to do that. I don’t have much (any?) experience doing freelance/contract work though.

No problem :slight_smile:

There’s no blueprints/node-editor based code interface for Blender I know of, I think you would have stick with Python. If you don’t need too many frames worth of animation data you might be able to get by launching Blender from a Command Prompt and just using basic Python print statements (this version should work). Output from print statements will go to the Command Prompt window/console and you can copy and paste from there. Python does have a bunch of stuff built in for working with CSV files, but it’s somewhat complex to set up.

No worries. And thanks much for the reply. I’ve been on vacation for the past 2 weeks so am just now getting back to work.

Cool. PM me after the new year and we can explore the idea further.

This is a fascinating solution. I tried the CMD approach. It definitely works, but on a 60 frame animation, I came away with 175 lines of measurements. I’m not entirely sure how/when the print statements are being written, so I’d definitely want to tie this to a CSV exporter that worked on a per-frame basis. That way, there would always be a consistent and predictable output. I managed to hack something together by grabbing bits and pieces of other code. The fact that you can print statements means I should be able to parse that data and store it in an array. I’ll play with it and see what I can come up with.

Many, many thanks, nBurn! I sincerely appreciate all the help!

No problem. I’ve also been away with holiday stuff in addition to work.

I’m not sure how busy I will be through the next few weeks, but will try to check back.

The print statement was being called every time Blender’s “event loop” was updated (i.e, every frame change \ button press \ mouse movement).

Hmm… I just did a quick check and only calling the print statement when the frame changes is far less work than I thought. Try this version, it still uses regular print statements, but it should only print to the console when either the current frame or number of reference points changes.

I can’t remember if Python has a fully dedicated array library, but the Python “list” type is close enough it will probably work for what you’re trying to do.