Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IfcAnnotation support #1142

Closed
JanFilipec opened this issue Dec 3, 2020 · 9 comments
Closed

IfcAnnotation support #1142

JanFilipec opened this issue Dec 3, 2020 · 9 comments

Comments

@JanFilipec
Copy link

Is the IfcAnnotation support complete? I was toying with Archicad ifcAnnotation export and only lines seem to show up when I import the ifc in Blender. With BIMVision I can see the the tag and fill are there, but without content somehow. (I'm not at all sure it is exported correctly from archicad).

AC
BIMV
Blender
IfcAnno Test.ifc.zip

Also, the svg annotation export seems inconsistent to me, it recognizes the hidden and solid names and uses them to style the curves and removes the ifcAnnotation class on such elements. With any other name it keeps the class, but I haven't found a way to add a custom class. Properties seem to be ignored (materials work, but that feels like a workaround).

<line class="IfcAnnotation IfcAnnotation globalid-0obkfT7XrFJu1RquIR2MXX" x1="296.6582946777344" x2="296.6582946777344" y1="311.7906799316406" y2="186.79067993164062"/> <line class="hidden annotation" x1="152.2698516845703" x2="152.2698516845703" y1="304.85498046875" y2="179.85498046875"/> <line class="solid annotation" x1="205.86380004882812" x2="205.86380004882812" y1="299.81085205078125" y2="174.81085205078125"/>

@JanFilipec
Copy link
Author

Btw. Archicad imports it's own 2D elements correctly (the dimension gets exploded into lines and text on export)

Ifc 2d import

@theoryshaw
Copy link
Member

Ha. I came to the issue tracker independently to post an issue on improved dimensioning, and low and behold, @JanFilipec did as well. Something's in the air.

@Moult we had chatted about this before, but would be nice to get BlenderBIM dimensions to associate themselves with the object. That is, if you modify the object, the dimensions would move with it.

Is there anything in the IFC schema currently that would accommodate this association?

There's IfcDimensionCurve, but it doesn't look like there's a way to associate the dimension with the geometry, although I could be missing something.

If nothing currently exists, could we propose an IFC approach?

Would be awesome to work with @yorikvanhavre to hash out an approach that would survive roundtripping between BlenderBIM and Freecad.

If we hash out an approach that proves itself in actual workflows, I would think it would have a better chance on being adopted by BuildingSmart.

@Moult
Copy link
Contributor

Moult commented Dec 6, 2020

@JanFilipec The short answer is that IfcAnnotation support is not complete (specifically for your issue, text literals are exported, but not imported - hence the roundtrip was not complete). Complete support for it required an overhaul of the context roundtripping support, which has only recently been completed. It's good to have this issue so we can keep track of the progress. Now that the native roundtripping mode is much more stable, it opens up the possibility for this, and many other issues to be fixed simultaneously in a cleaner and easier fashion than in the past. I'll keep this issue posted with the progress.

Edit: by the way, in your screenshot the door swing is not visible. It is supported, though - you just need to switch the active representation in the object panel. By default it only shows the body context.

@theoryshaw buildingSMART purged IfcDimensionCurve. Sigh. I'm not aware of a way to associate dimension with geometry in IFC (but nothing stopping us building it into Blender first). There are some really smart parametric extensions being proposed, but we might not see for a while. See this 2013 post by @jmirtsch for a blast from the past: https://geometrygym.blogspot.com/2013/10/parametric-ifc.html

As for round-tripping between the BlenderBIM Add-on and FreeCAD, I suspect the FreeCAD folks would also need to do a bit of re-plumbing before this becomes practical. Last I checked, FreeCAD only really handled body representations and didn't keep track of contexts. @yorikvanhavre are you interested in tackling this? It's quite a bit of work without any immediately visible reward to the user, unfortunately.

@theoryshaw
Copy link
Member

Instead of waiting, could we not propose an approach to BuildingSmart? As @jmirtsch did with his parametric example.

Would think if we could hash out an approach that actually works and is used between Freecad and Blender users, the more validity it would have.

@theoryshaw
Copy link
Member

We could also make a case to BuildingSmart to undeprecate these annotation classes and start from there.

At the end of the day, if they are used by both BlenderBIM and FreeCAD, are they really deprecated? ;)

We could use the OSarch wiki to keep track of this bastard child schema. :)

@aothms
Copy link
Member

aothms commented Dec 6, 2020

More recently perhaps (also from @jmirtsch) the IfcMetric example be used as a generic mechanism to link data https://github.com/GeometryGym/GeometryGymIFCExamples/blob/master/ConsoleParametricFooting/ParametricFooting.ifc#L49 I haven't looked into it, but can remember a couple of issues with it from the past.

@theoryshaw
Copy link
Member

Hierarchy for study.

