GDL
About building parametric objects with GDL.

Open Source GDL library project

Podolsky
Ace
Hi there,

After long thinking on this subject I would like to hit the new Open Source GDL programming project on this forum. The idea to involve GDL developers worldwide to start building new, independent, international, non-commercial library for all. GDL technology has very strong potential and that is very important part why ArchiCAD as a CAD and BIM system is so unique.

Please read the initial statements of this project:

1. The project is running under the GNU GPL licence. It is based on GDL technology, but not limited by it. Any further translations to different programming languages or use in different CAD systems apart of ArchiCAD are welcomed. Additional C++ programming to improve use of the library parts by making special Add-Ons are welcomed too.
2. Anyone, who is taking part of the project, doing it by their free will and free of charge just following the desire to make BIM world better. Donations, investments and grants for developers are discussible and acceptable.
3. The objects must follow all official GDL standards (like GDL white paper) and Graphisoft recommendations. For example - I like to use uppercase in my GDL script for commands (because GDL manual shows all of them in uppercase). But as soon as GS recommends to use lowercase - my opinion or preferences are not valid.
4. Developed library parts must use standard GS variables names to have full compatibility with standard libraries, distributed with official ArchiCAD releases. As well - to use standard GDL subtypes, as soon as introducing new one is not necessary.
5. All library elements must be compatible with Grasshopper - means that most of calculations (that usually happens in Parameter script) shall happens in Master Script, because Grasshopper is not reading Parameter script.
6. Completed library element must be uploaded to BIMcomponents.com web-site for free access of ArchiCAD users worldwide.
7. Any modification to the library part code must be reflected into the versions text file (or log file), provided with the library element.
8. Library part must be truly international - means that they must have multi-language support.
9. Library objects must be not manufacturer-oriented but building element class-oriented with manufacturer support. For example - instead of having ACO drain element - to have rainwater drain element with possibility to choose ACO from manufacturers list.
10. There is no discussions about leadership of the project. Everyone is equal and differs only by experience - strongest are supporting weakest. I will try to manage this project as long as I can, also I'm willing to open some of my personal developments, but I do not pretend to be head of the project (even if this is my idea).
11. Anyone can be involved into any stage of library part development - starting from conceptual graphical schemes and algorithms ending by writing and re-writing actual scripts.
12. Any object must have textual / graphical description how to use it and YouTube video. The links to the manual must be implemented into the object User Interface.
13. Each object must have User Interface.
14. Common global variables names as for example from Add-Ons or MVO objects - matter of community decisions and consultancy with Graphisoft. After the decision is made - this subject is not discussable without serious technical reason.
15. Every GDL object must be written on as lowest ArchiCAD/GDL version as possible - as soon as needed features allowed to use the version.
16. Developing of the new object is starting by introducing your ideas in the post plus hand-drawn (or CAD drawn) sketches and logical (drawn) schemes.
17. This is not PARAM-O project. PARAM-O can be used as a temporary tool, but because of nature of scripts, generated by program automatically, must be reviewed and rewritten by human to achieve better performance and smaller size of script.

Any comments are welcomed.
89 REPLIES 89
Podolsky
Ace
As a starting point I would like to introduce MVO object that sets Level Of Details global parameter. I took description and images from AEC UK BIM Technology protocol document. It works the same in the most countries - as I know. USA and Singapore are using the same principle (the difference is only that they call LOD100, 200 etc.)
See attached screenshots.
I used ap_LOD variable name - just as analog to gs_... variables (using my initials). But that is not necessary, of course. LOD6 (as built) I didn't include - as this is not making sense in library parts development.
Maybe to replace ap_LOD to just LOD - if this variable name is not reserved. I think it would be nice if any future object would be connected to this variable (or, if LOD object is not presented in the library, to level of details of standard ArchiCAD library instead).
Files are located on Google Drive. GSM, SVG, TIFF and TXT. Any contributions are welcomed - as to clean TIFF in Photoshop for sharpest view, include image file into GSM, review descriptions and images. Also to create multi-language support. File has ArchiCAD 23 version, but can be downgraded to lowest versions.
I'll write later - how I'm usually making multi-language support in UI.

