Open CASCADE基础介绍(4)

原创 2008年10月28日 18:08:00

Open CASCADE基础介绍(4

gp_Trsf

定义一个矩阵变换的类

--可以定义平移、旋转、缩放的矩阵;

--可以对称于一个点,一条线,一个平面;

示例一:

对称于一个点:

gp_Trsf theTransformation;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

gp_Pnt PntCenterOfTheTransformation(110,60,60);

theTransformation.SetMirror(PntCenterOfTheTransformation);

 

示例二

绕一个轴旋转

gp_Trsf theTransformation;

gp_Ax1 axe = gp_Ax1(gp_Pnt(200,60,60),gp_Dir(0.,1.,0.));

theTransformation.SetRotation(axe,30*PI/180);

 

示例三

缩放

gp_Trsf theTransformation;

gp_Pnt theCenterOfScale(200,60,60);

theTransformation.SetScale(theCenterOfScale,0.5);

 

示例四

平移

gp_Trsf theTransformation;

gp_Vec theVectorOfTranslation(-6,-6,6);

theTransformation.SetTranslation(theVectorOfTranslation);

 

示例五:

Displacement

TopoDS_Shape S = BRepPrimAPI_MakeWedge(60.,100.,80.,20.);

gp_Trsf theTransformation;

gp_Ax3 ax3_1(gp_Pnt(0,0,0),gp_Dir(0,0,1));

gp_Ax3 ax3_2(gp_Pnt(60,60,60),gp_Dir(1,1,1));

theTransformation.SetDisplacement(ax3_1,ax3_2);

BRepBuilderAPI_Transform myBRepTransformation(S,theTransformation);

TopoDS_Shape TransformedShape = myBRepTransformation.Shape();

 

示例六:

变形

gp_GTrsf theTransformation;

gp_Mat rot(1, 0, 0, 0, 0.5, 0, 0, 0, 1.5);

theTransformation.SetVectorialPart(rot);

theTransformation.SetTranslationPart(gp_XYZ(5,5,5));

BRepBuilderAPI_GTransform myBRepTransformation(S,theTransformation);

TopoDS_Shape S2 = myBRepTransformation.Shape();

 

BuilderAPI_MakeEdge

定义一生成一个边;此类有多个构造函数,现举其中一个介绍如下:

 

Standard_EXPORT BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,const Handle(Geom_Surface)& S,const TopoDS_Vertex& V1,const TopoDS_Vertex& V2,const Standard_Real p1,const Standard_Real p2);

其参数含义是:

顶点V1V2用来限制曲线(定义边的约束),值p1p2为顶点的参数;

曲线可以定义成在一个表面的2D曲线,应用缺省的公差;

参数规则:

对于曲线来说:

--句柄不能为空;

--如果曲线是一个trimmed曲线,使用基础曲线;

对于顶点来说:

--可以为空,表示此参数为无限大;静态方法 Precision::Infinite()用来定义一个无限大的数;

--两个顶点如果位于同一位置,必须一样,当曲线是封闭时使用相同的顶点;

对于参数来说:

--参数为必须在曲线参数范围内,如果曲线是trimmed,使用基础曲线;如果边的条件不满足,返回BRepAPI_ParameterOutOfRange错误;

--参数值不能相等,如果条件不满足,边无法创建,返回BRepAPI_LineThroughIdenticPoints错误;

--参数值可以这样给出C->FirstParameter()

--如果参数值需要切换,比如第一个顶点的参数为P2,第二个顶点的参数为P1,边的方向可以“reversed”;

--对于一个周期曲线,值P1P2可以通过加或减周期来得到;

--参数值可以无限大,在对应的方向上边是开放的。然而,对应的顶点必须是空图形,如果条件不满足,边无法创建,返回BRepAPI_PointWithInfiniteParameter错误;

--参数值可以被忽略,将通过曲线上的投影进行计算;

--可以给定空间三维点;

 

BRepFeat_MakePipe

基类为:BRepFeat_Form

通过基本图形生成一个Pipe;

 

BRepFeat_MakeLinearForm

基类为:BRepFeat_RibSlot

在一个平面表面上建一个肋或开凹槽;

 

BRepFeat_Gluer

粘合两个实体为一个实体;

示例:

1):创建两个BOX,并找到要粘合的面;

2):创建要粘合的对象:

BRepFeat_Gluer glue2(S4,S3);

3):用两个面粘合对象;

glue2.Bind(F4,F3);

4):重新生成对象:

LocOpe_FindEdges CommonEdges(F4,F3);

       for (CommonEdges.InitIterator(); CommonEdges.More(); CommonEdges.Next())

              glue2.Bind(CommonEdges.EdgeFrom(),CommonEdges.EdgeTo());

       TopoDS_Shape res2 = glue2.Shape();

       myAISContext->Erase(ais3,Standard_False,Standard_False);

      

       ais4->Set(res2);

 

       myAISContext->Redisplay(ais4,Standard_False);

 

