| 
 
                
| ;jyzdm.lsp ;阐明----1.使用本程序前,请先建扬名为“HZ”的字型;
 ; 2.使用本程序前,请先确定原点位置。
 ; 3.本程序所用命令名为JYZDM。
 ; 编写人:段悟哲 1999-5-30
 (defun c:jyzdm()
 ;赋全局变量默认值
 (if (= #ql nil) (setq #ql 0.0))
 (if (= #qg nil) (setq #qg 0.0))
 (if (= #zg nil) (setq #zg 3.0))
 (if (= #hb nil) (setq #hb 5000.0))
 (if (= #vb nil) (setq #vb 500.0))
 (if (= #gp nil) (setq #gp 1.0))
 (if (= #x nil) (setq #x 0.0))
 (if (= #y nil) (setq #y 0.0))
 (initget "Yes No")
 (setq YorN(getkword "重新定义基础数据?(Yes or No):"))
 (if (= YorN nil)
 (progn
 ;---输入本图基础数据
 (setq #ql(getreal "\n本图起始里程:")
 #qg(getreal "\n本图起始高程:")
 #zg(getreal "\n字体高度:")
 #hb(getreal "\n纵断面横向比例:")
 #vb(getreal "\n纵断面纵向比例:")
 #x(getreal "\n地面线起始点里程:")
 #y(getreal "\n地面线起始点高程:")
 #lc(getreal "\n里程书写位置:")
 #gc(getreal "\n地面高程书写位置:")
 #x(/ (- #x #ql) (/ #hb 1000))
 #y(/ (- #y #qg) (/ #vb 1000))
 );setq
 (setq px0 #x)
 );progn
 );if
 ;---由地面线起始点里程计算公里标所在位置
 ;---输入中桩里程及其对应的地面高程并按比例计算地面点所在位置
 (setq fi(getfiled "选择地面高程数据文件" "\\r13" "txt"4))
 (setq fp (open fi "r"))
 (while(setq po(read-line fp))
 (setq po(read po))
 (setq #zl(car po)
 #dg(car (cdr po)))
 (cond
 ((/= #zl nil)
 (setq zls(- #zl (* (fix (/ #zl 100)) 100))
 px(/ (- #zl #ql) (/ #hb 1000))
 py(/ (- #dg #qg) (/ #vb 1000))
 
 );setq
 ;---写出中桩里程(不含百米及以上数字)
 (if (> (- px px0) (* #zg 1.5))
 (progn
 (cond
 ((/= zls 0.0)
 (command "line" (list px (+ 5 #lc)) (list px (- #lc 5)) nil)
 (command "text" "s" "hz" "mc" (list (- px #zg) #lc) #zg "90" (rtos zls 2 2) nil))
 );cond
 (command "line" (list px (+ #gc 5)) (list px (- #gc 5)) nil)
 (command "text" "s" "hz" "mc" (list (- px (+ (/ #zg 2) 1)) #gc) #zg "90" (rtos #dg 2 2) nil);command
 (setq px0 px)))
 ;---毗连地面线
 (command "line" (list #x #y) (list px py) nil)
 ;---更换地面高程点所用全局变量值
 (setq #x px)
 (setq #y py)
 )))
 (close fp)
 );defun
 (print "已成功装载,输入“JYZDM”开始!")
 ;---结束
 | 
 | 
|  | 
|
|  | 
|  |