opencascade 提供了基本曲面(平面,圆柱面,锥面,球面),以及Bezier()和B-样条曲面,回转曲面,拉伸和偏移曲面,曲面裁剪后可以得到裁剪曲面(trimmed surface)啊
- 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。
- B-样条是贝兹曲线(又称贝塞尔曲线)的一种一般化,可以进一步推广为非均匀有理B样条(NURBS),使得我们能给更多一般的几何体建造精确的模型。
直纹曲面(ruled surface)
直纹曲面是两条曲线形成的曲面(通过直线沿着两条曲线上的点运动形成的),平面(平行直线),圆锥面(平行圆用直线连接)
- 1.由两条曲线生成对应曲面
geomfill_Surface
该函数是核心函数
from OCC.Core.GeomFill import GeomFill_Pipe, geomfill_Surface
from OCC.Core.gp import gp_Pnt
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeWire
from OCC.Core.TColgp import TColgp_HArray1OfPnt
from OCC.Core.GeomAPI import GeomAPI_Interpolate
# 生成第一个曲线
Linearray1 = TColgp_HArray1OfPnt(1, 5)
Linearray1.SetValue(1, gp_Pnt(5, 0, 0))
Linearray1.SetValue(2, gp_Pnt(4, 1.5, 0))
Linearray1.SetValue(3, gp_Pnt(3, 2, 0))
Linearray1.SetValue(4, gp_Pnt(2, 3, 0))
Linearray1.SetValue(5, gp_Pnt(0, 4.5, 0))
bspline_11 = GeomAPI_Interpolate(Linearray1, False, 0.00001)
bspline_11.Perform()
bspline_21 = bspline_11.Curve()
bspline_31 = BRepBuilderAPI_MakeEdge(bspline_21)
bspline1 = BRepBuilderAPI_MakeWire(bspline_31.Edge())