Graphic2d_Polyline

创建一个多边形.

常见方法:

--Length()得到线的点数;

--void Values(const Standard_Integer aRank,Quantity_Length& X,Quantity_Length& Y) const;得到序号为aRank的点;

--void DrawElement(const Handle(Graphic2d_Drawer)& aDrawer,const Standard_Integer anIndex) ;绘制多边形的一条边;

--void DrawVertex(const Handle(Graphic2d_Drawer)& aDrawer,const Standard_Integer anIndex) ;绘制多边形的一个顶点;

--Standard_Boolean Pick(const Standard_ShortReal X,const Standard_ShortReal Y,const Standard_ShortReal aPrecision,const Handle(Graphic2d_Drawer)& aDrawer) ;得到此多边形是否被拾取,注意:PickIndex()方法得到的是最后拾取的点,如果拾取点在线的内部,返回0;

 

Graphic2d_Line

Polyline, Circle ... 等图元的基类;

常见方法:

--SetWidthIndex(const Standard_Integer anIndex) ;得到在width map中的宽度的索引;设定对应的线宽值;

--SetTypeIndex(const Standard_Integer anIndex) ;设置线型;

--SetInteriorColorIndex(const Standard_Integer anIndex) ;设置颜色;

--void SetDrawEdge(const Standard_Boolean aDraw) ;设置边是否绘出,注意,这种情况下,polygon的类型必须为:

Graphic2d_TOPF_FILLED 或者 Graphic2d_TOPF_PATTERNED

--SetInteriorPattern(const Standard_Integer anIndex) ;定义封闭线的内部图案,polygon的填充类型必须是:Graphic2d_TOPF_PATTERNED

--SetTypeOfPolygonFilling(const Graphic2d_TypeOfPolygonFilling aType) ;定义封闭线的图案,TypeOfPolygonFilling可选类型有:

- Graphic2d_TOPF_EMPTY - Graphic2d_TOPF_FILLED - Graphic2d_TOPF_PATTERNED

--Standard_Integer InteriorColorIndex() const;得到颜色索引;

--Standard_Integer InteriorPattern() const;得到所使用的图案索引;

--Graphic2d_TypeOfPolygonFilling TypeOfPolygonFilling() const;得到多边形填充模式;

 

Graphic2d_Primitive

Graphic2d_Line类的基类,

常见方法:

--得到及获取颜色索引;

--得到图元元素的数量和顶点的数量:

Standard_Integer NumOfElemIndices() const;

Standard_Integer NumOfVertIndices() const;

--Standard_Integer PickedIndex() const;得到最后拾取的图元元素的索引值;

--void Highlight(const Standard_Integer anIndex = 0) ;高亮显示图元或图元的一部分,当anIndex=0表示所有的图元高亮显示,>0为当所要求的图元元素高亮显示时,<0为所要求的顶点高亮显示时;

--void Unhighlight() ;禁止图元高亮显示;

-- Standard_Boolean IsHighlighted() const;图元是否高亮显示;

--Handle_TColStd_HSequenceOfInteger HighlightIndices() const;得到图元高亮显示的索引序列;

--void SetDisplayMode(const Standard_Integer aMode) ;设置图元显示的模式;

--Standard_Integer DisplayMode() const;得到图元显示的模式;

--Standard_Boolean Graphic2d_GraphicObject::Pick(const Standard_Real X,const Standard_Real Y,const Standard_Real aPrecision,const Handle(Graphic2d_Drawer)& aDrawer) ;

用一个矩形框拾取图形对象,如果图形对象被拾取,返回为真,通过方法Graphic2d_View::Pick调用;

 

--Standard_Boolean Graphic2d_GraphicObject::PickByCircle(const Standard_Real X,const Standard_Real Y,const Standard_Real Radius,const Handle(Graphic2d_Drawer)& aDrawer) ;

用一个园来拾取图形对象,如果图形对象被拾取,返回为真,通过方法Graphic2d_View::PickByCircle调用;

 

--Standard_Boolean Graphic2d_GraphicObject::Pick(const Standard_Real Xmin,const Standard_Real Ymin,const Standard_Real Xmax,const Standard_Real Ymax,const Handle(Graphic2d_Drawer)& aDrawer,const Graphic2d_PickMode aPickMode) ;

 

以下情况下返回值为真:

包括在矩形内:included in rectangle (<aPickMode = PM_INCLUDE>),

不在矩形内:excluded from rectangle (<aPickMode = PM_EXLUDE>),

