Dimensions with History

Bringing this topic forward to Rhino V6…

Now that history is enabled by default for dimensions created in Rhino, I have a need to generate (lots of) dimensions between two point entities. I am using Grasshopper for my design work but have found that in V6 the dimensions created by Grasshopper do not have the same associative behavior as dimensions created in Rhino. I would love to hear of a way to create dimensions in Grasshopper (and bake them) to have the history functionality respected, if it exists.

I am investigating whether a script of some sort would be possible to create these dimensions with history functionality. @dale, could you explain your comment of “History recording is command-based. Thus, you are (most likely) going to want to do this in a plug-in.” for someone who is not well versed in programming and bring the explanation up to current V6 levels?

I tried using simple command-line based scripts but the selection of the points to create dimensions seem to need a definitive mouse based click selection of the point(s), such that I can’t seem to make use of select commands part way through the dimension command.

Thanks in advance to any contributors!

Hi @metrology,

I’ve moved this to a new topic.

@lowell, is this something you can help with?

@metrology -
The history record that updates Rhino dimensions is written by the Dim command and it has to have some pick information included to know how to extract a point from what ever the dimension is snapped to when it goes to update the dimension.
When you pick interactively with osnaps on, there is some info captured about the object picked and the kind of osnap in force, etc.
This gets a lot more complicated when the geometry is in a detail view and the dimension is in page space because of scaling between the unit systems. So dimensions are harder than many history operations to implement.
The history mechanism is command oriented, meaning that when an input recorded in a history record (the object you snap to) is changed, a special function in the command is called to update the geometry that was previously made by the command.
So you’d have to write a command that could make a history record and could later replay it with modified inputs to make this work. It’s not an easy thing to do.

Thanks for the high level explanation. It sounds like to make a dimension with history without actually picking the points (i.e. providing them via script) would require some good programming skills and good knowledge of how rhino works.

If there are any other options, I’d love to hear about them.