The Global ARCHICAD Community

Stay informed. Get help. Share your knowledge.

Everything about GDL - Doors/Windows/Objects/Stairs etc. (Example: I created an object that prints an error message in 3D all the time, please help!)

Moderators: Karl Ottenstein, LaszloNagy, ejrolon, Barry Kelly, gkmethy, Gergely Feher

By Tom Baines
I am just wondering how a get the curtain wall settings in my GDL script.
I would of thought I could just use
CWPANEL_WIDTH for the width of the panel
CWPANEL_HEIGHT for the height

But this seems to just set the panel width to 0?

Do I need to use the call command to obtain properties??
By ProdLib_Bart
So the issue that I have is that the panels created using GDL aren't following the grid limitations.

In the image the blue line is the end of the grid. My goal is to have the last panel end where the blue line (grid line) ends.

What parameter do I need to use to get the panel to follow the gridlines?


I used CWPANEL_WIDTH instead of A in the cprism_ that defines my panel but that just gave an error.

Looking for help :)
By ProdLib_Bart
Is there seriously no-one who can help me here?

I'm just surprised as I find it hard to believe I would be the only one facing this problem/having faced this problem :)!

Bumping this in the hope someone who can help me sees this.
By ProdLib_Bart
EDIT: Solved it myself :)

For anyone else or future reference, this is the code that does the trick:
Code: Select all cprism_ side_mat,side_mat,side_mat,4,zzyzx, AC_PanelCoords[1][1],AC_PanelCoords[1][2],15, AC_PanelCoords[2][1],AC_PanelCoords[2][2],15, AC_PanelCoords[3][1],AC_PanelCoords[3][2],15, AC_PanelCoords[4][1],AC_PanelCoords[4][2],15
Last edited by ProdLib_Bart on Wed Nov 22, 2017 10:16 am, edited 1 time in total.
User avatar
By Barry Kelly
I believe it just uses 'A' & 'B' for the width and height.

Create a slab and save it as a 'Custom Curtain Wall Panel' then open its script.
You will see it uses MUL commands to scale the width, height, depth passed to the panel from the curtain wall.

For example I saved a slab 900mm wide 2000mm high and 100mm thick.
In the 3D script I found.
Code: Select allmulx A/0.9 muly B/2.0 mulz ZZYZX/0.1
So what ever the widths are in your curtain wall scheme the panel will be stretched to suit.
The short length for the last panel (say it is 200mm wide in your curtain wall) will force the script to multiply the width of your original panel by a factor of 0.2/0.9 - so it will nicely fit in the 200mm space.

I hope I explained this OK.

So the trick is having these MUL commands at the beginning of your script (where the sizes match your original panel sizes).

By ProdLib_Bart
Thanks for your suggestion Barry.

I will try yours solution first compared to the one I found below your comment and see what results it gives me.
User avatar
By Barry Kelly
It gets more complicated when you have a panel with frames that you do not want to adjust by scale.
i.e. you want to have the frame remain the same size but the panel width reduce.
This would require a more robust solution with the array parameters you have shown.
Then your object would use those values instead of 'A', 'B' & 'ZZYZX'.

But there must be something setting the overall sizes ('A', 'B') into that parameter array.

It is all very complicated if you ask me.

By ProdLib_Bart
Excellent point.

I didn't think about that at all.

Seems like for my purposes I do need to use the array solution :(.

But thanks for your input!
By sinceV6
There's actually not much information about this, so a lot has to be learned by digging around. The MULs should be enough if your panels will be in line with the curtain wall dimensions and boundaries. If you need specific edited boundaries (for example, a slanted boundary edge), you'll need to dig into the coordinates array you posted.

To further understand this, use "open object by subtype" and open "cw Generic Panel" for a simple script example on how it works, and build your panel in GDL using the "GS Curtain Wall Panel" subtype, as it will populate the required parameters for the script. You'll basically let AC give you the panel coordinates and use them to create the panel boundary.

Best regards.