CAD lisp 选择一条或多条多段线,输出其上点的x,y,z坐标,handle,层名到txt,检查无误
时间: 2024-03-23 18:36:42 浏览: 152
CAD提取多段线坐标
4星 · 用户满意度95%
好的,我理解了你的问题。首先,你需要使用 LISP 语言编写一个程序,以选择一条或多条多段线。然后,程序需要输出它们上面的点的 x、y、z 坐标、handle 和层名到一个 .txt 文件中。最后,程序需要检查输出无误。
下面是一个简单的 LISP 程序,可以实现你的要求:
```
(defun c:output-xyz-handle-layer ()
(setq entlist (entsel "\n选择一条或多条多段线: "))
(setq filename (getfiled "Save As" "" "txt" 1))
(setq f (open filename "w"))
(if entlist
(progn
(foreach ent entlist
(setq vertices (vlax-invoke (vlax-ename->vla-object ent) 'vertices))
(foreach vertex vertices
(setq x (rtos (car vertex)))
(setq y (rtos (cadr vertex)))
(setq z (rtos (caddr vertex)))
(setq handle (strcase (cdr (assoc 5 (entget (car ent)))))) ; 获取 handle
(setq layer (cdr (assoc 8 (entget (car ent)))))) ; 获取层名
(write-line (strcat x "," y "," z "," handle "," layer) f)))
(princ "\n未选择任何多段线!"))
(close f)
(princ "\n已输出到文件!"))
```
当你输入 `output-xyz-handle-layer` 命令时,程序会提示你选择一条或多条多段线,并要求你输入保存到的 .txt 文件名。然后,程序会将每个点的 x、y、z 坐标、handle 和层名写入到文件中,并在命令行中显示输出信息。
注意:这只是一个简单的程序,可能无法处理所有情况。你需要根据自己的实际需求进行修改和完善。
阅读全文