帮忙改成记事本直接打开输出
三维多段线顶点提取,帮忙改成记事本直接打开输出结果(defun c:3wzb() (vl-load-com) (if (setq ssa (ssget '((0 . "POLYLINE")))) (progn (setq i 0 n (sslength ssa) ptb nil no 0) (repeat n (setq obj (vlax-ename->vla-object (ssname ssa i)) pts (vlax-get-property obj "Coordinates") pts (vlax-safearray->list (vlax-variant-value pts)) i (1+ i) m (/ (length pts) 3) ) (repeat m (setq x (car pts) pts (cdr pts) y (car pts) pts (cdr pts) z (car pts) pts (cdr pts) pt (list x y z) ptb (cons pt ptb) no (1+ no) ) (princ (strcat "\nNo" (itoa no) " x=" (rtos x 2 3) " y=" (rtos y 2 3) " z=" (rtos z 2 3) ) ) ) ) (setq ptb (reverse ptb)) ) ) (princ))
http://bbs.mjtd.com/thread-190406-1-1.html
这里应该就是你想要的。 这个太复杂,有大佬帮忙修改1楼代码吗 (defun c:3wzb()
(vl-load-com)
(setq filename0 (getfiled "请指定保存位置" "e:\\三维多段线坐标.txt" "txt" 1))
(setq txtfile (open filename0 "w"))
(if (setq ssa (ssget '((0 . "POLYLINE"))))
(progn
(setq i 0
n (sslength ssa)
ptb nil
no0
)
(repeat n
(setq obj (vlax-ename->vla-object (ssname ssa i))
pts (vlax-get-property obj "Coordinates")
pts (vlax-safearray->list (vlax-variant-value pts))
i (1+ i)
m (/ (length pts) 3)
)
(repeat m
(setq x (car pts)
pts (cdr pts)
y (car pts)
pts (cdr pts)
z (car pts)
pts (cdr pts)
pt(list x y z)
ptb (cons pt ptb)
no(1+ no)
)
(princ (strcat "\n顶点" (itoa no) " x=" (rtos x 2 3) " y=" (rtos y 2 3) " z=" (rtos z 2 3) ) )
(write-line (strcat "顶点" (itoa no) "," (rtos x 2 3) "," (rtos y 2 3) "," (rtos z 2 3)) txtfile)
)
)
(setq ptb (reverse ptb))
(close txtfile)
(startapp "notepad" filename0)
)
)
(princ)
)
煮茗 发表于 2024-12-11 14:46
很实用,非常感谢
页:
[1]