一、Modeling Data模块包含四个Toolkit
- TKBrep:brep的实现,创建拓扑对象
- TKG2d:创建2D几何对象
- TKG3d: 创建三维几何对象
- TKGeomBase:辅助管理2D、3D对象的工具类
二、Geom2d包
TKG2d下的Geom2d包是定义二维几何图形,都派生与Geom2d_Geometry、Standard_Transient。这种对象就可以用智能指针Handle来管理。其内部的几何图形的数据用TKMath中的gp包下的类保存的。
如:Geom2d_CartesianPoint表示一个坐标点,其内部用gp_Pnt2d保存其坐标。
三、GCE2d包
GCE2d包包含了由gp对象创建Geom2d对象以及一些图形变换的辅助类。
- GCE2d_MakeArcOfCircle:2d圆弧
- GCE2d_MakeArcOfEllipse:椭圆弧
- GCE2d_MakeArcOfHyperbola:双曲线弧
- GCE2d_MakeArcOfParabola:抛物线弧
- GCE2d_MakeCircle:圆
- GCE2d_MakeEllipse:椭圆
- GCE2d_MakeHyperbola:双曲线
- GCE2d_MakeLine:先
- GCE2d_MakeMirror:对2d几何对象进行镜像
- GCE2d_MakeRotation:旋转变换
- GCE2d_MakeScale:缩放
- GCE2d_MakeSegment:创建线段
四、案例
该案例先创建2d点,再使用GCE2d创建曲线,包括线段Segment、圆弧、椭圆弧。
// Co-ordinates
gp_Pnt2d Cnt1(20, 20);
gp_Pnt2d Cnt2(120, 25);
gp_Pnt2d Cnt3(120, 115);
gp_Pnt2d Cnt4(20, 120);
gp_Pnt2d P1(20, 0);
gp_Pnt2d P2(120, 0);
gp_Pnt2d P3(170, 25);
gp_Pnt2d P4(170, 115);
gp_Pnt2d P5(120, 140);
gp_Pnt2d P6(20, 140);
gp_Pnt2d P7(0, 120);
gp_Pnt2d P8(0, 20);
// Lines
Handle(Geom2d_TrimmedCurve) L1 = GCE2d_MakeSegment(P1, P2).Value();
Handle(Geom2d_TrimmedCurve) L2 = GCE2d_MakeSegment(P3, P4).Value();
Handle(Geom2d_TrimmedCurve) L3 = GCE2d_MakeSegment(P5, P6).Value();
Handle(Geom2d_TrimmedCurve) L4 = GCE2d_MakeSegment(P7, P8).Value();
// Arcs
gp_Dir2d D(1, 0);
// first circular arc
gp_Ax2d Ax1(Cnt1, D);
gp_Circ2d gC1(Ax1, 20);
Handle(Geom2d_TrimmedCurve) C1 = GCE2d_MakeArcOfCircle(gC1, P8, P1).Value();
// Second circular arc
gp_Ax2d Ax2(Cnt4, D);
gp_Circ2d gC2(Ax2, 20);
Handle(Geom2d_TrimmedCurve) C2 = GCE2d_MakeArcOfCircle(gC2, P6, P7).Value();
// first elliptical arc
gp_Ax2d Ax3(Cnt2, D);
gp_Elips2d gE1(Ax3, 50, 25);
Handle(Geom2d_TrimmedCurve) E1 = GCE2d_MakeArcOfEllipse(gE1, P2, P3).Value();
// Second elliptical arc
gp_Ax2d Ax4(Cnt3, D);
gp_Elips2d gE2(Ax4, 50, 25);
Handle(Geom2d_TrimmedCurve) E2 = GCE2d_MakeArcOfEllipse(gE2, P4, P5).Value();
借助AIS进行显示,效果如下: