Problem with DXF import changing dimension layout and value

I have generated a DXF file from Creo Parametric that I am trying to bring into Rhino. The problem is that the dimensions I have added do not show the same in Rhino as they did in Creo originally. The layout of the dimension is changed, and even worse the actual dimension value has changed.

I’ve opened the same DXF file in AutoCAD and in Rhino. AutoCAD pulls it in perfectly–it looks exactly like the original from Creo. Rhino changes every dimension in the DXF file. I’ve also tried DWG and several different revisions (R14, 2000, etc.) of each type with the same results.

I’ve included a screen shot from both AutoCAD and Rhino to illustrate. The black background is the file opened in AutoCAD and the Gray one is from Rhino. The dimension is supposed to be 3". If I add another decimal place in Rhino, it shows as 2.2". If anyone has any ideas what Rhino is doing here, I’d love to hear them. It has been quite frustrating.

Thank you!

Hi Adam - can you post the dxf? Or send it to tech@mcneel.com? We’ll take a look.

http://mcneel.myjetbrains.com/youtrack/issue/RH-31542

thanks,

-Pascal

I looked at the dimension in the file attached to the bug report in AutoCAD and Rhino.

The difference in the value Rhino displays and the value AutoCAD displays is the result of the way a graphics preview anonymous block is stored in the file and used by AutoCAD to display the value but is not used by Rhino.
That is a mechanism from early AutoCAD that, I think, was first meant to save time when reading a file with lots of dimensoins. It’s also useful to programs that read dxf files and can’t do the evaluation from the geometry in the dimensions.

Rhino evaluates the dimension according to the geometry and the dimension style that the dimension uses.
In this case, the display block doesn’t match the evaluated dimension. The actual distance measured by the dimension is 0.3558. The dimension style settings that affect the evaluation (style: Dimstyle_1) are Measurement scale factor: 4.0 and Precision 0.0
So when the dimension is evaluated in Rhino, the distance is multiplied by 4 to get 1.4224 and rounded to one digit past the decimal point to get 1.4"

The same result is gotten by re-evaluating the dimension in AutoCAD. The least invasive way I can think of to do that is to copy the dimension, which results in the copy displaying 1.4"

An application writing a dxf file can put what ever it wants in the display block and that will be what is shown by AutoCAD until the dimension is re-evaluated. Unless we were to change Rhino so that it displayed the value based on the display block rather than the geometry and format settings, there’s no way to guess what some program might have put in the display block.

It would make the value pretty unstable to do that since anything that caused enough change in Rhino to cause an evaluation would change the value down the road. I can see that this can be frustrating in this case, but I think it would be as frustrating in other cases if we were to attempt that change.

Lowell

@lowell

Thanks for the detailed explanation. At least I now understand what is going on.

I’m bringing in these files from other CAD software to use as illustrations in a simple fabrication or assembly instruction. The ‘real’ dimension is less important to me in these cases (a common workflow for me).

Is there a way to display a dimension-like value but override the evaluation in Rhino? I some cases, I have overridden the value in the other CAD software, although I don’t think I did that in the sample file. I supposed if there is some way to stroke the lines and just have the value as text instead of being interpreted as a dimension?

Also, what about the display and location of the value? You can see in the images above that the Rhino import isn’t very appealing and does not match the exported DXF. I can’t seem to follow the logic as some dimension match exactly (arrow in/out, leaders, etc), while others look like the above example.

Thanks again for looking into this further!

In the properties for the dimension, you can just replace the <> that is there and represents the evaluated value by any text.

[quote=“aeromorrison, post:4, topic:25298”]
Also, what about the display and location of the value? [/quote]
Rhino doesn’t automatically place the text outside of the lines when the text is too big. You can turn on the points and manually place the text somewhere else.