PythonOCC

PythonOCCで多角形をつくる

2020年5月16日

多角形をつくってみる。

以下の流れでつくった

1.多角形の頂点を決める
2.頂点を結ぶ線をつくる
3.面を作成する

BRepBuilderAPI_MakePolygon()でつくりました。

5角形です。

こっちは10角形です。

中身はこんな感じです

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 )
       print( "mk_face.Error() %s, isDone %s" % ( mk_face.Error(), mk_face.IsDone() ) )
       face = mk_face.Face()
       return face

if __name__ == '__main__':

       # polygon
       face = face_polygon( 10 )
       display.DisplayShape(face,update=True)

       start_display()

-PythonOCC

© 2021 暇人が趣味をさがす