找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2423|回复: 7

[求助] 跪求CAD中多条线段长度相加的vlisp命令

[复制链接]
发表于 2013-6-15 20:05:50 | 显示全部楼层 |阅读模式

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

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

×
各位大大帮帮忙,我想要2个命令。一个是选中多跟线段,能将他们的长度相加,以计算式的方式输出,而不是出来一个总和。例如选中了A跟B两根线段,在命令行输出:A的线长+B的线长
  1. (defun c:jss ()
  2.   (setq ss1 (ssget '((0 . "line"))))
  3.   (setq n 0
  4.         sum 0
  5.         LL ""
  6.   )
  7.   (if (> (sslength ss1) 1)
  8.     (progn
  9.       (repeat (sslength ss1)
  10.         (setq ssn (ssname ss1 n)
  11.               pt1 (cdr (assoc 10 (entget ssn)))
  12.               pt2 (cdr (assoc 11 (entget ssn)))
  13.               L (distance pt1 pt2)
  14.               Sum (+ sum L)
  15.               LL (strcat LL (rtos L 2) " + ")
  16.               n (1+ n)
  17.         )
  18.       )
  19.       (setq ss (strcat (vl-string-trim " + " LL) " = " (rtos Sum 2)))
  20.     )
  21.   )
  22.   (princ ss)
  23.   (princ)
  24. )

以上一大神提供的简单命令,但是还存在诸多问题,在选中线段对象时,有的能选中,有的选不中,我是vlisp小白,命令完全看不懂,求指点。 0.jpg 上图中,4跟6旁边的小线段能选中,可是粗的线选不中,这是为什么呢?!求大神帮忙改进一下,最好能将输出的每个线长值缩小1000倍,并保留一位小数,并将小数位四舍五入(另一种将小数位取整,例如量到的12345,则输出12.4【12345/1000之后将小数位的0.345取整成0.4】)

另求另一种命令,像CAD自带的di命令一样,将量到的线长输出,但是di命令不能一起量取多根线,就是想要个命令,例如ABCD 4个点,在输入这个命令之后,我点ABCD4个点,能输出:AB线长+BC线长+CD线长。(输出的每个线长值也要缩小1000倍,小数点后保留一位,四舍五入and取整 2种方案)。还有种命令,点AB之后,按逗号或者别的什么休止符,再点CD,能输出AB线长+CD线长。(结果希望都能缩小1000倍,四舍五入和取整2个方案,2种方案分2个命令,不要合在一起)
谢谢大家了,我是贪心了哈!!

评分

参与人数 1D豆 +4 收起 理由
XDSoft + 4 求助问题说明很清晰。

查看全部评分

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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 1632个

财富等级: 堆金积玉

发表于 2013-6-15 20:41:05 | 显示全部楼层
这里有求任意曲线长度的函数: http://www.xdcad.net/forum/thread-667656-1-2.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

发表于 2013-6-15 21:23:29 | 显示全部楼层
随便抄了抄别人的代码给你了,可以是线段、多段线圆弧长度都能计算的。
  1. (defun c:tt (/ ss i cd dc ll obj str)
  2.   (vl-load-com)
  3.   (if (setq
  4.         ss (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC")))
  5.       )
  6.     (progn
  7.       (setq i  0
  8.             cd 0
  9.             ll ""
  10.       )

  11.       (repeat (sslength ss)
  12.         (setq obj (vlax-ename->vla-object (ssname ss i)))
  13.         (setq dc (vlax-curve-getdistatparam
  14.                    obj
  15.                    (vlax-curve-getendparam obj)
  16.                  )
  17.         )
  18.         (setq cd (+ cd dc)
  19.               ll (strcat ll (rtos (* 0.001 dc) 2 1) " + ")
  20.               i         (1+ i)
  21.         )
  22.       )
  23.       (setq str        (strcat        (vl-string-trim " + " ll)
  24.                         " = "
  25.                         (rtos (* 0.001 cd) 2 1)
  26.                 )
  27.       )
  28.     )
  29.   )
  30.   (princ str)
  31.   (princ)
  32. )

评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-6-15 21:58:06 | 显示全部楼层
在选中线段对象时,有的能选中,有的选不中


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

使用道具 举报

已领礼包: 8860个

财富等级: 富甲天下

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 12:27 , Processed in 0.209623 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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