[Wish] Smarter Dimension Annotation (for non XYplane lines)

I just stumped upon this really basic task of annotation the length of edges in a geometry. And as I read through all the past posts I noticed this issue has been brought up many times spanning 8 years.

Most notably this post from 8 years ago and @seltzdesign still struggles with it half a decade later


So current dimention command are painful if the line is not on XY plane, which in real life many geometries are not just a flat XY surface. And dimension is helpful not just for architects to draw floor plans, sometimes designer need to mark the lengths of those lines spanning the 3D space. For a vertical lines, this simple task involes changing viewports, and sometimes stuff are hiding behind other geometries in a heavy scene, you just have to think there gotta be a faster way to do this stay in perspective view. For a line that are not on XYZ plane, getting the length is impossible since Linear Dimension always does projection. OneView is not the solution since noone has that fancy mouse and orginal goal is to stay at the same view angle rather than move around, plus its laggy. @Japhy Macro here seems to work, it really should be a built in function (however computationally keep reseting the Cplane cant be the most efficient way to do it).

I am not suggesting to change the current Linear Dimension command, but rather adding a new Smart Dimension command so task like this can be accomplished rather easily and efficiently. I know the direction of offset can be arbitrary.

Here are some of my suggestions for the algorithm:
Quickly check if the line is on XY YZ XZ plane or Z axis(Vertical),
If the line is on XY plane, Smart Dimension behave the same as default Linear Dimension.
If the line is on YZ or XZ plane, offset the dimension line on the YZ or XZ plane perp to the line.
If the line is floating in space or on Z axis, offset the dimension line on Viewport plane perp to the line.

Alternatively for lines floating in space or on Z axis, if the goal is to keep the discrete vector aesthetics,
Smart Dimension can detect if the viewport normal is closer to the X vector or the Y vector and offset in that respective direction perpendicular to the line. Or simply just offers all four X+, X-, Y+, Y- offset directions as options.

Hopefully this is possible in the next update. My client want to see the length of every edge in a 3D print model and I tried everything but still struggling with this task that seems so simple. Thanks

something like the script in this thread?

DimCurveLength should help in at least some cases.


Hi -

In Rhino 8, you could use the AutoCPlane feature. Simply sub-object select a surface and create the dimension on the CPlane that is created for that surface.

Thanks for the reply. I understand everyone is trying to provide alterantive work arounds, which I have all tried and discussed in the original post. I still hope similar feature would be added in the future. AutoCPlane is quite laggy and my original hope is to not change the view which in this case I have to tweak the view to find the right cplane, so it kinda defeat the purpose. On the other hand, runtime wise it wont be efficient since it is excuting multiple layers of extra tasks to do a simple task.

I just hope the many many posts on this forum before mine, also complainting about the confusions and difficulties of dimensioning a vertical line, could led to some improvement in the future, which just seems like a really simple feature to implement.

And to the reply in the other old post (quoted above) saying that this is just how annotation works, its supposed to be only in 2D. I feel many users on the same boat are not asking to change anything thats already there, but merely adding an extra icon in the tray that dimensions a vertial line or any other nonXY plane lines much faster and easier

1 Like