opencascade V3d_RectangularGrid 源码学习 原创

类V3d_RectangularGrid

在这里插入图片描述

V3d_RectangularGrid()

V3d_RectangularGrid::V3d_RectangularGrid(const V3d_ViewerPointer &aViewer,
const Quantity_Color &aColor,
const Quantity_Color &aTenthColor)
// 构造函数

◆ ~V3d_RectangularGrid()

virtual V3d_RectangularGrid::~V3d_RectangularGrid()
// 虚析构函数

成员函数文档
◆ Display()

virtual void V3d_RectangularGrid::Display()
overridevirtual
// 在屏幕上显示网格。

实现了 Aspect_Grid。

◆ DumpJson()

virtual void V3d_RectangularGrid::DumpJson(Standard_OStream &theOStream,
Standard_Integer theDepth = -1) const
overridevirtual
// 将我的内容转储到流中。

从 Aspect_RectangularGrid 重新实现。

◆ Erase()

virtual void V3d_RectangularGrid::Erase() const
overridevirtual
// 从屏幕上擦除网格。

实现了 Aspect_Grid。

◆ GraphicValues()

void V3d_RectangularGrid::GraphicValues(Standard_Real &XSize,
Standard_Real &YSize,
Standard_Real &OffSet) const
// 返回图形参数值。

◆ IsDisplayed()

virtual Standard_Boolean V3d_RectangularGrid::IsDisplayed() const
overridevirtual
// 当网格在屏幕上显示时返回 TRUE。

实现了 Aspect_Grid。

◆ SetColors()

virtual void V3d_RectangularGrid::SetColors(const Quantity_Color &aColor,
const Quantity_Color &aTenthColor)
overridevirtual
// 更改网格的颜色。

从 Aspect_Grid 重新实现。

◆ SetGraphicValues()

void V3d_RectangularGrid::SetGraphicValues(const Standard_Real XSize,
const Standard_Real YSize,
const Standard_Real OffSet)
// 设置图形参数值。

◆ UpdateDisplay()

virtual void V3d_RectangularGrid::UpdateDisplay()
overrideprotectedvirtual
// 更新网格参数。

这个包提供了来自 BRepAdaptor 的曲线和曲面的包围盒。这些函数用于将拓扑形状添加到一个包围盒中。

Add()

向包围盒 B 中添加形状 S。具体来说,将依次添加到 B 中:每个 S 的面;如果存在,则使用面的三角剖分;然后是 S 的每条不属于面的边,如果存在,则使用边的多边形;最后是 S 的每个不属于边的顶点。在每个基本操作之后,包围盒 B 的大小会增加相应子形状的公差值。当使用面的三角剖分时,这种增大值是三角剖分偏差和面公差的总和。当使用边的多边形时,这种增大值是多边形偏差和边公差的总和。警告:如果没有在形状 S 的数据结构中插入三角剖分,则此算法会消耗大量时间。结果的包围盒可能比对象略大。

AddClose()

将形状 S 添加到包围盒 B 中。这是一种快速算法,但仅在形状 S 由多边形平面面组成时有效,如 S 是精确形状的逼近多面体表示时。特别注意,因为不检查此条件,如果未遵守此条件,则在建立包围盒的算法中可能会出现错误。请注意,结果的包围盒不会像 Add 函数那样通过子形状的公差值增大。因此,结果的包围盒的添加部分更接近形状 S。

AddOBB()

计算形状 theS 的定向包围盒。实现了两种独立的计算方法:第一种基于点集(因此需要三角剖分形状或具有平面面和线性边的形状)。如果 theIsTriangulationUsed 为 FALSE,则将完全忽略三角剖分。如果 theIsShapeToleranceUsed 为 TRUE,则结果盒子将根据形状的公差进行扩展。theIsOptimal 标志定义是否为了性能而寻找更紧凑的 OBB。

AddOptimal()

将形状 S 添加到包围盒 B 中。此算法构建精确的包围盒,其仅在形状的几何边界上与精确几何边界有所不同。算法与 Add 方法相同,但使用更精确的方法构建几何对象的包围盒。如果 useShapeTolerance = True,则包围盒将根据形状公差进行扩展,并且这些公差将用于包围盒大小计算的数值方法,否则,包围盒将根据底层几何实体的大小进行构建,数值计算使用公差 Precision::Confusion()。

总结

使用过程中 Add 求的快一些 但是有些求取不准确
AddOptimal 相比Add求的慢一些 但是比Add准确度高

posted @ 2024-05-22 23:55  一点灯  阅读(0)  评论(0编辑  收藏  举报  来源