找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1285|回复: 8

[求助]:求图上PLINE和SPLINE的长度?

[复制链接]
发表于 2002-11-8 22:09:59 | 显示全部楼层 |阅读模式

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

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

×
我想获取图上所选的所有PLINE和SPLINE实体的长度(做累计)?
不知道怎么做,好象在acdbentity中也没有这样的函数。利用list命令也不能求得所有实体的长度累计值,只有单独的每个实体的数据,好象也没有保存实体长度的系统变量。所以想请问大家该用什么方法求,谢谢!急!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-8 22:14:01 | 显示全部楼层

Re: [求助]:求图上PLINE和SPLINE的长度?

最初由 zj_xuefeng 发布
[B]我想获取图上所选的所有PLINE和SPLINE实体的长度(做累计)?
不知道怎么做,好象在acdbentity中也没有这样的函数。利用list命令也不能求得所有实体的长度累计值,只有单独的每个实体的数据,好象也没有保存实体长?.. [/B]


所有曲线的基类是AcDbCurve,你在子类没有找到的方法(AcDbPolyline,AcDbSpline.....)到基类中去找找,都会有的。

比如求任意曲线长度可以:

AcDbCurve::getDistAtPoint(...)
AcDbCurve::getDistAtParam(...)

你先得到终点或者终点参数,用上面的方法就可以了。
AcDbCurve::getEndPoint(....)
AcDbCurve::getEndParam(...)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-11 10:15:16 | 显示全部楼层
发现一个问题:对于封闭的曲线,该怎么求它的长度?
对于不封闭的曲线用下面的方法就可以了:
AcDbCurve::getEndPoint(....)
AcDbCurve::getDistAtPoint(...)
但是对于封闭的曲线,求得的结果会是0,可能是因为EndPoint和StartPoint是重合的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-11-11 11:00:10 | 显示全部楼层
最初由 zj_xuefeng 发布
[B]发现一个问题:对于封闭的曲线,该怎么求它的长度?
对于不封闭的曲线用下面的方法就可以了:
AcDbCurve::getEndPoint(....)
AcDbCurve::getDistAtPoint(...)
但是对于封闭的曲线,求得的结果会是0,可能是因为E... [/B]


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

使用道具 举报

发表于 2002-11-11 11:05:59 | 显示全部楼层
getDistAtParam(1.0,&dist);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-12 17:29:21 | 显示全部楼层
最初由 efan2000 发布
[B][QUOTE]最初由 zj_xuefeng 发布
[B]发现一个问题:对于封闭的曲线,该怎么求它的长度?
对于不封闭的曲线用下面的方法就可以了:
AcDbCurve::getEndPoint(....)
AcDbCurve::getDistAtPoint(...)
但是对?.. [/B]


要用参数值求,不要用点,以后大家凡是关于曲线的,尽量用getParamAt(.....)

参数对曲线是唯一的,终点、起点有可能相等。

AcDbCurve::getEndParam(...)
AcDbCurve::getDistAtParam(....)

另:回复BINBIN,曲线终点参数值不一定都是1.0 吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-12 17:57:48 | 显示全部楼层
对老式多段线(AUTODesk说的),不一定是1.0,,两段为2.0,三段为3.0....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 14:56 , Processed in 0.186218 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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