diff --git a/src/Mod/Draft/DraftGeomUtils.py b/src/Mod/Draft/DraftGeomUtils.py index 5547193f54..8d6447376d 100644 --- a/src/Mod/Draft/DraftGeomUtils.py +++ b/src/Mod/Draft/DraftGeomUtils.py @@ -191,29 +191,8 @@ from draftgeoutils.intersections import connect from draftgeoutils.geometry import findDistance -def angleBisection(edge1, edge2): - """angleBisection(edge,edge) - Returns an edge that bisects the angle between the 2 edges.""" - if (geomType(edge1) == "Line") and (geomType(edge2) == "Line"): - p1 = edge1.Vertexes[0].Point - p2 = edge1.Vertexes[-1].Point - p3 = edge2.Vertexes[0].Point - p4 = edge2.Vertexes[-1].Point - int = findIntersection(edge1, edge2, True, True) - if int: - line1Dir = p2.sub(p1) - angleDiff = DraftVecUtils.angle(line1Dir, p4.sub(p3)) - ang = angleDiff * 0.5 - origin = int[0] - line1Dir.normalize() - dir = DraftVecUtils.rotate(line1Dir, ang) - return Part.LineSegment(origin,origin.add(dir)).toShape() - else: - diff = p3.sub(p1) - origin = p1.add(diff.multiply(0.5)) - dir = p2.sub(p1); dir.normalize() - return Part.LineSegment(origin,origin.add(dir)).toShape() - else: - return None +from draftgeoutils.intersections import angleBisection + def findClosestCircle(point, circles): """Return the circle with closest center.""" diff --git a/src/Mod/Draft/draftgeoutils/intersections.py b/src/Mod/Draft/draftgeoutils/intersections.py index fcb258718a..6a8d0c5b69 100644 --- a/src/Mod/Draft/draftgeoutils/intersections.py +++ b/src/Mod/Draft/draftgeoutils/intersections.py @@ -384,3 +384,30 @@ def connect(edges, closed=False): e.Vertexes[0].Point, " ", e.Vertexes[-1].Point) return None + + +def angleBisection(edge1, edge2): + """Return an edge that bisects the angle between the 2 straight edges.""" + if geomType(edge1) != "Line" or geomType(edge2) != "Line": + return None + + p1 = edge1.Vertexes[0].Point + p2 = edge1.Vertexes[-1].Point + p3 = edge2.Vertexes[0].Point + p4 = edge2.Vertexes[-1].Point + intersect = findIntersection(edge1, edge2, True, True) + + if intersect: + line1Dir = p2.sub(p1) + angleDiff = DraftVecUtils.angle(line1Dir, p4.sub(p3)) + ang = angleDiff * 0.5 + origin = intersect[0] + line1Dir.normalize() + direction = DraftVecUtils.rotate(line1Dir, ang) + else: + diff = p3.sub(p1) + origin = p1.add(diff.multiply(0.5)) + direction = p2.sub(p1) + direction.normalize() + + return Part.LineSegment(origin, origin.add(direction)).toShape()