找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1660|回复: 4

[求助]:用arx进行三维建模应该如何入手!

[复制链接]
发表于 2004-5-28 16:58:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位仁兄好
我是个新手
现在要用arx建立三维厂房图
只用简单的柱列表示就行
看了一段时间的书
还是不知道该如何下手
请各位仁兄指点
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 13个

财富等级: 恭喜发财

发表于 2004-5-31 00:21:48 | 显示全部楼层

Re: [求助]:用arx进行三维建模应该如何入手!

最初由 youyouguoke 发布
[B]各位仁兄好
我是个新手
现在要用arx建立三维厂房图
只用简单的柱列表示就行
看了一段时间的书
还是不知道该如何下手
请各位仁兄指点
谢谢 [/B]


你会用ACAD的实体建立模型吗?手工把模型建立出来?如果能,那么你就用ARX里面的AcDb3dSolid 对象下面提供的方法就可以,ACAD的命令,都可以用AcDb3dSolid 下面的方法做出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 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;

返回此实体创建后对实体进行的修改数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-16 21:08:27 | 显示全部楼层
我也想学三维建模
清高手指点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-11 23:21:32 | 显示全部楼层
这篇文章的帮助实在是太好了,帮了我三维实体的大忙了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 21:47 , Processed in 0.287969 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表