Opencascad开发(C++)-通过裁剪椭圆曲线创建椭圆封头

1、概要

本文以创建椭圆封头为例,讲一下椭圆曲线构建、椭圆曲线裁剪和回转特征创建的实现方法。

2、效果图

创建完成的椭圆封头如下图所示:
在这里插入图片描述

3、实现逻辑

创建椭圆封头的逻辑路线为:

1、根据椭圆中心点和椭圆所在的平面,创建建椭圆曲线
2、根据椭圆曲线的参数裁剪获得四分之一的曲线
3、根据平面向量、长轴矢量,计算回转轴
4、创建回转特征
5、显示回转特征

4、实现过程

4.1 创建椭圆曲线

创建椭圆曲线,是采用Geom_Ellipse来实现的,其需要的参数是
a) 椭圆所在的轴向矢量
b) 长轴半径
c) 短轴半径(这里是短轴半径是长轴半径的一半)

	gp_Ax2 ax2(origion, vector);
	double radius = 40;
	double scale = 2;
	Handle(Geom_Ellipse) ellipse = new Geom_Ellipse(ax2,radius,radius*1.0/scale);
	TopoDS_Edge ed1 = BRepBuilderAPI_MakeEdge(ellipse);
	Handle(AIS_Shape)aisEdge = new AIS_Shape(ed1);
	myContext->Display(aisEdge, true);

然后显示后的椭圆曲线为:
在这里插入图片描述

4.2 裁剪椭圆曲线

创建椭圆封头只需要椭圆曲线的四分之一,则可以通过裁剪来完成。

对于椭圆曲线,通过参数来获取长轴点和短轴点,但是对于椭圆曲线其参数范围为[0,2*pi],其代码为:

double u1 = 0;
	double u2 = M_PI_2;
	gp_Pnt pnt1, pnt2;
	gp_Vec vec1, vec2;
	ellipse->D1(u1, pnt1, vec1);
	ellipse->D1(u2, pnt2, vec2);

	gp_Vec vecZ(vector);
	gp_Vec vecY =  vecZ.Crossed(vec1);
	gp_Pnt pntY(origion.X() + vecY.X() * radius / 2 + origion.Y() ,vecY.Y() * radius / 2 + origion.Z() ,vecY.Z() * radius / 2);

	 Handle(Geom_TrimmedCurve) trimmedCurve = new Geom_TrimmedCurve(ellipse,u1,u2);

	 TopoDS_Edge edge2 = BRepBuilderAPI_MakeEdge(trimmedCurve);

	 Handle(AIS_Shape)aisEdge2 = new AIS_Shape(edge2);

	 myContext->Display(aisEdge2, true);

显示结果如下:
在这里插入图片描述

4.3 创建回转轴

这里就不过多解释,是通过椭圆面法矢与长轴交叉相乘获取的,当然,可以直接通过短轴点来计算,根据实际需要来计算。

 gp_Dir dir1(pnt2.X()-origion.X(), pnt2.Y() - origion.Y(), pnt2.Z() - origion.Z());

4.4 创建椭圆封头

直接上源码,就一行代码就行可以了,是利用BRepPrimAPI_MakeRevol来实现的

	 gp_Ax1 ax1(origion, dir1);
	 TopoDS_Shape shape1 = BRepPrimAPI_MakeRevol(edge2, ax1, M_PI * 2);	 
	 Handle(AIS_Shape)aisShape = new AIS_Shape(shape1);

4.5 显示结果博客开头图片

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GimiGimmy

感谢打赏,需要交流学习的,私信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值