Inserted block 1000 times larger than expected

@jeremy5
with your workaround here and the workaround about the missing export texts, it turns out that when I reinsert the adjusted block it it redefines all the existing block instances 1000 times smaller, and the newly inserted block instance has a transformation of 1000.
This is a huge mess because I have many instances in many files, that would need to be replaced.
Which again brings us to the dilema between the problem being on the exporting or on the insertion or somewhere else…

After a few more tests, it seems that Rhino does two separate things in the process of inserting a block in the layout:

  1. it converts the block definition’s units to the model units (i.e. if the block is in mm and model units is m, then it converts the block to m, without transformation),

and then;

  1. it scales the block instance to transform the model units into the layout units.

When exporting the block, Rhino simply exports the block definition (i.e. without the step two of transformation of the instance, which was space or canvas related), which makes sense.

The problem happens when a block is created in Layout. Somehow, its block definition takes the model space units and not the Layout units, but the block instance created has no transformation. If the model space units are different than the layout, when the block definition is exported, it will use the absolute value of the layout but in model units, without any conversion or transformation.
The problem then occurs when the block is inserted and the new block instance suffers the step 2 (above) transformation, becoming 1000 times larger than designed (in the case of m versus mm). It gets even more confusing if there is already a block instance that has no transformation.

Therefore (I am hoping it is that easy :smiley: ), there are two solutions:

  1. when creating a block in layout, Rhino should, unbeknownst to the user, scale (transform) the resulting block instance in relation to the models space, as if it had been inserted from an external file;
  2. when inserting a block, Rhino should convert the block definition units to the units of the space the instance is being inserted in, without any transformation.

I would like to hear from Rhino (@wim) what do they think of this because this is really a problem.

Here are the tests I did to get to this conclusion:

Summary

A. Open a new file Large, Meters

  1. In model space, draw a circle with 0.01m radius,
  2. place a text with a redefined text style with 0.01 on the circle
  3. Save as “Done in meters.3dm”

B. Open a new file Large, Millimeters

  1. In model space, draw a circle with 10mm radius,
  2. place a text with a redefined text style with 10mm height on the circle
  3. Save as “Done in millimeters.3dm”

C. Open a new file Large, Meters

  1. Create a layout,
  2. insert “Done in meters.3dm” as a block. It looks in the right size but… the transformation is 1000
  3. insert “Done in millimeters.3dm” as a block. It looks in the right size but… the transformation is also 1000 but the text is a 1000 times larger.

D. Open a new file Large Millimeters

  1. Create a layout,
  2. insert “Done in meters.3dm” as a block. It looks in the right size and the transformation is 1, but text is 1000 times smaller
  3. insert “Done in millimeters.3dm” as a block. It looks in the right size and the transformation is also 1.

E. Inside the file C:

  1. In layout, draw a circle with 10mm radius,
  2. place a text with a redefined text style with 10mm height on the circle
  3. create a new block “done in layout m-mm” with the previous elements
  4. from model space, export the new block
  5. go to layout, insert the block exported, redefine existing block. the original instance will stay the same the new instance will have a 10000mm radius
  6. open the file “done in layout m-mm.3dm”, the circle will be 10m

F. Inside the file D:

  1. In layout, draw a circle with 10mm radius,
  2. place a text with a redefined text style with 10mm height on the circle
  3. create a new block “done in layout mm-mm” with the previous elements
  4. from model space, export the new block
  5. go to layout, insert the block exported, redefine existing block. the original instance will stay the same the new instance will have a 10mm radius
  6. open the file “done in layout mm-mm.3dm”, the circle will be 10mm

here are the files:
230326 A block done in Meters.3dm (37.6 KB)
230326 B block done in Millimeters.3dm (37.3 KB)
230326 C LargeMeters w Inserted blocks.3dm (57.9 KB)
230326 D LargeMillieters w Inserted blocks.3dm (59.1 KB)
230326 E block done in Layout m-mm.3dm (35.6 KB)
230326 F block done in layout mm-mm.3dm (27.9 KB)

PS. What is happening with the text is I am not quite sure but I think it is related to the issue that the size of the text in layout is somehow related to that of the model space (not the most clear link in Rhino)… come to think of it it may be the origin of all these convoluted conversions and scales…