Sooshiant 发表于 2022-7-5 17:13:25

需要lisp列出所有选择

选择一些点和类型列表时,AutoCad会显示一些数据的列表,例如点坐标和图层名称或颜色等。另一方面,如果有大量点,则需要按enter键并转至下一页。
 
一年前,我看到了一个lisp例程,它可以在列表窗口中列出所有点坐标,而不需要任何其他不必要的数据,因此您可以将所有选定的点坐标复制并粘贴到文本文件或excel中。
 
现在,我失去了那个伟大的Lisp程序。就像这张照片(这是Photoshop制作的)
 

 
如果有人有它,请给我或请写一个Lisp程序这样的我再次。任何帮助都将不胜感激。

Lee Mac 发表于 2022-7-5 17:29:17

(defun c:lixt ( / i s )
   (if (setq s (ssget '((0 . "POINT"))))
       (repeat (setq i (sslength s))
         (princ
               (apply 'strcat
                   (mapcar 'strcat '("\n\tX=\t" "\tY=\t")
                     (mapcar 'rtos (cdr (assoc 10 (entget (ssname s (setq i (1- i)))))))
                   )
               )
         )
       )
   )
   (princ)
)

Grrr 发表于 2022-7-5 17:37:04

 
我打赌你花的时间比OP写请求的时间要少。

Sooshiant 发表于 2022-7-5 17:45:33

你是个天才我爱你

Lee Mac 发表于 2022-7-5 17:55:07

干杯伙计们

Grrr 发表于 2022-7-5 18:12:44

我只是玩了一下。。我突然想到一个主意:
通过更改pdmode变量,视口会自动重新生成,因此这里有一些奇怪的测试条件来确定重新生成是否成功:

_1$ (setvar 'pdmode (getvar 'pdmode)); can be used instead of regen, which is funny
35

_1$ (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport)
nil

_$ (= (getvar 'pdmode) (setvar 'pdmode (getvar 'pdmode)))
T

_$ (if (= (getvar 'pdmode) (setvar 'pdmode (getvar 'pdmode)))
(print "Yes")
(print "No")
)

"Yes" "Yes"
_$

我完全不知道这在哪里可行,只是想把这些信息保存在档案里。

Roy_043 发表于 2022-7-5 18:22:09

请注意,_LIST命令将几何数据转换为当前UCS。
页: [1]
查看完整版本: 需要lisp列出所有选择