curve.ifc (1.7 KB)
I’m trying to figure out why the above file won’t be displayed (correctly or at all) in any of the viewers I tried (Blender with BlenderBIM, ifc-view.com, ifcviewer). It’s supposed to be a curved pipe, the curve’s angle being 0.79 rad, roughly equivalent to 45°. The only program able to display the solid is ifcviewer, and this is how it looks:
Obviously that’s not how I want it to be, because the curve has an angle bigger than 0.79 rad.
According to the IFC specification, IfcSweptDiskSolid.StartParam and EndParam are the parameter values on the directrix at which the sweeping operation commences/ends. The directrix I’m using is an IfcCircle, and according to its specification the parameterization range is from 0 to 2*PI or from 0° to 360°. Since I’ve set radians as one of the project’s units, viewers should be able to pick up that the parameter values I gave were in radians, right?
I had a look and didn’t see anything immediately obvious. Swept disks are most often used over bounded curves and apparently the majority of the viewers have that assumption baked into their code. For this particular case you’ll have better luck with an IfcRevolvedAreaSolid (it’d be very similar to your current approach, just an axis_1 do define the axis of revolution instead of an axis_2 and you need to construct and position the swept circle).
I seem to get the right result using the Geometry Gym IFC importer (within Rhino WIP, the pipe command with wall thickness isn’t enabled in rhino common in Rhino6).
We’ve also had problems with viewers etc with swept disk solids. I believe there was an Implementer’s agreement in Ifc2x3 to enforce degrees units, and we have seen more success (but not everywhere) when this is the case. Parameterirization of curves is also often not well implemented from my observations and I agree with Thomas that many implementations might not recognize unbounded curves in this input.
Thanks for the example. This was indeed an issue in handling the IfcSweptDiskSolid paramaters as the directrix curve is normally used completely. It is now fixed, you can find a preliminary version containing the fix here: http://rdf.bg/downloads/IFCViewer-20200827.zip, halfway next week I expect this fix to be embedded in our IFC Viewer / IFC Engine (http://www.ifcviewer.com).
Your example was very helpfull.
I have seen that in FZKViewer the parameter values were not used.
This is corrected now and you can find a new version here:
Our website will be updated within the next week with the new version of FZKViewer.