本帖最后由 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)
|