Getting BIM data into Unity (Part 3 - Exporting a Schedule from ArchiCAD)

This is part 3 of a series of posts about getting BIM data into Unity.

In the first two posts, we introduced the basic of getting an ArchiCAD and Revit model into Unity. We hinted on the option of actually parsing more data from Schedules. This is what we’ll discuss in the next few articles. However, beware that this requires some scripting afterwards. Not too complex, but required anyway.

We start with ArchiCAD (but Revit will be discussed in a follow-up article, promised).

Preparing an ArchiCAD Schedule for use with Unity

Basic Objective: We will collect information from our BIM model into a table (schedule) for export. If we add the ID of the element in the first column, we can use that information to map the data from the table to the entity.

In ArchiCAD, there are three types of ID to identify individual objects in a project: the ID, the guid and the IFC guid.

There are two IDs that are set automatically and over which you don’t get any control. They are guaranteed to be unique and stable and are of primary importance in any collaborative BIM-based workflows, as they will be used to attach comments and the trace reports and exports back to the model.

There is an internal Unique ArchiCAD ID, which gets exported as the “batID” in IFC files. This is the real ID of the element. For compatibility with IFC, ArchiCAD also generates an IFC ID which fulfils the same function, but which has a different format when compared to the internal ArchiCAD ID. They both are long strings of unreadable text and are not meant to be used by the end user directly. They are all statistically unique, hence the term “globally unique ID”. Normally there would be no two items anywhere in the world that would receive the same identifier. And you can take this literally: we talk about IDs for anything: a object, a software application, a fridge, an item you would buy in a store etc… if they would ever get such an ID.

But there is also a user-editable ID string which you can set for any object. It can be anything and as such is up to the user to be defined. You’d better think of it as the name of the object. It can be something meaningful (e.g. D.02.05 for a door on the second floor with number 5) but there is no constraint.

This last one is used as the element name in the C4D export, but beware that there is no guarantee that they will actually be unique.

Ensure all elements have their own (unique) ID

It is in your best interest to ensure that no two elements get the same ID. There is a nice, slightly hidden tool in ArchiCAD, called the ID Manager, which you can use to automatically assign IDs to elements, based on certain patterns.

Document > Schedules and Lists > Element ID Manager…

Ensure that All Types are included, set the ID to “Unique ID for Each Element” and only add Element ID to the criteria.

The ID format can be very simple. You can define up to 4 components, based on the Criteria you selected. We’ll only use the Counter ID here (but set it to 001 so the first elements gets ID 001 instead of 000.

You can also manually edit them. This is easiest to do in a Schedule, which acts (almost) as an spreadsheet. Just make any kind of Schedule and add the ID as a field. This is en editable value and by making a nice list (e.g. by floor and by type or room relation), you can start typing them directly into the schedule.

Select any of the entities and check its properties. You'll see the ID in the Tags and Categories pane.

Create the Schedule in ArchiCAD

At lease, create a list of Walls, Floors, Doors, and Windows. You could make a full list of “All 3D Element types”, if you want.

Add some identifying field to the schedule. At least, ensure the ID is included. I’ve added Type, Home Story and the External IFC ID, as it will come in handy later on. Add some other fields too, such as Net Volume and “Building Material / …”. Those displayed in Blue are directly editable in the Interactive Schedule and you can highlight any element in plan view when you select it in the schedule.

With ArchiCAD 19, the list is slightly different. Here you have the “Full Element ID” instead of ID and “ArchiCAD IFC ID”, which you should probably include. The External IFC ID stays empty and should only be used with imported IFC entities. The Unique ID is the actual ArchiCAD guid.

Type and Library Part Name are good to have.

Export the schedule as a Tabbed text file or an Excel Workbook. It’s probably best to export to Excel and clean up the data. E.g. our locale uses “,” to indicate decimal fractions, but like most development environments, you’d best replace “,” with “.” which can easily be done with a Replace… operation in Excel.

Beware that the first line of the export contains the schedule title, with the second line the column or field names.


So where are we now? Not that far yet. We have de-coupled our model information from the model geometry. The actual geometry can be transferred to Unity like before (e.g. using the CINEMA 4D Exchange workflow), but since the ArchiCAD Element ID (the short name) is recovered in the process, we can relate all exported entities back to their source and with the information captured in a schedule.

That’s all for now. Misleadingly simple, I think. But there is more to come in the next installment of this series.