The CityGML add-on for Simplebim can be used for converting complex high-detail IFC models into simple and streamlined CityGML models that can be used as part of city models.
This add-on is still under development and still has many shortcomings and bugs. It can be used for testing and we are happy to hear any feedback you may have. However, please read the lists of known limitations and bugs before sending us your feedback at support@simplebim.com. Our main focus has so far been on creating clean and lightweight CityGML models for the outer shell of the building.
The latest version of the add-on is 7.0 Beta4 which expires 30.6.2019. Beta4 requires Simplebim 7.0 SR3 or later.
Please note that Simplebim 5 or 6 is no longer supported, so you need to have Simplebim 7 to run this add-on.
If you don't already have the installer, please let us know that you want to test this add-on and we will send you a download link.
The add-on does not have a separate license, but it has an expiration date after which it will no longer work. This is to ensure that you are using a fairly new beta version. If your version of the add-on expires, please ask us for an update. We try to organize the beta releases such there is no gap between the versions.
You can get our sample model (shown above) for testing here: GettingStarted-CityGML.zip From this model you can generate CityGML LOD1-3 representations without validation or preparation. You can use for example the FZK Viewer for looking at the resulting CityGML files. The installer for FZK Viewer can be found at https://www.iai.kit.edu/english/1302.php
When you start Simplebim after installing the add-on you can verify that it is correctly installed from the Simplebim About dialog. This dialog has a Add-Ons tab that lists all installed add-ons and their versions.
With the add-on successfully installed you can normally import any IFC model or open any previously saved model. When the model is opened you will see a new button in the ribbon on the right side of the IFC export button.
If the model meets the requirements for CityGML conversion (more about that later) you simply click on the button to export a CityGML file. This opens a CityGML Options dialog where you can choose which LoD levels you want to export to the CityGML file. Please note that one CityGML file can contain multiple LoD:s.
The conversion needs to find the outer shell of the building. For this we use all the objects that are recognized as outer walls, door and windows from the viewpoint of CityGML. The reason we also include doors and windows are cases where the doors and windows fill a wall object completely or there is very little geometry left of the containing wall. However, sometimes the resolution works better if you leave out the doors and windows from the outer shell resolution. If you get a funny result with doors and windows included you can try to uncheck the 'Include Doors and Windows in Outer Shell Resolution' box and try again.
The outer shell optimizations are not needed if the model is clean and simple. However, most models are not and you can try if you can get a better version with one or a combination of the optimization options. The Offset Healing is useful if there are small gaps between the objects of the outer shell.
The CityGML preview allows to see the roles of the IFC objects in the CityGML conversion. We apply a automatic detection based on properties defined in the IFC specification and populated my most architectural design applications. You can override this automatic detection using special CityGML properties and the preview shows you the result that is resolved from these two techniques.
You first need to apply the 'CityGML Setup' template that can be found in the CityGML template category. This template is installed with the add-on and it adds the necessary CityGML properties and sets basic validation rules. You can find instructions for applying templates here. You only need to apply this template once for model.
For creating or updating the CityGML preview please run the 'Create or update CityGML preview' tool. You can find instructions for running tools here. You can run this tool again after editing the model in Simplebim for updating the preview to reflect the new situation.
The tool creates a 'CityGML Preview' group under Object Groups in the Objects palette. This group has the different CityGML roles as child groups and the child groups contain all the IFC objects that have been recognized to have that CityuGML role.
Selecting a group will select all the objects in that group and the selection will be shown like any other selection in Simplebim in the 3D, the Properties palette and other places.
The basic level of validation is to find out if objects with the required CityGML roles were found from the model. If not, this is shown using the normal validation system in Simplebim.
The second level of validation is to make sure the roles are assigned correctly, for example that the outer walls don't contain balcony walls, railings etc.
Each IFC building is exported as a separate CityGML building.
In order for a building to be valid it must contain at least one object with the OuterGroundSurface and one object with the OuterRoofSurface CityGML role.
The outer shell of a building is resolved by building storey. Because of this the objects with the outer wall surface, outer window and outer door CitygML roles must together form a closed ring for each building storey of an IFC building.
The automatic detection of the CityGML role uses properties typically found in architectural models. If these are not correct in your model you can use the Property Value Editor workspace in Simplebim for correcting these. Alternatively, if you are the author of the IFC model, you can make changes in your native model. If you are not the author you have the option to communicate the issues to the author using BCF in Simplebim.
These are the properties used for the automatic detection
IFC Object Class | IFC Property or Rule | CityGML Role |
Wall | Building Element Is External = Yes | OuterWallSurface |
Door | Placed in a wall with Building Element Is External set to Yes | OuterDoor |
Window | Placed in a wall with Building Element Is External set to Yes | OuterWindow |
Slab | Slab Predefined Type = ROOF | OuterRoofSurface |
Slab | Slab Predefined Type = BASESLAB | OuterGroundSurface |
Roof | If the roof object has its own geometry, i.e. is not a container for slabs | OuterRoofSurface |
Plate | Placed in a Curtain Wall with Building Element Is External set to Yes and has transparent (not opaque) appearance | OuterWindow |
Plate | Placed in a Curtain Wall with Building Element Is External set to Yes and has opaque appearance | OuterWallSurface |
Member | Placed in a Curtain Wall with Building Element Is External set to Yes | OuterWallSurface |
Applying the CityGML template adds a 'CityGML Object Class' property to all object classes. When you select this property in the Property Value Editor palette it will show all CityGML roles. Setting this property allows you to override the automatic detection for any object. You can for example:
Any objects you exclude in Simplebim will not be used in the CityGML conversion. This is often the fastest way for cleaning up the model. If for example balcony railings have been modeled as walls and are marked as external, you can simply exclude them instead of editing their 'Building Element Is External' property.
Because the detection of the CityGML role is driven by properties you can use Simplebim templates for automating tasks that you find yourself repeating manually. You can find more information about templates here.
Sometimes roofs don't overlap walls but the upper surface of walls forms part of the roof. You can set the 'CityGML PartOfRoof' property to Yes for such walls and their upper surfaces will be also used when resolving the roof.
Usually roofs can be resolved without additional information, but sometimes you need a lower roof to cut a roof that is located higher up, which is not the default behavior.
In the example above the red roof must be marked a a priority roof or it will not cut the roof above it resulting in a outer shell that is too big. You can set the 'C'ityGML PriorityRoof' property to Yes for such roofs.
If the outer shell resolution fails you can model helper objects and use them in the CityuGML conversion. This technique allows you the 'straighten' the building and patch over modeling mistakes, inaccuracies and excess details to get a very clean CityGML output. Below are the steps if you are not the author of the model. If you are the author, you can model the helper objects directly into the native model instead, make a new IFC export and follow only the steps 5-7 below.