pythonCascade Sample Problems

Topology Building: Face creation

        self.Initialize()

        self.interactive_context.EraseAll(0,1)

 

        sphere = gp_Sphere(gp_Ax3(gp_Pnt(0,0,0),gp_Dir(1,0,0)),150)

        WhiteFace = BRepBuilderAPI_MakeFace(sphere,0.1,0.7,0.2,0.9).Face()

 

        white = AIS_Shape(WhiteFace)

        self.interactive_context.SetColor(white,Quantity_NOC_WHITE,0)

        self.interactive_context.SetDisplayMode(white,AIS_Shaded,0)

        self.interactive_context.SetMaterial(white,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(white,0)

       

        P1 = gp_Pnt(-15,200,10)

        P2 = gp_Pnt(5,204,0)

        P3 = gp_Pnt(15,200,0)

        P4 = gp_Pnt(-15,20,15)

        P5 = gp_Pnt(-5,20,0)

        P6 = gp_Pnt(15,20,35)

 

        array = []

        array.append([P1,P2,P3])

        array.append([P4,P5,P6])

        curve = GeomAPI_PointsToBSplineSurface(array,3,8,GeomAbs_C2,0.001).Surface()

        RedFace = BRepBuilderAPI_MakeFace(curve).Face()

 

        red = AIS_Shape(RedFace)

        self.interactive_context.SetColor(red,Quantity_NOC_RED,0)

        self.interactive_context.SetDisplayMode(red,AIS_Shaded,0)

        self.interactive_context.SetMaterial(red,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(red,0)

 

        circle = gp_Circ(gp_Ax2(gp_Pnt(0,0,0),gp_Dir(1,0,0)),80)

        Edge1 = BRepBuilderAPI_MakeEdge(circle,0,math.pi).Edge()

 

        Edge2 = BRepBuilderAPI_MakeEdge(gp_Pnt(0,0,-80),gp_Pnt(0,-10,40)).Edge()

        Edge3 = BRepBuilderAPI_MakeEdge(gp_Pnt(0,-10,40),gp_Pnt(0,0,80)).Edge()

 

        MW1 = BRepBuilderAPI_MakeWire(Edge1,Edge2,Edge3)

 

        if MW1.IsDone():

            YellowWire = MW1.Wire()

 

        BrownFace = BRepBuilderAPI_MakeFace(YellowWire).Face()

 

        brown = AIS_Shape(BrownFace)

        self.interactive_context.SetColor(brown,Quantity_NOC_BROWN,0)

        self.interactive_context.SetDisplayMode(brown,AIS_Shaded,0)

        self.interactive_context.SetMaterial(brown,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(brown,0)

 

        P1.SetCoord(35,-200,40)

        P2.SetCoord(50,-204,30)

        P3.SetCoord(65,-200,30)

        P4.SetCoord(35,-20,45)

        P5.SetCoord(45,-20,30)

        P6.SetCoord(65,-20,65)

       

        array2 = []

        array2.append([P1,P2,P3])

        array2.append([P4,P5,P6])

        BSplineSurf = GeomAPI_PointsToBSplineSurface(array,3,8,GeomAbs_C2,0.001).Surface()

        aFace = BRepBuilderAPI_MakeFace(BSplineSurf).Face()

 

 

#              2d lines

        P12d = gp_Pnt2d(0.9,0.1)

        P22d = gp_Pnt2d(0.2,0.7)

        P32d = gp_Pnt2d(0.02,0.1)

 

        line1 = Geom2d_Line(P12d,gp_Dir2d((0.2-0.9),(0.7-0.1)))

        line2 = Geom2d_Line(P22d,gp_Dir2d((0.02-0.2),(0.1-0.7)))

        line3 = Geom2d_Line(P32d,gp_Dir2d((0.9-0.02),(0.1-0.1)))

 

        Edge1 = BRepBuilderAPI_MakeEdge(line1,BSplineSurf,0,P12d.Distance(P22d)).Edge()

        Edge2 = BRepBuilderAPI_MakeEdge(line2,BSplineSurf,0,P22d.Distance(P32d)).Edge()

        Edge3 = BRepBuilderAPI_MakeEdge(line3,BSplineSurf,0,P32d.Distance(P12d)).Edge()

 

        Wire1 = BRepBuilderAPI_MakeWire(Edge1,Edge2,Edge3).Wire()

        Wire1.Reverse()

 

        PinkFace = BRepBuilderAPI_MakeFace(aFace,Wire1).Face()

        BRepLib().BuildCurves3d(PinkFace)

 

        pink = AIS_Shape(PinkFace)

        self.interactive_context.SetColor(pink,Quantity_NOC_HOTPINK,0)

        self.interactive_context.SetDisplayMode(pink,AIS_Shaded,0)

        self.interactive_context.SetMaterial(pink,Graphic3d_NOM_PLASTIC,0)

        self.interactive_context.Display(pink,0)

 

        self.view.FitAll(0.01,0)

        self.view.ZFitAll(0.01)

        self.view.Redraw()