License Delivery maintenance is expected to occur on Saturday, November 30, between 8 AM and 11 AM CET. This may cause a short 3-hours outage in which license-related tasks: license key upload, download, update, SSA validation, access to the license pool and Graphisoft ID authentication may not function properly. We apologize for any inconvenience.
Libraries & objects
About Archicad and BIMcloud libraries, their management and migration, objects and other library parts, etc.

Editing 2D objects changes their proportion

Anonymous
Not applicable
Hi everyone,

I'm trying to use Archicad objects as 2D symbols, that is, when I modify one instance of it, the changes will propagate to all other instances (same as blocks in autocad or symbols in vectorworks).
The problem I'm having is as soon as I modify the object in a way its overall encompassing shape (bounding box) gets bigger or smaller, the updated instances keep the previous overall shape and the object gets distorted on its proportions.
Is there a way to avoid that? Perhaps on the GDL editing dialogue? I've played with the parameters but it didn't really work.

Many thanks in advance.
4 REPLIES 4
Laszlo Nagy
Community Admin
Community Admin
I have not tried this an I might be wrong but here is what I think:
When you place an instance of a GDL Object, it will have an A and B size, length and width, respectively. If you now change the definition of the GDL Object and modify the A and B sizes in the definition, that will not change the A and B size of the place instances and this is what causes the distortion.
You can try opening the GDL Object for editing, and on the Details page click the Compatibility Options button. There the first pair of radio buttons control this behaviour. You can try switching to the legacy method and see if that helps.

If that doesn't solve it, maybe you can try creating the geometry of the object in such a way that its dimensions are independent of the A and B values. I would try to do this by scripting the geometry (not using the 2D Symbol of the object). and adding you own 2D hotspots to the object.

I hope this explanation makes some sense.
Loving Archicad since 1995 - Find Archicad Tips at x.com/laszlonagy
AMD Ryzen9 5900X CPU, 64 GB RAM 3600 MHz, Nvidia GTX 1060 6GB, 500 GB NVMe SSD
2x28" (2560x1440), Windows 10 PRO ENG, Ac20-Ac27
Barry Kelly
Moderator
What Laszlo has suggested may work but it sounds to me that you really want to place a Hotlinked Module rather than trying to adjust the GDL scripts.
When ever you update the original source module all the Hotlinked instances will update as well.

Your elements can be 'saved as' MOD (module) files and these can be opened and edited in a separate Archicad if need be.
You can then hotlink them into any other file.
Modules can be 2D and/or 3D elements.

Barry.
One of the forum moderators.
Versions 6.5 to 27
i7-10700 @ 2.9Ghz, 32GB ram, GeForce RTX 2060 (6GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Anonymous
Not applicable
Hi,
If you are drawing the content in the 2D symbol and there is nothing in the 2D script then:
it will scale to the A and B values.(Width and Length, Dimension 1 and Dimension 2 Values)

If you add FRAGMENT2 ALL,0 to the empty 2d script, then it will be just the size of your original drawing (it will ignore the bounding box and place your object at its original size.

if you only want specific layers shown(out of the 16 layers available in the 2D symbol) have a FRAGMENT2 command for each layer rather than all,
i.e.
FRAGMENT2 1,0 to show layer 1
FRAGMENT2 4,0 to show layer 4
FRAGMENT2 5,0 to show layer 5

the internal layers of the 2D symbol is just a way to store 16 different drawings in the same object, Archicad does not use them in the project.

if you want something scale sensitive then...
different drawing shown for different scales:
if GLOB_SCALE >= 100 then FRAGMENT2 1,0
if GLOB_SCALE >= 50 and GLOB_SCALE < 100 then FRAGMENT2 2,0
if GLOB_SCALE < 50 then FRAGMENT2 3,0

or more information shown when the scale increases
FRAGMENT2 1,0
if GLOB_SCALE < 100 then FRAGMENT2 2,0
if GLOB_SCALE < 50 then FRAGMENT2 3,0

you can move the 2d elements in the 2d symbol to the different layers the same way you normally do in archicad, using the the layer drop down in the info box.(the default layer you draw on is layer 1) the above example uses layer 1 for drawings 1:100 or higher, layer 2 for 1:50 and layer 3 for 1:20 scale drawings. GLOB_SCALE is the built in variable that tells GDL the scale of the current view, as an integer i.e. at 1:100 GLOB_SCALE is 100.




If there is script in the 2D Script area then:
if there is a Mul2 A/1.50000, B/2.500000 in the 2D script, then this will also re-scale your object to the bounding box.(the numbers dividing the A and B will be the original size of the object) delete the Mul2 line from the code to fix this.



There are many other things that might affect the scaling of the library part as listed by Lasz and Barry.
Karoly Horvath
Advocate

Using modules is a good idea, however, an object sometimes is more suitable (for example for a simple symbol), so I am glad I finally got the answer to how to not scale my objects when I re-save them.
Thanks.

ArchiCAD since 4.5

Windows, Mac