From 63d24f9eba70291c3aa45e15f8a4ea227fab31d6 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 30 Jan 2019 21:37:09 +1100 Subject: [PATCH] Support splitting closed wires as well as open wires --- src/Mod/Draft/Draft.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 6e73e009f3..dd3bf05c8c 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -1378,6 +1378,23 @@ def joinTwoWires(wire1, wire2): def split(wire, newPoint, edgeIndex): if getType(wire) != "Wire": return + elif wire.Closed: + splitClosedWire(wire, edgeIndex) + else: + splitOpenWire(wire, newPoint, edgeIndex) + FreeCAD.ActiveDocument.recompute() + +def splitClosedWire(wire, edgeIndex): + if edgeIndex == len(wire.Points): + makeWire([wire.Placement.multVec(wire.Points[0]), + wire.Placement.multVec(wire.Points[-1])], placement=wire.Placement) + else: + makeWire([wire.Placement.multVec(wire.Points[edgeIndex-1]), + wire.Placement.multVec(wire.Points[edgeIndex])], placement=wire.Placement) + wire.Points = list(reversed(wire.Points[0:edgeIndex])) + list(reversed(wire.Points[edgeIndex:])) + wire.Closed = False + +def splitOpenWire(wire, newPoint, edgeIndex): wire1Points = [] wire2Points = [] for index, point in enumerate(wire.Points): @@ -1391,7 +1408,6 @@ def split(wire, newPoint, edgeIndex): wire2Points.append(wire.Placement.multVec(point)) wire.Points = wire1Points makeWire(wire2Points, placement=wire.Placement) - FreeCAD.ActiveDocument.recompute() def fuse(object1,object2): '''fuse(oject1,object2): returns an object made from