shrine2014 发表于 2015-1-12 10:02:55

求助,散点坐标提取

本帖最后由 shrine2014 于 2015-1-12 10:15 编辑


(defun err(msg)
(setvar "dimzin" zin)
(setq *error* errtmp)
(close f)
(princ "取消或没有可输出对象...")
)

(defun c:OutData( / f filename BlockName ss ent ents ptlnsert ent1 ent2 entlst i)
(setq BlockName "HH")
(setq zin (getvar "dimzin"))
(setvar "dimzin" 1)
(setq errtmp *error*)
(setq *error* err)
(setq filename (setq filename (getfiled "保存输出文件..." "" "TXT" 1)))
(if (not filename)(exit))

(prompt "选择坐标<直接回车全选>...")
(setq ss (ssget (list '(0. "INSERT")(cons 2 BlockName))))
(if (not ss)
    (setq ss (ssget "x" (list '(0. "INSERT")(cons 2 BlockName))))
)
(setq f (open filename "w"))
(write-line "X\t\t\tY\t\t高程" f)
(setq i 0)
(repeat (sslength ss)
    (setq ent (ssname ss i))
    (setq ents (entget ent))
    (setq ptlnsert (cdr (assoc 10 ents)))
    (setq ent1 (entnext ent))
    (setq ent2 (entnext ent1))
    (setq entlst (list ent1 ent2))
    (setq entlst (vl-sort '(lambda(e1 e2)(<(cadr (assoc 10(entget e1)))(cadr (assoc 10 (entget e2)))))))
    (setq entlst (mapcar '(lambda(e)(cdr (assoc 1(entget e))))entlst))
    (set i(1+i))
    (write-line (strcat (rtos(car ptlnsert)2 8) "\t"
                (rtos (cadr ptlnsert)2 8) "\t"
                (car entlst) "." (cadr entlst)
                )f)
    )
(close f)
(setvar "dimzin" zin)
(setq *error* errtmp)
;(list ptlnsert entlst)
(princ)
)

(prompt "\nPress OUTDATA to launch the program!")这是十年前meflying老大给我写的提取AutoCAD散点坐标的代码,原文件找不到了,我是把抄在纸上的重新录入,现在载入出现错误:参数类型错误:streamp nil


我想提取如下文件的xyz三维坐标,xy平面坐标从点的特性中读取,z坐标为附近标注的文本(圆点中虽然也有z坐标,但是大多数情况下是不准的,所以要读取文本作为高程z)





页: [1]
查看完整版本: 求助,散点坐标提取