We value your input!
Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey

Libraries & objects
About Archicad and BIMcloud libraries, their management and migration, objects and other library parts, etc.

Can module ID be used to modify objects within module?

[Basic question about what can and cannot be done with GDL:]

One can have an object display as text the full ID of an object within a module instance, that is to say the module ID followed by the object ID.

Can one script an object that placed within the module will change its surface material depending on the module ID? That is to say, in a module instance with ID say 'ST' the object surface would be steel, in some other instance with ID say 'BR' the object surface would be brick.

My first thought was that modules were calculated only once on the host file, and that's what got displayed in all its instances —but actually one can have objects displaying the ID of the module instance, and even the floor it is positioned on. So maybe one can request that info and use it to modify accordingly an object within that specific module instance? In theory one could even use that object for SEO within the module to cut some other element differently depending on what the module instance ID is?
[Edit: I have a vague reminiscence of having once asked the same for zones, and being told that for that kind of thing you need add-ons —that the object can't use the request results as variables for the 2D/3D script; my understanding then or my reminiscence now may be wrong.]
5 REPLIES 5
Apparently it cannot. My attempt failed, and the GDL Reference Guide says

REQUEST ("ID_of_main", "", id_string)
For library parts placed on the floor plan, returns the identifier set in the tool’s settings dialog box in the id_string variable (otherwise empty string). Not working on annotation elements (e.g. Label, D/W Marker, Zone Stamp). Expression returns 0 and contains dummy return values (emtpy string or 0) if used in parameter script, causing additional warning.

REQUEST ("Full_ID_of_parent", "", id_string)
For annotation elements linked or hotlinked on the floor plan, returns all identifiers (Master ID) of the linked modules and the parent library parts’ identifier set in the tool’s settings dialog box in the id_string variable (otherwise empty string). Expression returns 0 and contains dummy return values (emtpy string or 0) if used in parameter script, causing additional warning.
JaseBee
Advocate
I have built my own custom labels, all of them are programmed to read the element ID and look for special characters to apply formatting rules...

Anything before a "|" character is ignored by the standard label, and everything after "-" is only shown below a certain scale. And they remove any instance of "#"

That way if I have a module in my project I finish it's master ID with a "|", only the text following that character (the actually object ID) is displayed on the plan. And it's easy to 'fake' if other stuff needs to be associated with the module.

The "-" is for labelling types of things for example "WC-01" would show up in a detail drawing, however only "WC" would be present on the floor plan.

Finally the "#" is for excluding things from the Interactive schedules (all of my schedules contain the rule - full element id does not contain "#")

Took a little bit to setup, but I find it works well.

Hope that helps.
AC 24 5004 AUS
iMac OSX (10.13.6) 4.2ghz i7
8gb ram/8gb vram
davidstonearchicad21
Contributor
I need some assistance on this very topic.

What you're describing sounds exactly what i'm trying to achieve but thus far haven't been able to reverse engineer or understand the code required.

Very simply I'm trying to display only the element ID (without Hotlink ID) in the host file with a label from within a HL module (hotel with repeated units, floor tags for bathroom bedroom kitchen). The shape of the label is no trouble and my coding skills to get me this far are getting good, but i can't work out from the documentation, or even find the relevant information to enable me to do this.

I have a feeling the answer lies in a REQUEST which stores the string in a parameter, which can then be output in 2D with either a text2 or in a paragraph.
AC24



2 x Xeon E5-2667 v2 (16c/32t @ 3.3-4.0 GHz)

64Gb RAM(ECC) Quad channel 1333Ghz (next upgrade 1866Ghz)

Nvidia GeForce GTX 1080 Ti 11Gb

500Gb 840PRO SSD, 3 TB HDD (next upgrade PCIe NVMe SSD)
Get just ID...not the "hotlink and element ID" with a text label.

Piotr
JaseBee
Advocate
Piotr is correct, in newer versions (maybe 20 onwards) you have the ability to schedule module id's element id's or both (also call them up with the basic autotext label)
AC 24 5004 AUS
iMac OSX (10.13.6) 4.2ghz i7
8gb ram/8gb vram