• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺談AUTOCAD二次開(kāi)發(fā)在工程中的應(yīng)用

      2008-03-30 09:46:00
      建筑科技與管理 2008年10期
      關(guān)鍵詞:二次開(kāi)發(fā)應(yīng)用

      孟 魁

      【摘 要】本文主要介紹當(dāng)今流行輔助設(shè)計(jì)軟件AutoCAD二次開(kāi)發(fā)的主要工具及方法,簡(jiǎn)單的介紹了難為一般用戶所掌握的ObjectARX,針對(duì)其中的能夠在短時(shí)間內(nèi)為非計(jì)算專業(yè)所掌握的ActiveX作了主要介紹,并結(jié)合實(shí)際工作對(duì)有關(guān)功能作出了細(xì)致地分析。

      【關(guān)鍵詞】AutoCAD;二次開(kāi)發(fā);應(yīng)用

      Discuss application of AUTOCAD 2ne development in engineering

      Meng Kui

      (Shaanxi province highway investigateion and design institute Xi'an Shaanxi 710068)

      【Abstract】The article mainly introduced nowadays main tool and method of spreading the software two developments in AutoCAD of the assistance design and in brief introduced difficult is Object ARX that the general customer controls, aim at among them of can control for doing not compute profession at the in a short time of ActiveX made main introduction, and combine actual work to relevant the function made delicately analytical.

      【Key words】AutoCAD; 2nd development; Application

      AutoCAD是美國(guó)AUTODESK公司生產(chǎn)的功能強(qiáng)大的繪圖軟件,和它齊名的還有著名的MICROSTATION等軟件。但是在設(shè)計(jì)行業(yè),AUTOCAD能夠一枝獨(dú)秀,其原因在于AutoCAD有著完善的二次開(kāi)發(fā)環(huán)境,有高級(jí)語(yǔ)言為其提供專門的定制、開(kāi)發(fā)功能,使其能夠適應(yīng)各種需要,在不太復(fù)雜的開(kāi)發(fā)工作下,迅速的成為各行各業(yè)的專門軟件。作為一個(gè)工程技術(shù)人員,不能只把AutoCAD當(dāng)成一個(gè)繪圖板來(lái)使用,那是資源上的浪費(fèi),AutoCAD的目標(biāo)是使繪圖、出圖自動(dòng)化,用戶的手工工作只是一些簡(jiǎn)單的編輯美化工作!要達(dá)到這一點(diǎn)就必須要利用AutoCAD的二次開(kāi)發(fā)功能。

      從AutoCAD的發(fā)展來(lái)看,它的二次開(kāi)發(fā)主要有如下發(fā)展階段:AUTOLISP、ADS、ARX和VBA?,F(xiàn)就它們的發(fā)展過(guò)程難易程度和優(yōu)劣一一說(shuō)明。

      1. Autolisp

      Autolisp是AUTOCAD最古老的一個(gè)開(kāi)發(fā)語(yǔ)言,到現(xiàn)在仍然保留。早期的Autolisp是一個(gè)內(nèi)嵌式語(yǔ)言,用其它如記事本等工具書寫,在AUTOCAD內(nèi)部調(diào)入使用,沒(méi)有自己的單獨(dú)開(kāi)發(fā)環(huán)境,學(xué)習(xí)起來(lái)不很容易。但是它能夠利用AutoCAD的內(nèi)部函數(shù),定制工具欄和啟動(dòng)組,缺點(diǎn)是是一門解釋性的語(yǔ)言,要和AutoCAD系統(tǒng)之間利用IPC機(jī)制進(jìn)行通訊,運(yùn)行速度較慢。到現(xiàn)在的AUTOCAD版本仍然保留了這門語(yǔ)言,并且有所發(fā)展。在AutoCAD2000版以后,改名叫作Visual Lisp,有了自己的開(kāi)發(fā)平臺(tái),可以脫離開(kāi)發(fā)環(huán)境獨(dú)立運(yùn)行,可以編譯,運(yùn)行速度有了很大的提高。筆者早期用它開(kāi)發(fā)過(guò)符號(hào)庫(kù),但是因?yàn)轭愃粕虡I(yè)軟件的出現(xiàn),現(xiàn)在已經(jīng)不再使用了!下面是生成坎類符號(hào)的源程序,筆者已經(jīng)調(diào)試通過(guò)。

      (defun c:kz()

      (setq start(getpoint “\n選擇起點(diǎn):”))

      (setq end(getpoint “\n選擇終點(diǎn):”))

      (setq di(distance start end))

      (command “l(fā)ine” start end “”)

      (setq a(angle start end))

      (setq b(/ pi 2))

      (setq c(+ a b))

      (setq total 0)

      (setq km 0)

      (while (< km di)

      (command “l(fā)ine”

      (polar start 0 0)

      (polar start c 1.5)

      ()

      )

      (command “l(fā)ine”

      (setq start(polar start a 2))

      (polar start 0 0)

      ()

      )

      (setq total(+ total 1))

      (setq km(* total 2))

      )

      (command “redraw”)

      (princ)

      )

      2. Ads

      Ads是繼Autolisp以后出現(xiàn)的一種開(kāi)發(fā)方式,在AutoCAD R11以后出現(xiàn)。它是以C語(yǔ)言編寫程序的設(shè)計(jì)環(huán)境,除了可以使用標(biāo)準(zhǔn)的C函數(shù)以外,還可以使用對(duì)AUTOCAD進(jìn)行操作ADS函數(shù),可以編譯成EXE文件以后被Autolisp作為一組外部函數(shù)裝入和調(diào)用。對(duì)于AutoCAD來(lái)說(shuō),Ads程序等價(jià)于Autolisp程序。優(yōu)點(diǎn)是保密性強(qiáng),有自己的開(kāi)發(fā)環(huán)境,好調(diào)試,易加載。缺點(diǎn)是根子里還是一門解釋性語(yǔ)言,需要和AutoCAD進(jìn)行通訊,運(yùn)行速度較慢!在AutoCAD2000版以后,Ads已被ARX所淘汰。故在此不做太多介紹!

      3. ARX

      ARX目前最先進(jìn)的的一種開(kāi)發(fā)方式,它的實(shí)質(zhì)一個(gè)動(dòng)態(tài)連接庫(kù),和AutoCAD在同一地址空間運(yùn)行,所以運(yùn)行速度很快。ARX能夠直接利用AutoCAD的內(nèi)核代碼,直接訪問(wèn)AutoCAD的數(shù)據(jù)庫(kù)、圖形系統(tǒng)和幾何造型中心 ,在運(yùn)行期間實(shí)時(shí)擴(kuò)展AutoCAD具有的類及其功能,建立和AutoCAD本身固有的命令操作方式相同的新命令,它是一種全新的運(yùn)行模式。ARX需要Visual C++作為開(kāi)發(fā)環(huán)境,隨著AutoCAD版本的改進(jìn)Visual C++的編譯版本也要隨之提高。因?yàn)楹瘮?shù)名和頭文件的不同,一種版本AUTOCAD的SDK 開(kāi)發(fā)包開(kāi)發(fā)的程序只能在該版本下運(yùn)行。

      ARX應(yīng)用程序的基本結(jié)構(gòu)包括頭文件,函數(shù)說(shuō)明部分,調(diào)用ARX應(yīng)用程序,初始化函數(shù),卸載函數(shù)定義,入口點(diǎn)函數(shù)定義和用戶程序主體函數(shù)定義等幾個(gè)部分,當(dāng)然這只是簡(jiǎn)單的程序,如果要用到用戶窗體等將要用到MFC編程技術(shù),使得程序界面更加漂亮,能夠支持?jǐn)?shù)據(jù)庫(kù)的訪問(wèn),程序組成將更加復(fù)雜。

      要做ARX應(yīng)用程序,必須掌握Visual C++,這是一門非常難學(xué)的語(yǔ)言,指針是整個(gè)語(yǔ)言的核心,這就使得ARX在非專業(yè)領(lǐng)域的發(fā)展非常難。另外ARX應(yīng)用程序開(kāi)發(fā)周期長(zhǎng),調(diào)試?yán)щy,使得一些中小用戶盡量避免用它來(lái)做應(yīng)用程序。但是它非常專業(yè),能夠利用Visual C++的MFC類庫(kù),做出的程序界面漂亮,所以大部分基于AutoCAD的專業(yè)軟件都是利用ARX來(lái)開(kāi)發(fā)的!在我們公路上著名的緯地程序和專業(yè)地形圖成圖軟件cass就是利用這種開(kāi)發(fā)模式作出來(lái)的,它的拖動(dòng)技術(shù)就是典型的對(duì)AutoCAD功能和命令的擴(kuò)展!

      4. VBA開(kāi)發(fā)

      VBA技術(shù)是在AutoCAD R14以后作為標(biāo)準(zhǔn)安裝組件的。利用AutoCAD對(duì)VBA的支持,用戶可以開(kāi)發(fā)VBA應(yīng)用程序,使用ActiveX對(duì)象。但是VBA畢竟不是VB,它只是使用VB的語(yǔ)法和算法,對(duì)于實(shí)體的定義及擴(kuò)展又有自己的底層實(shí)體庫(kù)。VB語(yǔ)言簡(jiǎn)單,易于推廣,而VBA功能強(qiáng)大,代碼利用率高,運(yùn)行迅速,作為專業(yè)技術(shù)人員來(lái)說(shuō),VBA的確是適合我們的一個(gè)很好利用AutoCAD的開(kāi)發(fā)工具!它的缺點(diǎn)就是不能編譯(在VB環(huán)境下開(kāi)發(fā)的可以編譯,但運(yùn)行速度明顯降低),每次運(yùn)行都需要加載,一個(gè)開(kāi)發(fā)環(huán)境只能運(yùn)行于一種版本的autocad之下,不能兼容其他版本。

      使用VBA開(kāi)發(fā)環(huán)境時(shí)每個(gè)實(shí)體均需要定義,即實(shí)例化,它可以直接訪問(wèn)acad數(shù)據(jù)庫(kù),得到實(shí)體的所有屬性,可以實(shí)時(shí)修改實(shí)例對(duì)象的顏色、線寬、起點(diǎn)、終點(diǎn)、字體、字型等表現(xiàn)形式,可以使用數(shù)據(jù)庫(kù)編程。在VBA環(huán)境中開(kāi)發(fā)的程序所生成的實(shí)體都是有名字的實(shí)體,這就便于在程序中調(diào)用和修改實(shí)體本身的屬性,下面是筆者在公路征地宗地圖開(kāi)發(fā)中的一段程序,定義了INSERTPT無(wú)模式變量來(lái)得到屏幕選擇坐標(biāo)和zhcirc這個(gè)實(shí)例化圓變量、tl實(shí)例化直線變量:

      Dim insertpt As Variant'圖形插入點(diǎn)

      Dim zhcirc As AcadCircle

      Dim tl As AcadLine

      Dim st(0 To 2) As Double

      Dim et(0 To 2) As Double

      Dim i As Single

      Open “控制文件.txt” For Input As #1

      Input #1, bt$

      Input #1, jsdw$

      Input #1, dq$

      Input #1, dat$

      Close #1

      ThisDrawing.WindowState = acMaxinsertpt= ThisDrawing.Utility.GetPoint(, vbCrLf & “請(qǐng)輸入插入點(diǎn):”)

      qqy$=ThisDrawing.Utility.GetString(1, vbCrLf & “請(qǐng)輸入起始頁(yè)碼:”)

      Set mjs = ThisDrawing.ModelSpace.AddText(SS$, st, 4)

      mjs.Alignment = acAlignmentCenter

      mjs.TextAlignmentPoint = st

      mjs.StyleName = “mkroman”

      mjs.ScaleFactor = 0.75

      mjs.Update

      程序運(yùn)行后首先提問(wèn)基礎(chǔ)數(shù)據(jù)文件夾位置,在問(wèn)文本段數(shù)據(jù)文件夾位置,最后程序自動(dòng)讀出控制文件,確定土地權(quán)屬,然后求出征地路段面積(如圖1所示)。接著程序要求用戶在屏幕上指定生成圖形的位置,用鼠標(biāo)指定輸出位置即可,程序可根據(jù)數(shù)據(jù)多少確定是否自動(dòng)分表,最后在指定位置繪制表格和圖形(如圖2所示)。根據(jù)在實(shí)際工作中的應(yīng)用,本程序使用方便,計(jì)算迅速,界面美觀,生成圖形易于編輯和保存,比原來(lái)用其他語(yǔ)言編寫的程序具有無(wú)可比擬的優(yōu)越性。

      5. 結(jié)束語(yǔ)

      AUTOCAD是一個(gè)開(kāi)放的軟件,其二次開(kāi)發(fā)博大精深,而且還在不停的發(fā)展。隨著新一代開(kāi)發(fā)語(yǔ)言VS.NET的普及應(yīng)用,肯定還會(huì)有更方便的開(kāi)發(fā)工具。作為一個(gè)工程技術(shù)人員,能夠熟練使用AUTOCAD是最基本的,能夠讓AUTOCAD更加專業(yè)化,能夠最大程度上批處理和定制一些常用功能才是最重要的。筆者水平所限,文中不妥之處敬請(qǐng)專家批評(píng)指正。

      參考文獻(xiàn)

      [1] 張帆主編,鄭立楷、盧擇臨、王成煌 編著,清華大學(xué)出版社《AutoCAD VBA 二次開(kāi)發(fā)教程》

      [2] 劉良華 朱東海著,清華大學(xué)出版社《AutoCAD 2000 ARX開(kāi)發(fā)技術(shù)》

      [3] 中國(guó)鐵道出版社,《AutoCAD VBA函數(shù)庫(kù)查詢辭典》

      [文章編號(hào)]1006-7619(2008)09-17-533

      猜你喜歡
      二次開(kāi)發(fā)應(yīng)用
      淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      西門子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開(kāi)發(fā)
      淺談Mastercam后處理器的二次開(kāi)發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      多媒體技術(shù)在小學(xué)語(yǔ)文教學(xué)中的應(yīng)用研究
      考試周刊(2016年76期)2016-10-09 08:45:44
      分析膜技術(shù)及其在電廠水處理中的應(yīng)用
      科技視界(2016年20期)2016-09-29 14:22:00
      GM(1,1)白化微分優(yōu)化方程預(yù)測(cè)模型建模過(guò)程應(yīng)用分析
      科技視界(2016年20期)2016-09-29 12:03:12
      煤礦井下坑道鉆機(jī)人機(jī)工程學(xué)應(yīng)用分析
      科技視界(2016年20期)2016-09-29 11:47:01
      氣體分離提純應(yīng)用變壓吸附技術(shù)的分析
      科技視界(2016年20期)2016-09-29 11:02:20
      會(huì)計(jì)與統(tǒng)計(jì)的比較研究
      Micaps3.2 版本二次開(kāi)發(fā)入門淺析
      西藏科技(2015年12期)2015-09-26 12:13:51
      湘潭市| 峡江县| 康马县| 马尔康县| 武定县| 上饶县| 天峨县| 宜都市| 治多县| 灵武市| 泰安市| 仁怀市| 巴彦淖尔市| 太湖县| 双辽市| 汝州市| 阳新县| 邵东县| 海盐县| 宁德市| 修武县| 邳州市| 北安市| 扎赉特旗| 宁波市| 元氏县| 吉木乃县| 曲水县| 德清县| 鹤庆县| 乌拉特前旗| 广宁县| 沂水县| 高淳县| 大渡口区| 东源县| 沾化县| 唐海县| 巴彦县| 宜兰市| 广水市|