opencascade AIS_Point 源码学习 原创
AIS_Point
前言
构造用于组合形状构建的点基准。该基准以加号标记(+)显示。
方法
1
// 初始化点 aComponent,它将构建点基准。
Standard_EXPORT AIS_Point(const Handle(Geom_Point)& aComponent);
2
// 返回索引 1,这是点的默认索引。
virtual Standard_Integer Signature() const Standard_OVERRIDE { return 1; }
3
// 指示点是一个基准。
virtual AIS_KindOfInteractive Type() const Standard_OVERRIDE { return AIS_KindOfInteractive_Datum; }
4
// 返回在 SetComponent 中指定的组件。
Standard_EXPORT Handle(Geom_Point) Component();
5
// 构造点 aComponent 的实例。
Standard_EXPORT void SetComponent (const Handle(Geom_Point)& aComponent);
6
// 如果选择的显示模式对点基准有效,则返回 true。
Standard_EXPORT Standard_Boolean AcceptDisplayMode (const Standard_Integer aMode) const Standard_OVERRIDE;
7
// 允许设置颜色。
Standard_EXPORT virtual void SetColor (const Quantity_Color& theColor) Standard_OVERRIDE;
8
// 允许移除颜色设置。
Standard_EXPORT virtual void UnsetColor() Standard_OVERRIDE;
9
// 允许设置标记。这些设置包括:
// - 标记类型,
// - 标记颜色,
// - 缩放因子。
Standard_EXPORT void SetMarker (const Aspect_TypeOfMarker aType);
10
// 移除标记设置。
Standard_EXPORT void UnsetMarker();
11
// 如果点基准有标记,则返回 true。
Standard_Boolean HasMarker() const { return myHasTOM; }
12
// 将点转换为顶点。
Standard_EXPORT TopoDS_Vertex Vertex() const;
protected:
13
// 计算表示。
Standard_EXPORT virtual void Compute (const Handle(PrsMgr_PresentationManager)& thePrsMgr,
const Handle(Prs3d_Presentation)& thePrs,
const Standard_Integer theMode) Standard_OVERRIDE;
用法示例
AIS_Point
是 OpenCascade 中用于表示和显示几何点的类。它继承自 AIS_InteractiveObject
,并允许在 3D 视图中显示和操作几何点。以下是 AIS_Point
的用法示例:
1. 包含必要的头文件
首先,确保在代码中包含必要的 OpenCascade 头文件:
#include <AIS_Point.hxx>
#include <AIS_InteractiveContext.hxx>
#include <Geom_Point.hxx>
#include <gp_Pnt.hxx>
#include <V3d_View.hxx>
#include <Aspect_TypeOfMarker.hxx>
#include <Quantity_Color.hxx>
2. 创建几何点
创建一个几何点对象:
// 创建一个点 (10, 20, 30)
gp_Pnt aPoint(10, 20, 30);
Handle(Geom_Point) geomPoint = new Geom_CartesianPoint(aPoint);
3. 创建 AIS_Point 对象
创建一个 AIS_Point
对象,并将其设置为几何点:
Handle(AIS_Point) aisPoint = new AIS_Point(geomPoint);
4. 显示点
将 AIS_Point
对象添加到 AIS_InteractiveContext
并显示:
// 初始化视图器
Handle(V3d_Viewer) viewer = ...; // 已初始化的视图器
Handle(AIS_InteractiveContext) context = new AIS_InteractiveContext(viewer);
// 显示点
context->Display(aisPoint, Standard_True);
5. 设置点属性
你可以设置点的颜色和标记类型:
// 设置点的颜色为红色
aisPoint->SetColor(Quantity_NOC_RED);
// 设置点的标记类型为星形
aisPoint->SetMarker(Aspect_TOM_STAR);
// 取消设置点的标记
aisPoint->UnsetMarker();
6. 获取点属性
你可以获取点的相关属性:
// 获取点的几何组件
Handle(Geom_Point) pointComponent = aisPoint->Component();
// 检查点是否有标记
if (aisPoint->HasMarker()) {
// 点有标记
}
// 获取点对应的顶点
TopoDS_Vertex vertex = aisPoint->Vertex();
7. 操作点
你可以通过 AIS_InteractiveContext
操作点,例如平移、旋转等:
// 平移点
gp_Trsf translation;
translation.SetTranslation(gp_Vec(5.0, 0.0, 0.0));
aisPoint->SetLocalTransformation(translation);
context->Redisplay(aisPoint, Standard_True);
示例代码
以下是一个完整的示例代码,演示了如何使用 AIS_Point
显示和操作一个几何点:
#include <AIS_Point.hxx>
#include <AIS_InteractiveContext.hxx>
#include <Geom_CartesianPoint.hxx>
#include <gp_Pnt.hxx>
#include <V3d_Viewer.hxx>
#include <Aspect_TypeOfMarker.hxx>
#include <Quantity_Color.hxx>
int main() {
// 初始化 OpenCascade 视图器和交互上下文
Handle(V3d_Viewer) viewer = ...; // 视图器初始化代码
Handle(AIS_InteractiveContext) context = new AIS_InteractiveContext(viewer);
// 创建一个点 (10, 20, 30)
gp_Pnt aPoint(10, 20, 30);
Handle(Geom_Point) geomPoint = new Geom_CartesianPoint(aPoint);
// 创建 AIS_Point 对象
Handle(AIS_Point) aisPoint = new AIS_Point(geomPoint);
// 设置点的颜色为红色
aisPoint->SetColor(Quantity_NOC_RED);
// 设置点的标记类型为星形
aisPoint->SetMarker(Aspect_TOM_STAR);
// 显示点
context->Display(aisPoint, Standard_True);
// 平移点
gp_Trsf translation;
translation.SetTranslation(gp_Vec(5.0, 0.0, 0.0));
aisPoint->SetLocalTransformation(translation);
context->Redisplay(aisPoint, Standard_True);
return 0;
}
总结
AIS_Point
是一个强大的工具,可以在交互式 3D 场景中显示和操作几何点。通过设置适当的属性和变换,可以实现对点的各种操作,从而增强用户的交互体验。如果需要更详细的示例和高级用法,建议查阅 OpenCascade 的官方文档和示例代码。
参考