CAD
展点程序
lisp
2009
年
02
月
17
日
星期二
01:08 P.M.
(
1
)
依网上资源文件修改的:
----------------------
CAD
展点程序
把下文保存到文本文件中,扩展名改为
.lsp,
按数据格式要求准备好数据点文件。
在
CAD
中加载
lsp
文件。运行命令:
kszd
----------------------
;LISP
展点程序
;
展
1000
点:在
H
P(AMD Athlon64 3000+ 256MB)
电胶上仅耗时
0.142
秒;
;
在金利
(Geleron(R) CPU 2.40GHz 256MB)
电胶上耗时
0.882
秒
;
数据文件格式为:每一点的数据(点号、
X
、
Y
、
H
)为一行,用逗号或空格作为分隔符,即
;
点号
1 X1 Y1 H1
或者
点号
1, X1, Y1, H1
;
点号
2 X2 Y2 H2
或者
点号
2, X2, Y2, H2
;
点号
3 X3 Y3 H3
或者
点号
3, X3, Y3, H3
;......
;
点号
n Xn Yn Hn
或者
点号
n, Xn, Yn, Hn1
(defun c:kszd()
(setq ff (open (getfiled "
请选择要展点的数据文件
" "" "txt" 2) "r")
fhb nil t0 (getvar "cdate")
cm (getvar "cmdecho") os (getvar "osmode")
tcm1 "
高程注记
" tcm2 "
点记
"
)
(setvar "cmdecho" 0)(setvar "osmode" 0)
(if (= (tblsearch "layer" tcm1) nil) (command "layer" "n" tcm1 ""))
(if (= (tblsearch "layer" tcm2) nil) (command "layer" "n" tcm2 ""))
(while (setq zb (read-line ff))
(while (vl-string-search "," zb) (setq zb (vl-string-subst " " "," zb)))
(setq zb (read (strcat "(" zb ")"))
zb
(list
(list
(nth
2
zb)
(nth
1
zb))
(vl-princ-to-string
(last
zb)));
注记高程
;zb
(list
(list
(nth
2
zb)
(nth
1
zb))
(vl-princ-to-string
(car
zb)));
提示:注记点号请用该行
fhb (append fhb (list zb))
)
)
(setq t1 (getvar "cdate"))
(close ff)
(setq zb (vl-sort fhb '(lambda (e1 e2) (
x0 (car (car (car zb))) x1 (car (car (last zb)))
zb (vl-sort fhb '(lambda (e1 e2) (