What the Archicad API can't do.
Tapir uses the Archicad API that Graphisoft publishes for add-ons, and covers all of it that can be a JSON command. What that API does not offer, Tapir cannot offer either. This page lists what people ask for that is not in it, with what to do instead.
The list.
It is also what Tapir would like the Archicad API to offer, and the list Tapir sends to Graphisoft. Every row was checked in the headers of the Archicad API DevKits of Archicad 25 to 30, the versions Tapir is built for; the Evidence column names the headers and functions.
| What people want | Status | What to do instead | Evidence | Issue |
|---|---|---|---|---|
| Elements | ||||
| Explode an element into its parts, as Edit > Reshape > Explode into Current View does | Not possible | Nothing yet | No explode function in ACAPinc.h, the ACAPI_*.h headers or the ACAPI:: modules (AC25–AC30). APIAttrCreationMethod_Explode (APIdefs_Attributes.h) only tells how an attribute was created. |
– |
| A camera with a name of its own, or an axonometric camera | Partly possible | Name the Camera Set the camera is in. For an axonometric view, set the 3D window with Set3DProjectionSettings. | API_CameraType holds only head, camSetGuid and perspCam (API_PerspCamPars); only API_CamSetType has a name (APIdefs_Elements.h, AC25–AC30). |
#2192 |
| Remove one direction of a trim between two roofs or shells that trim each other | Workaround | Remove the trim with RemoveElementTrims, which removes both directions, then trim the other direction again with TrimElements. | The only removal function, ACAPI_Element_Trim_Remove (guid_Element1, guid_Element2) (ACAPinc.h, AC25–AC30), “removes trimming connection between the elements” and takes no direction or trim type. |
#2365 |
| Navigator and views | ||||
| Add an item to a publisher set | Not possible | Add the items in Archicad's Organizer, then publish the set with PublishPublisherSet. | The ACAPI_Navigator_* functions (ACAPI_Navigator.h; APINavigator_*ID in AC25–AC26) create views and folders on the View Map (ACAPI_Navigator_NewNavigatorView, ACAPI_Navigator_CloneProjectMapItemToViewMap) and layouts (ACAPI_Navigator_CreateLayout); ACAPI_Navigator_SetNavigatorItemPosition moves items on the Layout Book and the View Maps only. None adds to a publisher set. |
– |
| Change, rename or create a stored Model View Options combination | Partly possible | Read the combinations with GetModelViewOptionDetails; change the options of the current window with SetViewOptions. | ACAPinc.h has only ACAPI_Navigator_ModelViewOptions_Get, _GetNum and _Search (AC27–AC30). In AC25–AC26 the combinations are attributes (API_ModelViewOptionsID); not checked there. |
#781 |
| Project and files | ||||
| Undo or redo, as Edit > Undo does | Not possible | Most Tapir commands change the model in an undo step, so the user can undo them in Archicad; the command reference says which cannot be undone. Save the project with SaveProject before a script that may need to be taken back. | ACAPI_CallUndoableCommand (ACAPinc.h) only opens an undo step; APINotifyElement_Undo and APINotifyElement_Redo (APIdefs_Callback.h) only notify. No function runs an undo or a redo (AC25–AC30). |
#1820 |
| Copy and paste through the clipboard | Workaround | In a project, copy 2D elements to another view with CopyElementsToDatabase. Between projects, save the elements as a module with SaveAsModuleFile, place it in the other project with CreateHotlinkNodes and CreateHotlinkInstances, and, to keep plain elements, BreakHotlinkNodes. | No clipboard, copy or paste function in ACAPinc.h, the ACAPI_*.h headers or the ACAPI:: modules (AC25–AC30). |
– |
| Merge a file into the project, as File > Interoperability > Merge does | Workaround | Place the file as a hotlink with CreateHotlinkNodes and CreateHotlinkInstances, then BreakHotlinkNodes. | The project functions (ACAPI_ProjectOperation_*; APIDo_*ID in AC25–AC26) open, create, save, close, print and publish, but none merges. ACAPI_Element_Merge_Elements is the Merge of construction elements, not of files. |
– |
| Documents and publishing | ||||
| Read the rows of an Interactive Schedule | Not possible | Build the list yourself: find the elements with GetElementsByType and read their values with GetPropertyValuesOfElements or GetQuantitiesOfElements. The built-in scripts Room Finishes Schedule and Material Take-Off build such lists. | A schedule appears only as a Project Map item (API_ScheduleNavItem, APIdefs_Navigator.h), a view node (API_ViewNodeSchedule) and a window type (APIWind_IESCommonDrawingID, APIdefs_Database.h). No function returns its rows (AC25–AC30). |
– |
| Export an Interactive Schedule | Workaround | Put the schedule in a publisher set in Archicad once, then publish that set with PublishPublisherSet. | No schedule export function (AC25–AC30); ACAPI_ProjectOperation_Publish (APIDo_PublishID in AC25–AC26) publishes a whole publisher set. |
– |
| Archicad's interface | ||||
| Read the text of the Session Report window | Not possible | Open the window for the user with ChangeWindow and windowType 'Report' (from Archicad 26). | ACAPI_WriteReport (ACAPinc.h) writes to it and ACAPI_Dialog_ActivateSessionReport (ACAPI_Goodies.h, AC27–AC30; APIAny_ActivateSessionReportID in AC26) opens it; no function reads it (AC25–AC30). |
#1707 |
| Get the outcome of an Action Center check | Partly possible | Run the check with RunActionCenterChecks; Archicad shows the Action Center when it found an issue. For the hotlink check, read the state of each source with GetHotlinkSourceStatus (from Archicad 27). | ACAPI_Window_Check (ACAPinc.h, AC27–AC30; ACAPI_ActionCenter_Check in AC25–AC26) returns only an error code; API_ActionCenterItemID (APIdefs_ActionCenter.hpp) has only APIActionCenterItem_Hotlinks. |
– |
Found something else the Archicad API cannot do? Say so in an issue, with the DevKit headers you checked, and it is added here. Open an issue