将方孔分段的lisp_AutoLisp编写工程地质剖面图小工具
AutoLisp編寫工程地質(zhì)剖面圖小工具
朱紅雷李健民 (浙江省水利水電勘測設(shè)計院杭州 310002)
在我院應(yīng)用的CAD工程地質(zhì)制圖系統(tǒng)中,通常采用的各種高級語言編制的程序,一般是通過編制數(shù)據(jù)文件,生成CAD圖形數(shù)據(jù)交換文件(一般為*.SCR或*.DXF)達到繪制CAD圖紙的目的。這種方法往往顯得不符合我們的繪圖習(xí)慣,也很不直觀。為此,我們利用AutoLisp語言開發(fā)繪制工程地質(zhì)剖面圖組件,在實際應(yīng)用中取得了較好的效果。
其實,繪圖過程就是各種工程地質(zhì)剖面圖組件的拼接過程。一幅工程地質(zhì)剖面圖,一般而言不外乎以下幾個組件:圖幅圖簽、剖面圖框架(如標尺、樁號等)、勘探信息(如鉆孔、平硐等)、地質(zhì)構(gòu)造、圖例花紋、各種地質(zhì)線條等。如果我們分別對不同組件編寫不同的繪制工具,并把他們有機地、相互關(guān)聯(lián)地放置在一起,就繪制出了一幅工程地質(zhì)圖紙。因此,開發(fā)出一套繪制各種工程地質(zhì)組件的程序,具有一定的實用價值。
AutoLisp語言內(nèi)嵌于AutoCAD,編寫的小程序可以方便地在 AutoCAD界面下進行人機對話。例如下列程序代碼段通過輸入幾個數(shù)據(jù)即可實現(xiàn)繪制一個簡單的鉆孔。
(defun c:zk()
(setq pt0 (getpoint "/n請輸入鉆孔位置:"))
(setq blc (getreal "/n請輸入比例尺:"))
(steq ks (getreal "/n請輸入孔深(m):"))
(setq ksx (* (/ ks blc) 1000))
(setq pt1 (list (- (car pt0) 0.5) (cadr pt0)))
(setq pt2 (list (- (car pt0) 0.5) (- (cadr pt0) ksx)))
(setq pt3 (list (+ (car pt0) 0.5) (- (cadr pt0) ksx)))
(setq pt4 (list (+ (car pt0) 0.5) (cadr pt0)))
(command "PLINE" pt1 pt2 pt3 pt4 "")
我們在用AutoLisp編制上述小工具時,遇到了一些問題,也有些心得體會,愿與大家交流,權(quán)作拋磚引玉。
1 常用數(shù)據(jù)應(yīng)建立磁盤文件進行保存,如工程名稱、比例尺、剖面方向等,需要在不同的Autolisp甚至于不同的圖紙間通用,因此需建立磁盤文件進行保存。相關(guān)的函數(shù)有read-line、wrtie-line等進行磁盤讀寫操作;rtos、atof 等進行數(shù)值與字符串的轉(zhuǎn)換。
2 盡量應(yīng)用表格進行編寫,可以使程序簡潔并增加可讀性。事實上,一個AutoLisp程序本身就是一個表或若干表的集合。而各種數(shù)據(jù)組成的表又是AutoLisp的數(shù)組,在某種程度上,這種表比其它高級語言的數(shù)組更容易操作,因為AutoLisp提供了豐富的表操作語言,如(subst newitem olditem list);
總結(jié)
以上是生活随笔為你收集整理的将方孔分段的lisp_AutoLisp编写工程地质剖面图小工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买基金和买股票,哪个更容易赚到钱?哪个更
- 下一篇: java ee 6 源码_Java EE