mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
Fix #1589. Saving beveled curves as rswept disk solids is now supported.
This commit is contained in:
@@ -217,7 +217,9 @@ class Usecase:
|
||||
)
|
||||
|
||||
def create_variable_representation(self):
|
||||
if isinstance(self.settings["geometry"], bpy.types.Curve):
|
||||
if isinstance(self.settings["geometry"], bpy.types.Curve) and self.settings["geometry"].bevel_depth:
|
||||
return self.create_swept_disk_solid_representation()
|
||||
elif isinstance(self.settings["geometry"], bpy.types.Curve):
|
||||
return self.create_curve3d_representation()
|
||||
elif isinstance(self.settings["geometry"], bpy.types.Camera):
|
||||
return self.create_camera_block_representation()
|
||||
@@ -273,6 +275,14 @@ class Usecase:
|
||||
> self.settings["geometry"].BIMCameraProperties.raster_y
|
||||
)
|
||||
|
||||
def create_swept_disk_solid_representation(self):
|
||||
return self.file.createIfcShapeRepresentation(
|
||||
self.settings["context"],
|
||||
self.settings["context"].ContextIdentifier,
|
||||
"AdvancedSweptSolid",
|
||||
self.create_swept_disk_solids(),
|
||||
)
|
||||
|
||||
def create_curve3d_representation(self):
|
||||
return self.file.createIfcShapeRepresentation(
|
||||
self.settings["context"],
|
||||
@@ -335,6 +345,14 @@ class Usecase:
|
||||
]
|
||||
return self.file.createIfcPolyline([points[i] for i in indices])
|
||||
|
||||
def create_swept_disk_solids(self):
|
||||
curves = self.create_curves()
|
||||
results = []
|
||||
radius = self.convert_si_to_unit(round(self.settings["geometry"].bevel_depth, 3))
|
||||
for curve in curves:
|
||||
results.append(self.file.createIfcSweptDiskSolid(curve, radius))
|
||||
return results
|
||||
|
||||
def create_curves(self, should_exclude_faces=False, is_2d=False):
|
||||
if isinstance(self.settings["geometry"], bpy.types.Mesh):
|
||||
if self.file.schema == "IFC2X3":
|
||||
|
||||
Reference in New Issue
Block a user