找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1991|回复: 5

[API建议] 建议增加getOffsetCurves

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-1 21:03:37 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 st788796 于 2013-11-1 21:08 编辑

在使用中不得不用 vla-offset 以保持curve,而 API中的 Curve_Offset 生成的是模拟点表,看了看 ARX Help,里面的 getOffsetCurves 和 vla-offset 类似吧,偏移曲线,希望 API 也能提供一个 Offset 曲线函数,Arc Circle Line 偏移后是还是同类型实体,Ellipse spline 偏移后是模拟

AcDbCurve::getOffsetCurves 函数

virtual Acad::ErrorStatus

getOffsetCurves(

double offsetDist,

AcDbVoidPtrArray& offsetCurves) const;

offsetDist
输入偏移曲线的距离
offsetCurves
返回指向结果曲线的指针的数组

此函数对原有曲线偏移offsetDist距离创建一个或多个实体。对多数曲线,结果是一条新的曲线。(这条新的曲线可能与原有曲线不同类。例如,偏移一个AcDbEllipse将得到一个AcDbSpline,因为偏移一个椭圆不能满足一个椭圆方程。)

在一些情况下,偏移结果应是几条曲线。要得到这样的结果,必须使用一个动态的void指针数组储存一个或多个结果实体的指针。

要使用这个指针数组,调用的应用程序需要将指针强制转换至适当的对象类型。如果只需处理一种特定的实体类型或类型集,则使用所需类的强制转换的方法检查是否每个指针可被安全地转换至那个对象类型。如果需要实际的对象类型(类名),则使用每个对象的isA()方法取得一个指向对象的AcRxClass对象的指针,这个AcRxClass对象具有一个name()方法。

如果offsetDist值为负值,通常被解释为曲线偏移为一个更小的曲线(即,对弧则将偏移至半径offsetDist,其小于原有曲线半径)。如果负值在生成偏移曲线时没有意义,则一个负值的offsetDist将被解释为沿WCS坐标中X、Y、Z的更小方向的偏移。这不是强制的,因此自定义实体可将offsetDist的符号解释为它们希望的含义。

在offsetCurves数组中返回的实体是动态分配的,但仍未增加至一个AcDbDatabase中。因此,调用此函数的应用程序负责分配它们的内存。如果它们随后增加至一个数据库中,则由数据库负责分配它们的内存。另外,应用程序负责在不需要它们的时候删除它们。

如果偏移成功则返回Acad::eOk。如果偏移距离无效(例如,如果偏移一个弧且结果将为一个负的半径),则返回Acad::eInvalidInput。对于使用ACIS(AcDbBody, AcDbRegion, 和AcDb3dSolid)的AutoCAD的内建类,如果在ACIS建模器中发生错误则返回 Acad::eGeneralModelingFailure。其他的ErrorStatus返回值与执行相关。

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-3 20:41:29 | 显示全部楼层
新版API加入 xdrx_curve_getOffsetCurves

点评

试了下,不错,以后不用再 vlax-ename->vla-object 后用 vla-offset 了  详情 回复 发表于 2013-11-3 20:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-3 20:51:01 | 显示全部楼层
XDSoft 发表于 2013-11-3 20:41
新版API加入 xdrx_curve_getOffsetCurves

试了下,不错,以后不用再 vlax-ename->vla-object 后用 vla-offset 了:)

点评

API写的宗旨就是最大可能的方便写LISP程序,这个函数可以接受任何多的实体名参数或者选择集参数,返回的是选择集。 (xdrx_curve_getOffsetCurves e1 100) (xdrx_curve_getOffsetCurves ss 100) (xdrx_curve  详情 回复 发表于 2013-11-3 21:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-11-3 21:31:33 | 显示全部楼层
st788796 发表于 2013-11-3 20:51
试了下,不错,以后不用再 vlax-ename->vla-object 后用 vla-offset 了

API写的宗旨就是最大可能的方便写LISP程序,这个函数可以接受任何多的实体名参数或者选择集参数,返回的是选择集。

(xdrx_curve_getOffsetCurves e1 100)

(xdrx_curve_getOffsetCurves ss 100)

(xdrx_curve_getOffsetCurves (e1 e2 ...en ...ss1...ss2...ssn) 100)

点评

明天写个批量偏移试试  详情 回复 发表于 2013-11-3 22:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-11-3 22:25:26 来自手机 | 显示全部楼层
XDSoft 发表于 2013-11-3 21:31
API写的宗旨就是最大可能的方便写LISP程序,这个函数可以接受任何多的实体名参数或者选择集参数,返回的 ...

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

使用道具 举报

发表于 2019-9-23 12:51:51 | 显示全部楼层
非常感谢中文翻译;开始看了半天没弄懂数组的返回值是什么,原来要强制转换
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 22:17 , Processed in 0.385675 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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