Open CASCADE基础介绍(5)
一般情况下,所生结果为:NURBS,但是,在一些特殊的情况下,可以生成平面,园柱,球,园锥等;
参数,U,沿着截面的方向,V沿着路径方向;
Geom_BezierSurface类:
生成一个Bezier表面;
Geom_OffsetSurface类:
用来偏移一个表面; 比如:
Standard_Real offset = 1;
Handle(Geom_OffsetSurface) GOS = new Geom_OffsetSurface(aGeomSurface, offset);
Geom_SweptSurface类:
有两个派生类,分别用来生成一个回转体表面和一个延展体表面;
Geom_SurfaceOfLinearExtrusion:用来描述一个线性延展表面; 它的基类是:Geom_Surface类 比如:
Handle(Geom_BSplineCurve) aCurve
=GeomAPI_PointsToBSpline(array).Curve(); gp_Dir aDir(1,2,3);
Handle(Geom_SurfaceOfLinearExtrusion) SOLE =new Geom_SurfaceOfLinearExtrusion(aCurve,aDir);
Handle(Geom_RectangularTrimmedSurface) aTrimmedSurface =new Geom_RectangularTrimmedSurface(SOLE,-10,10,false); Geom_SurfaceOfRevolution类,表示一个回转体表面;
比如:
Handle(Geom_BSplineCurve) aCurve =
GeomAPI_PointsToBSpline(array).Curve(); Handle(Geom_SurfaceOfRevolution) SOR =new Geom_SurfaceOfRevolution(aCurve,gp::OX());
1:利用一个二维数组来生成曲面的方法: TColgp_Array2OfPnt array3 (1,5,1,5); array3.SetValue(1,1,gp_Pnt (-4,-4,5)); ...
array3.SetValue(2,1,gp_Pnt (-2,-4,4)); ...
Handle(Geom_BSplineSurface) aSurf2
=GeomAPI_PointsToBSplineSurface(array3).Surface(); 2:GeomAPI_ExtremaSurfaceSurface类: 计算两个表面之间的极值点; 主要方法:
(1):Quantity_Length LowerDistance() const;计算两个表面的最短距离; (2):Standard_EXPORT
void LowerDistanceParameters(Quantity_Parameter&
U1,Quantity_Parameter& V1,Quantity_Parameter& U2,Quantity_Parameter& V2) const;
得到第一个表面上的极值点的UV参数和第二个表面上的极值点的UV参数; (3):void NearestPoints(gp_Pnt& P1,gp_Pnt& P2) const;得到第一个表面上的极值点和第二个表面上的极值点;
(4): Quantity_Length Distance(const Standard_Integer Index) const;得到第N个极值点的距离;
(5):Standard_Integer NbExtrema() const;极值的数目; ...... 示例:
GeomAPI_ExtremaSurfaceSurface ESS(aSurf1,aSurf2); Quantity_Length dist = ESS.LowerDistance(); gp_Pnt P1,P2;
ESS.NearestPoints(P1,P2); gp_Pnt P3,P4;
Handle(Geom_Curve) aCurve;
Standard_Integer NbExtrema = ESS.NbExtrema(); for(Standard_Integer k=1;k<=NbExtrema;k++){
ESS.Points(k,P3,P4);
aCurve= GC_MakeSegment(P3,P4).Value();
DisplayCurve(aDoc,aCurve,Quantity_NOC_YELLOW3,false); }
一:关于体的类BRepBuilderAPI_MakeVertex创建点;
类
BRepBuilderAPI_MakeEdge类此类用来创建边;
比如,由直线生成边:
gp_Lin line(gp_Ax1(gp_Pnt(10,10,10),gp_Dir(1,0,0)));
WhiteEdge = BRepBuilderAPI_MakeEdge(line,-20,10); 下面为生成四分之一园边:
gp_Elips Elips(gp_Ax2(gp_Pnt(10,0,0),gp_Dir(1,1,1)),60,30);
RedEdge = BRepBuilderAPI_MakeEdge(Elips,0,PI/2); 下面是由曲线生成边:
Handle (Geom_BezierCurve) curve = new Geom_BezierCurve(array); BRepBuilderAPI_MakeEdge ME (curve); GreenEdge = ME; V3 = ME.Vertex1(); V4 = ME.Vertex2();
BRepBuilderAPI_MakeWire类用来创建一个Wire类;
用一个Wire和一个边来生成一个新的Wire: ExistingWire = BRepBuilderAPI_MakeWire(Edge2);
Edge3 = BRepBuilderAPI_MakeEdge(gp_Pnt(-300,0,-80),gp_Pnt(-90,20,-30));
BRepBuilderAPI_MakeWire MW1(ExistingWire,Edge3);
if (MW1.IsDone()) {YellowWire = MW1;} 用一个Wire和添加边的方法来生成Wire: BRepBuilderAPI_MakeWire MW;
MW.Add(ExistingWire2);
MW.Add(Edge5);
MW.Add(Edge6);
MW.Add(Edge7);
if (MW.IsDone()) {
WhiteWire = MW.Wire();
LastEdge = MW.Edge();
LastVertex = MW.Vertex(); }
BRepBuilderAPI_MakeFace类生成一个面;有多种生成面的方法;
--通过一个封闭曲线生成面:
BRepBuilderAPI_MakeFace(curve);
--通过一个Wire生成面:
BrownFace = BRepBuilderAPI_MakeFace(YellowWire);
Bnd_Box2d类:定义一个二维空间的边界盒,可以得出边界盒各个点的值,有时,
在某个方向是无限大,这种情况下,称为在此方向上是开放的; 示例:
Bnd_Box2d aCBox;
Geom2dAdaptor_Curve GACC (C);
BndLib_Add2dCurve::Add (GACC,Precision::Approximation(),aCBox);
Bnd_Box类:定义一个三维空间的边界盒,可以扩大或缩小边界盒,也可以合并两个轴
对齐边界盒;
BRepPrimAPI_MakeBox类用来生成一个立方体;
构造一个立方体可以是两个对角点,一个角点及三个方向长度,可以是非轴对称的:
TopoDS_Shape B2 = BRepPrimAPI_MakeBox (gp_Ax2(gp_Pnt(-200.,-80.,-70.), gp_Dir(1.,2.,1.)), 80.,90.,120.); 使用方法
TopoDS_Face& BottomFace() ;.可以得到立方体的底面;同样,用其它类似的方法可以获得顶面等;
方法TopoDS_Solid& Solid() ;可以将box转化为一个Solid; 方法TopoDS_Shell& Shell() ;可以将box转化为一个shell;
BRepPrimAPI_MakeCylinder类用来生成一个园柱体或园柱体的一部
分; 比如:
TopoDS_Shape C2 = BRepPrimAPI_MakeCylinder gp_Dir(0.,1.,0.)),40.,110.,210.*PI180);
(gp_Ax2(gp_Pnt(200.,0.,200.),
BRepPrimAPI_MakeCone类生成一个园锥或园锥的一部分;
BRepPrimAPI_MakeSphere类生成球体或球体的一部分,可以是U方向
切一部分或V方向切一部分;
BRepPrimAPI_MakeTorus类生成环或环的一部分;
…… 此处隐藏:1939字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




