2020-08-01 11:26 AM - last edited on 2021-09-15 09:55 AM by Noemi Balogh
2020-08-01 02:28 PM
from archicad import ACConnection conn = ACConnection.connect() assert conn acc = conn.commands act = conn.types acu = conn.utilities # get all zones, assign to `elements` elements = acc.GetElementsByType('Zone') # prop now holds the GUID of the requested property prop = acu.GetBuiltInPropertyId('Zone_ZoneName') # returns a list of all the property values of the elements in question propval_list = acc.GetPropertyValuesOfElements(elements, [prop]) # replace all occurrences of the first string with the second one # (this is just a very basic example, of course you could do # much more sophisticated versions) zonename_to_replace = "Wohnen" zonename_new = "Main Room" for i, elem in enumerate(elements): # propstr holds the actual string of the current zone name propstr = propval_list.propertyValues[0].propertyValue.value # check if we got a match if propstr == zonename_to_replace: # if so, construct a new prop value new_val = act.ElementPropertyValue( elem.elementId, prop, act.NormalStringPropertyValue(zonename_new)) # set the zone name acc.SetPropertyValuesOfElements([new_val])
2020-08-01 02:55 PM
2022-03-22 11:45 AM
Hi,
first of all thanks for sharing knowledge. Really useful for beginner like me.
I tried to run your Zone renaming code but I'm getting error:
Traceback (most recent call last):
File "C:\Users\user\Downloads\zone rename.py", line 28, in <module>
propstr = propval_list.propertyValues[0].propertyValue.value
AttributeError: 'list' object has no attribute 'propertyValues'
What am i dioing wrong?
Using Archicad 24, 6004 and Python 3.9.1. and
Best regards,
Tom
2022-10-24 06:10 PM
Hello runxel,
I am looking for a script, how can I replace zone number actually through a custom property, could you maybe help?