import FreeCAD as App import Part import unittest class BRepTests(unittest.TestCase): def testProject(self): """ This is a unit test for PR #13507 """ num = 18 alt = [0, 1] * num pts = [App.Vector(i, alt[i], 0) for i in range(num)] bsc = Part.BSplineCurve() bsc.buildFromPoles(pts, False, 1) edge = bsc.toShape() rts = Part.RectangularTrimmedSurface(Part.Plane(), -50, 50, -50, 50) plane_shape = rts.toShape() proj = plane_shape.project([edge]) self.assertFalse(proj.isNull()) self.assertEqual(len(proj.Edges), 1) def testEdgeSplitFace(self): coords2d = [(0.5, -0.5), (1.0, -0.5), (1.0, 0.5), (0.5, 0.5)] pts2d = [App.Base.Vector2d(u, v) for u, v in coords2d] pts2d.append(pts2d[0]) sphere = Part.Sphere() edges = [] for i in range(1, len(pts2d)): ls = Part.Geom2d.Line2dSegment(pts2d[i - 1], pts2d[i]) edges.append(ls.toShape(sphere)) split = edges[0].split(0.25) new_edges = split.Edges + edges[1:] wire = Part.Wire(new_edges) face = Part.Face(wire, "Part::FaceMakerSimple") self.assertTrue(face.isValid()) def testEdgeSplitReplace(self): cyl = Part.makeCylinder(2, 5) e1 = cyl.Edge3 split = e1.split([1.0, 2.0]) newcyl = cyl.replaceShape([(e1, split), (cyl.Vertex2, split.Vertex1)]) self.assertTrue(newcyl.isValid())