• 
    

    
    

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

      ?

      基于.NET API的CAD二次開發(fā)技術(shù)在工程中的應(yīng)用

      2013-10-17 13:28:40李志超余杉鈺張彩云
      制造業(yè)自動化 2013年15期
      關(guān)鍵詞:二次開發(fā)插件控件

      李志超,余杉鈺,章 波,張彩云

      LI Zhi-chao,YU Shan-yu,ZHANG Bo,ZHANG Cai-yun

      (哈爾濱理工大學(xué) 自動化學(xué)院,哈爾濱 150080)

      0 引言

      AutoCAD作為一款成功的計(jì)算機(jī)輔助軟件在工程繪圖中具有廣泛的應(yīng)用,它可以幫助設(shè)計(jì)人員進(jìn)行繪圖設(shè)計(jì)。CAD已經(jīng)成為現(xiàn)代工程設(shè)計(jì)最常用的工具,在機(jī)械、建筑、電子等領(lǐng)域得到了廣泛的應(yīng)用。但由于CAD軟件的通用性,可能造成在某些專業(yè)領(lǐng)域內(nèi)的功能不足或缺失[1]。因此,有必要對CAD進(jìn)行二次開發(fā),設(shè)計(jì)出符合特定領(lǐng)域的專業(yè)模塊。這樣可以擴(kuò)展CAD的應(yīng)用范圍,同樣可以提高設(shè)計(jì)人員的工作效率還可以減少設(shè)計(jì)時出現(xiàn)的錯誤,具有很強(qiáng)的實(shí)用價(jià)值。

      以實(shí)際工程中法蘭的繪制為例,不同法蘭的直徑,材質(zhì),螺孔數(shù),厚度等參數(shù)均不同。因此,如果對每一個法蘭盤都進(jìn)行繪制將浪費(fèi)工程師大量的時間,而且不便于管理。利用CAD二次開發(fā)技術(shù),不但可以快速準(zhǔn)確的繪制所要求的法蘭盤,而且通過數(shù)據(jù)庫技術(shù)可以將CAD與企業(yè)的ERP管理系統(tǒng)鏈接起來,更方便企業(yè)的綜合管理,提高企業(yè)的管理效率,節(jié)約成本。

      1 AutoCAD .NET API 概述

      目前AutoCAD二次開發(fā)的工具比較多,如Visual Lisp、VBA和ObjectARX等。它們各存在著不同的優(yōu)缺點(diǎn),Visual Lisp采用Lisp語言開發(fā),簡單但不直觀。VBA采用Visual Basic語言開發(fā),開發(fā)簡單方便但功能不足。而ObjectARX是基于Visual C++開發(fā)語言的,功能強(qiáng)但難以掌握[2]。

      AutoCAD .NET API使用戶可通過編程的方法利用程序集和開放庫操作AutoCAD和圖形文件。通過開放的對象,它們可被許多不同的編程語言和環(huán)境訪問。在AutoCAD中實(shí)現(xiàn).NET API具有以下優(yōu)點(diǎn):

      1)有更多的編程環(huán)境可以訪問AutoCAD圖形。而之前的開發(fā)工具僅限于使用相應(yīng)的語言。如VBA只能使用Visual Basic語言。

      2)NET 框架可以為32位及64位操作系統(tǒng)進(jìn)行設(shè)計(jì),而VBA只能為32位操作系統(tǒng)設(shè)計(jì)。

      3)與那些傳統(tǒng)編程語言相比,如C++,.NET具有更低的學(xué)習(xí)要求來訪問高級接口。

      4)C#相比VC++采用了垃圾回收機(jī)制,自行判斷內(nèi)存回收的時機(jī)并實(shí)行回收,通過Dispose函數(shù)進(jìn)行資源自動釋放,從而解決了內(nèi)存泄漏問題。同時VC# NET的二次編譯技術(shù)也使得其開發(fā)的程序編譯成功之后可以實(shí)現(xiàn)編譯后的程序與硬件無關(guān),從而使得程序員只是專注于程序本身,因而成為了程序員開發(fā)工具的首選。因此,在.NET框架下利用C#語言對AutoCAD進(jìn)行二次開發(fā),具有完全面向?qū)ο?、方便易用的特點(diǎn),是最合適的AutoCAD二次開發(fā)工具[3]。

      2 AutoCAD中的插件開發(fā)

      在AutoCAD二次開發(fā)中,一般有兩種實(shí)現(xiàn)方式。一種是通過外部應(yīng)用程序啟動AutoCAD,并在CAD中作圖;另一種是在CAD中加載插件,利用插件來彈出我們所需的面板,在面板上輸入?yún)?shù),并可在CAD中畫出圖形。這兩種方法的實(shí)現(xiàn)方法和原理大致相同,只是實(shí)現(xiàn)的方式有所不同,在這里我們以更具普遍性和代表性的插件開發(fā)為例來進(jìn)行說明[4]。

      在AutoCAD二次開發(fā)中,為了使用.NET API托管封裝的類,我們需要先引入上述的這些DLL文件。先啟動Visual studio 2008,新建一個類庫項(xiàng)目,然后將鼠標(biāo)放在項(xiàng)目名稱上,鼠標(biāo)右鍵單擊“引用”,然后選擇“添加引用”。在“添加引用”對話框中選擇“瀏覽”,然后找到上述的AcDbMgd.dll、AcMgd.dll、AcCui.dll文件,點(diǎn)擊確定將這些組建添加到項(xiàng)目中。此時,我們已經(jīng)將C#與.NET API連接起來了,接下來我們就可以專心進(jìn)行CAD的開發(fā)了[5]。

      首先我們在AutoCAD的菜單項(xiàng)中,添加我們的插件菜單,這里將該菜單項(xiàng)命名為“法蘭”,其含有下拉子菜單。在項(xiàng)目添加一個類文件,添加如下代碼:

      [CommandMethod(“AddMenu”)]

      Public void AddMenu()

      {AcadApplication acadApp=Application.AcadApplication;

      AcadPopupMenuItem pm=acadApp.MenuGroups.Item(0).Menus.Add(“法蘭”);

      AcadPopupMenuItem pmi1,pmi2,pmi3,pmi4,pmi5;

      pm1=pm.AddMenuItem(pm.count+1,“板式平焊法蘭”,“Thickness”+convert.Tochar(13));//子菜單}

      通過以上代碼我們可以實(shí)現(xiàn)在C A D中添加插件菜單和去其子菜單,[CommandMethod(“AddMenu”)],可以在CAD中添加命令,如在命令行中輸入,AddMenu相當(dāng)于單擊“堵板”菜單。根據(jù)我們的要求可以任意添加菜單和子菜單,最終可生成如下圖所示的形式。

      圖1 插件菜單圖

      3 AutoCAD中的面板設(shè)計(jì)與繪圖

      添加好所要求的插件菜單和其子菜單后,就可以對各個子菜單添加命令以實(shí)現(xiàn)各自不同的功能?,F(xiàn)在假設(shè)當(dāng)點(diǎn)擊子菜單后彈出的是面板形式,那么我們首先需要在項(xiàng)目中添加一個Windows Form窗體,并將該窗體的命令與子菜單的命令相對應(yīng),則可實(shí)現(xiàn)單擊子菜單彈出相應(yīng)的窗體。

      而面板的設(shè)計(jì)則相對的比較容易,我們可以根據(jù)Visual studio 2008集成環(huán)境中提供的各種控件如文本框、標(biāo)簽、按鈕等,設(shè)計(jì)自己想要的面板。我們以法蘭為例設(shè)計(jì)一種面板,如圖2所示。

      圖2 法蘭盤面板圖

      該面板比較簡潔,左上方為DataGridView控件,主要與數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行交互綁定,通過查詢等一些命令來顯示數(shù)據(jù)庫中的相關(guān)信息。左下方為TextBox控件,主要用來輸入數(shù)據(jù)下達(dá)命令。右上方為PictureBox控件,主要用來顯示預(yù)覽圖片,右下方為按鈕控件。這些按鈕控件具體實(shí)現(xiàn)什么功能,主要取決于內(nèi)部包含相應(yīng)的代碼。雙擊控件我們就可以進(jìn)入該控件的編程界面,根據(jù)所實(shí)現(xiàn)的功能編寫相應(yīng)的程序。

      對AutoCAD進(jìn)行二次開發(fā),主要是用來繪圖的,下面我們就來介紹一下通過面板怎樣實(shí)現(xiàn)在CAD中作圖。由上述內(nèi)容我們知道,直線、園、注釋、圖層等均為AutoCAD的對象,因此我們可以利用這些類來繪制圖形,下面以法蘭為例進(jìn)行說明。設(shè)置好面板上的相關(guān)數(shù)據(jù)后,單擊作圖按鈕,則相應(yīng)圖形將顯示在CAD的繪圖界面中。法蘭圖形如圖3所示。

      4 AutoCAD與數(shù)據(jù)庫鏈接

      在工程應(yīng)用中,設(shè)計(jì)人員可能經(jīng)常需要將設(shè)計(jì)好的圖形保存下來,如果圖形太多則不方便管理,查找起來也比較困難,也不利于公司內(nèi)部進(jìn)行資源交流。因此,在進(jìn)行二次開發(fā)的時候?qū)utoCAD與數(shù)據(jù)庫聯(lián)系起來是很有必要的。同時,數(shù)據(jù)庫也是CAD與企業(yè)的ERP管理系統(tǒng)鏈接起來的紐帶,這樣方便企業(yè)的整體管理,可以提高管理效率。

      圖3 法蘭圖

      數(shù)據(jù)庫主要分為本地?cái)?shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫兩種。本地?cái)?shù)據(jù)庫安裝在所使用電腦上,一般比較小,用于個人電腦上的信息存儲;遠(yuǎn)程數(shù)據(jù)庫一般在公司的服務(wù)器上,一般來說比較大,遠(yuǎn)程數(shù)據(jù)庫與本地?cái)?shù)據(jù)庫通過局域網(wǎng)或因特網(wǎng)進(jìn)行連接,實(shí)現(xiàn)本地與服務(wù)器之間的傳遞與下載。本文中我們以MySQL為本地?cái)?shù)據(jù)庫,以SQL Server為遠(yuǎn)程數(shù)據(jù)庫。由于它們之間操作方法類似,我們主要以MySQL數(shù)據(jù)庫為例進(jìn)行說明。

      要想實(shí)現(xiàn)AutoCAD與MySQL的連接,必須在工程項(xiàng)目中引入MySQL的一個組件,即mySql.data.dll[6]。

      先在數(shù)據(jù)庫中建一個表,該表有四列型號、直徑、螺孔數(shù)、厚度。在查詢中,我們可以根據(jù)已知的某些信息查找出所有符合條件的零件。實(shí)現(xiàn)代碼如下:

      從上述代碼可以看出,其過程是先與數(shù)據(jù)庫取得連接,然后通過查詢語句返回我們所需要的信息。圖2左上角中顯示了庫存中厚度為80mm的法蘭信息。

      5 結(jié)論

      當(dāng)設(shè)計(jì)好需要的插件時,便可以對程序進(jìn)行編譯,最終生成一個dll文件,可以在CAD中輸入Netload命令進(jìn)行加載,但顯然這種方法太繁瑣,我們更希望每次在CAD啟動時能自動加載。此時可在CAD安裝文件support中的acad2007.lsp的末尾處添加命令(COMMAND "NetLoad" "D:/Program Files/AutoCAD 2007/Support/MyMenu.dll")即可[5]。

      本文主要介紹C#與.NET API技術(shù)相結(jié)合的一種AutoCAD二次開發(fā)方法,并對其原理及實(shí)現(xiàn)各種功能的流程進(jìn)行了簡要的闡明。從文中的介紹中,我們可以看到利用該方法可輕松實(shí)現(xiàn)AutoCAD的二次開發(fā),并且比較容易掌握,只需具備一定的C#基礎(chǔ)和CAD的一些基本常識便可以進(jìn)行CAD的二次開發(fā),具有很好的實(shí)用價(jià)值。

      [1] 方毅.基于C#與AutoCAD的斷面圖繪制程序設(shè)計(jì)與應(yīng)用[J].地理空間信息.2012,10.10(5).

      [2] 余甚洋,謝元禮.AutoCAD平臺下坐標(biāo)文件圖形化模塊C#實(shí)現(xiàn)[J].西北大學(xué)學(xué)報(bào).2008,9.6(5).

      [3] 蔣元星.基于C#的AutoCAD二次開發(fā)技術(shù)研究及應(yīng)用[J].中國制造業(yè)信息化.2007,9.36(17).

      [4] 堯燕.基于VC#.NET對AutCAD二次開發(fā)方法的研究[J].科學(xué)技術(shù)與工程.2008,12.8(23).

      [5] 曾洪飛. AutoCAD VBA&VB.NET開發(fā)基礎(chǔ)與實(shí)例教程[M].中國電力出版社.2009.

      [6] Matthew Stucky著,金旭軍譯. MySQL:創(chuàng)建用戶接口[M].北京:人民郵電出版社.2002.

      猜你喜歡
      二次開發(fā)插件控件
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      自編插件完善App Inventor與樂高機(jī)器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
      MapWindowGIS插件機(jī)制及應(yīng)用
      基于Revit MEP的插件制作探討
      基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
      就這樣玩會VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      火力加強(qiáng)再加強(qiáng)IE插件三劍客
      伊川县| 青浦区| 蓬莱市| 读书| 绥棱县| 西贡区| 西安市| 麟游县| 开封县| 清河县| 南澳县| 辽宁省| 岚皋县| 洞头县| 商城县| 昌平区| 安溪县| 南郑县| 富裕县| 民权县| 黄浦区| 清水县| 青龙| 容城县| 辽宁省| 玉山县| 从江县| 临夏县| 科技| 巴林右旗| 莆田市| 徐闻县| 普兰县| 汶川县| 惠州市| 湘潭县| 益阳市| 吉首市| 孝昌县| 郯城县| 阿荣旗|