IFC

  1. FAQ

While reading an IFC file, do you generate and provide also the inverse relationships?

Yes, inverse relationships are calculated just after is file opened.

Can all types of IFC entities of a building model can be created using IFC SDK?

All types of IFC entities of a building model can be created using IFC SDK. Customers have access to all data from IFC file and can fill file with all data, which is described by IFC schema.

Do you support visualization of all IFC BREP/cut planes/extrusion geometry (to device or conversion to shell representation)?

Yes, we support IFC advanced brep from IFC format, ifc faceted brep, Boolean operations and cut planes, extrusions and so on, explicit geometry.

Are Autodesk Civil 3D .dwg files supported to/from IFC? For example, ifc 4x1 alignments to Civil alignments?

Yes, we have tested our alignments implementation with files we get from Civil.

What kind of Boolean geometry kernel are you using?

We have implementation for ODA Facet Modeler, which operates faceted geometry. It’s working also as a part of Drawings SDK, so it keeps Facet Modeler bodies in appropriate state, it controls topology and geometry mainly, more to say just after opening the file if geometry needed we repair incorrect topology in geometry, if can.

We also use ODA Facet Modeler is our base implementation at the moment, but usually it works together with ODA Solid Modeler and particularly for generation geometry for different sweeps of IfcRoad.

Do you support NURBS geometry?

Yes, in our module IfcGeometry we get all data from IFC file and NURBS geometry in particular and convert in to GUI curves, so we support NURBS geometry, yes, and curves, and subfaces.

Is it possible to query .ifc entity geometry without to draw it? For example, create a device and get geometry.

Yes, you can access any data from IFC model using one of API provided. So, you don’t have to draw it, you can just get .ifc composing points, extrudes, explicit or implicit geometry and work with it without visualization and vectorization.

What are the standard formats such as STEP, STL, that Open IFC can be converted to?

At the moment Open IFC Viewer can convert to .pdf, but using Visualize SDK IFC files loaded in Visualize database can be converted to STL and many others formats. So, conversion can be performed programmatically using Visualize SDK.

Do you have any plans for certification within buildingSMART?

Yes, the certification is assumed in future.

When should I use Common Data Access vs C++ late bound?

Common data access way to data is high level to late bounding and it can be used without binding to any format: IFC or not. For example, you can access to common data access tree hierarchy without knowledge of any IFC classes.

What advantages does the dynamic binding give me? Do you have an example where early-binding does not work?

When we started to support loading of IFC 4 we cannot generate geometry in early-bound style, because we have to work with different set of classes. So IFC wall in 2x3 scheme is different class of IFC wall of IFC 4 scheme and we decided to implement late-bound working with SDK to have the same code for geometry generation.

And of course this is quite simple to use late-binding importing data from IFC to application as the same code – this is main advantage.

Does SDAI have any dependencies on other ODA SDKs?

At the moment the SDAI part is a base for only IFC SDK and no any relation to other ODA SDKs.

How to get the geometry of the IFC model?

The example of how to get geometry of IFC file is called ExIfcVectorize.

I use Drawings and Kernel archives (static configuration mddbg). The build succeeds, but when I run main.exe, I get the following output: ERROR: Null Ptr

Pay attention to content of TOOLKIT_IN_DLL defines in each main .cpp of examples. There is an initialization of modules needed in static:

#ifndef TOOLKIT_IN_DLL
INIT_IFC_STATIC_MODULES_NO_GEOM;
#endif

and

#ifndef TOOLKIT_IN_DLL
ODRX_INIT_STATIC_MODULE_MAP();
#endif

So in md configuration each module should been previously initialized for our rt linker can work with them. Seems your problem related with this initialization.

For some EntityInstance, how do I get the id from the ifc STEP file?

You can get OdDAIObjectId of an entity instance and then get a # from it if needed:

OdIfcEntityPtr pInst = ...; // or IfcWallPtr pWallInst = ...;
OdDAIObjectId id = pInst->id();
OdDbHandle h = id.getHandle();

Do you support IFC 4x2?

Yes, IFC4x2 is supported already.

How can I find the name of type in IFC?

Unfortunately at the moment you can not get names of types, however this functionality will be implemented in near future.

How to get information about attribute type?

The only way to get information about attribute type at the moment is to case in following way:

OdArray<OdDAI::AttributePtr>::iterator nextAttribute = leftEntityAttributeFilter.begin();
    for (; nextAttribute != leftEntityAttributeFilter.end(); ++nextAttribute)
    {
      OdDAI::AttributePtr pAttrib = *nextAttribute;
      OdDAI::InverseAttributePtr pInverse = OdDAI::InverseAttribute::cast(pAttrib);
      if (!pInverse.isNull())
      {
        odPrintConsoleString(L"\nInverse attribute `%s` (%lu)", pInverse->name().c_str(), (OdUInt64)leftIterator->id().getHandle());
      }
    }