Collaboration with other software
About model and data exchange with 3rd party solutions: Revit, Solibri, dRofus, Bluebeam, structural analysis solutions, and IFC, BCF and DXF/DWG-based exchange, etc.

Calculating Multi-surface walls

Anonymous
Not applicable
Hi All,
first I would like to complement Eric Wilk from FC-CADlink on his
most helpful book "ARCHICAD - From CAD to quantity survey".
If any of you are still baffled by the "Calculate Menu (now hidden...)" -
This is a real Eye-Opener!!!

Now to the trick question (see attached image):

A. In a simple wall, I calculate the plaster finish area by using the
"Surface A" reference Quantity.

B. However, in a situation like a Tiled Bathroom Wall, the surface is
covered by TWO different Materials:
- The Tiles themselves, to the hight of 1.8m, which I calculate as
"Length" X 1.8
- The remaining Plaster above the Tiles

The Plaster surface is a "Left-Over" quantity (The tiles have a
"fixed height" of 180cm, The wall hight, however, can change from
situation to situation), and by reason, should be derived by calculating
a subtraction:

Total of "Surface A" - Area of Tiles = Plaster.

In my database, I set up a Tile component which has a ratio of 1.8
to the length of a wall, and a Plaster component with a ratio of 1 to
"Surface A".

The question is this:
How can one create a "Property Object" (that can link to such walls)
in which both components are "read" from the database and then
have a GDL script within the Property Object subtract "Tiles" from
"Plaster"?


My GDL is a bit rusty, but I am sure it can be done via the Properties
script and a database lookup (I Better get that new book by CADImage!)

Ideas?

PS: The issue is calculating the quantities per a SINGLE wall, so
using an extra "tile" object or wall is not the solution.

Thanks -

Gil Rosenthal

Question-1.jpg
11 REPLIES 11
Barry Kelly
Moderator
You have already answered your own question.
In your property script you need ... Surface_A-(LENGTH_A*1.8 ).

This of course will assume that every wall you run the sript on will have 1.8m tile height.

You can tell your script to only look at walls with a certain composite name.
That way you can creat composites for walls with and without tiles or even ties of different heights.
But still run the script on all walls and only get the output you want.

Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Anonymous
Not applicable
Hi Barry,
Thanks for the suggestion!
I am having a really bad day here, clients, phones etc,
and trying to sus the GDL syntax from my very limited
sources is driving me nuts!
My old GDL cookbook 2 seems to skip the issue of
Property Scripts and the GDL manual is plain too cryptic...

Can you post a user-friendly sample of how this is scripted
in practice?
I'm sure once someone shows me the way to go about this
it would seem obviously simple to me too 🙂!

Thanks -

Gil
Karl Ottenstein
Moderator
Hi Gil,

The GDL manual does not give adequate examples of Property Scripts, however there are sample scripts in the standard library that you can study. And, of course, you have Eric Wilk's book.

Something else you might consider for the example you give is to use a Component Schedule, which schedules the pieces of a complex profile wall (or composite). If your tile is always at the same height, as you say, model a tile skin in your CP wall, and place your vertical stretch lines in the plaster area above it - so that the tile is always that high yet the wall can be made taller.

If the numbers coming out of the Component Schedule (set up in your Project Map) are not exactly what you need, you can publish the schedule as a text (CSV) file which can be linked to an Excel spreadsheet, or Access/Filemaker database for further computation and reporting - most of which is easier than writing Property Scripts.

Of course, if you want an entirely-inside-ArchiCAD solution, then back to GDL and property scripts and Eric's book. 😉

Cheers,
Karl
One of the forum moderators
AC 27 USA and earlier   •   macOS Ventura 13.6.6, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Karl Ottenstein
Moderator
This post from 2003 may be helpful...

http://archicad-talk.graphisoft.com/viewtopic.php?t=755
One of the forum moderators
AC 27 USA and earlier   •   macOS Ventura 13.6.6, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Anonymous
Not applicable
Hi Karl!
Thanks - I actually came across this post a couple of hours back 🙂
What's up with Djordge these days? Still in Dubai?

In this case I need the "entirely-inside-ArchiCAD solution", as I am
linking AC to a national Quantity Survey Database, using the exact same
Chapters & Keys - so it is rather easy to import hundreds of list items
(via excell) into the AC database, including prices as they update quarterly,
and also in the end, outputting the same keyed quantities from AC back
into the national DB - to be incorporated in the more conventional format,
if required.
Err... the database has over 3000 line items!!!

SO -


Here is the obvious and dead simple solution (See attachments in this and following posts):

1. All Components are linked into a Property Object from my custom DB.
2. In case of the Plaster component (the one from which we need to subtract
the area covered by the Tiling), the trick is as follows:
- Link in the Plaster Component as usual
- Change the "Proportional With..." field from "Surface A" to "CUSTOM"
- In the CUSTOM field, type the following expression:
WALL_SURFACE_A-WALL_LENGTH_A*1.8

3. These Global parameters were found at the end of the GDL manual, and
I am certain that other formulas can be developed from here (see
attached)

4. Shown is the end result after importing in Excell. Notice the total
partition surface as calculated for the cement bricks (The test wall was 200/300cm)

Cheers,

Gil
Question-1-Answer1.jpg
Anonymous
Not applicable
...and the GDL Globals that make this work,
found at the end of the GDL manual.
I am sure more uses can be found for these 🙂
Question-1-Answer2.jpg
Anonymous
Not applicable
... and the end result, ported to Excell.
Barry Kelly
Moderator
I don't actually use the database to calculate the quantities - maybe I should look into that.

I attach a property script to the walls.
In that script i would just use the formula ...

plaster_area = WALL_SURFACE_A - (WALL_LENGTH_A * 1.8 )

Then I would output the "plaster_area" value to a text (tab or comma separated file) file in the format that I want.

Not sure if this helps or is heading you in a different direction.
But it looks like you got the result that you want.
Barry.
One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11
Anonymous
Not applicable
I don't actually use the database to calculate the quantities - maybe I should look into that.
Barry, I can't disclose the full method devised by Eric Wilk,
at least not without his consent, but using Excell allows one
to very easily manage whole datasets within the AC database.
One should definitely look into that!
A very similar method is used by CADimage for their Keynotes solution!
I attach a property script to the walls.
In that script i would just use the formula ...

plaster_area = WALL_SURFACE_A - (WALL_LENGTH_A * 1.8 )

Q: Which part of the GDL object do you use to input the script?
I tried various places (Master Script, Property Script...), but
non returned the result needed.
Do you set up specific parameters ("plaster area") in the parameters
screen?