def surface_from_curves(): ''' @param display: ''' # First spline array = [] array.append(gp_Pnt(-4, 0, 2)) array.append(gp_Pnt(-7, 2, 2)) array.append(gp_Pnt(-6, 3, 1)) array.append(gp_Pnt(-4, 3, -1)) array.append(gp_Pnt(-3, 5, -2)) pt_list1 = point_list_to_TColgp_Array1OfPnt(array) SPL1 = GeomAPI_PointsToBSpline(pt_list1).Curve() SPL1_c = SPL1.GetObject() # Second spline a2 = [] a2.append(gp_Pnt(-4, 0, 2)) a2.append(gp_Pnt(-2, 2, 0)) a2.append(gp_Pnt(2, 3, -1)) a2.append(gp_Pnt(3, 7, -2)) a2.append(gp_Pnt(4, 9, -1)) pt_list2 = point_list_to_TColgp_Array1OfPnt(a2) SPL2 = GeomAPI_PointsToBSpline(pt_list2).Curve() SPL2_c = SPL2.GetObject() # Fill with StretchStyle aGeomFill1 = GeomFill_BSplineCurves(SPL1, SPL2, GeomFill_StretchStyle) SPL3 = Handle_Geom_BSplineCurve_DownCast( SPL1_c.Translated(gp_Vec(10, 0, 0))) SPL4 = Handle_Geom_BSplineCurve_DownCast( SPL2_c.Translated(gp_Vec(10, 0, 0))) # Fill with CoonsStyle aGeomFill2 = GeomFill_BSplineCurves(SPL3, SPL4, GeomFill_CoonsStyle) SPL5 = Handle_Geom_BSplineCurve_DownCast( SPL1_c.Translated(gp_Vec(20, 0, 0))) SPL6 = Handle_Geom_BSplineCurve_DownCast( SPL2_c.Translated(gp_Vec(20, 0, 0))) # Fill with CurvedStyle aGeomFill3 = GeomFill_BSplineCurves(SPL5, SPL6, GeomFill_CurvedStyle) aBSplineSurface1 = aGeomFill1.Surface() aBSplineSurface2 = aGeomFill2.Surface() aBSplineSurface3 = aGeomFill3.Surface() display.DisplayShape(make_face(aBSplineSurface1, 1e-6)) display.DisplayShape(make_face(aBSplineSurface2, 1e-6)) display.DisplayShape(make_face(aBSplineSurface3, 1e-6), update=True)
def test_stl(self, event=None): #you probably dont have these #occ_shape = load_stl("~/local/pythonocc-0.3/pythonOCC/src/samples/Level2/DataExchange/sample.stl") #occ_shape = load_stl("~/local/legos/diver.stl") #http://adl.serveftp.org/lab/legos/diver.stl #occ_shape = load_stl(os.path.join(os.path.curdir, "models/cube.stl")) #make a box occ_shape = BRepPrimAPI_MakeBox(Point(0, 0, 0), Point(1, 1, 1)).Shape() display.DisplayShape(occ_shape) shape = Face(occ_shape) temp_points = list(set(shape.points)) #self.assertTrue(len(temp_points)>0) #TODO: cluster points and make surfaces. but how do you compute the first parameter to build_plate? surf = Surface() surf.shape = occ_shape surf.points = temp_points #surf.approximate() #should be more like test_extract_shape_vertices curve1 = GeomAPI_PointsToBSpline(point_list_1(surf.points)).Curve() curve1.GetObject() e1 = Edge(curve1.GetHandle()) display.DisplayShape(e1)