AcBr库说明文档

AcBr库说明文档(基于ObjectARX2002)
本节展示如何使用AcBr库(acbr15.dll)来访问拓扑对象,几何对象,还有分析AutoCAD® 实体(entities)如solids,bodies和regions(也就是AcDb3dSolidAcDbBody,和 AcDbRegion类的对象)所包含的数据,以及种种派生类型(例如,AcDbPartAcAsSurface类对象,还有兼容的客户端定义的类型compatible client-defined types)。
概览
AcBr库可以在如下AutoCAD实体中使用:
AcDb3dSolid:代表实体,封装了一个或多个体积
AcDbRegion:代表平坦表面(planar surface),可能包含多个共面的表面(multiple coplanar surfaces
AcDbBody:是所有不被AcDb3dSolid或AcDbRegion所覆盖的边界表示法(boundary representation)对象的具体基类,包括Autodesk Mechanical Desktop和他的客户程序所定义的继承的类型。
AcDbPart:represents a solid or sheet body in the context of an assembly or feature in Autodesk Mechanical Desktop
AcAsSurface:表示Autodesk Mechanical Desktop里作为切片体(sheet body)的单一表面(single surface)。
AcBr库提供对AutoCAD实体(solids)里的建模数据(modeling data)的子集(subset)的只读访问。不要求这些实体是数据库活动的(database active),可以由如下方式创建:
AutoCAD对象创建命令 (例如SPHERE),或者等价的AutoLISP脚本。
Autodesk Mechanical Desktop对象创建命令(例如ADREVOLVE),或者等价的AutoLISP脚本。
胃蛋白酶原Invocation of the AutoCAD EXPLODE command on a part or assembly in Autodesk Mechanical Desktop.
使用文件导入功能,例如:OPEN, DXFIN, ACISIN, ADSATIN, VDAFSIN, STEPIN, AMIDFIN, or IGESIN
节目实例化(Programmatic instantiation),简单的使用AcDb3dSolid::createFrustum(), AcDb3dSolid::createBox(), AcDb3dSolid::createWedge(), AcDb3dSolid::createSphere(), AcDb3dSolid::createTorus(), AcDbRegion::createFromCurves().
AcBr的典型用法如下:
传送实体或子实体数据到你的程序里进行显示,分析或维护。
查实体里感兴趣部分的详细信息并且查询相关数据,比如几何结构。
传送实体数据到其他的建模系统中(这就是数据交换)。
网格化实体的表面(surface)数据进行显示,分析或维护。
支撑分析(比如点和线的包含关系,界定块,以及聚合属性mass properties)。
AutoCAD的实体(solids)是用边界进行表示的(通常被成为B-rep模型),由一组拓扑连通对象和相关联的几何边界对象组成。拓扑对象由AcBr库定义,在本节稍后进行介绍,而几何对象则由AcGe库定义。
solver
AcBr库定义或产生的对象驻留在(reside)三维欧几里德模型空间(E3)。唯一的例外是定义在二维参数空间表面(surface)的几何对象(例如参数曲线parameter curves 和参数点parameter points)。
通常,AcBr库只支持二重拓扑域(2-manifold topological domain)。支持单一顶点(Singularities,即几何上的退化。译者注:应该是表示某中特殊的点,实在不到合适的名词来对应,只有用“单一顶点”来表示,可能不太准确。)的是为了表示圆锥的顶点,但是有线形体(body)和混合维度实体(solid,可能包含悬挂线和面)不被支持,他们也无法被AutoCAD识别。明日香补完计划
一般的非多重域(nonmanifold domain)是二重拓扑域的超集(superset),允许不同的
实体体积(solid volumes)接触单一的点,曲线和面;也允许再构造,切片和实体对象(wireframe, sheet, and solid objects)的任何组合。AutoCAD和AcBr库支持下面的非多重域对象:
三权分立的弊端两个二重域实体通过共享的边或顶点联合
包含单个面的AcDbBody对象
两个铁球同时着地
只有在如下情况中拓扑对象允许没有边界界定(unbounded,也就是没有更低维度的边界拓扑no lower dimensional bounding topology):
封闭表面,在u和v方向上固有界定(intrinsically bounded)的(例如完全环或球full torus or sphere),由不包含循环边界的表面所表示。
封闭曲线,固有界定(intrinsically bounded)的(例如完全圆或椭圆full circle or ellipse),由拥起点和终点相同的边表示。
限制
某些操作不支持非一致缩放(nonuniform scaling)。包括所有返回扩展(external)曲线或表面(包括NURBS表面)的函数。
在AcBr对象的子实体路径被设定后,整个子实体路径变换(transforms)的链(chain)被缓存起来(从效率来考虑)。如果一个块引用被删除,它将会被指向一个新的变换矩阵,但AcBr对象不会知道它缓存了一个已经过时了的变换。如果一个插入(insert)被改为引用另一个AutoCAD对象,子实体路径完全不再适用,因此在被用来重新初始化所有相关AcBr对象之前应该被更新来反映这个新的实体引用。
在AutoCAD中单一点(例如圆锥顶点)映射到边,并且可以被用来初始化专门查询顶点的AcBREdge,但是不能查询曲线结构(geometry)或用来设置AcBrLoopEdgeTraverser。用AcBrLoopVertexTraverser也可以访问它们,作为面(face)的单循环边界(single loop boundary)的单一点的对应。
类继承
AcBr库的类继承是ObjectARX类继承的一个子集,它定义了如下类:
注意:AcBR对象不是从AcDbObject继承的,因此不能用AutoCAD数据库注册。
拓扑对象
拓扑对象是主要的或者次要的,取决于它们是否被绑定到一个指定的拓扑维度上。
主拓扑对象被用来完全覆盖评价模型空间(evaluated model space completely)。它们由点集合定义,被n-simplexes引用,n是它们的拓扑维度。0-simplexes是一个顶点,1-simplexes是一条边,2-simplexes是一个面(face),3-simplexes是组合体(complex)。它们不包括边界,但是它们可以被任意低维度的simplexes所界定。
主拓扑对象有:
Complex:在R3 in E3 里连接的拓扑的三维区域的点(points)。是由顶点(vertices),面(face),边组成的体积。Complex通常由一个或多个shell界定。
Face:在R2 in E3 里连接的拓扑的二维区域的点(points)。是complex上一个外壳边界(shell boundary)的一个表面(surface)的被界定的,可定向子集。
Edge:在R1 in E3 里连接的拓扑的一维区域的点(points)。是face上一个单循环边界上一个曲线(curve)的被界定的,可定向子集。
Vertex:在R0 in E3 里连接的拓扑的0维度区域的点(points)。是面(face)上的单一点。一个顶点被它自己所界定。
所有这些主拓扑对象返回的结构可以被要求进一步使用Autodesk Geometry Library。
次级拓扑对象是主拓扑对象的连接的集合(connected collections),并且不需要被绑定到指定的拓扑维度上。它们表示从高维度simplex到定义它的边界的连接的部分的低维度集合的边界映射。每个主拓扑对象至少属于一个次级拓扑对象。
次级拓扑对象有:
Brep:评价空间里所有事物的集合;也就是,一个唯一E3 里所有主要和其他相关次级拓扑对象的集合。集合里至少包含一个单一complex。
Shell:界定complex的面(faces)的无序集合。 集合里至少包含一个单一面。There
may be at most one exterior shell,and there must be an exterior shell for there to be interior shells (voids)。
Loop:一个面的连接边界里的边和顶点的有序集合,可能由一个单个顶点(single vertex)(对单一顶点how often do you exercise,例如圆锥的顶点)或顺序连接的边组成。There may be at most one exterior loop, and there must be an exterior loop for there to be interior loops (holes).
在程序中使用拓扑对象
正确使用AcBr库涉及到几个内部和外部对象之间的交流:AcBrEntity, AcBrTraverser,以及它们的派生类:AcDbFullSubentityPath和它来自AcDb库的组成部分(AcDbObjectId, AcDbSubentId, and so on);还有来自AcGe库的几何对象(AcGeSurface, AcGeCurve3d, AcGePoint3d, and so on)。

本文发布于:2024-09-21 21:59:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/118831.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   拓扑   实体   边界   顶点   集合   表面
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议