Archicad Python API
About automating tasks in Archicad using the Python API.

Need Guidelines to choose between C++ or Python

Rajesh Patil
Expert

Hello everyone,

I am willing to know which platform (C++ / Python or Both) is better to learn if I am willing to customize Archicad and will be more flexible in coming years for software development?

For e.g. at present I am facing simple problems like : If I apply a property like "No. of bricks to perches" for basic wall, easily I can extract the information in schedule but if I am using in Composite / Complex profile as wall's structure then I am unable to extract the above information hence becoming helpless. So can I solve such problems by using Add-on's via C++ or Scripting through Python?

I know this could be a very basic or may be a weird question but I really need a good suggestion to start with on right track.

 

Rajesh Patil
AC 09-27 | INT | WIN11 64
Dell Inspiron 7591, Core i9, 9880H 2.30GHz, 16.0GB, NVidia GeForce GTX1650, 4.0GB, SSD Internal 500GB, Dell SSD External 250GB
7 REPLIES 7
scottjm
Expert

Learning C++ to be able to write your own API is going to be give you access to much more data and customisability with how you use Archicad.  However C++ and writing API is a very steep learning curve and the reference guides are quite difficult to comprehend at first.

 

Python on the other hand is very accessible and easy to learn, but the implementation for doing anything productive with python in Archicad is basically non-existent.  The way the python addon works is it is interacting with Archicad C++ API functions, and the ones currently included in Archicad give you access to only a very small amount of the data available, so you would end up needing to write your own C++ API to get python to do what you need to do.  It's very frustrating.

 

If you have not learnt a programming language before Python is definitely going to be easier to start with.

Scott J. Moore | Fulton Trotter Architects | BIM Manager, Associate, Architect
Since AC13 | Current versions AC23.7000 & AC26.5002 | BIMCloud Basic | Python, GDL, VBA, PHP, SQL, CSS
Certified Graphisoft BIM Manger (2022)
Win 10, i9-9900K, 32GB, Quadro P2200, 500GB NVMe

As a self taught Programmer, i never thought that C++ was a difficult language to learn. There are hundreds of instructional videos on YouTube that will walk you through it. However, Graphisoft wraps much of their C++ functions in their own classes (structures & definitions) and explains little. Most of those are wrapped in legacy C language code libraries. None of which is explained. Yes they do give excellent examples in their API and you can trace back their definitions in VS but only to the C library level which is never explained. Their are many anomalies and quirks in their structures and functions which are not necessarily wrong but are misleading because of lack of documentation. IOW, It is mostly up to you to trace functions in order to get a good understanding of the API.

 

Now ,if you are a 10-20 year veteran of the C++API, --- no problem.  But starting now is very difficult for all but a skilled programmer. You might have noticed that any complicated questions regarding the C++ API are almost never answered on this forum or any other, since Graphisoft lost some key personnel. So your on your own.  Not impossible, but requires a tremendous amount of time and dedication. Frankly, as compared to other architectural APIs, the Graphisoft version is 20 years out-of-date and a mess. Generally not worth the effort unless you have a lot of time on your hands. But, if you do, it can be productive and your best bet.

Python would be a easier route and more productive, but is too limited in scope. In fact, the 23 beta version was more useful than today's version -- several steps backwards due to a fatal  flaw in the original design. IMNOHO - Graphisoft was on the right track with the new Python API, But stopped development when they lost their key personnel. Its future is unknown, so I  would not rely on it for anything important.

There have been some blogs of late, that Graphisoft recognizes the problem and is working on updating the APIs and that we might see the start of it in 27. I personally don't believe it -- more marketing hype?

My recommendation is that the C++ API AddOns offers the most value, particularly if you have some knowledge ( or can learn) C++ and can learn to cut/paste from the Dev kit examples. Python is too limited and its future is unknown as to, whether it will even be expanded and made productive.

 

In reality, only Graphisoft can answer your question because only Graphisoft knows what their future plans are. I doubt if they will, other then regurgitate  the same old hype -- do a search????

Gerry

Windows 11 - Visual Studio 2022; ArchiCAD 27

Hi Gerry,

Thanx a lot for giving me such clear and true picture. At present I dont know even basics for C++ nor python, hence got confused on the right way to select and start.

So in short you mean to say some how Graphisoft is not putting the required efforts to make software strong enough for the future needs.

Well in that case I have to do little bit more research to find the better track to fulfil my expectation from the software. 

Rajesh Patil
AC 09-27 | INT | WIN11 64
Dell Inspiron 7591, Core i9, 9880H 2.30GHz, 16.0GB, NVidia GeForce GTX1650, 4.0GB, SSD Internal 500GB, Dell SSD External 250GB

Yes, I never learned any programming language till date but now finds helpless at certain points when it comes to the data extraction for various reasons to fulfil the project needs.

Rajesh Patil
AC 09-27 | INT | WIN11 64
Dell Inspiron 7591, Core i9, 9880H 2.30GHz, 16.0GB, NVidia GeForce GTX1650, 4.0GB, SSD Internal 500GB, Dell SSD External 250GB
poco2013
Mentor

You might want to explore use of the interactive schedules -- all three types -- and the export of their data to a excel spreadsheet(s) and then do your data manipulation there. This is the traditional method used by larger firms using Archicad. Also Python scripts have seamless access to excel spreadsheet data so it would be very easy then to write back to properties. Much more work and more to keep track of but very straight forward to do.

Gerry

Windows 11 - Visual Studio 2022; ArchiCAD 27

Yes at present I am using the Interactive Scheduling's all three levels and found that they don't work beyond certain level. The data once extracted to excel format then can be easily modified or processed for further needs but then its not the way BIM should fulfil our needs hence willing to turn on this side of C++ or Python.

Rajesh Patil
AC 09-27 | INT | WIN11 64
Dell Inspiron 7591, Core i9, 9880H 2.30GHz, 16.0GB, NVidia GeForce GTX1650, 4.0GB, SSD Internal 500GB, Dell SSD External 250GB

This is really devastating for me.

I come from odd 20 years developing in another Nemetschek CAD (Pascal, Python) and was more than happy to get into Archicad, given the elegance of the architectural features, only to discover that there is nearly no support for automatisation. Python? That is only a name on a list of features. No substance.

 

And now I learn that it's not even on the radar?

How on earth can this application compete on a market where expandability is light years ahead? In both Vectorworks and Revit you speak of what you CAN'T do. Not what you CAN do.

 

I'll give a try to C++. I tried it already twice for that other Nemetschek application. It isn't easy, but given that there is no choice, that will perhaps help.

 

And if there is no documentation, well, what about setting on the task to do it together? 

 

_c_

Previous sysop of Vectorlab (developing wiki for VW), now down.

 

_c_