Access on Google Drive is open for modifications.

https://drive.google.com/drive/folders/11057YJzm2GEICTWN7bZnPiuC9_FFZbHi?usp=sharing
I'm so excited for this man. And this will help even myself be more aligned in my code with everyone. Thank you for taking the time to get this started.

I think I might just start by taking your advice!
runxel
Legend
Great initiative.

However a few comments:
• You don't mention where the development shall happen. I strongly suggest that this must take place on GitHub. Ideas can be left here.
• I'm not fond of following the GS standards. They are outdated and I'm not taking part in any cargo cult.
Have you ever opened a GS object? They don't follow the "GDL Standards" themself. Especially talking about the "ALL UPPERCASE" madness.
• "Every GDL object must be written on as lowest ArchiCAD/GDL version as possible" – I mean, there is a lot "possible", but that doesn't mean we should persue this. I strongly suggest that we agree on a certain version that is the last to support. GS themself support only the last 2 versions I think. Anything else makes no sense.
Lucas Becker | AC 27 on Mac | Graphisoft Insider Panelist | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text | My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»
Podolsky
Ace
Great. Just because I'm not using GitHub - I placed the first object on my G Drive. Feel free to open an account for it there and move the file there. We of course can move everything on separate web-site too, but I think the whole idea - to keep discussion here. That it would really open and accessible to anyone.

If you think it's not necessary to follow strictly GDL standard because it does not make sense - I'm some sort with you. We can stick to our standards. As I mentioned before - I like to use all GDL commands UPPER case - because this is how it's written in GDL manual and sometimes it's easy to copy paste command from the manual.
GDL white paper (it's very old document) mentioned, that for example changing variables must not destroy geometry of the object in some cases. Let say if some case you enter 0 and script gives you error etc. - this things must be avoided. Also correct use of variables is important, when for example number with the floating point shall not be equal zero or whole number in IF statements.
Podolsky
Ace
There was a wish on the forum to have section/elevation markers to have control how to show on different stories. Also to change position of section head on each storey. This can be merged with ideas I used for section marker in my own library.
So this is the full list of desired functions:
- Control visibility and position on different floors.
- Change marker style via MVO and by company standards settings. Possibility to choose needed CAD standard from the list (BS ISO, USA NCS...).
- Support USA section marker style - with small handle on one side.

And another wish was for PointCloud object. Users wanted to cut parts of PointCloud within ArchiCAD. We can make new PointCloud tool, that can pick up PointCloud and cut it as anyone wish.

I'll come back later with sketches about these two.
Based on what I'm reading it sounds like we all need to come up with some sketches on how the over all UI should look.
Consistency so we can all copy paste and create all the objects made with the same user interface.
Then once we have that base code all the objects generated will start to fall into place.
Podolsky
Ace
Yes, I think sketches of UI and graphical scheme of object functionality - it is a core of the idea of the object. I also think that any ArchiCAD user (and this forum visitor) can post here his wish and proposal as a description and at least hand sketch of desired object, even if he does not know how to program on GDL.
I think we are on the same page but to clarify I'm not talking individual objects but a standard UI that is the default for any object gets started specifying distances what type of parameters get what type of fields and how they're handled how the pages should be set up if there are pages so on and so forth.

I also think it's not a good idea for people to request wishes in this thread this thread should try to stay solely on the coding of the objects themselves once they've been started.

There is already a wish thread but maybe it would be advantageous for people to request on a separate thread that one of us makes but at the same time lay out some initial parameters of what can be requested so that we don't have a flood of crazy amounts of objects that are duplicates or illogical concepts based on what might already have been requested or suggested.

And I say that because if we allow wishes nobody's going to read the whole thread before adding their wish
Podolsky
Ace
Okey, here is my sketch about point cloud tool. The idea - to have more flexible preview on floor plan and also to have ability to cut part of the point cloud - without using external program for this, following the wish I've found on this forum.
So it can have external cube - that cuts the same way as cutting planes in ArchiCAD (top, bottom, sides). And add as many as needed cube, cylinder and polygon shapes.

See sketch for more details.

I already created the new folder on Google Drive, where information about this tool can go in.