opencascade TopoDS_AlertWithShape源码学习 原创
opencascade TopoDS_AlertWithShape
前言
一种特定的对象(我们称之为Alert对象),该对象在其内部字段中存储了一个TopoDS形状
方法
1
带有形状参数的构造函数
TopoDS_AlertWithShape (const TopoDS_Shape& theShape);
2
返回包含的形状
TopoDS_Shape& GetShape() ;
3
设置形状
void SetShape(const TopoDS_Shape& theShape) { myShape = theShape; }
4
返回false。
virtual Standard_Boolean SupportsMerge () ;
5
返回false。
Standard_Boolean Merge (const Handle(Message_Alert)& theTarget)
6
OCCT RTTI
DEFINE_STANDARD_RTTIEXT(TopoDS_AlertWithShape, Message_Alert)
使用OCCT的RTTI宏来定义TopoDS_AlertWithShape类的运行时类型信息,并将其注册为Message_Alert的子类。这使得在运行时可以查询对象的类型信息。
用法用例
**TopoDS_AlertWithShape
是 OpenCASCADE 中用于处理拓扑结构警告的类。它通常用于在构建或修改拓扑实体时,发现错误或不一致的情况,并能够生成相应的警告信息。以下是一个简单的示例,展示如何使用 TopoDS_AlertWithShape
来处理拓扑结构中的警告情况。
示例:使用 TopoDS_AlertWithShape
#include <iostream>
#include <TopoDS.hxx>
#include <TopoDS_AlertWithShape.hxx>
#include <TopoDS_Shape.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
#include <BRepBuilderAPI_Copy.hxx>
int main() {
// 创建两个顶点
BRepBuilderAPI_MakeVertex mv1(gp_Pnt(0.0, 0.0, 0.0));
TopoDS_Shape shape1 = mv1.Shape();
BRepBuilderAPI_MakeVertex mv2(gp_Pnt(1.0, 1.0, 1.0));
TopoDS_Shape shape2 = mv2.Shape();
// 尝试复制一个顶点
BRepBuilderAPI_Copy copier(shape1);
copier.Perform(shape2);
// 检查警告
if (copier.Shape().IsNull()) {
std::cout << "Copy failed. No valid shape generated." << std::endl;
// 获取警告信息
TopoDS_AlertWithShape alert = copier.GetAlert();
if (alert.HasShape()) {
std::cout << "Alert message: " << alert.Message() << std::endl;
// 输出相关的拓扑结构
const TopoDS_Shape& conflictingShape = alert.Shape();
std::cout << "Conflicting shape type: " << conflictingShape.ShapeType() << std::endl;
}
} else {
std::cout << "Copy successful. Resulting shape is valid." << std::endl;
}
return 0;
}
示例说明:
-
包含头文件:
<TopoDS.hxx>
:包含了TopoDS_Shape
及其相关类型的定义。<TopoDS_AlertWithShape.hxx>
:定义了TopoDS_AlertWithShape
类,用于处理拓扑结构中的警告信息。<BRepBuilderAPI_MakeVertex.hxx>
、<BRepBuilderAPI_Copy.hxx>
:定义了分别用于创建顶点和复制实体的类和方法。
-
创建顶点:
- 使用
BRepBuilderAPI_MakeVertex
创建两个不同的顶点shape1
和shape2
。
- 使用
-
尝试复制顶点:
- 使用
BRepBuilderAPI_Copy
对shape1
进行复制,并尝试将shape2
复制到shape1
。 copier.Perform(shape2);
执行复制操作。
- 使用
-
检查警告:
- 使用
copier.Shape().IsNull()
检查复制操作是否成功。如果复制失败,则获取警告信息。 - 使用
copier.GetAlert()
获取复制操作中生成的警告信息。
- 使用
-
输出警告信息:
- 如果复制失败,输出警告信息 (
alert.Message()
) 和相关的拓扑结构信息 (alert.Shape()
)。
- 如果复制失败,输出警告信息 (
示例的运行结果:
如果 BRepBuilderAPI_Copy
复制操作成功,则输出 Copy successful. Resulting shape is valid.
。如果复制操作失败,则输出警告信息,显示无效的操作或不一致的拓扑结构。
这个示例演示了如何使用 TopoDS_AlertWithShape
来处理拓扑结构操作中的警告情况,这对于开发复杂的几何建模和处理算法非常有用。**
参考
TopoDS_Vertex
-
引用一个潜在可以被赋予位置和方向的基础顶点
-
对于基础顶点有一个位置,指定它在局部坐标系统中的放置位置
-
对于基础顶点有一个几何方向,指的是其几何特性上的方向(与其相对其他形状的方向不同)。
TopoDS_Edge
描述了一条边,它 引用了一条基础边,该基础边有可能被赋予一个位置和方向为基础边提供了一个位置,定义了它在本地坐标系中的位置为基础边提供了一个方向,这是从几何学的角度(而不是相对于其他形状的方向)来定义的。
TopoDS_Wire
-
引用一个潜在可以被赋予位置和方向的基础线
-
对于基础线有一个位置,指定它在局部坐标系统中的放置位置
-
对于基础线有一个几何方向,指的是其几何特性上的方向(与其相对其他形状的方向不同)。
参考
TopoDS_Face
描述了一个面,它 引用了一个基础面,该基础面有可能被赋予一个位置和方向为基础面提供了一个位置,定义了它在本地坐标系中的位置为基础面提供了一个方向,这是从几何学的角度(而不是相对于其他形状的方向)来定义的。
参考
Here’s the translation of the provided text:
TopoDS_Shell
-
引用一个潜在可以被赋予位置和方向的基础壳体
-
对于基础壳体有一个位置,指定它在局部坐标系统中的放置位置
-
对于基础壳体有一个几何方向,指的是其几何特性上的方向(与其相对其他形状的方向不同)。
TopoDS_Compound
描述了一个复合体,它 引用了一个基础复合体,该基础复合体有可能被赋予一个位置和方向 为基础复合体提供了一个位置,定义了它在本地坐标系中的位置为基础复合体提供了一个方向,这是从几何学的角度(而不是相对于其他形状的方向)来定义的将形状 S 转换为更专门化的返回类型,即复合体(Compound)。
TopoDS_CompSolid
描述了一个复合实体,它引用了一个基础复合实体,该基础复合实体有可能被赋予一个位置和方向 为基础复合实体提供了一个位置,定义了它在本地坐标系中的位置为基础复合实体提供了一个方向,这是从几何学的角度(而不是相对于其他形状的方向)来定义的
将形状 S 转换为更专门化的返回类型,即复合实体(CompSolid)。
TopoDS_HShape
一个用于通过句柄操作Shape的类”。在这个上下文中,Shape 通常指的是CAD(计算机辅助设计)、CAM(计算机辅助制造)或类似环境中表示几何形状的对象,而“handle”则是一种智能指针或引用,它封装了对Shape对象的访问,以便进行安全且有效的操作。
这个类将提供一系列方法来获取、设置或修改Shape对象的属性,或者执行与该Shape相关的其他操作,所有这些操作都通过句柄来进行,以确保对Shape对象的访问是安全且受控的
参考