diff --git a/src/bonsai/bonsai/bim/data/pset/EPset_Drawing.ifc b/src/bonsai/bonsai/bim/data/pset/EPset_Drawing.ifc index 9e23793f74..f02d4ed5e8 100644 --- a/src/bonsai/bonsai/bim/data/pset/EPset_Drawing.ifc +++ b/src/bonsai/bonsai/bim/data/pset/EPset_Drawing.ifc @@ -5,7 +5,7 @@ FILE_NAME('EPset_Drawing.ifc','2020-01-01T00:00:00',(),(),'EPset_Drawing','EPset FILE_SCHEMA(('IFC4')); ENDSEC; DATA; -#1=IFCPROPERTYSETTEMPLATE('2JhNIvqZrFnAgxfhK0XVQX',$,'EPset_Drawing','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation/DRAWING',(#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15,#16,#17,#18,#19,#20,#21,#22,#23)); +#1=IFCPROPERTYSETTEMPLATE('2JhNIvqZrFnAgxfhK0XVQX',$,'EPset_Drawing','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation/DRAWING',(#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15,#16,#17,#18,#19,#20,#21,#22,#23,#24,#25,#26,#27)); #2=IFCSIMPLEPROPERTYTEMPLATE('23JavTMk98ZxXhrUEnjAcf',$,'TargetView','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); #3=IFCSIMPLEPROPERTYTEMPLATE('1yVWUt5H9DAOuu0OaMMLpe',$,'Scale','The scale of this drawing represented as a numerator and denominator, such as 1/100',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); #4=IFCSIMPLEPROPERTYTEMPLATE('3gsuPBtU93b8f0gg1pjkq6',$,'HumanScale','The scale of this drawing in human readable format, such as 1:100',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); @@ -28,5 +28,9 @@ DATA; #21=IFCSIMPLEPROPERTYTEMPLATE('0nYMT3OSj5gArVniCWZRtv',$,'ShadingStyles','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.); #22=IFCSIMPLEPROPERTYTEMPLATE('3VWG22eZXBdQwdKlzMeVQH',$,'CurrentShadingStyle','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); #23=IFCSIMPLEPROPERTYTEMPLATE('28mJ$GDxb7kBbKFH_rACMQ',$,'AngleDecimalPlaces','',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.); +#24=IFCSIMPLEPROPERTYTEMPLATE('0EP4WR7eb1IR$rqEJ_XRVX',$,'DPI','DPI of rasterized underlays',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.); +#25=IFCSIMPLEPROPERTYTEMPLATE('3LHwCrOcb6Y8ozfJZ7Ay$c',$,'LineworkMode','Method to use for line work',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); +#26=IFCSIMPLEPROPERTYTEMPLATE('2iwERDOW55Pf4hCbuFRe1Q',$,'FillMode','Method to fill areas seen in projection',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); +#27=IFCSIMPLEPROPERTYTEMPLATE('1YF$qLzBzF19Io8aB2N8cE',$,'CutMode','Method for cutting geometry',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); ENDSEC; END-ISO-10303-21; diff --git a/src/bonsai/bonsai/bim/module/drawing/prop.py b/src/bonsai/bonsai/bim/module/drawing/prop.py index d078cf91e8..40a7674705 100644 --- a/src/bonsai/bonsai/bim/module/drawing/prop.py +++ b/src/bonsai/bonsai/bim/module/drawing/prop.py @@ -220,6 +220,22 @@ def update_has_annotation(self, context): update_layer(self, context, "HasAnnotation", self.has_annotation) +def update_dpi(self, context): + update_layer(self, context, "DPI", self.dpi) + + +def update_linework_mode(self, context): + update_layer(self, context, "LineworkMode", self.linework_mode) + + +def update_fill_mode(self, context): + update_layer(self, context, "FillMode", self.fill_mode) + + +def update_cut_mode(self, context): + update_layer(self, context, "CutMode", self.cut_mode) + + def update_layer(self, context, name, value): if not self.update_props: return @@ -395,6 +411,7 @@ class BIMCameraProperties(PropertyGroup): ], default="OPENCASCADE", name="Linework Mode", + update=update_linework_mode, ) fill_mode: EnumProperty( items=[ @@ -404,6 +421,7 @@ class BIMCameraProperties(PropertyGroup): ], default="NONE", name="Fill Mode", + update=update_fill_mode, ) cut_mode: EnumProperty( items=[ @@ -412,6 +430,7 @@ class BIMCameraProperties(PropertyGroup): ], default="BISECT", name="Cut Mode", + update=update_cut_mode, ) has_underlay: BoolProperty(name="Underlay", default=False, update=update_has_underlay) has_linework: BoolProperty(name="Linework", default=True, update=update_has_linework) @@ -423,7 +442,7 @@ class BIMCameraProperties(PropertyGroup): custom_scale_denominator: bpy.props.StringProperty(default="100", update=update_diagram_scale) raster_x: IntProperty(name="Raster X", default=1000) raster_y: IntProperty(name="Raster Y", default=1000) - dpi: IntProperty(name="DPI", default=75) + dpi: IntProperty(name="DPI", default=75, update=update_dpi) width: FloatProperty(name="Width", default=50, subtype="DISTANCE") height: FloatProperty(name="Height", default=50, subtype="DISTANCE") is_nts: BoolProperty(name="Is NTS", update=update_is_nts) diff --git a/src/bonsai/bonsai/tool/drawing.py b/src/bonsai/bonsai/tool/drawing.py index fa67fa8798..06c07c87a2 100644 --- a/src/bonsai/bonsai/tool/drawing.py +++ b/src/bonsai/bonsai/tool/drawing.py @@ -767,6 +767,14 @@ class Drawing(bonsai.core.tool.Drawing): camera.BIMCameraProperties.has_annotation = bool(pset["HasAnnotation"]) if "IsNTS" in pset: camera.BIMCameraProperties.is_nts = bool(pset["IsNTS"]) + if "DPI" in pset: + camera.BIMCameraProperties.dpi = int(pset["DPI"]) + if "LineworkMode" in pset: + camera.BIMCameraProperties.linework_mode = str(pset["LineworkMode"]) + if "FillMode" in pset: + camera.BIMCameraProperties.fill_mode = str(pset["FillMode"]) + if "CutMode" in pset: + camera.BIMCameraProperties.cut_mode = str(pset["CutMode"]) camera_props.update_props = update_props