2024-08-01 05:45 PM
Has anyone ever scripted any graphing or chart objects that can be used for (say) space type analysis with Schedules?
I am working on secondary school extension and key to the process is analysing use of space to identify waste or surplus.
The principle is that new building costs a lot more than (simple) internal reorganisation so by identifying underused areas and optimising the layout, the amount of new space that end users want can be minimised.
Key to this is analysing percentage use of floor space by room type.
What I have in mind is a 'hollow pie chart' like this:
Showing percentage of total area that specific space types comprise.
I currently have a number of formatted schedules showing the difference between existing and new:
A chart would be a much better way of displaying the information though.
It can be done with properties or zone classifications or some other means, but it needs to work with renovation status and I think would probably be a really useful thing for many of us to have.
If no-one has anything like this already (I can't be the first person to think of it) any pointers in terms of making one would be great.
My GDL skills could do with a bit more development!
Operating system used: Mac Intel-based Monterey
2024-08-01 07:02 PM
Great question. It must be possible via GDL.
a similar example are these labels at Enzyme's web shop: https://www.weareenzyme.com/shop-details?recordId=recotXseXRWjaz6i4
2024-08-01 07:14 PM
That's a great find - thanks!
2024-08-01 07:19 PM
Creating the GDL graph is straightforward enough I think, it's defining the total percentages and converting them into angles to create traditional pie segments.
I can define segments and subtract the centre circle from each. That's probably easier for me to script than the final quadrant shape.
Even the labelling ought to be fairly straightforward.
It's the process of reading the Zone Categories and calculating their total areas that I'm not sure how to approach.
2024-08-02 03:43 AM
Your pie chart object won't be able to read information from the schedule or the zones, unless you start messing around with external text files.
Or manually add the values to your pie chart object.
Someone here had a good idea.
Export the schedules to Excel and create the pie chart there.
Maybe that is an option?
Barry.
2024-08-02 11:16 AM
The new zone label is a GDL object, so there must be a way to access zone data. If there's a GDL method for it, it ought to be possible.
I did think about creating a property to duplicate the measured area (I've added 2 for data to compare areas with the BB98 standard) but I don't know how you read object properties in GDL either!
Excel is a workaround but it's not what I want and it's of limited use. The whole point of BIM is to make work more efficient. The minute you are relying on links with external applications which aren't live - that principle fails.
Even if it is live, it's not the same as having all the data in one place.
It would be really nice to be able to automatically add this object to a sheet with schedules and have the data presented automatically.
Even in terms of design, if when we produce a layout we find out that actually 35% of our area is circulation, it should make us question the design.
Similarly if we suddenly realise that our Plant Room is only 1.5% of the total area, we will know right away that it's too small.
If BIM is supposed to have tools that can help us with design (and increasingly we are becoming much more concerned with data analysis to assist us) this sort of thing is the low-hanging fruit isn't it?
2024-08-02 12:00 PM
Labels are attached to elements so can read information from those elements.
Objects can't be attached to elements (except in special circumstances like windows/doors to walls).
Even then your object would have to read information from all of the zones, not just one.
It might be possible with an add-on, as I am sure I have read about add-ons that can gather zone information and provide % break-downs.
Properties with expressions may be of some use.
You would need a 'overall area' property that you can associate to all zones and you can give this a 'default' value that ca be used.
Then each zone has another property with an expression that can calculate the percentage in relation to the overall area.
You would need a different property for each type of zone - i.e. circulation space, plant room, etc so you can schedule and total those percentages.
The major downside though is you can set a default for your overall area property, but it can not be locked in each element.
Therefore it can be changed per element (zone) and if the overall size changes you can alter the default property, but it will not pass on the other zones unless you reset them to use the default again.
So it really doesn't work very well.
Barry.
2024-08-02 12:29 PM
You can't access schedule data from GDL so the business or reading object data from all zones is the tricky thing.
The object would in effect have to cycle through multiple objects and read the data.
I don't know if this is possible.
Creating properties to read things like Measured Area and Zone Category is easy enough.
Creating properties to calculate the Total area and percentages depend on the the problematic GDL-data-collection-from-multiple-objects requirment.
You can use Find/select to manually add data to property fields - for example manually adding total areas, and then access that data via GDL, but that introduces an unhelpful level of variability/unreliability into the process.
It sounds like something that ought to be achievable with Python, but I'm not sure if there is a mechanism which allows Python to output values readable by GDL.
2024-08-02 03:35 PM
I spent a little time looking into this following your link and your advice, and Archicad's Python Connection can do exactly what is needed - i.e. collect a list of the zones and calculate the total GIFA and the zone total. It can also set property values in objects.
In fact it might be easier to get the Python script to calculate the percentages as well.
I guess it could be done in 3 steps (insert object, run Python script to push data to it, update object to create graph with data) but it seems doable if a bit messy.
And I have to learn Python...
I wonder if anyone has some kind of workaround?
2024-08-03 01:53 AM
You could probably get the output from the accessories that use zones.