I'm also interested. For example you have the python script then you'll just replace some part of it with the name of the zone then it will update automatically then that would be great. 😁
Here how's (in detail) I created a percentage of site areas. (See attached).
But yes, Archicad allows you create a new property, but you can not capture a single zone area "value" as a stand alone property.
I'm not an expert in Archicad - but I think this is where the problem lies,
.i.e. given if this is what your wanting to achieve. But I'm happy to be proven wrong.
I spoke to someone who is very experienced with Archicad, and he could not come up with an easier way, and in his own work does not use this method to setup schedules because he runs into this exact problem.
I hope this is what your after, and hope it helps!
Python scripts are run manually
Using a Python script:
1. create a custom property under the zone group -- named zone percent and set classification to all zones.
2. run Python script
from Archicad import ACConnection import Archicad import sys conn = ACConnection.connect() assert conn acc = conn.commands act = conn.types acu = conn.utilities zonePercentId = acu.GetUserDefinedPropertyId('Zones','zone percent') zoneAreaId = acu.GetBuiltInPropertyId('Zone_MeasuredArea') zones = acc.GetElementsByType('Zone') totalArea = 0 for zone in zones: value = acc.GetPropertyValuesOfElements([zone.elementId],[zoneAreaId]) totalArea += value.propertyValues.propertyValue.value EPVArray =  for index,zone in enumerate(zones): value = acc.GetPropertyValuesOfElements([zone.elementId],[zoneAreaId]) area = value.propertyValues.propertyValue.value percent = round((area/totalArea)*100) number = act.NormalNumberPropertyValue(percent, type='number', status='normal') EPV = act.ElementPropertyValue(zone.elementId, zonePercentId, number) EPVArray.append(EPV) result = acc.SetPropertyValuesOfElements(EPVArray) print(result)
You could set the sum flag in the percent column and get a total at the bottom, But, while it would be close to 100, it would never display exactly 100 because of rounding. Python scripts have no access to schedule columns or data, nor does the C++ API. You could adjust slightly the numbers in the script to total 100. But probably not a good idea.
BTW -- Adjusting the rounding in the script to 4 places instead of zero got the total up to 99.99 but still not 100%Adjusting the working units similarly to 4 decimal got 100.0000 but now you have four decimal places which does not look good. -- So no solution?
He used an expression to calculate the zone percentage for each zone. The difference was that you have to manually enter the sum of all the zones, taken from the schedule total, into a custom property. The Python script calculates the totals automatically and eliminates the custom property as unnecessary.