相交于矩形框:intersected by rectangle (<aPickMode = PM_INTERSECT>),

通过 Xmin, Ymin, Xmax, Ymax定义矩形框。

 

--得到所有在图元内的markers的最小最大值,注意,如果me为空,或未显示,或没有markers返回为假,

 Minx = Miny = RealFirst () Maxx = Maxy = RealLast ()

Standard_EXPORT   Standard_Boolean Graphic2d_GraphicObject::MarkerMinMax(Quantity_Length& Minx,Quantity_Length& Maxx,Quantity_Length& Miny,Quantity_Length& Maxy) const;

 

--移除图元;Standard_EXPORT   void Graphic2d_GraphicObject::RemovePrimitive(const Handle(Graphic2d_Primitive)& aPrimitive) ;

 

--绘制图元,以默认的图元属性绘制;void Graphic2d_TransientManager::Draw(const Handle(Graphic2d_Primitive)& aPrimitive) ;

 

AIS2D_InteractiveObject

使用显示和选择服务,来可视化和选择机制,交互式对象常用来显示数据,曲线,图形,markers,尺寸标注等。

常用方法:

--获取及设置属性

 Handle_Prs2d_Drawer Attributes() const;

void SetAttributes(const Handle(Prs2d_Drawer)& aDrawer) ;

 

--通过Aspect设置属性,到所有图元分配这个Aspect.

Standard_EXPORT   void SetAspect(const Handle(Prs2d_AspectRoot)& anAspect) ;

 

--通过Aspect设置属性,到所有通过InteractiveContext被链接的图元对象;

Standard_EXPORT   void SetAspect(const Handle(Prs2d_AspectRoot)& anAspect,const Handle(Graphic2d_Primitive)& aPrimitive) ;

 

--得到图元的Aspect;

Standard_EXPORT   Handle_Prs2d_AspectRoot GetAspect(const Handle(Graphic2d_Primitive)& aPrimitive) const;

 

--如果图元用一个aspect链接的话返回为真;

Standard_EXPORT   Standard_Boolean HasAspect(const Handle(Graphic2d_Primitive)& aPrimitive) const;

 

--指出交互对象是否有一个交互上下文设备;

Standard_EXPORT   Standard_Boolean HasInteractiveContext() const;

 

--得到交互对象的上下文设备;      

Standard_EXPORT   Handle_AIS2D_InteractiveContext GetContext() const;

Graphic2d_GraphicObject

AIS2D_InteractiveObject类的基类;在一个view内创建一个图形对象,一个图形对象管理一系列图元;默认值为:空,可输出,可绘制,可拾取,不显示,不高亮,优先权为0;

主要方法:

设置视图,设置一个变形,设置获取图层,设置获取优先权,禁用/使用输出,是否可输出,禁用/使用Draw.是否可显示,Erase,高亮显示,颜色,拾取等;

 

OpenCasCade打开sta文件造成面或实体只显示边框的解决办法

今天想完成项目保存建模结果的功能,但是在把所有的数据导出到外部文件保存成为".sta"格式的文件后再次打开该数据文件时发现数据框架里完整地恢复了保存之前的所有数据,而且调用函数把模型显示出来时点和网格...

opencascade中的几种类型转换 [转自Polaris]

1. 将Geom_BSplineSurface转化成TopoDS_Face:   1. 将Geom_BSplineSurface转化成TopoDS_Face: Handle_Geom_BSpl...

Open_CASCADE基础介绍

  • 2012年01月22日 18:11
  • 351KB
  • 下载

open cascade 基础介绍

  • 2014年08月10日 20:59
  • 454KB
  • 下载

在Open Cascade中创建基本几何实体

一、创建基本图元 Making Primitives 将用到如下的类创建基本图元,包括长方体(Box)、楔形体(Wedge)、旋转体(Revol)等。这些类提供Shell和Solid函数来返...

Open+CASCADE中文教程

  • 2012年04月12日 17:59
  • 262KB
  • 下载

Open_CASCADE学习笔记-曲面建模

  • 2012年10月18日 09:58
  • 490KB
  • 下载

Open CASCADE Technology: IGES Support

2015/6/4 Open CASCADE Technology: IGES Support http://www.opencascade.org/doc/occt­6.7.0/overview/h...

Open+CASCADE中文教程

  • 2012年07月28日 14:06
  • 264KB
  • 下载

VS 下 Open Cascade Source Code 编译及自定义工程设置

源码编译: 工程编译顺序:Foundation Classes (file FoundationClasses.*)Modeling Data (file ModelingData.*)Modelin...
  • Augusdi
  • Augusdi
  • 2012年08月29日 08:56
  • 3511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Open CASCADE基础介绍(4)
举报原因:
原因补充:

(最多只允许输入30个字)