找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1150|回复: 2

[LISP函数]:判断Pline自相交

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-27 05:35:04 | 显示全部楼层 |阅读模式

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

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

×

  1. ;;       a-->(1 2 3 4 5 6 7 8)
  2. ;;       (split 2 a)-->((1 2) (3 4) (5 6) (7 8))
  3. ;;       (split 3 a)-->((1 2 3) (4 5 6) (7 8))
  4. ;;By Aeo From [url]www.xdcad.net[/url]
  5. (defun lst-split (n li / return a len)
  6.   (while li
  7.     (setq a   nil
  8.           len (length li)
  9.     )
  10.     (repeat (if        (<= n len)
  11.               n
  12.               len
  13.             )
  14.       (setq a  (cons (car li) a)
  15.             li (cdr li)
  16.       )
  17.     )
  18.     (setq return (cons (reverse a) return))
  19.   )
  20.   (reverse return)
  21. )
  22. ;; Form [url]www.xdcad.net[/url] eachy 2005.9.21
  23. ;;获取LightweightPolyline Polyline顶点
  24. ;;返回值: 顶点列表
  25. (defun xd-getplvertex (e / n i ptl)
  26.   (setq        n (1+ (fix (vlax-curve-getendparam e)))
  27.         i -1
  28.   )
  29.   (repeat n
  30.     (setq ptl (cons (vlax-curve-getpointatparam e (setq i (1+ i))) ptl))
  31.   )
  32.   (reverse ptl)
  33. )
  34. (defun c:tt (/ e obj ints n m pts  pls)
  35.   (if (setq e (car (entsel)))
  36.     (progn
  37.       (setq obj (vlax-ename->vla-object e))
  38.       (if (setq ints (vla-intersectwith obj obj acextendnone))
  39.         (progn
  40.           (setq        n (/
  41.                     (1+        (vlax-safearray-get-u-bound
  42.                           (setq var (variant-value ints))
  43.                           1
  44.                         )
  45.                     )
  46.                     3
  47.                   )
  48.                 m (fix (vlax-curve-getendparam e))
  49.           )
  50.           (if (> n m)
  51.             (progn
  52.               (setq pts        (lst-split 3 (safearray-value var))
  53.                     pls        (xd-getplvertex e)
  54.               )
  55.               (mapcar '(lambda (x) (setq pts (vl-remove x pts))) pls)
  56.               (mapcar '(lambda (x) (command ".point" x)) pts)
  57.             )
  58.           )
  59.         )
  60.       )
  61.     )
  62.   )
  63.   (princ)
  64. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-27 14:52:39 | 显示全部楼层
爱简单

  1. ;; (plinsp e) = 判断Pline自相交 ---by-- 狂刀 .2005.9
  2. ;;  参数: e = 多义线实体.
  3. ;; (plinsp (car(entsel)))
  4. (defun plinsp (e / pts)
  5.   (setq o (vlax-ename->vla-object e))
  6.   (setq pts (vlax-invoke o 'intersectwith o 0))
  7.   (if (< (vlax-curve-getendparam e) (+ 1 (vlax-get o 'closed)(/ (length pts) 3))) T nil)
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-3 17:45:50 | 显示全部楼层
我的这个函数
或到我的网盘下载 http://muzicad.ys168.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 08:38 , Processed in 0.454908 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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