Add support for 3D curve / wireframe representations.

This commit is contained in:
Dion Moult
2021-07-13 18:45:07 +10:00
parent 19b6765994
commit 63f578315d
2 changed files with 31 additions and 31 deletions
@@ -117,6 +117,7 @@ class AddRepresentation(bpy.types.Operator):
if s.material and not s.material.BIMMaterialProperties.ifc_style_id if s.material and not s.material.BIMMaterialProperties.ifc_style_id
] ]
if isinstance(obj.data, bpy.types.Mesh) and len(obj.data.polygons):
ifcopenshell.api.run( ifcopenshell.api.run(
"style.assign_representation_styles", "style.assign_representation_styles",
self.file, self.file,
@@ -330,6 +331,7 @@ class UpdateRepresentation(bpy.types.Operator):
if s.material and not s.material.BIMMaterialProperties.ifc_style_id if s.material and not s.material.BIMMaterialProperties.ifc_style_id
] ]
if isinstance(obj.data, bpy.types.Mesh) and len(obj.data.polygons):
ifcopenshell.api.run( ifcopenshell.api.run(
"style.assign_representation_styles", "style.assign_representation_styles",
self.file, self.file,
@@ -22,8 +22,6 @@ class Usecase:
"unit_scale": None, # A scale factor to apply for all vectors in case the unit is different "unit_scale": None, # A scale factor to apply for all vectors in case the unit is different
"should_force_faceted_brep": False, # If we should force faceted breps for meshes "should_force_faceted_brep": False, # If we should force faceted breps for meshes
"should_force_triangulation": False, # If we should force triangulation for meshes "should_force_triangulation": False, # If we should force triangulation for meshes
"is_wireframe": False, # If the geometry is a wireframe
"is_curve": False, # If the geometry is a Blender curve
"is_point_cloud": False, # If the geometry is a point cloud "is_point_cloud": False, # If the geometry is a point cloud
# Possible IFC representation classes: # Possible IFC representation classes:
# IfcExtrudedAreaSolid/IfcRectangleProfileDef # IfcExtrudedAreaSolid/IfcRectangleProfileDef
@@ -204,9 +202,9 @@ class Usecase:
) )
def create_variable_representation(self): def create_variable_representation(self):
if self.settings["is_wireframe"]: if isinstance(self.settings["geometry"], bpy.types.Curve):
return self.create_wireframe_representation() return self.create_curve3d_representation()
elif self.settings["is_curve"]: elif not len(self.settings["geometry"].polygons):
return self.create_curve3d_representation() return self.create_curve3d_representation()
elif self.settings["is_point_cloud"]: elif self.settings["is_point_cloud"]:
return self.create_point_cloud_representation() return self.create_point_cloud_representation()