PythonOCC

PythonOCCで平面から立体をつくる

平面から面を立ち上げて、立体をつくります。

この面をBRepPrimAPI_MakePrism()を使って立体にします。

立ち上げる方向と高さを gp_Vec(0,0,100) で指定しています。
つくりました。

中身はこんな感じです

from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakePrism
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeFace, BRepBuilderAPI_MakePolygon
from OCC.Core.gp import gp_Pnt, gp_Ax1, gp_Dir, gp_XYZ, gp_Vec
from OCC.Display.SimpleGui import init_display
import math

display, start_display, add_menu, add_function_to_menu = init_display()

def face_polygon( num_vertex ):

        # center
       center = gp_Pnt( 0., 0., 0. )

       # rad,length
       rad = math.pi * 2 / num_vertex
       r = 50.

       # polygon
       # 頂点を決めてBRepBuilderAPI_MakePolygon()にセットしていく
       mk_polygon = BRepBuilderAPI_MakePolygon()
       for i in range(num_vertex):
              vecBase = gp_Vec( r, 0., 0. )
              ax1 = gp_Ax1( center, gp_Dir( 0, 0, 1. ) )
              vec = vecBase.Rotated( ax1, rad * i )
              p = gp_Pnt()
              # 頂点
              p.SetXYZ( center.XYZ() + vec.XYZ() )
              mk_polygon.Add(p)

       # 最後の頂点とはじめの頂点を結ぶ
       mk_polygon.Close()
       # 頂点を結ぶ線をつくる
       polygon = mk_polygon.Wire()

       # face
       mk_face = BRepBuilderAPI_MakeFace( polygon )
       face = mk_face.Face()
       return face

if __name__ == '__main__':

       # polygon
       face = face_polygon( 10 )

       # build
       build = BRepPrimAPI_MakePrism( face, gp_Vec(0,0,100) ).Shape()
       display.DisplayShape(build,update=True)

       start_display()

-PythonOCC

© 2021 暇人が趣味をさがす