找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1337|回复: 4

[LISP函数]:测试“相同”Pline

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-10-30 00:07:04 | 显示全部楼层 |阅读模式

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

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

×
包括旋转、反向或者镜像的Pline,层、颜色等信息可以在 getinfo 中自行添加。

  1. (defun xdl-pl-sam (e1 e2 / getinfo getdis getdis_to_sp)
  2.   (defun getinfo (lst)
  3.     (vl-remove-if-not
  4.       (function
  5.         (lambda (x) (vl-position (car x) '(39 40 41 42 43)))
  6.       )
  7.       lst
  8.     )
  9.   )
  10.   (defun getdis        (e / n m dl)
  11.     (setq n (fix (vlax-curve-getendparam e))
  12.           m 0.
  13.     )
  14.     (repeat n
  15.       (setq dl (cons (vlax-curve-getdistatparam e m) dl)
  16.             m  (1+ m)
  17.       )
  18.     )
  19.     dl
  20.   )
  21.   (defun getdis_to_sp (e / sp m n dl)
  22.     (setq sp (vlax-curve-getstartpoint e)
  23.           m  1.
  24.           n  (fix (vlax-curve-getendparam e))
  25.     )
  26.     (repeat n
  27.       (setq dl (cons (distance (vlax-curve-getpointatparam e m) sp) dl)
  28.             m  (1+ m)
  29.       )
  30.     )
  31.     dl
  32.   )
  33.   (if (and (= (vlax-curve-getendparam e1) (vlax-curve-getendparam e2))
  34.            (= (vlax-curve-isclosed e1) (vlax-curve-isclosed e2))
  35.       )
  36.     (and (equal (getinfo (entget e1)) (getinfo (entget e2)) 1e-10)
  37.          (or (equal (getdis e1) (getdis e2) 1e-7)
  38.              (equal (getdis e1) (reverse (getdis e2)) 1e-7)
  39.          )
  40.          (equal (getdis_to_sp e1) (getdis_to_sp e2) 1e-7)
  41.     )
  42.   )
  43. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-10-30 00:26:09 | 显示全部楼层
“相同” Arc

  1. (defun xdl-arc-sam (a1 a2 / l1 l2)
  2.   (setq        l1 (entget a1)
  3.         l2 (entget a2)
  4.   )
  5.   (and (equal (assoc 40 l1) (assoc 40 l2) 1e-10)
  6.        (equal (vlax-curve-getdistatparam a1 (vlax-curve-getendparam a1))
  7.               (vlax-curve-getdistatparam a2 (vlax-curve-getendparam a2))
  8.               1e-3
  9.        )
  10.   )
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-30 06:18:08 | 显示全部楼层
;对pline,对镜像的情况判断还有点问题。


;;arc判断,还可这样

  1. (defun x-samarc(e1 e2)
  2.   (and
  3.     (equal(vlax-curve-getarea e1)(vlax-curve-getarea e2)1e-4)
  4.     (equal(assoc 40(entget e1))(assoc 40(entget e2))1e-4)
  5.   )
  6. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-10-30 08:33:48 | 显示全部楼层
测试中发现 Pline 镜像后,精度的取值是一个函数是否成功的关键
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-5-2 15:01:45 | 显示全部楼层
旋转、缩放、镜像均可。(容差)
http://zml84.blog.sohu.com/77983032.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 06:47 , Processed in 0.513207 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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