Open CASCADE基础介绍(5)
Graphic2d_ImageFile类
定义一个图像,以图像的中心位置作为插入点,X,Y定义在模型空间的位置,adx,ady 定义在设备空间的偏移量.ascale定义一个缩放系数;
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Aspect_WidthMap类
定义一个WidthMap集合对象;
主要方法有,
--添加一个入口:
Standard_Integer AddEntry(const Aspect_WidthOfLine aStyle) ;
void AddEntry(const Aspect_WidthMapEntry& AnEntry) ;
Standard_Integer AddEntry(const Quantity_Length aStyle) ;
--根据索引得到一个入口:
Aspect_WidthMapEntry Entry(const Standard_Integer AnIndex) const;
示例:
--定义private :
Handle(Aspect_WidthMap) myWidthMap;
--遍历:
for(int i =1;i<=myWidthMap->Size();i++)
{
Aspect_WidthMapEntry aWidthMapEntry = myWidthMap->Entry(i);
}
--得到一个入口: Aspect_WidthMapEntry aWidthMapEntry = myWidthMap->Entry(CurrentSelectionIndex);
Aspect_TypeMap类
定义一个线型集合对象:
Aspect_MarkMap类
定义一个MarkMap集合对象;
Aspect_FontMap类
定义一个字体集合对象;
Aspect_ColorMap类
定义一个颜色集合对象;
GGraphic2d_SetOfCurves类
基类是:Graphic2d_Line;
定义一图元为由多个curves 的集合;主要方法有添加一个curves, 得到curves的数量,得到其中一个curves等;只绘制其中一个元素,是否为拾取状态;
示例:
Handle(Prs2d_AspectLine) aLineAspect = new Prs2d_AspectLine;
aLineAspect->SetTypeOfFill(Graphic2d_TOPF_EMPTY);
aLineAspect->SetTypeIndex(...);
aLineAspect->SetColorIndex(...);
aLineAspect->SetWidthIndex(...);
Handle(Graphic2d_SetOfCurves) segment;
segment = new Graphic2d_SetOfCurves(this);
segment->Add(myGeom2dCurve);
将此曲线集合应用所定义的线型线宽等;
SetAspect(aLineAspect, segment);
创建交互式对象相关的类介绍
AIS_Line
此类的继承关系是:
Standard_Transient->MMgt_TShared->PrsMgr_PresentableObject-->SelectMgr_SelectableObject-->AIS_InteractiveObject->AIS_Line
Standard_Transient:抽象类,主要定义分配空间,得到类型,引用计数等;
MMgt_TShared:抽象类,主要用来管理对象的内存;
PrsMgr_PresentableObject类:表示一个可表达的二维或三维图形对象;主要方法有设置位置,更新,图形类型等;
此类的派生类类型有:
-AIS_InteractiveObject
-AIS_ConnectedInteractive
-AIS_MultipleConnectedInteractive
-AIS_Shape
SelectMgr_SelectableObject类:表示一个可选择的对象;
AIS_Line,AIS_Circle等类
定义一个直线,园等;主要方法有,返回对象的类型,设置线宽,线型,颜色等;
示例:
GC_MakeCircle C(gp_Pnt(-100.,-300.,0.),gp_Pnt(-50.,-200.,0.),gp_Pnt(-10.,-250.,0.));
Handle(AIS_Circle) anAISCirc = new AIS_Circle(C.Value());
myAISContext->Display(anAISCirc);
AIS_InteractiveContext类
交互式设备类,可以用它来管理交互式图形对象,可以在一个或多个视图中。如果图形对象已经装入交互式设备,可以直接调用交互式对象的方法。
使用设备时必须区分两种状态:
-没有打开本地设备。也称为不确定点;
-打开了一个或多个设备;
有的方法可以使用在打开的设备中,有的方法用在关闭的设备中,有的方法与设备状态无关;
--当想工作在一个入口类型上,应设置选项UseDisplayedObjects为假,可显示对象可以重新可视化交互对象;
--当使用缺省的选项来打开一个设备时,注意:
:可视化的交互对象在缺省选择模式下是活动的,必须分离那些不想使用的对象;
:交互式对象可以自动分解为子图形;
:“临时的”交互对象不会自动计入总数,,如果想使用它,必须手动装载它;
使用过程是:
--用正确的选项打开设备;
--装载/显示对象;
--如果需要,激活标准模式;
--创建一个过滤器,添加到设备中;
--查找/选择/重置所需的入口;
--根据索引关闭设备;
--创建一个交互设备编辑器很有用,可以设置不同的设备用不用的选择/表达方式;
常见方法:
--如果没有设备打开,交互对象没有显示模式,缺省的显示模式是0,如果一个设备是打开的并且更新为假,对象不会更新显示。
void Display(const Handle(AIS_InteractiveObject)& anIobj,const Standard_Integer amode,const Standard_Integer
aSelectionMode,const Standard_Boolean updateviewer = Standard_True,const Standard_Boolean allowdecomposition =
Standard_True) ;
--使用给定的选择模式载入一个交互对象:
void Load(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Integer SelectionMode = -1,const Standard_Boolean
AllowDecomp = Standard_False) ;
--擦除一个对象:如果putinCollector为假,对象被擦除但不放入集合中;
void Erase(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Boolean updateviewer = Standard_True,const
Standard_Boolean PutInCollector = Standard_True) ;
--擦除视图集合中的每个对象;
void EraseAll(const Standard_Boolean PutInCollector = Standard_True,const Standard_Boolean updateviewer = Standard_True) ;
--从集合中显示所有对象;
void DisplayAll(const Standard_Boolean OnlyFromCollector = Standard_True,const Standard_Boolean updateviewer =
Standard_True) ;
--从集合中显示一个对象;
void DisplayFromCollector(const Handle(AIS_InteractiveObject)& anIObj,const Standard_Boolean updateviewer = Standard_True)
--擦除选择的对象;
void EraseSelected(const Standard_Boolean PutInCollector = Standard_True,const Standard_Boolean updateviewer =
Standard_True) ;
--改变临时对象的状态,
Standard_Boolean KeepTemporary(const Handle(AIS_InteractiveObject)& anIObj,const Standard_Integer InWhichLocal = -1) ;
--从所有的视图中移除交互对象;
void Clear(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Boolean updateviewer = Standard_True) ;
--从每个视图中移除对象;
void Remove(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Boolean updateviewer = Standard_True) ;
--从所有打开的设备中移除所有对象;
void RemoveAll(const Standard_Boolean updateviewer = Standard_True) ;
--通过鼠标动态检测,感知的图元被高亮显示。缺省的鼠标移过时的颜色为白色。
void Hilight(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Boolean updateviewer = Standard_True) ;
--改变视图中线的颜色;
void HilightWithColor(const Handle(AIS_InteractiveObject)& aniobj,const Quantity_NameOfColor aCol,const Standard_Boolean updateviewer = Standard_True) ;
--从入口对象中移除高亮;更新视图;
void Unhilight(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Boolean updateviewer = Standard_True) ;
--设置显示的优先权;
void SetDisplayPriority(const Handle(AIS_InteractiveObject)& anIobj,const Standard_Integer aPriority) ;
--设置所看到的交互对象的显示模式;
void SetDisplayMode(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Integer aMode,const Standard_Boolean
updateviewer = Standard_True) ;
--设置/移除交互对象的选择模式:
void SetSelectionMode(const Handle(AIS_InteractiveObject)& aniobj,const Standard_Integer aMode) ;
void UnsetSelectionMode(const Handle(AIS_InteractiveObject)& aniobj) ;
--设置感知的精度:
void SetSensitivity(const Standard_Real aPrecision) ;
--定义当前选择感知的像素:
void SetSensitivity(const Standard_Integer aPrecision = 4) ;
--设置/重置初始图形的位置;如果有一个位置返回为真;
void SetLocation(const Handle(AIS_InteractiveObject)& aniobj,const TopLoc_Location& aLocation) ;
void ResetLocation(const Handle(AIS_InteractiveObject)& aniobj) ;
Standard_Boolean HasLocation(const Handle(AIS_InteractiveObject)& aniobj) const;
得到实体对象的位置;
const TopLoc_Location& Location(const Handle(AIS_InteractiveObject)& aniobj) const;
--改变当前面的模式;缺省模式是Aspect_TOFM_TWO_SIDE。意味着属性在前面和后面都应用;
void SetCurrentFacingModel(const Handle(AIS_InteractiveObject)& aniobj,const Aspect_TypeOfFacingModel aModel =
Aspect_TOFM_BOTH_SIDE) ;
--设置/获得三角形的尺寸,缺省值是<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />100mm.
void SetTrihedronSize(const Standard_Real aSize,const Standard_Boolean updateviewer = Standard_True) ;
Standard_Real TrihedronSize() const;
--设置/获取平面的尺寸:
Standard_EXPORT void SetPlaneSize(const Standard_Real aSizeX,const Standard_Real aSizeY,const Standard_Boolean
updateviewer = Standard_True) ;
--得到实体对象的显示状态;
AIS_DisplayStatus DisplayStatus(const Handle(AIS_InteractiveObject)& anIobj) const;
--得到实体对象的显示模式的列表:
const TColStd_ListOfInteger& DisplayedModes(const Handle(AIS_InteractiveObject)& aniobj) const;
--关于绘制隐藏线相关的一些函数,通过名称就可以知道函数的意思;
EnableDrawHiddenLine();
DisableDrawHiddenLine();
Standard_Boolean DrawHiddenLine();
--设置/得到UV等高参数;等高参数是否可用;
Standard_Integer IsoNumber(const AIS_TypeOfIso WhichIsos = AIS_TOI_Both) ;
--设置/添加/移除当前对象.....
InitCurrent() ;MoreCurrent();NextCurrent();
Standard_Boolean IsCurrent(const Handle(AIS_InteractiveObject)& aniobj) const;
Handle_AIS_InteractiveObject Current() const;
Handle_AIS_InteractiveObject FirstCurrentObject() ;
void HilightCurrents(const Standard_Boolean updateviewer = Standard_True) ;
void UnhilightCurrents(const Standard_Boolean updateviewer = Standard_True) ;
void ClearCurrents(const Standard_Boolean updateviewer = Standard_True) ;