Cylinder Mesh - Exclude Edges By Angles?
Is there a way to generate Views of curved surfaces but exclude edges of a certain angle between faces?
I.e. here is a view of a Cylinder Mesh converted to an IfcBuildingElementProxy. You can see the lines in the middle of the cylinder. I'm aware that you can make a Representation Trace Outline but it would be faster to have a universal rule for edges to be excluded in the entire view....
Comments
This is a known issue :( https://github.com/IfcOpenShell/IfcOpenShell/issues/3668 - hopefully something @aothms knows the answer to.
I don't think this is the same issue as #3668. In a cylinder every edge has the same angle, so you either eliminate all or none. This more about selecting only the outline of the element? Which should be somewhat possible now that we segment the HLR output based on element. But also a bit tricky, because you could only influence this then globally per product (or representation item perhaps).
Ah yes true, the approach in Python we use for generating it is to see which edges are either "crease edges" (i.e. via angle threshold) or "contour edges" (i.e. not between two faces, or between two faces where one face is visible and one isn't): https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/src/blenderbim/blenderbim/tool/geometry.py#L205
It would be wonderful to have some way of overriding/marking certain edges to either show or not so that we could tweak their looks on the final drawing...
Indeed. I think OCCT does the same. Here I select both Outline and Visible Edges https://github.com/IfcOpenShell/IfcOpenShell/blob/v0.7.0/src/serializers/SvgSerializer.h#L232 So quickest would be a on a product basis knowing what to include. But that is obviously not a full solution.
Sorry I don't understand, so what would it take to implement this? A face-edge angle analysis in OCC along with a Python binding to set an angle threshold?
We need to figure out a way how to agree that the edges on a product are significant and when to include only the contour. I don't think that a global edge angle threshold for the entire model will work.