display problem with sectioned spines

Hallo everyone!

Thank you very much for the quick admission here in the forum. I am a software developer and still pretty new to the topic of IFC. Currently I have a display problem with a “sectioned spine”. After creating the IFC step file the object is simply not displayed (in any of my viewers including Revit, Bim Vision, Solibri etc). But for me the code looks correct. Can anyone here look at the code section and tell if and where I am doing something wrong?

Here is the section in question:

#2329= IFCDIRECTION((-1.,0.,0.));
#2330= IFCDIRECTION((0.,0.,1.));
#2331= IFCCARTESIANPOINT((293998.249447207,527647.53,104116.000000078));
#2332= IFCAXIS2PLACEMENT3D(#2331,#2329,#2330);
#2333= IFCCARTESIANPOINT((0.,0.));
#2334= IFCDIRECTION((1.,0.));
#2335= IFCAXIS2PLACEMENT2D(#2333,#2334);
#2336= IFCCARTESIANPOINT((0.,0.,-22.25));
#2337= IFCDIRECTION((0.,0.,1.));
#2338= IFCDIRECTION((1.,0.,0.));
#2339= IFCAXIS2PLACEMENT3D(#2336,#2337,#2338);
#2340= IFCCARTESIANPOINT((0.,0.,22.25));
#2341= IFCDIRECTION((0.,0.,1.));
#2342= IFCDIRECTION((1.,0.,0.));
#2343= IFCAXIS2PLACEMENT3D(#2340,#2341,#2342);
#2344= IFCCIRCLEPROFILEDEF(.AREA.,'',#2335,89.);
#2345= IFCCIRCLEPROFILEDEF(.AREA.,'',#2335,80.15);
#2346= IFCCARTESIANPOINT((0.,0.,-22.25));
#2347= IFCCARTESIANPOINT((0.,0.,22.25));
#2348= IFCPOLYLINE((#2346,#2347));
#2349= IFCCOMPOSITECURVESEGMENT(.CONTINUOUS.,.T.,#2348);
#2350= IFCCOMPOSITECURVE((#2349),.F.);
#2351= IFCSECTIONEDSPINE(#2350,(#2344,#2345),(#2339,#2343));
#2352= IFCSHAPEREPRESENTATION(#10,'Body','SectionedSpine',(#2351));
#2353= IFCPRODUCTDEFINITIONSHAPE($,$,(#2352));
#2354= IFCLOCALPLACEMENT(#38,#2332);
#2355= IFCBEAM('3EatmBOg5g5upgQEPIYIgu',#5,'BEAM',$,$,#2354,#2353,$);

Thanks for your effort in advance.

Have you tried looking for reported schema validation errors is something like checkingtool? It may help debug issues. https://www.iai.kit.edu/1302.php

Thanks for your reply. Unfortunately I’ve already checked the file with your mentioned tool: no errors, just some comments about unknow property sets.

Could you provide a simple but complete ifc2x3 file with code section in question?

Could be that no application supports it as it is not in the scope of either the Coordination View 2.0 (Model View Definition in certification of IFC2x3) or the Reference view 1.2 (MVD in certification of IFC4).

Checked the SPF snippet manually and it looks fine from the data type perspective. Have not checked the values or validated it though.

Thanks for all your efforts. Since I am a new user I have to provide an external link for downloading my testfile: https ://we.tl/ t-A2ZB35Plhn < please remove white spaces (I am not yet allowed to provide external links.)

@sergej: If not in scope, what would be the best way to get an equivalent diplay of such an object. Currently I am thinking of a trucated cone via a boolean operation. … btw: did I mention the desired object is a truncated cone at all?

I really appreciate your help.

Tested @IBB and could not parse in IfcOpenShell, or viewed in Blender. I also do not see any invalid syntax at a glance, but did not look closely at the values.

Reported as a bug :slight_smile:

For others who want to easily test, I’ve put it into a tiny test IFC file in the bugreport.

XBim is able to parse it:

For this particular case I would consider/nominate/recommend IfcRevolvedAreaSolid. It provides a far more efficient way of representing these kinds of solids.

No problem in usBIM.viewer+ either (I guess, did not check the numbers), but I agree that SectionedSpine is a concept that is problably not implemented by most of the applications being not part of any Certification / MVD.

1 Like

Thank you! I am a bit relieved I am not (the main) cause of the problem :wink: I’ll try a revolved area solid together with a trapezium (https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/link/ifctrapeziumprofiledef.htm) and report back.

The original snippet was IFC2X3 and seems to be syntactically correct. The file generated by Moult is IFC4!
Please use a validation tool before releasing a test file.
The IfcBeam has changed between IFC2X3 and IFC4. One attribute PredefinedType is missing.
In general the geometry seems bo be correct. But is not directly displayed (or not directly visible) in my tool due the large coordinates (293998.249447, 527647.530000, 104116.000000).
But his could also be a problem by inserting the original snippet in the tiny test file. I guess the original data is defined in millimeter.

I noticed something else.
The used composite curve in the original snippet should use discontinuous as transition type instead of continiuous.

Hi Folks,
some (more) days have passed and - after digging deeper into ifc - I was finally able to write some software that removes the ‘faulty’ code and inserts my own cone code with the help of above mentioned trapezium and a revolved area. This time my viewer Bim Vision shows a perfectly fine cone, but again Revit does not show the desired elements. Are there any further thoughts or hints on my topic? … I am desperate :wink:

Below is my ‘redrawn’ testfile:
redrawn_testfile.ifc (179.2 KB)

Hi,

I can not help you with Revit, but I can give you some feedback with yout example.
There are two errors left related to the trapezium profile (see error log).
Your component structure used is not the best solution. At the moment each geometry is represented in by an extra object of IfcBeam, resulting in 71 IfcBeams. A better solution would be to aggregate the geometries and store the geometry in an entity of type IfcFlowControler or its sub type IfcValve.
And whats the reason the large coordinates?
577473.617720, 340015.676479, 104650.000000

Message Type Message Description
Error [2]
EccoError_37 [2]
EccoError_37 integrity constraint violation: where rule ‘IFCPOSITIVELENGTHMEASURE.WR1’ evaluates to FALSE
Instance: OID: #872
Type: IfcTrapeziumProfileDef
References: YDim: -45.7
Type: IfcPositiveLengthMeasure
in file ifc-express\ifc2x3_tc1.exp at line 280
EccoError_37 integrity constraint violation: where rule ‘IFCPOSITIVELENGTHMEASURE.WR1’ evaluates to FALSE
Instance: OID: #1060
Type: IfcTrapeziumProfileDef
References: YDim: -45.7
Type: IfcPositiveLengthMeasure
in file ifc-express\ifc2x3_tc1.exp at line 280

Thank you for inspecting my example. I’ll try and insert an absolute value. I’ll report back later. The large coordinates are given due to the fact my example is taken from a really large construction site.

Hi, I am reporting back. The corrected Y-Dim values into absolute (positive) values did not bring any further success. Maybe, someone could provide some code for a revolved trapezium to build a cone. Then I could counter check the representation in Revit. Maybe (hopefully not) Revit can’t show that kind of element.

redrawn_testfile.ifc (179.2 KB)

@IBB just confirming that I can view your file without issues in Blender. I have also highlighted in the bottom right a few components which I believe are the tapered sections you are working on.

Maybe this is something to report on the Revit IFC Github? https://github.com/Autodesk/revit-ifc/issues

Thanks for inspecting my file. You’re right, the tapered sections are the ones I’m struggling with. Do I understand correctly? There’s a IFC-“plugin” for Revit that overrides the proprietary IFC-support by Autodesk?

Revit ships with an IFC export plugin that is usually an outdated version of the Github repository that I linked to. If you compile the plugin from that Git repository, it will overwrite the Revit plugin.

Maybe that’s a way to go. But the compiling part seems as tricky as the faulty-representation-part =)

If you create a bugreport there and link to this thread with your sample file, a developer may be able to test your scenario, and if it is truly a bug in the latest version, provide a fix. Ping @angel.velez - who is an Autodesk dev.