我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD新聞

CAD二次開發及其在礦山測繪工程中的應用

時間:2011-02-25 10:06:25 來源:

  l 前言

  隨著科學技術的發展,計算機技術已不僅僅應用于科學計算,已逐漸發展成為和許多科學技術部門建立各不相同的計算機輔助系統(Computer Aided Design,簡稱CAD)。目前,CAD技術的應用大致可以分為兩大應用領域:一類是產品設計,如飛機、汽車、船舶、機械、電子產品;另一類是工程設計,如土木、建筑、水利、礦山、鐵路、石油、化工等各種類型的工程。CAD技術在產品設計領域的發展尤為迅速,已經證明在采礦設計中引進CAD技術無論計算、繪圖,質量還是速度都使設計工作上一個臺階。

  但是,目前各設計部門大多只能應用AutoCAD軟件包,工程設計人員大部分時間花費在繁瑣的計算、繪圖中,大部分設計人員尚不能對AutoCAD進行開發,對引進的CAD軟件進行修改,編制出一些實用的小軟件。筆者以開發“測量繪圖系統”軟件為例,簡單介紹了AutoLISP在開發測繪工程CAD方面的應用,供工程設計人員在AutoCAD二次開發中作為參考。

  2 AutoLISP語言簡介

  LISP語言是List Processing language的縮寫,它產生于20世紀50年代后期,是一種資格最老的程序設計語言之一。AutoLISP是嵌入在AutoCAD內部的LISP語言,該語言可以給AutoCAD系統增添以高級語言編寫程序的能力,而且非常適合于圖形的應用。

  2.1 源程序編輯

  AutoLISP程序文件代碼實際上是以ASCII文本文件的格式存儲的,其文件名的擴展名是木.LSP或幸.MNL,因此,AutoLISP的程序文件可以采用任何一種文本編輯軟件來編寫,如:EDIT、wPS、WORD等。

  2.2 語法結構

  AutoLISP語言書寫指令所用的語法結構與普通的口語化語言相比要簡單得多,但限制卻相當嚴格,幾乎不能有絲毫的疏忽。

  2.3 程序加載

  盡管AutoLISP代碼可以使用鍵盤錄入到命令行上,但通常這只是調試程序的一種輔助手段。對于實用的AutoLISP程序,就需要將它編排成一個文本文件,然后從AutoCAD編輯器環境把它加載到內存,進行測試和排錯,最后形成一個可重復使用的AutoLISP程序。可以使用LOAD函數在命令行加載,也可在ACAD.LSP文件中定義,以使每次啟動AutoCAD時自動加載。

  2.4 程序運行

  如果程序文件中定義了一個形如C:XXX的函數,那么就能在COMMAND:提示符下通過鍵入該函數全名來運行該函數,就像執行標準的內建式AutoCAD命令一樣。

  過去的AutoCAD版使用的AutoLISP至多只能使用45K內存,因此,在使用上常常會遇到結點空間不夠的情況,而且運行速度很慢,影響處理工作。AutoCAD從R9版起提供了擴充AutoLISP功能,可使用計算機的全部擴充內存,最多可達14M。

  擁有比原先大得多的工作空間運行AutoLISP大程序,并將騰出45K空間分給AutoCAD作為1/O分頁存取作業之用,使內存與硬盤的交換次數減少而加快處理速度。

  3 AutoLISP語言在開發礦山測繪工程CAD方面的應用

  AutoLISP語言提供了各種數據類型、預定義函數、特殊功能,可自動生成SCR接口文件,利用輸入輸出功能,讀寫函數實現與高級語言的數據交換。在AutoLISP語言編輯中,增加了AutoCAD繪圖命令,是設計和繪圖溶為一體,將求值器、運算程序直接裝入源程序,實現對當前數據庫的直接訪問和修改,對屏幕圖形的適時修改,實現交互設計,為在繪圖領域中應用人工智能提供了方便。

  AutoCAD從R12版開始,引入了可編程對話框(Programmable Dialog Box,簡稱PDB),改進了圖形用戶接口(Graphics Users Interface,簡稱GUI),使用戶能夠更加容易、直觀地進行操作。通過一些簡單的手段,用戶便可以創建自己的對話框,從而為操作提供了一個友好的圖形界面。

  創建一個對話框至少要兩種不同的語言來編寫兩個程序段。一個是對話框控制語言(Dialog Cont101Language,簡稱DCL)編制的對話框定義程序;另一個是用AutoLISP語言或ADS編寫的對話框驅動程序,文中采用的是AutoLISP語言。DCL文件是一個ASCII文本文件,用來定義對話框中的各種元素及其排列方式,如果用戶不指定元素的大小,AutoCAD會根據各平臺的現狀為元素設置一個缺省的值。對話框驅動程序能夠為對話框提供一個操作主控制函數,用于啟動對話框并控制流程的運行。以“測量繪圖系統”軟件開發的部分源程序為例,對AutoLISP語言在開發中的應用以及DCL文件的結構和語法進行簡單陳述。

  3.1 對話框定義程序

  //;;;一一一一一一一一一一一一

  //;;;文件名:CLCAD.DCL

  //;;;功能:定義測繪工程CAD主菜單的各種控

  件及排列

  //;;;時間:2005年12月

  //;;;一一一一一一一一一一一一

  clcadss//對話框名

  :dialog//對話框開始

  fixed—width=true;//指定控件的寬度保持固定

  width=45;//指定控件的寬度為45個字符

  alignment=centered;//本簇中控件中心對齊

  //對話框的標題

  label=”測量繪圖系統(開敞式)V1.0”

  :boxed.IOW{//定義一個加框行

  children.alignment=centered;//所有子控件中心對齊

  initial.focus=qx"http://光標初始定位為“LX”控件

  :retirment.butto^a{//定義一個按鈕

  key="Ix”;//該控件標識號為“Lx”

  label=”展點”;//該控件的文本標題

  }//一個控件定義結束

  }//加框行定義結束

  :column{//定義一個空白列

  fixed.width=true;//指定控件的寬度保持固定

  fixed.height=true;//指定控件的高度保持固定

  height=13;//指定控件的高度為45個字符

  }//空白列定義結束

  :text{//定義一個控件

  key="textl”;//該控件標識號為“textl”

  label=”此處顯示出錯信息!W該控件的文本標題

  }//控件定義結束

  ok.cancel.help;//選用標準“OK-取消一幫助”控件

  }//對話框定義結束

  3.2 對話框驅動程序

  ;;;一一一一一一一一一一一一

  ;;;文件名:coordin.LSP

  ;;;功能:調用測量繪圖系統主菜單

  ;;;時間:2005年12月

  ;;;一一一一一一一一一一一一

  ;;;定義一個函數,函數名為C:clcad

  (defun c:clcad()

  ;;;JJo載DCL文件

  (if;︱if1︳;(and(not dcl-id)(<(setq dcl·id(10addialog”

  C:/acadwin/clcad.dcl”))O))(exit));endifl

  ;;;激活出對話框

  (if;︱if2︳;(not new—dialog”clcadss”dcl—id))(exit);endif2

  (setq what—next 4)

  (while(<2 what—next);設置循環

  (action—tile“lx”(C:lx)”);接受在lx按鈕上的操作

  (action—tile“jkd(C:jkd)”);接受在jkd按鈕上的操作

  (action-tile”zhsh””(e:zhsh)”);接受在zhsh按鈕上的操作

  (action-tile”ckd””(C:ckd)”);接受在ckd按鈕上的

  操作

  (action-tile”fd”~(c:fd)”);接受在fd按鈕上的操作

  (action-tile“output”(c:output)”);接受在output按鈕上的操作

  (action·tile”accept””(done—dialog 1)”);接受在OK按鈕上的操作

  (action—tile”help””(done-dialog 3)”);接受在HELP按鈕上的操作

  (setq what next(start-dialog));啟動對話框

  (cond

  ((=what-next 1)

  (c:jkdlIshr) 。

  (setq what—next 4)

  (if(not(new-dialog1"clcadss"dcl—id))(exit)))

  ((=what.next 3)

  (C:help)

  (setq what-next 4)

  (if(not(new—dialog“clcadss”dcl—id))(exit)))

  );cond

  );while

  (unload·dialog dcl—id);卸載DCL文件

  (princ)

  );defun;函數結束

  ;;;一一一一一一一

  4 結語

  上述源程序僅是“測量繪圖系統”軟件的主菜單調用情況,內部功能函數的實現尚有許多內容,在此不一一贅述了。以上為筆者在開發過程中的點滴體會,僅供工程設計人員參考,希望能起到拋磚引玉的作用。