#49= IFCRELASSOCIATESCONSTRAINT('2LHC2dMljCVAr3mT4v0L88',$,$,$,(#16),$,#42);
  /*#16= IFCFOOTINGTYPE('36UcYCIVjAfvbyIqs$Nuyh',$,'PadFootingParametric',$,$,(#30),(#29),$,$,.PAD_FOOTING.);*/
    /*#30= IFCELEMENTQUANTITY('0DHW$Ph$vDpetcz$zACkLP',$,'Qto_FootingBaseQuantities',$,$,(#31,#32,#33));*/
      /*#31= IFCQUANTITYLENGTH('Length',$,$,800.0,$);*/
      /*#32= IFCQUANTITYLENGTH('Width',$,$,800.0,$);*/
      /*#33= IFCQUANTITYLENGTH('Height',$,$,300.0,$);*/
    /*#29= IFCREPRESENTATIONMAP(#5,#28);*/
      /*#5= IFCAXIS2PLACEMENT3D(#1,$,$);*/
        /*#1= IFCCARTESIANPOINT((0.0,0.0,0.0));*/
      /*#28= IFCSHAPEREPRESENTATION(#27,'Body','SweptSolid',(#22));*/
        /*#27= IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#23,$,.MODEL_VIEW.,$);*/
          /*#23= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.0001,#25,#26);*/
            /*#25= IFCAXIS2PLACEMENT3D(#24,$,$);*/
              /*#24= IFCCARTESIANPOINT((0.0,0.0,0.0));*/
            /*#26= IFCDIRECTION((0.0,1.0));*/
        /*#22= IFCEXTRUDEDAREASOLID(#18,#20,#21,300.0);*/
          /*#18= IFCRECTANGLEPROFILEDEF(.AREA.,'PadFootingParametric',$,800.0,800.0);*/
          /*#20= IFCAXIS2PLACEMENT3D(#19,$,$);*/
            /*#19= IFCCARTESIANPOINT((0.0,0.0,0.0));*/
          /*#21= IFCDIRECTION((0.0,0.0,-1.0));*/
  /*#42= IFCMETRIC('Width',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#47);*/
    /*#47= IFCREFERENCE($,'RepresentationMaps',$,(1),#46);*/
      /*#46= IFCREFERENCE($,'MappedRepresentation',$,$,#45);*/
        /*#45= IFCREFERENCE($,'Items',$,(1),#44);*/
          /*#44= IFCREFERENCE('IfcExtrudedAreaSolid','SweptArea',$,$,#43);*/
            /*#43= IFCREFERENCE('IfcRectangleProfileDef','YDim',$,$,$);*/

@theoryshaw
Copy link
Member

Further hierarchies for study...

#41= IFCRELASSOCIATESCONSTRAINT('3mV1JBwqL0zeme7QhiFlHg',$,$,$,(#16),$,#34);
  /*#16= IFCFOOTINGTYPE('36UcYCIVjAfvbyIqs$Nuyh',$,'PadFootingParametric',$,$,(#30),(#29),$,$,.PAD_FOOTING.);*/
  /*#34= IFCMETRIC('Length',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#39);*/
    /*#39= IFCREFERENCE($,'RepresentationMaps',$,(1),#38);*/
      /*#38= IFCREFERENCE($,'MappedRepresentation',$,$,#37);*/
        /*#37= IFCREFERENCE($,'Items',$,(1),#36);*/
          /*#36= IFCREFERENCE('IfcExtrudedAreaSolid','SweptArea',$,$,#35);*/
            /*#35= IFCREFERENCE('IfcRectangleProfileDef','XDim',$,$,$);*/

#49= IFCRELASSOCIATESCONSTRAINT('2LHC2dMljCVAr3mT4v0L88',$,$,$,(#16),$,#42);
  /*#16= IFCFOOTINGTYPE('36UcYCIVjAfvbyIqs$Nuyh',$,'PadFootingParametric',$,$,(#30),(#29),$,$,.PAD_FOOTING.);*/
  /*#42= IFCMETRIC('Width',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#47);*/
    /*#47= IFCREFERENCE($,'RepresentationMaps',$,(1),#46);*/
      /*#46= IFCREFERENCE($,'MappedRepresentation',$,$,#45);*/
        /*#45= IFCREFERENCE($,'Items',$,(1),#44);*/
          /*#44= IFCREFERENCE('IfcExtrudedAreaSolid','SweptArea',$,$,#43);*/
            /*#43= IFCREFERENCE('IfcRectangleProfileDef','YDim',$,$,$);*/

#56= IFCRELASSOCIATESCONSTRAINT('3lVKM3Ldn1awJQJS8rBHZU',$,$,$,(#16),$,#50);
  /*#16= IFCFOOTINGTYPE('36UcYCIVjAfvbyIqs$Nuyh',$,'PadFootingParametric',$,$,(#30),(#29),$,$,.PAD_FOOTING.);*/
  /*#50= IFCMETRIC('Height',$,.HARD.,$,$,$,$,.EQUALTO.,$,$,#54);*/
    /*#54= IFCREFERENCE($,'RepresentationMaps',$,(1),#53);*/
      /*#53= IFCREFERENCE($,'MappedRepresentation',$,$,#52);*/
        /*#52= IFCREFERENCE($,'Items',$,(1),#51);*/
          /*#51= IFCREFERENCE('IfcExtrudedAreaSolid','Depth',$,$,$);*/

@Moult
Copy link
Contributor

Moult commented Jan 27, 2022

Closing this, as finally editable text literals are round-tripped with the new system, and fill areas are also now supported.

@Moult Moult closed this as completed Jan 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants