diff --git a/src/Mod/Draft/draftfunctions/svg.py b/src/Mod/Draft/draftfunctions/svg.py index 65fa40ca47..2a900f9231 100644 --- a/src/Mod/Draft/draftfunctions/svg.py +++ b/src/Mod/Draft/draftfunctions/svg.py @@ -350,10 +350,14 @@ def _svg_dimension(obj, plane, scale, linewidth, fontsize, if vobj.FlipArrows: angle = angle + math.pi - svg += get_arrow(obj, - vobj.ArrowType, - p2, arrowsize, stroke, linewidth, - angle) + if not hasattr(obj, "Diameter") \ + or obj.Diameter \ + or not prx.is_linked_to_circle(): + svg += get_arrow(obj, + vobj.ArrowType, + p2, arrowsize, stroke, linewidth, + angle) + svg += get_arrow(obj, vobj.ArrowType, p3, arrowsize, stroke, linewidth, diff --git a/src/Mod/Draft/draftviewproviders/view_dimension.py b/src/Mod/Draft/draftviewproviders/view_dimension.py index 2684b363a7..7fbfd40afd 100644 --- a/src/Mod/Draft/draftviewproviders/view_dimension.py +++ b/src/Mod/Draft/draftviewproviders/view_dimension.py @@ -367,7 +367,7 @@ class ViewProviderLinearDimension(ViewProviderDimensionBase): It only runs if `Start`, `End`, `Dimline`, or `Direction` changed. """ - if prop not in ("Start", "End", "Dimline", "Direction"): + if prop not in ("Start", "End", "Dimline", "Direction", "Diameter"): return if obj.Start == obj.End: @@ -378,6 +378,16 @@ class ViewProviderLinearDimension(ViewProviderDimensionBase): vobj = obj.ViewObject + if prop == "Diameter": + if hasattr(vobj, "Override") and vobj.Override: + if obj.Diameter: + vobj.Override = vobj.Override.replace("R $dim", "Ø $dim") + else: + vobj.Override = vobj.Override.replace("Ø $dim", "R $dim") + + self.onChanged(vobj, "ArrowType") + return + # Calculate the 4 points # # | d | @@ -728,14 +738,15 @@ class ViewProviderLinearDimension(ViewProviderDimensionBase): self.marks = coin.SoSeparator() self.marks.addChild(self.linecolor) - s1 = coin.SoSeparator() - if symbol == "Circle": - s1.addChild(self.coord1) - else: - s1.addChild(self.trans1) + if vobj.Object.Diameter or not self.is_linked_to_circle(): + s1 = coin.SoSeparator() + if symbol == "Circle": + s1.addChild(self.coord1) + else: + s1.addChild(self.trans1) - s1.addChild(gui_utils.dim_symbol(symbol, invert=not inv)) - self.marks.addChild(s1) + s1.addChild(gui_utils.dim_symbol(symbol, invert=not inv)) + self.marks.addChild(s1) s2 = coin.SoSeparator() if symbol == "Circle":