- UID
- 121108
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-4-4
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2004-5-31 20:59:36
|
显示全部楼层
以下是帮助的全文
我看了之后怎么还是一点思路都没有呢
AcDb3dSolid类
此类的对象表示AutoCAD中的3D模型。
一个AcDb3dSolid实体是作为实体实际图形表示的一个ACIS对象的容器和接口。
此类提供了不同的方法用于创建实体图元和合并它们形成一个新的实体,与使用AutoCAD命令集创建实体对象的方法类似。
此类没有提供直接对作为实际实体表示的ACIS对象的边、顶点或面进行操作的方法。
继承自
AcDbEntity
包含文件
dbsol3d.h
提示
要遍历实体的底层ACIS对象的边、面和顶点,可使用BREP API。对ACIS对象的子实体进行操作需要一个ACIS开发许可或使用Mechanical Desktop API。
参见
AcDbRegion, AcDbFullSubentPath, AcDbSubentId, AcGePlane, AcGePoint3d, AcGeMatrix3d
成员
AcDb3dSolid建构器和析构器
AcDb3dSolid::~AcDb3dSolid 函数
virtual
~AcDb3dSolid();
析构器。
AcDb3dSolid::AcDb3dSolid 函数
AcDb3dSolid();
默认建构器。初始化count为0且isNull为Adesk::kTrue。
AcDb3dSolid编辑函数
AcDb3dSolid::booleanOper 函数
virtual Acad::ErrorStatus
booleanOper(
AcDb::BoolOperType operation,
AcDb3dSolid* solid);
operation
输入布尔操作的类型
solid
输入指向要进行布尔操作的另一个实体的指针
在此实体和pSolid之间执行布尔操作。可能的操作类型为:
AcDb::kBoolUnite
AcDb::kBoolIntersect
AcDb::kBoolSubtract
如果布尔操作成功,则pSolid的ACIS对象被删除,返回Acad::eOk,而且ACIS对象的isNull()方法将返回Adesk::kTrue。
如果pSolid为NULL,则返回Acad::eInvalidInput。
如果在两个实体间的布尔操作失败,则两个实体的ACIS对象都被删除且返回Acad::eGeneralModelingFailure。
AcDb3dSolid::cleanBody 函数
virtual Acad::ErrorStatus
cleanBody();
删除与支持实体拓扑无关的所有边和面。
如果成功返回Acad::eOk,如果失败则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::copyEdge 函数
virtual Acad::ErrorStatus
copyEdge(
const AcDbSubentId & subentId,
AcDbEntity *& newEntity);
subentId
输入AcDb3dSolid中的一条边的子实体ID
newEntity
作为一个新实体的边
此方法将指定的边复制为一个AutoCAD实体,这个实体可以是一个AcDbLine, AcDbCircle, AcDbArc, AcDbEllipse,或AcDbSpline。结果实体的属性(颜色、层、线型、线宽)从对应的当前文件设置中取出进行设置。调用此函数的应用程序负责将结果实体增加至一个数据库中以及在不需要时从数据库中删除。
注意:因为AcDbSubentId对象的图形相关性,此函数不适合ObjectDBX SDK。
如果成功此方法返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDb3dSolid::copyFace 函数
virtual Acad::ErrorStatus
copyFace(
const AcDbSubentId & subentId,
AcDbEntity *& newEntity);
subentId
输入AcDb3dSolid中的一个面的子实体ID
newEntity
未说明
此方法将指定的面复制为一个AutoCAD实体,当这个面为平面时这个实体可以是一个AcDbRegion,否则将为一个AcDbBody。结果实体的属性(颜色、层、线型、线宽)从对应的当前文件设置中取出进行设置。调用此函数的应用程序负责将结果实体增加至一个数据库中以及在不需要时从数据库中删除。
注意:因为AcDbSubentId对象的图形相关性,此函数不适合ObjectDBX SDK。
如果成功此方法返回Acad::eOk,如果传递的数据非法则返回Acad::eInvalidInput。
AcDb3dSolid::createBox 函数
virtual Acad::ErrorStatus
createBox(
double xLen,
double yLen,
double zLen);
xLen
输入长方体的长度值
yLen
输入长方体的宽度值
zLen
输入长方体的高度值
此方法用于以世界坐标系原点为质心创建一个长方体实体。长方体的长度、宽度和高度边与WCS的X、Y、和Z轴分别平行。
如果创建成功返回Acad:::eOk。
如果xLen, yLen,或zLen小于1e-6,则返回Acad::eOutOfRange。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::createFrustum 函数
virtual Acad::ErrorStatus
createFrustum(
double height,
double xRadius,
double yRadius,
double topXRadius);
height
输入平截体(frustum)的高度
xRadius
输入平截体X方向上的半径
yRadius
输入平截体Y方向上的半径
topXRadius
输入平截体顶部的半径
此方法创建一个圆柱体或圆锥,世界坐标原点为它的直径中心并位于高度的一半处。如果xRadius和yRadius相等且topXRadius为零,则创建一个普通的圆锥。如果xRadius和yRadius不相等且topXRadius为零,则创建一个椭圆锥。否则,根据xRadius和yRadius的值,创建一个渐缩的圆柱或椭圆柱。如果xRadius和topXRadius相等,则创建一个圆柱。否则创建一个圆锥。yRadius确定创建的圆锥或圆柱是圆形或椭圆,根据yRadius是否与xRadius相等而定。平截体的底部位于WCS的X-Y平面中。从平截体的底部至顶部的方向沿WCS的Z轴正方向。
如果平截体创建成功则返回Acad:::eOk。
如果height, xRadius, yRadius,或topXRadius小于1e-6,则返回Acad::eOutOfRange。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::createSphere 函数
virtual Acad::ErrorStatus
createSphere(
double radius);
radius
输入球的半径
此方法以世界坐标系原点为球心,radius为半径创建一个球。
如果成功返回Acad::eOk。
如果半径小于1e-6,则返回Acad::eOutOfRange。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::createTorus 函数
virtual Acad::ErrorStatus
createTorus(
double majorRadius,
double minorRadius);
majorRadius
输入圆环面的长径
minorRadius
输入圆环面的短径
此方法以WCS的原点为中心使用WCS的Z轴作为旋转对称轴创建一个圆环面。
majorRadius指定了圆环面的半径,minorRadius指定了环的半径。majorRadius可以为正值或负值,但不能为零。minorRadius值不能为零。如果majorRadius为负值,则minorRadius的绝对值必须大于majorRadius。
如果成功返回Acad::eOk。
如果minorRadius小于1e-6,或majorRadius的绝对值小于1e-6,或minorRadius 小于等于(majorRadius + 1e-6),则返回Acad::eOutOfRange。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::createWedge 函数
virtual Acad::ErrorStatus
createWedge(
double xLen,
double yLen,
double zLen);
xLen
输入楔形体的长度
yLen
输入楔形体的宽度
zLen
输入楔形体的高度
此方法以WCS原点为质心创建一个楔形体。楔形体的长、宽和高的边与WCS中的X、Y和Z轴分别平行。
如果成功返回Acad::eOk。
如果xLen, yLen,或zLen小于1e-6,则返回Acad::eOutOfRange。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::extrude 函数
virtual Acad::ErrorStatus
extrude(
const AcDbRegion* region,
double height,
double taper);
region
输入一个面域对象的指针
height
输入拉伸的高度
taper
输入锥度角
以height为距离,taper为锥度角,拉伸pRegion创建一个实体。如果height为正值,则拉伸方向沿面域的法向方向。taper范围应在pi/2至-pi/2之间。如果 taper的绝对值小于1e-6,则锥度角设为0。
如果taper为非零,则面只能由光滑连接(在连接处有相同的切线)的线、圆或圆弧构成。
面域不能自相交。任何自相交都将导致扫描失败。
关于更多的信息,参见AutoCAD命令参考中的EXTRUDE命令。
如果成功返回Acad::eOk。
如果height <= 1e-6或abs(taper) >= (PI/2) - (1e-6),则返回Acad::eOutOfRange。
如果region == NULL或面域没有ACIS对象,则返回Acad::eInvalidInput。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::extrudeAlongPath 函数
virtual Acad::ErrorStatus
extrudeAlongPath(
const AcDbRegion* region,
const AcDbCurve* path);
region
输入指向一个面域对象的指针
path
输入指向一个曲线对象的指针,面域将沿此曲线拉伸
沿路径曲线拉伸面域以创建一个实体。路径必须为一个AcDbLine, AcDbArc, AcDbCircle, AcDbEllipse, AcDbSpline, AcDb2dPolyline,或一个非样条曲线拟合的AcDb3dPolyline。path不能有自相交,且最好不要有高曲率区域。如果路径的终点之一不在面域上,则路径将被移动至满足这个要求。
关于更多的信息,参见AutoCAD命令参考中的EXTRUDE命令。
如果成功返回Acad::eOk。
如果path或region == Null、面域自相交或路径为一个不可接受的类型的AcDbCurve,则返回Acad::eInvalidInput。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::extrudeFaces 函数
virtual Acad::ErrorStatus
extrudeFaces(
const AcArray<AcDbSubentId *> & faceSubentIds,
double height,
double taper);
faceSubentIds
输入要拉伸的面的子实体ID的数组。这些面必须是平面。
height
输入要应用至指定面的拉伸距离。正值表示没面法向法向拉伸,法向方向指向实体外。使用负值表示向实体内部拉伸。
taper
输入应用至面的拉伸的倾斜角度。如果使用一个正值height,倾斜角度是相对于每个面的中心沿面的法向方向的轴度量的,如果使用一个负值,则相反。这个值范围在pi/2至-pi/2之间。
此方法以height为距离,taper为倾斜角,拉伸一个实体的面。如果height为正值,拉伸方向沿每个面的法向方向,如果为负值则相反。如果taper的绝对值小于1e-6,则使用倾斜角为0.0进行拉伸。
如果taper为非零,则每个面只能有光滑连接(在连接点上切线相等)的边。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功返回Acad::eOk。如果height <= 1e-6 或 abs(taper) >= (PI/2) - (1e-6),则返回Acad::eOutOfRange。
如果面数为0,则返回Acad::eInvalidInput。
如果ACIS对象创建失败,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::extrudeFacesAlongPath 函数
virtual Acad::ErrorStatus
extrudeFacesAlongPath(
const AcArray<AcDbSubentId *> & faceSubentIds,
const AcDbCurve* path);
faceSubentIds
输入要拉伸的面的子实体ID的数组,这些面必须为平面
path
输入指向一个曲线对象的指针,面将沿此曲线进行拉伸
此方法使指定的面沿指定路径曲线实体拉伸,曲线实体必须为一个AcDbLine, AcDbArc, AcDbCircle, AcDbEllipse, AcDbSpline, AcDb2dPolyline,或一个非样条曲线拟合的AcDb3dPolyline。path不能有自相交,且最好不要有高曲率区域。如果路径的终点之一不在面域上,则路径将被移动至满足这个要求。
如果成功返回Acad::eOk。如果path为Null,或path是一个不可接受类型的AcDbCurve,则方法将返回Acad::eInvalidInput。
AcDb3dSolid::imprintEntity 函数
virtual Acad::ErrorStatus
imprintEntity(
const AcDbEntity * pEntity);
pEntity
输入要压印(imprint)的实体对象
此方法与给定实体相交并将它们的交点图压印至实体上。如果创建了一个新建边的闭环,则创建了一个新的面。一个边的开环可作为弓形沟距(spur)增加至一个面上的已有的环中或面中的狭缝中。给定的实体必须为一种AcDbCurve, AcDb3dSolid, AcDbBody, AcDbRegion, AcDbTrace, AcDbSolid,或AcDbFace。
如果成功则imprintEntity()返回Acad::eOk,如果给定的实体不是一种AcDbCurve, AcDb3dSolid, AcDbBody, AcDbRegion, AcDbTrace, AcDbSolid, or AcDbFace,则返回Acad::eInvalidInput。
AcDb3dSolid::offsetBody 函数
virtual Acad::ErrorStatus
offsetBody(
double offsetDistance);
offsetDistance
输入要偏移每个面的距离
此方法将实体的每个面偏移指定距离。如果面上有不可偏移的面,则此面被删除且如果可能则实体被修复。注意:此操作有时可能产生一个无效的实体。如果SOLIDCHECK系统变量设为1,则此函数将检查一个无效的结果实体。使用acedGetVar()和acedSetVar()取得并设置这个每工作任务的、非持久的、非数据库驻留的系统变量。
如果成功则返回Acad::eOk,如果偏移距离小于实体边框最大边的一半的负值或为零时,返回Acad::eInvalidInput。如果检测至不允许的拓扑关系改变,或实体检查生效且实体不能通过检查的有效性分析,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::offsetFaces 函数
virtual Acad::ErrorStatus
offsetFaces(
const AcArray<AcDbSubentId *> & faceSubentIds,
double offsetDistance);
faceSubentIds
输入要被偏移的面的子实体ID的数组
offsetDistance
输入偏移每个面的距离
此方法将实体的每个面偏移指定距离。如果面上有不可偏移的面,则此面被删除且如果可能则实体被修复。注意:此操作有时可能产生一个无效的实体。如果SOLIDCHECK系统变量设为1,则此函数将检查一个无效的结果实体。使用acedGetVar()和acedSetVar()取得并设置这个每工作任务的、非持久的、非数据库驻留的系统变量。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功则返回Acad::eOk,如果偏移距离小于实体边框最大边的一半的负值或为零时,返回Acad::eInvalidInput。如果检测到不允许的拓扑关系改变,或实体检查生效且实体不能通过检查的有效性分析,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::removeFaces 函数
virtual Acad::ErrorStatus
removeFaces(
const AcArray<AcDbSubentId *> & faceSubentIds);
faceSubentIds
输入要删除的面的子实体ID的数组
此方法删除给定的面,使相邻的面延展填补缺口。注意如果没有只使用相邻面的解决方案,则缺口可以填充。但如果函数检测到这些条件,则返回Acad::eGeneralModelingFailure且保持实体不改变。
注意:此操作有时可能产生一个无效的实体。如果SOLIDCHECK系统变量设为1,则此函数将检查一个无效的结果实体。使用acedGetVar()和acedSetVar()取得并设置这个每工作任务的、非持久的、非数据库驻留的系统变量。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功则返回Acad::eOk,如果失败则返回Acad::eGeneralModelingFailure。如果实体检查生效且实体不能通过检查的有效性分析,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::revolve 函数
virtual Acad::ErrorStatus
revolve(
const AcDbRegion* region,
const AcGePoint3d& axisPoint,
const AcGeVector3d& axisDir,
double angleOfRevolution);
region
输入要旋转的面域
axisPoint
输入要被投影用于创建旋转轴的线上的点
axisDir
输入表示要被投影用于创建旋转轴的线的方向的矢量
angleOfRevolution
输入旋转角(弧度)
通过绕一根轴旋转面域创建一个实体,这个轴是将从axisPoint至axisPoint+axisDir的直线投影至包含面域的平面上确定的。面域绕旋转轴旋转angleOfRevolution弧度。从axisDir投影至包含面域的平面的方向上看时,正角度值表示顺时针旋转(即右手定则)。旋转角超过2pi作为2pi对待。旋转轴不能穿过面域。
如果成功返回Acad::eOk。
如果angleOfRevolution < 1e-6,则此函数将失败且返回Acad::eOutOfRange。
如果region为NULL或region指向的对象没有ACIS对象,则此函数失败且返回Acad::eInvalidInput。
如果旋转轴对面域旋转无效(例如,axisDir垂直于面域平面、旋转轴穿过面域等),则返回Acad::eInvalidAxis。
AcDb3dSolid::separateBody 函数
virtual Acad::ErrorStatus
separateBody(
AcArray<AcDb3dSolid *> & newSolids);
newSolids
输入要删除的面的子实体ID的数组
此方法将实体分散为表示附加的不相交的体积的一个实体列表。这个实体简化为具有一个体积的一个实体。调用此函数的应用程序负责将它们增加至一个数据库中或在不使用时从数据库中删除。当调用此函数的应用程序关闭此AcDb3dSolid时,结果实体将提交至数据库。因此,如果其他的实体没有增加至数据库,则将丢失一些数据。
如果成功返回Acad::eOk,否则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::setBody 函数
virtual Acad::ErrorStatus
setBody(
const void* modelerBody);
modelerBody
体使用的ACIS实体
设置此AcDb3dSolid对象使用modelerBody指向的ACIS对象。modelerBody指针不能为NULL,且必须指向一个有效的ACIS对象,这个对象同时也是一个有效实体。
此函数与空间技术的ACIS访问API函数一起使用。
如果成功返回Acad::eOk,如果modelerBody为NULL或指向一个无效对象则返回Acad::eInvalidInput。
AcDb3dSolid::setSubentColor 函数
virtual Acad::ErrorStatus
setSubentColor(
const AcDbSubentId & subentId,
const AcCmColor & color);
subentId
输入要上色的子实体面或边的ID
color
输入子实体的颜色
将AcDb3dSolid的面或边子实体的颜色设置为指定的AutoCAD颜色。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功返回Acad::eOk,如果失败返回Acad::eGeneralModelingFailure。
AcDb3dSolid::shellBody 函数
virtual Acad::ErrorStatus
shellBody(
const AcArray<AcDbSubentId *> & faceSubentIds,
double offsetDistance);
faceSubentIds
输入要从抽壳中删除的面的子实体ID的数组
offsetDistance
输入偏移每个面的距离
将实体改变为薄壁实体抽壳,如果给定的正偏移则面偏移至实体外部,如果给定负距离值偏移至实体内部。
具有不能偏移厚度的表面的面被删除,缺口由周围面的表面扩展填补。提供的表面上的可融合的边和顶点将被融合。扭曲表面的隔离的边和相邻表面可降为一个点且将被删除,但删除一个环或面及其他的拓扑改变不允许。
注意:此操作有时可能产生一个无效的实体。如果SOLIDCHECK系统变量设为1,则此函数将检查一个无效的结果实体。使用acedGetVar()和acedSetVar()取得并设置这个每工作任务的、非持久的、非数据库驻留的系统变量。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功则返回Acad::eOk,如果失败或实体检查生效且实体不能通过检查的有效性分析,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::taperFaces 函数
virtual Acad::ErrorStatus
taperFaces(
const AcArray<AcDbSubentId *> & faceSubentIds,
const AcGePoint3d & basePoint,
const AcGeVector3d & draftVector,
double draftAngle);
faceSubentIds
输入要渐缩的面的子实体ID的数组
basePoint
输入倾斜平面的原点
draftVector
输入倾斜方向矢量
draftAngle
输入倾斜角
在给定基点将实体的给定面渐缩且在一个给定倾斜角提供倾斜矢量。基点和倾斜矢量定义了要渐缩的一个倾斜面。倾斜面中的任何表都不能被修改。
注意:此操作有时可能产生一个无效的实体。如果SOLIDCHECK系统变量设为1,则此函数将检查一个无效的结果实体。使用acedGetVar()和acedSetVar()取得并设置这个每工作任务的、非持久的、非数据库驻留的系统变量。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功则返回Acad::eOk,如果失败则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::transformFaces 函数
virtual Acad::ErrorStatus
transformFaces(
const AcArray<AcDbSubentId *> & faceSubentIds,
const AcGeMatrix3d & matrix);
faceSubentIds
输入要变换的面的子实体ID的数组
matrix
输入要应用至面的旋转和/或变换矩阵
通过变换矩阵旋转或移动实体的给定面。
注意:此操作有时可能产生一个无效的实体。如果SOLIDCHECK系统变量设为1,则此函数将检查一个无效的结果实体。使用acedGetVar()和acedSetVar()取得并设置这个每工作任务的、非持久的、非数据库驻留的系统变量。
注意:因为AcDbSubentId对象的图形相关性,此函数不适用于ObjectDBX SDK。
如果成功,则transformFaces()返回Acad::eOk,如果失败或实体检查生效且实体不能通过检查的有效性分析,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid文件建构器和析构器
AcDb3dSolid::stlOut 函数
virtual Acad::ErrorStatus
stlOut(
const char* fileName,
Adesk::Boolean asciiFormat) const;
fileName
输入文件名
asciiFormat
输入布尔值,表示文件格式
将此实体的一个立体印刷术(Stereo Lithography,STL)写入名为fileName的文件中。如果asciiFormat为Adesk::kTrue,则STL文件格式将为ASCII文本,否则它将为一个二进制格式文件。任何已存在的名为fileName的文件将被覆盖。
AcDb3dSolid杂项函数
AcDb3dSolid::getClassID 函数
virtual Acad::ErrorStatus
getClassID(
CLSID* pClsid) const;
pClsid
未说明
Description to come。
AcDb3dSolid::getGsMarkersAtSubentPath 函数
virtual Acad::ErrorStatus
getGsMarkersAtSubentPath(
const AcDbFullSubentPath& subPath,
AcDbIntArray& gsMarkers) const;
subPath
未说明
gsMarkers
未说明
Description to come。
AcDb3dSolid::list 函数
virtual void
list() const;
Description to come。
AcDb3dSolid::subentPtr 函数
virtual AcDbEntity *
subentPtr(
const AcDbFullSubentPath& id) const;
id
未说明
Description to come。
AcDb3dSolid查询函数
AcDb3dSolid::body 函数
virtual void *
body() const;
返回一个指此AcDb3dSolid对象的ACIS对象的void指针。如果没有与ACIS对象与AcDb3dSolid对象关联,则返回NULL。
此函数与空间技术的ACIS访问API一起使用。
AcDb3dSolid::checkInterference 函数
virtual Acad::ErrorStatus
checkInterference(
const AcDb3dSolid* otherSolid,
Adesk::Boolean createNewSolid,
Adesk::Boolean& solidsInterfere,
AcDb3dSolid*& commonVolumeSolid) const;
otherSolid
输入另一个实体的指针
createNewSolid
输入布尔值,表示是否创建作为此实体和otherSolid交集的一个新实体
solidsInterfere
返回布尔值,表示是否实体有干涉
commonVolumeSolid
如果可能,则返回指向作为此实体和otherSolid交集的实体的指针
检查此实体是否与otherSolid相交,如果有干涉则将solidsInterfere设为Adesk::kTrue,如果没有则设为Adesk::kFalse。如果createNewSolid == Adesk::kTrue且有干涉,则创建一个表示共享体积的一个新的实体,而且将pCommonVolumeSolid设为指向这个实体,否则pCommonVolumeSolid设为NULL。
如果成功返回Acad::eOk。
如果otherSolid == NULL或它指向一个无效的实体类型,则返回Acad::eInvalidInput。
如果此函数不能创建一个新的AcDb3dSolid并将pCommonVolumeSolid指向它,则返回Acad::eOutOfMemory。
如果创建commonVolume实体失败,则返回Acad::eGeneralModelingFailure。
注意:调用此函数程序负责分配对象使用的内存,如果有,则在函数结束时返回指向它的pCommonVolumeSolid。如果这样的一个对象增加至一个AcDbDatabase中,则数据库负责分配内存。如果对象没有增加至一个数据库中,则调用者必须在不需要它时删除它。
AcDb3dSolid::getArea 函数
virtual Acad::ErrorStatus
getArea(
double& area) const;
area
返回实体的表面区域
返回设置为实体表面区域的area。区域为绘图单位的平方。
如果成功返回Acad::eOk。
如果实体没有ACIS对象,则返回Acad::eInvalidInput。
AcDb3dSolid::getMassProp 函数
virtual Acad::ErrorStatus
getMassProp(
double& volume,
AcGePoint3d& centroid,
double momInertia[3],
double prodInertia[3],
double prinMoments[3],
AcGeVector3d prinAxes[3],
double radiiGyration[3],
AcDbExtents& extents) const;
volume
返回实体的体积
centroid
返回实体的质心
momInertia[3]
返回实体的X、Y和Z惯性矩
prodInertia[3]
返回实体的X、Y和Z惯性积
prinMoments[3]
返回实体的X、Y和Z的主力矩
prinAxes[3]
返回实体的X、Y和Z的主轴
radiiGyration[3]
返回实体的X、Y和Z的旋转半径
extents
返回实体的范围(边框)
此方法用于取得实体的体积属性(例如,density == 1.0时的质量属性)。所有属体都在WCS中求值。
如果成功返回Acad::eOk。
如果在ACIS造型器中有错误,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::getSection 函数
virtual Acad::ErrorStatus
getSection(
const AcGePlane& plane,
AcDbRegion*& sectionRegion) const;
plane
输入作为截面切割平面的平面
sectionRegion
返回表示截面的面域
此函数创建表示plane与实体交集的一个AcDbRegion实体,并将sectionRegion设为指向新创建的面域实体。
如果成功返回Acad::eOk。
如果实体没有ACIS对象,或plane表示的平面与实体不相交,或交集不是一个有效的面域(例如,它在一个点上相交、沿实体的一个边界面等),则sectionRegion将设为NULL且返回Acad::eOk。
如果没有足够的内存创建新的AcDbRegion,则返回Acad::eOutOfMemory。
如果在ACIS造型器中有错误,则返回Acad::eGeneralModelingFailure。
AcDb3dSolid::getSlice 函数
virtual Acad::ErrorStatus
getSlice(
const AcGePlane& plane,
Adesk::Boolean getNegHalfToo,
AcDb3dSolid*& negHalfSolid);
plane
输入用于切割实体的平面
getNegHalfToo
输入布尔值,表示是否返回平面负方向的部分实体
negHalfSolid
如果getNegHalfToo == Adesk::kTrue则返回实体的负方向部分实体
使用plane切割实体,并将实体为平面正法向方向上的部分。如果getNegHalfToo == Adesk::kTrue,则创建一个新的AcDb3dSolid对象。新的实体包含原始实体在平面负法向方向上的部分。negHalfSolid设为指向它。否则negHalfSolid设为NULL。
如果成功返回Acad::eOk。
如果plane与实体不相交,则实体不改变,negHalfSolid设为NULL且返回Acad::eOk。
如果在ACIS造型器中有错误,则返回Acad::eGeneralModelingFailure。
如果getNegHalfToo == Adesk::kTrue且没有足够的空间创建新的AcDb3dSolid,则返回Acad::eOutOfMemory。
注意:调用此函数的应用程序负责分配此函数创建的任何负法向方向上部分实体的内存。如果这样的实体随后增加至一个AcDbDatabase中,则由数据库对象负责分配实体的内存。
AcDb3dSolid::getSubentPathsAtGsMarker 函数
virtual Acad::ErrorStatus
getSubentPathsAtGsMarker(
AcDb::SubentType type,
int gsMark,
const AcGePoint3d& pickPoint,
const AcGeMatrix3d& viewXform,
int& numPaths,
AcDbFullSubentPath*& subentPaths,
int numInserts = 0,
AcDbObjectId* entAndInsertStack = NULL) const;
type
未说明
gsMark
未说明
pickPoint
未说明
viewXform
未说明
numPaths
未说明
subentPaths
未说明
numInserts
未说明
entAndInsertStack
未说明
对于AcDb3dSolid类,此方法不使用pickPoint和viewXform参数。
关于此函数及其参数的更多信息,参见AcDbEntity::getSubentPathsAtGsMarker。
AcDb3dSolid::internalSubentId 函数
virtual AcDbSubentId
internalSubentId(
void* pEnt) const;
pEnt
未说明
在pEnt中返回ACIS对象的子实体ID。
此函数与空间技术的ACIS访问API一起使用。
AcDb3dSolid::internalSubentPtr 函数
virtual void *
internalSubentPtr(
const AcDbSubentId& id) const;
id
未说明
在子实体id中返回指向ACIS对象的void指针。
此函数与空间技术的ACIS访问API一起使用。
AcDb3dSolid::isNull 函数
virtual Adesk::Boolean
isNull() const;
如果实体中没有ACIS对象则返回Adesk::kTrue。
AcDb3dSolid::numChanges 函数
virtual Adesk::UInt32
numChanges() const;
返回此实体创建后对实体进行的修改数。 |
|