Alcapone001 发表于 2022-7-5 16:46:13

Lisp导入x y z坐标

大家好。
我需要一个lisp来为从civil 3d到excel的等高线生成x y z值,并将其放入单独的列中。
有什么想法吗
非常感谢。

gS7 发表于 2022-7-5 16:54:30

您是否在c3d中尝试了导入/导出工具
 
使用Tapatalk从我的SM-E700H发送

BIGAL 发表于 2022-7-5 16:56:42

你可以将CIV3D等高线转换为PLINE,然后输出所有坐标,输出文件可能会很可怕。可以按间隔导出。
 
我想你需要解释一下为什么需要轮廓坐标?

Alcapone001 发表于 2022-7-5 17:01:10

我正在使用其他软件分析管网,目前无法以当前形式导入等高线。因此,我需要轮廓x y z坐标作为文本,最好是在excel中

Alcapone001 发表于 2022-7-5 17:06:16

是的,我有。没有将等高线值导出为文本的选项

gS7 发表于 2022-7-5 17:11:42

可能这对您有帮助(仅适用于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 "")
)
)

Alcapone001 发表于 2022-7-5 17:18:15

我的轮廓都是三维多段线。当我使用lisp时,它显示了找到的372个对象。但接下来什么都没发生

gS7 发表于 2022-7-5 17:20:31

 
请键入驱动器以保存文件

Alcapone001 发表于 2022-7-5 17:23:16

如何将其设置为保存到桌面

gS7 发表于 2022-7-5 17:28:51

代码在#6中更新
现在,您可以将文件保存到任何位置
页: [1] 2
查看完整版本: Lisp导入x y z坐标