多角形をつくってみる。
以下の流れでつくった
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()