import math
from OCC.Core.gp import (gp_Pnt, gp_Sphere, gp_Ax3, gp_Dir, gp_Circ, gp_Ax2,
gp_Pnt2d, gp_Dir2d)
from OCC.Core.BRepBuilderAPI import (BRepBuilderAPI_MakeEdge,
BRepBuilderAPI_MakeFace,
BRepBuilderAPI_MakeWire)
from OCC.Core.TColgp import TColgp_Array2OfPnt
from OCC.Core.GeomAPI import GeomAPI_PointsToBSplineSurface
from OCC.Core.GeomAbs import GeomAbs_C2
from OCC.Core.Geom2d import Geom2d_Line
from OCC.Core.BRepLib import breplib_BuildCurves3d
from OCC.Core.Quantity import Quantity_Color, Quantity_NOC_PINK
from OCC.Display.SimpleGui import init_display
display, start_display, add_menu, add_function_to_menu = init_display()
import numpy as np
def face():
numpy_array = np.array([[-15,200,10],[5,204,0],[15,200,0],[-15,20,15],[-5,20,0],[15,20,35]])
pythonOCC_array = TColgp_Array2OfPnt(1,3,1,2)
for index in range(0,np.size(numpy_array)):
if index == 0:
pythonOCC_array.SetValue(1,index+1,gp_Pnt(numpy_array[2*index][0],numpy_array[2*index][1],numpy_array[2*index][2]))
pythonOCC_array.SetValue(2,index+1,gp_Pnt(numpy_array[2*index+1][0],numpy_array[2*index+1][1],numpy_array[2*index+1][2]))
pythonOCC_array.SetValue(3,index+1,gp_Pnt(numpy_array[2*index+2][0], numpy_array[2*index + 2][1],
numpy_array[2*index + 2][2]))
if index == 1:
pythonOCC_array.SetValue(1, index +1,gp_Pnt(numpy_array[2*index+1][0], numpy_array[2*index+1][1], numpy_array[2*index+1][2]))
pythonOCC_array.SetValue(2, index+1, gp_Pnt(numpy_array[2*index + 2][0], numpy_array[2 * index + 2][1],numpy_array[2*index + 2][2]))
pythonOCC_array.SetValue(3, index + 1, gp_Pnt(numpy_array[2*index+3][0], numpy_array[2 * index + 3][1],
numpy_array[2 * index + 3][2]))
return pythonOCC_array
curve = GeomAPI_PointsToBSplineSurface(pythonOCC_array, 3, 8, GeomAbs_C2,
0.001).Surface()
red_face = BRepBuilderAPI_MakeFace(curve, 1e-6)
display.DisplayColoredShape(red_face.Face())
if name == '__main__':
face()
start_display()