From a66b4f138a6e558ec35a6b27e5dcf2934ea31556 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sat, 22 Aug 2020 19:11:17 +1000 Subject: [PATCH] Support export of IfcCircleProfileDef --- src/ifcblenderexport/blenderbim/bim/export_ifc.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/ifcblenderexport/blenderbim/bim/export_ifc.py b/src/ifcblenderexport/blenderbim/bim/export_ifc.py index cddb3b8e36..9cebcd3eae 100644 --- a/src/ifcblenderexport/blenderbim/bim/export_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/export_ifc.py @@ -2182,6 +2182,11 @@ class IfcExporter(): 'MappedRepresentation', [mapped_item]) + def create_ifc_axis_2_placement_2d(self, point, forward): + return self.file.createIfcAxis2Placement2D( + self.create_cartesian_point(point.x, point.y), + self.file.createIfcDirection((forward.x, forward.y))) + def create_ifc_axis_2_placement_3d(self, point, up, forward): return self.file.createIfcAxis2Placement3D( self.create_cartesian_point(point.x, point.y, point.z), @@ -2567,6 +2572,15 @@ class IfcExporter(): ydim = self.convert_si_to_unit( (obj.data.vertices[outer_curve_loop[1]].co - obj.data.vertices[outer_curve_loop[2]].co).length) curve = self.file.createIfcRectangleProfileDef('AREA', None, None, xdim, ydim) + elif 'IfcCircleProfileDef' in item['subitems']: + indices = item['subitems']['IfcCircleProfileDef'] + outer_curve_loop = self.get_loop_from_v_indices(obj, indices) + curve_ucs = self.get_curve_profile_coordinate_system(obj, outer_curve_loop) + radius = self.convert_si_to_unit(abs((obj.data.vertices[indices[0]].co - + obj.data.vertices[indices[int(len(indices)/2)]].co).length) / 2) + center = Vector((0, 0)) + position = self.create_ifc_axis_2_placement_2d(center, Vector((1, 0))) + curve = self.file.createIfcCircleProfileDef('AREA', None, position, radius) position = self.create_ifc_axis_2_placement_3d( curve_ucs['center'], curve_ucs['z_axis'], curve_ucs['x_axis'])