diff --git a/src/blenderbim/blenderbim/bim/data/styles/default.css b/src/blenderbim/blenderbim/bim/data/styles/default.css index b3f0017b48..888e167c27 100644 --- a/src/blenderbim/blenderbim/bim/data/styles/default.css +++ b/src/blenderbim/blenderbim/bim/data/styles/default.css @@ -23,9 +23,8 @@ text { fill: black; stroke: none; } .cut { fill: black; stroke: black; stroke-linecap: 'round'; stroke-width: 0.35; fill-rule: evenodd; } .projection { fill: white; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; } .annotation { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; } -.solid {} .IfcAnnotation { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; } -.PredefinedType-MISC { stroke: black; stroke-width: 0.25; } +.PredefinedType-LINEWORK { stroke: black; stroke-width: 0.25; } .PredefinedType-BACKGROUND { stroke: black; stroke-width: 0.18; } .PredefinedType-GRID { marker-start: url(#grid-marker); marker-end: url(#grid-marker); } .PredefinedType-SECTION { stroke-dasharray: 12.5, 3, 3, 3; } @@ -37,11 +36,11 @@ text { fill: black; stroke: none; } .PredefinedType-BOUNDARY { fill: none; stroke: red; stroke-width: 1; stroke-dasharray: 12, 4, 3, 4, 3, 4; } .PredefinedType-BATTING { marker-start: url(#batting); stroke: none; } .PredefinedType-SEALANT { fill: url(#crosshatch1); stroke-width: 0.25; } +.PredefinedType-FILLAREA { fill: white; stroke: none; } +.PredefinedType-BREAKLINE { fill: none; stroke: black; stroke-width: 0.25; marker-mid: url(#breakline-marker); } .PredefinedType-TEXT { fill: black; stroke: none; } path.PredefinedType-TEXTLEADER { marker-end: url(#leader-marker); } text.PredefinedType-TEXTLEADER { fill: black; stroke: none; } -.break { fill: white; } -.breakline { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; marker-mid: url(#breakline-marker); } .material-blank { fill: white; } .material-diagonal1 { fill: url(#diagonal1); } .material-diagonal2 { fill: url(#diagonal2); } diff --git a/src/blenderbim/blenderbim/bim/data/templates/markers.svg b/src/blenderbim/blenderbim/bim/data/templates/markers.svg index a62a65dc4d..a2bfacc79f 100644 --- a/src/blenderbim/blenderbim/bim/data/templates/markers.svg +++ b/src/blenderbim/blenderbim/bim/data/templates/markers.svg @@ -57,7 +57,7 @@ - + diff --git a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py index d7fa9768c7..fc5cf2b36e 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py @@ -557,14 +557,16 @@ class SvgWriter: ) ) - def draw_break_annotations(self, break_obj): + def draw_break_annotations(self, obj): x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 - matrix_world = break_obj.matrix_world - for polygon in break_obj.data.polygons: - points = [break_obj.data.vertices[v] for v in polygon.vertices] + classes = self.get_attribute_classes(obj) + matrix_world = obj.matrix_world + for edge in obj.data.edges: + points = [obj.data.vertices[v] for v in edge.vertices] projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] + projected_points = [projected_points[0], (projected_points[0] + projected_points[1]) / 2, projected_points[1]] d = " ".join( [ "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) @@ -572,18 +574,8 @@ class SvgWriter: ] ) d = "M{}".format(d[1:]) - path = self.svg.add(self.svg.path(d=d, class_=" ".join(["break"]))) + path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) - break_points = [ - projected_points[0], - ((projected_points[1] - projected_points[0]) / 2) + projected_points[0], - projected_points[1], - ] - d = " ".join( - ["L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) for p in break_points] - ) - d = "M{}".format(d[1:]) - path = self.svg.add(self.svg.path(d=d, class_=" ".join(["breakline"]))) def draw_plan_level_annotation(self, obj): x_offset = self.raw_width / 2 diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py index 5eb481576c..0f586766bc 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py @@ -361,10 +361,14 @@ class BIM_PT_annotation_utilities(Panel): op = row.operator("bim.add_annotation", text="Breakline", icon="FCURVE") op.object_type = "BREAKLINE" op.data_type = "mesh" - op = row.operator("bim.add_annotation", text="Misc", icon="MESH_MONKEY") - op.object_type = "MISC" + op = row.operator("bim.add_annotation", text="Line", icon="MESH_MONKEY") + op.object_type = "LINEWORK" op.data_type = "mesh" + row = layout.row(align=True) + op = row.operator("bim.add_annotation", text="Fill Area", icon="NODE_TEXTURE") + op.object_type = "FILL_AREA" + row = layout.row(align=True) row.prop(self.props, "should_draw_decorations", text="Viewport Annotations") diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index defdb23234..0999571946 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -46,10 +46,11 @@ class Drawing(blenderbim.core.tool.Drawing): "PLAN_LEVEL": "curve", "SECTION_LEVEL": "curve", "BREAKLINE": "mesh", - "MISC": "mesh", + "FILL_AREA": "mesh", + "LINEWORK": "mesh", }[object_type] obj = annotation.Annotator.get_annotation_obj(object_type, data_type) - if object_type == "BREAKLINE": + if object_type == "FILL_AREA": obj = annotation.Annotator.add_plane_to_annotation(obj) elif object_type != "TEXT": obj = annotation.Annotator.add_line_to_annotation(obj)