License delivery maintenance is planned for Saturday, July 26, between 12:00 and 20:00 CEST. During this time, you may experience outages or limited availability across our services, including BIMcloud SaaS, License Delivery, Graphisoft ID (for customer and company management), Graphisoft Store, and BIMx Web Viewer. More details…

Archicad C++ API
About Archicad add-on development using the C++ API.

Is it possible to transfer View Maps between projects using only the public Archicad API?

anicatpro
Participant

Hello Archicad community,

I’m developing an Add-On for Archicad (still relatively new to API development) and researching the feasibility of creating a tool to transfer View Maps between different projects. After reviewing the public API documentation, I have a fundamental question:

Is this even possible to implement using only the public Archicad API?

Here’s what I’ve found so far:

  1. The Navigator API module provides access to View Map elements

  2. There are functions to read view parameters (ACAPI_Navigator_GetNavigatorView)

  3. Methods exist to create new views (ACAPI_Navigator_NewNavigatorView)

However, I have concerns about:

  1. Whether these functions are sufficient to fully recreate view structures

  2. How to properly transfer all related data (layer settings, scales, etc.)

  3. The limitation of working with only the active project

Specific questions:

  1. Are there any "showstopper" limitations in the public API for this task?

  2. Has anyone attempted something similar and can share their experience?

  3. What are the potential pitfalls I should anticipate?

I’m particularly interested in whether this is fundamentally possible with public API, or if it requires access to internal APIs. Any advice or pointers would be greatly appreciated!

Thank you in advance for your help.

3 REPLIES 3

It is possible to create views with the API. It should also be possible to create them with properties extracted from another project, but I can see a potential problem. A 'view' captures the state of some part of an Archicad project, e.g. a plan view of a specific storey or a section cut through the model. The content of every project may be different, e.g. storeys, sections, worksheets etc, so the views from one project may have no equivalent in another project. Are you expecting these projects to share a common structure?

Ralph Wessel BArch
Central Innovation

Yes, the projects are based on a shared structure. In our workflow (residential complexes split into sections), each section is developed in a separate file using a common template.

Over time, the View Map structure evolves, and syncing it manually across multiple files becomes time-consuming and error-prone.

My goal is not to transfer views directly but to automate the recreation of equivalent views in other projects, based on a reference file — including all relevant parameters like layer combinations, scale, model view options, etc.

Are there any examples of reading a view with all its parameters and creating a new one programmatically using the public API?

I don't think there are examples for everything concerning navigator items like views, but it's best to study examples like "Navigator_Test" to get an overview. In general:

- Use ACAPI_Navigator_GetNavigatorItem to collect information about a view from the source project. You will need to store/persist this data somehow if you want to replicate it into other projects, e.g. serialise it into a file.

- Use ACAPI_Navigator_NewNavigatorView to create a new view in the target project. In some cases this returns APIERR_BADNAME, in which case you need to follow up with ACAPI_Navigator_ChangeNavigatorView to set all the view properties.

- You may need to use ACAPI_Navigator_SetNavigatorItemPosition to move the created view to the required position in the navigator hierarchy.

Ralph Wessel BArch
Central Innovation