PythonOCC

PythonOCCでパイプをつくる

2020年5月20日

パイプをつくります。

まず背骨部分を作成し、次にパイプ断面を作成します。

それらをBRepOffsetAPI_MakePipe()の引数に与えると完成します。
まずは背骨です。
パイプの断面を与えます。
完成です。
中身はこんな感じです
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeFace, BRepBuilderAPI_MakeWire
from OCC.Core.BRepOffsetAPI import BRepOffsetAPI_MakePipe
from OCC.Core.gp import gp_Pnt, gp_Circ, gp_Ax2, gp_Dir, gp_XYZ, gp_Vec
from OCC.Display.SimpleGui import init_display

display, start_display, add_menu, add_function_to_menu = init_display()

def make_pipe():

       # pnt
       pnt1 = gp_Pnt( 0., 0., 0. )
       pnt2 = gp_Pnt(20., 0., 0. )
       pnt3 = gp_Pnt(40.,20., 0. )
       pnt4 = gp_Pnt(40.,40.,20. )
       pnt5 = gp_Pnt(40.,40.,40. )

       # 線
       edge12 = BRepBuilderAPI_MakeEdge( pnt1, pnt2 ).Edge()
       edge23 = BRepBuilderAPI_MakeEdge( gp_Circ( gp_Ax2( gp_Pnt( 20.,20.,0. ), gp_Dir(0,0,1.) ), 20. ), pnt2, pnt3 ).Edge()
       edge34 = BRepBuilderAPI_MakeEdge( gp_Circ( gp_Ax2( gp_Pnt( 40.,20.,20. ), gp_Dir(1,0,0) ), 20. ), pnt3, pnt4 ).Edge()
       edge45 = BRepBuilderAPI_MakeEdge( pnt4, pnt5 ).Edge()

       # ワイヤ
       mkWire = BRepBuilderAPI_MakeWire()
       mkWire.Add(edge12)
       mkWire.Add(edge23)
       mkWire.Add(edge34)
       mkWire.Add(edge45)
       mkWire.Build()
       spine = mkWire.Wire()
       display.DisplayShape(spine,update=True )

       # pipe_profile
       circle = gp_Circ( gp_Ax2( pnt1, gp_Dir(1,0,0) ), 5.)
       profile_edge = BRepBuilderAPI_MakeEdge(circle).Edge()
       profile_wire = BRepBuilderAPI_MakeWire(profile_edge).Wire()
       profile_face = BRepBuilderAPI_MakeFace(profile_wire).Face()
       pipe= BRepOffsetAPI_MakePipe( spine, profile_face ).Shape()

       display.DisplayShape(pipe,update=True )

if __name__ == '__main__':

       make_pipe()
       start_display()

-PythonOCC

© 2021 暇人が趣味をさがす