2025-07-22 05:49 PM
Hello everyone,
I'll start by shortly describing my goal:
Mapping information received from the skins of composites into properties.
For example i have a composite, containing a skin with the building material "Concrete", then i want to set my property "construction trade" to "Concrete" (Loosely translated from german, but i hope the idea comes across)
So Archicad doesen't allow to acces the skins of composites in the calculations. Only in the lists, so i turned to the python API if i can maybe achieve this in there.
My general idea:
1. Check which BuildingMaterials are contained in the composites
2. Check the Composites against a property of each Wall that contains the name of the composite
3. Map the property "construction trade" based on the Building materials inside of the composites.
I'm fairly optimistic about step 2 and 3, as I have done similar things based on classifications. But currently I'm stuck at step 1 🙂
I found GetCompositeAttributes that should be able to extract the skins of the composites in my archicad project. but i need the attribute IDs as inputs:
{ "command": "API.GetCompositeAttributes", "parameters": { "attributeIds": [ { "attributeId": { "guid": "29EE690D-089C-4573-94C8-DEC75CFA0950" } }, { "attributeId": { "guid": "00000000-1111-2222-3333-000000000000" } } ] } }
is there any way to get the guid's for all attributes currently in the file, similar to GetAllElements? The other way would probably to export the xml of my composites and Buildingmaterials and search through them inside the script. but this would be less stable, as it couldn't pick up changes in the template file.
Thanks for any ideas and input!
Solved! Go to Solution.
2025-07-23 12:32 AM
Use Tapir and their "GetAttributesByType" command.
2025-07-23 12:32 AM
Use Tapir and their "GetAttributesByType" command.
2025-07-23 08:08 AM
Hi Jonas,
there's also a command with the same name in the native AC Python interface.
https://archicadapi.graphisoft.com/JSONInterfaceDocumentation/#GetAttributesByType
Difference seems to be the following:
Since you probably only need the GUIDs it might be easier to just use the native interface.