【OCC学习16】Modeling Data模块2d几何图形创建

一、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进行显示,效果如下:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值