emadageeb 发表于 2022-7-6 09:31:15

将点逐个添加到直线

在我的规划项目中,lee mac lisp areatable帮了我很多忙。你能通过lisp帮我吗(通过多选向直线的每个端点和两条直线的每个交点添加点,如果有两条或三条直线从一个点开始,lisp只创建一个点。如果你为我这样做,我将非常感激。
Emad公司

Lee Mac 发表于 2022-7-6 10:23:38

*耸耸肩*编码很有趣
 

(defun c:LinePoints ( / i j ss e1 e2 p1 p2 p3 points )

(if (setq i -1 ss (ssget '((0 . "LINE"))))
   (progn
   (while (setq e1 (ssname ss (setq i (1+ i) j i)))
       (setq points
         (cons (setq p1 (cdr (assoc 10 (entget e1))))
         (cons (setq p2 (cdr (assoc 11 (entget e1)))) points)
         )
       )
       (while (setq e2 (ssname ss (setq j (1+ j))))
         (if (setq p3 (inters p1 p2 (cdr (assoc 10 (entget e2))) (cdr (assoc 11 (entget e2)))))
         (setq points (cons p3 points))
         )
       )
   )
   (while points (entmakex (list (cons 0 "POINT") (cons 10 (car points))))
       (setq points
         (vl-remove-if '(lambda ( x ) (equal (car points) x 1e-) (cdr points))
       )
   )
   )
)
(princ)
)

emadageeb 发表于 2022-7-6 10:49:17

李,我很高兴你的帮助,它与我一起工作!!
谢谢,非常感谢
emad公司
页: [1]
查看完整版本: 将点逐个添加到直线