Lisp导入x y z坐标
大家好。我需要一个lisp来为从civil 3d到excel的等高线生成x y z值,并将其放入单独的列中。
有什么想法吗
非常感谢。 您是否在c3d中尝试了导入/导出工具
使用Tapatalk从我的SM-E700H发送 你可以将CIV3D等高线转换为PLINE,然后输出所有坐标,输出文件可能会很可怕。可以按间隔导出。
我想你需要解释一下为什么需要轮廓坐标? 我正在使用其他软件分析管网,目前无法以当前形式导入等高线。因此,我需要轮廓x y z坐标作为文本,最好是在excel中 是的,我有。没有将等高线值导出为文本的选项 可能这对您有帮助(仅适用于3DPOLYLINES)
(defun c:3dexport (/ *error* file sset pnt ssnm i vn omit )
(defun *error* (msg)
(if file (close file))
(cond
((not msg))
((member msg '("Function cancelled" "quit / exit abort")))
((princ (strcat "\nError:" msg)))
)
(princ)
)
(if (setq sset (ssget "_:L" '((0 . "POLYLINE"))))
(progn
(if (setq file (open (getfiled "File to Save" "C:\\" "csv" 1)"w"))
(progn
(write-line (strcat "Point No." "," "X" "," "Y" "," "Z") File)
(setq pnt 1)
(_Layer "Point_Text" 2)
(repeat (setq i(sslength sset ))
(setq ssnm(ssname sset (setq i(1- i))))
(setq vn (entnext ssnm))
(while (/= "SEQEND" (cdr (assoc 0 (entget vn))))
(setq pts(cdr (assoc 10 (entget vn))))
(_MakeText pts (rtos pnt 2 0) (getvar 'DIMSCALE) (Getvar 'TEXTSTYLE) "Point_Text")
(setq omit (strcat (rtos pnt 2 0) ","(rtos (car pts) 2 4) "," (rtos (cadr pts) 2 4) "," (rtos (caddr pts) 2 4)))
(write-line omit file)
(setq vn(entnext vn))
(setq pnt(1+ pnt))
)
)
(close file)
)
)
)
(*error* "Nothing Seleted:")
)
(*error* nil)
(princ)
)
(defun _MakeTExt(point name ht style layer)
(entmake (list (cons 0 "TEXT")
(cons 10 Point)
(cons 1 name)
(cons 40 ht)
(cons 7 style)
(cons 8 layer)
)
)
)
(defun _layer(name col)
(if (not (Tblsearch "LAYER" name))
(command "_LAYER" "n" name "c" col name "")
(command "_LAYER" "t" name "ON" name "c" col name "")
)
) 我的轮廓都是三维多段线。当我使用lisp时,它显示了找到的372个对象。但接下来什么都没发生
请键入驱动器以保存文件 如何将其设置为保存到桌面 代码在#6中更新
现在,您可以将文件保存到任何位置
页:
[1]
2