AcBrFace类是brep面的接口类。这个类定义了与一个brep的面级(face level)相关的函数,作为AutoCAD面子实体和AcBr之间的映射。这还被用于设置一个全局的AcBrBrepFaceTraverser的第一个面或一个AcBrFaceLoopTraverser的面宿主。
面是主要的brep元素,因此有关联的几何体(即,表面)。这个类在AcGe和AcDb3dSolid, AcDbRegion, 和AcDbBody之间提供了一个间接的链接。
AcBrBrepFaceTraverser::setFace(), AcBrBrepFaceTraverser::getFace(), AcBrFaceLoopTraverser::setFace(), AcBrFaceLoopTraverser::getFace(), AcBrLoop::getFace()
AcBrEntity
brface.h
AcBrFace类用于创建一个AcBr环境下的面,以遍历表面几何体和为参数空间曲线和点几何体提供解释的环境。
子实体路径应包含一个AutoCAD实体填充(solid)、面域(region)、或实体(body)的对象ID;它的成链的变换(chained
transforms)(通过嵌套的AcDbBlockReference);和一个有效的面子实体ID。
AcGeEntity3d::transformBy, AcGeExternalBoundedSurface::getBaseSurface,
AcGeExternalSurface::isNativeSurface
AcBrFace建构器和析构器
~AcBrFace(); 建构器。 |
||
AcBrFace( const AcBrFace&
src);
复制建构器。实例化一个对象使之初始化为与src对象具有相同的内容。 AcBrFace(); 默认的建构器。实例化一个空的对象。isNull()函数将返回kTrue。 |
AcBrFace操作符
AcBrFace & operator =( const AcBrFace&
src);
赋值操作符。向左边的操作数赋予src对象的内容。 |
AcBrFace查询函数
AcBr::ErrorStatus getCurveRelationToFace( const AcGeCurve3d& curve, AcBr::Relation& relation) const;
线包含性查询。返回一个外部线段与面的关系(在内部,在外部等)。二者比较应使用AcBrEntity::getLineContainment()。 |
||||||
AcBr::ErrorStatus getOrientToSurface( Adesk::Boolean& bOrientToSurface)
const;
方向查询。返回一个简单的布尔值表示在任何点面的外朝向是否在表面法矢量的方向上(kTrue)或相反的方向上(kFalse)。 如果对象是未初始化或无效的(即,空的),则返回eInvalidObject。 如果在对象的列表宿主最后设置后拥有的AutoCAD实体发生改变,则返回eBrepChanged。这将导致对象则成为无效。 如果表面几何体丢失,则返回eMissingGeometry。 在一个错误的事件中,方向参考参数的值不改变,因此没有含义。 |
||||||
AcBr::ErrorStatus getPointRelationToFace( const AcGePoint3d& point, AcBr::Relation& relation) const;
点包含性查询。返回外部点与面的关系(内部的,外部的等)。二者比较应使用AcBrEntity::getPointContainment()。 |
||||||
AcBr::ErrorStatus getShell( AcBrShell& shell) const;
getShell()的上方邻接的查询返回被这个面限制的抽壳(通常是惟一的)。 抽壳由调用者初始化并且通过参考(reference)传递让getShell()进行设置。如果这个面对象未初始化,则返回eUninitialisedObject。 如果在子实体路径最后设置后,关联的AutoCAD对象被修改,则返回eBrepChanged。 如果抽壳丢失,则返回Acad::eNotInDatabase。 在一个错误的事件中,抽壳参考对象不改变,因此很可能未被初始化。 |
||||||
AcBr::ErrorStatus getSurface( AcGeSurface*& surface) const;
表面初始化。以一个AcGe的外部有界(转换至AcGeSurface基类)表面返回面的下方表面,含有从应用的对象ID数组的变换的整个链。surface作为一个空的AcGeSurface基类参考点传递至getSurface()进行初始化。 如果对象未初始化或是无效的(即,空的),则返回eInvalidObject。 如果在对象的列表宿主最后设置后,拥有的AutoCAD对象被修改,则返回eBrepChanged。这将导致对象成为无效的。 如果表面几何体丢失,同返回eMissingGeometry。 如果AcGe表面为空,则返回eOutOfMemory。 如果任何与成链的变换关联的AutoCAD数据库对象不能打开,则返回eWrongObjectType。 在一个错误的事件中,表面参考指针不改变,因此很可能指向一个空对象。 |
||||||
AcBr::ErrorStatus getSurfaceAsNurb( AcGeNurbSurface& nurb, const double& fitTolRequired
= *(double*)NULL, double& fitTolAchieved
= *(double*)NULL) const;
getSurfaceAsNurb()模型空间表面查询返回这个表面下方表面作为一个子集AcGeNurbSurface,含有从应用的子实体路径的变换的整个链。表面使用提供的允许误差(从嵌套的变换由反向比例系数调整,使得与这个表面有相同的估计空间)转化为一个NURB(如果需要),而且表面是uv范围的子集,uv范围是从面的模型空间边界框至表面的uv参数空间栅格的投影。实现的允许误差(如果提供)以一个double(双精度数) 返回,含有从嵌套的变换的最大比例系数。 表面由用户初始化并用参考(reference)传递让getSurfaceAsNurb()进行设置。如果面对象未初始化,则返回eUninitialisedObject。 如果在子实体路径最后被设置后关联的AutoCAD对象被修改,则返回eBrepChanged。 如果fitTolRequired参数没有提供或设为0,则使用默认的允许公差。 如果使用一个负值,则返回Acad::eOutOfRange。 如果表面几何体丢失,则返回Acad::eDegenerateGeometry。 如果变换没有统一的比例,则Acad::eCannotScaleNonUniformly作为一个警告信息与未变换的表面一起返回。 在一个错误的事件中,表面和允许误参考参数不改变。 |
||||||
AcBr::ErrorStatus getSurfaceAsTrimmedNurbs( Adesk::UInt32& numNurbs, AcGeExternalBoundedSurface**& ppNurbs)
const;
getSurfaceAsTrimmedNurbs()模型空间裁剪表面查询,将这个表的下方表面转换至一个裁剪表示。它以一个AcGeExternalBoundedSurface指针数组(与数组大小,即numNurbs一起)返回这个表示,含有从应用的子实体路径的变换的整个链。表面被转换至一个NURB(如果需要)而且从接合处分开(如果被面的边界穿过)。 表面数组以一个空的AcBrExternalBoundedSurface参考指针传递至getSurfaceAsTrimmedNurbs()以实例化。如果这个面对象未初始化,则返回eUninitialisedObject。 如果在子实体路径最后被设置后关联的AutoCAD对象被修改,则返回eBrepChanged。 如果表面几何体丢失,则返回eMissingGeometry。 在一个错误的事件中,表面数组参考指针不改变,因此很可能指向一个空数组,且nurbs的数量为0。 |
||||||
AcBr::ErrorStatus getSurfaceType( AcGe::EntityId& type) const;
表面类型查询。用于确定面的下方表面和在AcGe中支持的表面类型之间的最佳匹配。这与在AcBrFace::getSurface()返回的表面上调用的变换函数AcGeExternalSurface::isNativeSurface()所返回的类型相同,因此作为用类型过滤表面的一种快捷方式。如果表面类型不支持AcGe中的表面类型,则返回kExternalBoundedSurface。 如果对象未初始化或是无效的(即,空的),则返回eInvalidObject。 如果在对象的列表宿主最后设置后,拥有的AutoCAD实体发生改变,则返回eBrepChanged。 如果表面几何体丢失,则返回eMissingGeometry。 在一个错误的事件中,表面类型参考参数被设为kExternalBoundedSurface。 |