找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: amwkto2011

[原创] 相同线长成功了

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-30 11:51:26 | 显示全部楼层
amwkto2011 发表于 2014-11-30 11:44
谢谢老大,有点感觉了,写程序来试下去

LISP要写好,mapcar 是必须要过的关,他能让你的更高效,也更可读。mapcar 也可以嵌套,你只要记住 没个LISP表,左括号第一个都是函数,每个表都由这个函数求值,得到的值作为上一层括号的参数,继续求职,知道最外层的左括号后面的函数求值后,得到最终的结果数据表。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-1 08:42:37 | 显示全部楼层
计数器从 0 开始好理解些
  1. (defun c:tt (/ _Curve:Length s e filter len i e1 ss fuzz)
  2.   (defun _Curve:Length (curve /)
  3.     (vlax-curve-getdistatparam
  4.       curve
  5.       (vlax-curve-getendparam curve)
  6.     )
  7.   )
  8.   (if
  9.     (and (setq fuzz (getreal "\n误差: "))
  10.          (progn        (prompt "\n拾取特征线...")
  11.                 (setq s (ssget ":S" '((0 . "*polyLine,arc,circle,ellipse,line"))))
  12.          )
  13.          (setq e (ssname s 0))
  14.          (setq filter (assoc 0 (entget e)))
  15.          (progn        (prompt "\n选择范围线 ...")
  16.                 (setq ss (ssget (list filter)))
  17.          )
  18.     )
  19.      (progn
  20.        (setq len (_Curve:Length e)
  21.              i         0
  22.        )
  23.        (while (/= i (1- (sslength ss)));_计数器达到选集尾部
  24.          (if (equal len
  25.                     (_Curve:Length (setq e1 (ssname ss 0)))
  26.                     fuzz
  27.              )
  28.            (setq i (1+ i));_相同长度时计数器 +1
  29.            (ssdel e1 ss) ;_删除实体后,选集内后面实体计数前移
  30.          )
  31.        )
  32.        (if ss
  33.          (sssetfirst nil ss)
  34.        )
  35.      )
  36.   )
  37.   (princ)
  38. )

点评

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

使用道具 举报

 楼主| 发表于 2014-12-2 15:11:18 | 显示全部楼层
st788796 发表于 2014-12-1 08:42
计数器从 0 开始好理解些

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

使用道具 举报

已领礼包: 2026个

财富等级: 金玉满堂

发表于 2014-12-3 17:33:02 | 显示全部楼层
严格地说,既然设定了容差(误差),所选出的线应该是在容差(误差)值范围内的所有线,即符合参照线长度加上或减去容差(误差)值的线都应被选上,但上述程序都存在漏选的问题,即有时刚好为参照线长度加上或减去容差(误差)值的长度的线被漏选,因此并不精确。
似乎将容差(误差)设为“0”反而是真正意义上的线长相同,更有实用性。

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-3 18:11:17 来自手机 | 显示全部楼层
yxianfo 发表于 2014-12-3 17:33
严格地说,既然设定了容差(误差),所选出的线应该是在容差(误差)值范围内的所有线,即符合参照线长度加 ...

在数学上来说,有绝对值有相对值,1  可以是绝对值1, 也可以表示 0.5~1.5区间,在乎于心, 对计算机存储而言,整数不一定是整数,  你说的是加,为什么不是减呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:13 , Processed in 0.275276 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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