找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1220|回复: 1

[原创] 用一系列点断开曲线

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-2-28 18:47:55 | 显示全部楼层 |阅读模式

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

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

×

把 ssbrk 拆分成函数,
  1. (defun _IsEndPoints (ptl pts)
  2.     (or        (equal ptl pts 1e-5)
  3.         (equal ptl (reverse pts) 1e-5)
  4.     )
  5.   )
  6.   (defun Pnts:SortOnCurve (e pts / ptl)
  7.     (if        (= (length pts) 1)
  8.       pts
  9.       (progn
  10.         (setq pts (vl-sort pts
  11.                            '(lambda (e1 e2)
  12.                               (> (vlax-curve-getdistatpoint
  13.                                    e
  14.                                    (vlax-curve-getclosestpointto e e1)
  15.                                  )
  16.                                  (vlax-curve-getdistatpoint
  17.                                    e
  18.                                    (vlax-curve-getclosestpointto e e2)
  19.                                  )
  20.                               )
  21.                             )
  22.                   )
  23.               ptl (cons (car pts) ptl)
  24.         )
  25.         (while (setq pts (cdr pts))
  26.           (if (equal (car pts) (car ptl) fuzz)
  27.             nil
  28.             (setq ptl (cons (car pts) ptl))
  29.           )
  30.         )
  31.         ptl
  32.       )
  33.     )
  34.   )
  35.   (defun Line:GetSplitCurves (e pts / sp ep el elst)
  36.     (setq sp (vlax-curve-getstartpoint e)
  37.           ep (vlax-curve-getendpoint e)
  38.     )
  39.     (if        (not (_isendpoints (list sp ep) pts))
  40.       (progn
  41.         (setq el  (entget e '("*"))
  42.               pts (Pnts:SortOnCurve e (cons ep (cons sp pts)))
  43.         )
  44.         (setq el (subst        (cons 11 (cadr pts))
  45.                         (assoc 11 el)
  46.                         el
  47.                  )
  48.         )
  49.         (entmod el)
  50.         (setq elst (mapcar '(lambda (p1 p2)
  51.                               (setq el (subst (cons 10 p1)
  52.                                               (assoc 10 el)
  53.                                               el
  54.                                        )
  55.                                     el (subst (cons 11 p2)
  56.                                               (assoc 11 el)
  57.                                               el
  58.                                        )
  59.                               )
  60.                               (entmake el)
  61.                             )
  62.                            (cdr pts)
  63.                            (cddr pts)
  64.                    )
  65.         )
  66.         (cons e elst)
  67.       )
  68.     )
  69.   )
  70.   (defun Arc:GetSplitCurves (e pts / sp ep el tf elst)
  71.     (setq sp (vlax-curve-getstartpoint e)
  72.           ep (vlax-curve-getendpoint e)
  73.     )
  74.     (if        (not (_isendpoints (list sp ep) pts))
  75.       (progn
  76.         (setq el   (entget e '("*"))
  77.               spam (vlax-curve-getstartparam e)
  78.               pts  (Pnts:SortOnCurve e (cons ep (cons sp pts)))
  79.               tf   (< (cdr (assoc 51 el)) (+ pi pi))
  80.         )
  81.         (if tf
  82.           (setq        pts (mapcar '(lambda (x)
  83.                                (vlax-curve-getparamatpoint e x)
  84.                              )
  85.                             pts
  86.                     )
  87.           )
  88.           (setq
  89.             pts        (mapcar        '(lambda (x / pam)
  90.                            (setq pam (vlax-curve-getparamatpoint e x))
  91.                            (if (< pam spam)
  92.                              (+ pam pI pi)
  93.                              pam
  94.                            )
  95.                          )
  96.                         pts
  97.                 )
  98.           )
  99.         )
  100.         (setq el (subst        (cons 51 (cadr pts))
  101.                         (assoc 51 el)
  102.                         el
  103.                  )
  104.         )
  105.         (entmod el)
  106.         (setq elst mapcar
  107.               '(lambda (p1 p2 /)
  108.                  (setq el (subst (cons 50 p1)
  109.                                  (assoc 50 el)
  110.                                  el
  111.                           )
  112.                        el (subst (cons 51 p2)
  113.                                  (assoc 51 el)
  114.                                  el
  115.                           )
  116.                  )
  117.                  (entmake el)
  118.                )
  119.                (cdr pts)
  120.               (cddr pts)
  121.         )
  122.         (cons e elst)
  123.       )
  124.     )
  125.   )

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

已领礼包: 685个

财富等级: 财运亨通

发表于 2014-2-28 19:59:28 | 显示全部楼层
版主。。。什么时候可以修复1208的LISP通用函数啊(PS:开自带VLISP编辑器CAD会挂)??
好期待啊~~~~

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:33 , Processed in 0.228046 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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