This outline summarizes the major new features and changes in the API available with ARCHICAD 23.
- Technical changes
- [Windows only] ARCHICAD 23 uses the Visual Studio 2017 toolset for building Add-On projects.
Do not worry, you can use Visual Studio 2019 also for building! Make sure to set “Visual Studio 2017 (v141)” as platform toolset in the project properties! - [macOS only] Minimal macOS version is 10.12.
- GRC resource converter is not supporting anymore GBMP or using .bmp files with GICN resources.
This also means that GICN resource does not handle the transparent RGB values anymore, because those values were required only for the BMP image handling. Make sure to delete those values from the GCR files to eliminate compilation issues! - ACAP_DLL.apx and related mechanisms have been removed.
- Attribute index references are replaced with the new
API_AttributeIndex
type. So now it’sInt32
instead ofshort
.
- [Windows only] ARCHICAD 23 uses the Visual Studio 2017 toolset for building Add-On projects.
- New functionality
- Beams and Columns are now hierarchial elements like Curtain Walls, Stairs and Railings (they consist of a single or multiple segments).
- Openings / Engineering voids can be created with the new Opening tool. Use
API_OpeningType
structure to access the parameters of the Openings andACAPI_Element_GetConnectedElements
function to get the connected elements. Currently adding new elements to an opening is not available via API, and the opening tool cannot penetrate objects, it’s a limitation. - Classifications & Properties for Building Materials similar to Element Classifications and Properties
- Dialog Manager modul was extended with a Browser control. Use the
Browser
keyword in your'GDLG'
resource in the GRC file and theDG::Browser
C++ class to use the new control.
- Modified/new functions
GSHandle
parameters areGS::Array
-s in many functions. This change causes many compilation errors during migration of old Add-On code to API 23, but don’t panic, it’s easy to fix them! Here’s an example:
Before AC23,ACAPI_Element_Delete
could be used only by usingGSHandle
.API_Elem_Head** elemHead = (API_Elem_Head **) BMAllocateHandle (sizeof (API_Elem_Head), ALLOCATE_CLEAR, 0); (*elemHead)[0].guid = element.header.guid; ACAPI_Element_Delete (elemHead, 1); BMKillHandle ((GSHandle *) &elemHead);
Since AC23,
ACAPI_Element_Delete
can be used by usingGS::Array
. This example initializes theGS::Array<API_Guid>
with initializer list (C++11 feature).ACAPI_Element_Delete ({ element.header.guid });
- Before ARCHICAD 23 if
ACAPI_Element_Delete
was called withnullptr
(emptyGSHandle
) then the current selected elements were deleted. Since ARCHICAD 23 if you callACAPI_Element_Delete
with an emptyGS::Array
then nothing will happen, the newACAPI_Element_DeleteSelected
function can be used to delete the current selected elements. - Before ARCHICAD 23 if
ACAPI_Element_Select
was called withnullptr
(emptyGSHandle
) then it deselected all previously selected elements. Since ARCHICAD 23 if you callACAPI_Element_Select
with an emptyGS::Array
then nothing will happen, the newACAPI_Element_DeselectAll
function can be used for this purpose. - Use the new
APIAny_GetHierarchicalElementOwnerID
function to return the owner of the child element in a hierarchical element structure (like Curtain Wall, Stair, Railing, Beam, Column etc.).