motee-z 发表于 2022-7-5 20:00:15

将线的端点存储到

请帮个小忙
有什么想法吗
我想选择一条特定的线,然后将这些线的端点存储在一个列表中
塔克斯

David Bethel 发表于 2022-7-5 20:16:46

基本引擎可能如下所示:
 

(defun c:linepl (/ pl ss i en ed)
(and (setq ss (ssget '((0 . "LINE"))))
      (setq i 0)
      (while (setq en (ssname ss i))
             (setq ed (entget en))
             (foreach g '(10 11)
               (setq pl (cons (cdr (assoc g ed)) pl)))
             (setq i (1+ i)))
      (and pl (alert (rtos (length pl) 2 0))))
(prin1))

Tharwat 发表于 2022-7-5 20:24:21

变量“lst”保存选定线的端点坐标列表。
 

(defun c:Ends (/ ss lst)
(if (setq ss (ssget '((0 . "LINE"))))
   ((lambda (i / sn)
      (while (setq sn (ssname ss (setq i (1+ i))))
      (setq lst (cons (cdr (assoc 11 (entget sn))) lst))
      )
    )
   -1
   )
)
(if lst lst (princ))
)

motee-z 发表于 2022-7-5 20:27:22

谢谢david谢谢tharwat

BIGAL 发表于 2022-7-5 20:35:01

当你用另一种方式画一条线时,会发生什么?你可能需要额外的一点,就像我在检查你选择哪一端时使用的那样,因此交换10和11个答案,以获得我想要的开始-结束。

David Bethel 发表于 2022-7-5 20:44:02

虽然我经常使用sp(start\u pt)和ep(end\u point)作为线的点值,但AutoCAD实际上使用了From和To提示,从不真正指定起点和终点。
 
OP从未真正说明需要哪些分数。(所有直线点)(所有直线点的对)(所有直线点的对及其反向)
 
我经常使用这些对和它们的反面(对于过度杀戮类型的函数)
 

(defun vld_deldup (/ ss i ll en ed p10 p11 mln)
(setq mln 0.003)
(princ (strcat "\nSearching " (getvar "CLAYER") "..."))
(and (setq ss (ssget "X" (list (cons 0 "LINE")(cons 8 (getvar "CLAYER")))))
      (setq i 0)
      (while (setq en (ssname ss i))
             (setq ed (entget en)
                  p10 (cdr (assoc 10 ed))
                  p11 (cdr (assoc 11 ed)))
             (if (or (< (distance p10 p11) mln)
                     (member (list p10 p11) ll)
                     (member (list p11 p10) ll))
                  (entdel en)
                  (setq ll (cons (list p10 p11) ll)))
             (setq i (1+ i)))
       (if ll (princ (strcat (rtos (length ll) 2 0) " Of " (rtos i 2 0) " LINEs Remain"))
            (princ "- No Duplicates Found")))
(prin1))

 
大多数情况下,我会将点值四舍五入到mln

Tharwat 发表于 2022-7-5 20:56:46

 
欢迎随时光临。

hanhphuc 发表于 2022-7-5 21:03:35

 
示例:如果OP希望收集垂直线在横截面中相交的点?,如果第一条直线端点朝下,则其余偏移间隔和修剪的直线将继承相同的图案。
虽然OP的示例dwg没有问题,但我确实同意应考虑BIGAL对方向的考虑。注意
页: [1]
查看完整版本: 将线的端点存储到