New API features in Archicad 28
This outline summarizes the major new features and changes in the API available with Archicad 28.
System requirements changes
- The deployment target on macOS changed to macOS 11.
Technical changes
- Fundamental built-in properties are no longer accessible from the API. These properties have a corresponding user-level built-in property, which can be used in place of the fundamental one.
- ACAPI::Cutaway::v1::CuttingPlane ⇒ Cutting Plane management has been modernized and more data is accessible now regarding the Cut Polygon.
- Library Management is renewing. The old structures and functions are available, Read more about.
New functionality
- ACAPI::v1::ZoneLabelingSettings ⇒ Get the current state and change the automatic label settings for zones.
- IFCAPI::v1::ObjectID ⇒ New class to identify an IFC entity (e.g: IfcBuildingStorey, IfcBeam, IfcZone, etc.)
- IFCAPI::v1::ObjectAccessor::GetGlobalId, IFCAPI::v1::ObjectAccessor::GetExternalGlobalId, IFCAPI::v1::ObjectAccessor::FindElementsByGlobalId ⇒ IFC entity's GlobalId handlers.
- IFCAPI::v1::ObjectAccessor::GetIFCType ⇒ Get IFC type of an IFC entity.
- IFCAPI::v1::ObjectAccessor::GetTypeObjectIFCType ⇒ Get IFC type of the IfcTypeObject of an IFC entity.
- IFCAPI::v1::ObjectAccessor::GetAssignments ⇒ Get the persistent IFC Assignment Tree.
- IFCAPI::v1::PropertyAccessor::GetPreviewProperties, IFCAPI::v1::PropertyAccessor::GetLocalProperties, IFCAPI::v1::PropertyAccessor::GetAttributes, IFCAPI::v1::PropertyAccessor::GetPreviewClassificationReferences, IFCAPI::v1::PropertyAccessor::GetLocalClassificationReferences ⇒ To get IFC properties / attributes / classification references.
- IFC Hook
- IFCAPI::v1::HookManager::RegisterPropertyHook, IFCAPI::v1::HookManager::UnregisterPropertyHook, IFCAPI::v1::HookManager::RegisterAttributeHook, IFCAPI::v1::HookManager::UnregisterAttributeHook, IFCAPI::v1::HookManager::RegisterClassificationReferenceHook, IFCAPI::v1::HookManager::UnregisterClassificationReferenceHook, IFCAPI::v1::HookManager::RegisterTypeObjectPropertyHook, IFCAPI::v1::HookManager::UnregisterTypeObjectPropertyHook, IFCAPI::v1::HookManager::RegisterTypeObjectAttributeHook, IFCAPI::v1::HookManager::UnregisterTypeObjectAttributeHook, IFCAPI::v1::HookManager::RegisterTypeObjectClassificationReferenceHook, IFCAPI::v1::HookManager::UnregisterTypeObjectClassificationReferenceHook ⇒ To influence IFC properties/attributes/classification references during export.
- IFCAPI::v1::HookManager::RegisterAssignmentsHook, IFCAPI::v1::HookManager::UnregisterAssignmentsHook ⇒ To influence IFC grouping during export.
- Use ACAPI_Hotlink_GetHotlinkStoryInfo to obtain story-related information for hotlinks
Modified/new structures
- API_PropertyDefinitionFilter_FundamentalBuiltIn was removed from API_PropertyDefinitionFilter.
- Tracking::Tracker ⇒ Some member functions (
ToolTipTextRequested
, MouseMoveEventHandler
, MouseClickEventHandler
, and MouseRClickEventHandler
) became private and the class is now documented
- API_BeamSegmentType ⇒ got a new extrusionMaterial member (the material override structure of the extrusion surface)
- Library: following new classes were introduced:
- Text label elements contain frame information: API_TextFrameType, and related new control codes (
API_PrimCtrl_FrameBegID
, API_PrimCtrl_FrameEndID
) for ShapePrimsProc
- new control codes for
ShapePrimsProc
: API_PrimCtrl_BackgroundFillBegID
, API_PrimCtrl_BackgroundFillEndID
to indicate the primitive drawing of the backgroud fill
API_OpeningProjected
is now available in API_OpeningFloorPlanParameters – textContent
in API_ElementMemo is now a GS::UniString*
instead of a char**
handle
- Teamwork access rights has been expanded with
APIKeynotesCreate
and APIKeynotesDeleteModify
- Renamed Design Variant-related teamwork access rights to Design Options:
APIDesignOptionsCreate
, APIDesignOptionsDeleteModify
- API_OverrideRuleGroup represents a named group of override rules
GS::HashTable
key
s and value
s became references (instead of pointers): for (auto it = table.Enumerate (); it != nullptr; ++it)
Process (it->key, it->value);
for (const auto& [k, v] : table)
Process (k, v);
Modified/new functions
Deprecated functions and structures
These functions and structures are currently available, but they are intended to be removed in the future. They will not receive bug fixes and support.
- ACAPI_LibraryManagement_GetLibraries ⇒ use ACAPI::LM::LibraryManager::Modifier::FindLibraries
- ACAPI_LibraryManagement_SetLibraries ⇒ use ACAPI::LM::LibraryManager::Modifier::AddLibrary
- ACAPI_LibraryManagement_ResetLibraries ⇒ use ACAPI::LM::LibraryManager::Modifier::RemoveLibrary
- ACAPI_LibraryManagement_AddLibraries ⇒ use ACAPI::LM::LibraryManager::Modifier::AddLibrary
- ACAPI_LibraryManagement_OverwriteLibPart ⇒ use ACAPI::LM::GSMObject::CopyTo
- ACAPI_LibraryPart_GetNum, ACAPI_LibraryPart_Search, ACAPI_LibraryPart_PatternSearch, ACAPI_LibraryPart_Get ⇒ use ACAPI::LM::LibraryManager::Modifier::FindLibParts
- ACAPI_LibraryPart_GetParams ⇒ use ACAPI::LM::GSMObject::GetParameters
- ACAPI_LibraryPart_GetSection ⇒ use ACAPI::LM::GSMObject::GetCustomSection
- ACAPI_LibraryPart_Create, ACAPI_LibraryPart_AddSection, ACAPI_LibraryPart_UpdateSection, ACAPI_LibraryPart_NewSection, ACAPI_LibraryPart_WriteSection, ACAPI_LibraryPart_EndSection, ACAPI_LibraryPart_GetSect_ParamDef, ACAPI_LibraryPart_Save ⇒ use ACAPI::LM::GSMObject::Modifier
- ACAPI_LibraryPart_GetLibPartRefGuid, ACAPI_LibraryPart_GetLibPartUnIDStr ⇒ use ACAPI::LM::GSMObject::GetUnID
- ACAPI_LibraryPart_GetLibPartLockStatus ⇒ use ACAPI::LM:: LibraryManager::GetTWID
- API_LibPart, API_LibPartSection ⇒ use ACAPI::LM::LibPart and ACAPI::LM::GSMObject
Deleted functionality
- ACAPI_Property_AddProperty, ACAPI_Property_DeleteProperty, ACAPI_Attribute_AddProperty, and ACAPI_Attribute_DeleteProperty functions have been deleted, due to their confusing behavior. If you, for example, want to make a property available to a given element, see the EnsurePropertyExistsAvailableToElement function in the Property_Test AddOn.
- ACAPI_Element_GetIFCPropertyValuePrimitiveType function has been deleted.
charCode
has been deleted from API_TextType
- The ACAPI_MigrationHeader.hpp was removed from the DevKit, because it was meant to make the porting of the add-ons to Archicad 27 easier and give a bit more time to use the renamed functions.