999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-10-17 13:28:40李志超余杉鈺張彩云
制造業(yè)自動化 2013年15期
關(guān)鍵詞:二次開發(fā)數(shù)據(jù)庫設(shè)計

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

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

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

0 引言

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

以實際工程中法蘭的繪制為例,不同法蘭的直徑,材質(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中實現(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è)計,而VBA只能為32位操作系統(tǒng)設(shè)計。

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

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

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

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

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

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

[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));//子菜單}

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

圖1 插件菜單圖

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

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

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

圖2 法蘭盤面板圖

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

對AutoCAD進(jìn)行二次開發(fā),主要是用來繪圖的,下面我們就來介紹一下通過面板怎樣實現(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īng)常需要將設(shè)計好的圖形保存下來,如果圖形太多則不方便管理,查找起來也比較困難,也不利于公司內(nèi)部進(jìn)行資源交流。因此,在進(jìn)行二次開發(fā)的時候?qū)utoCAD與數(shù)據(jù)庫聯(lián)系起來是很有必要的。同時,數(shù)據(jù)庫也是CAD與企業(yè)的ERP管理系統(tǒng)鏈接起來的紐帶,這樣方便企業(yè)的整體管理,可以提高管理效率。

圖3 法蘭圖

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

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

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

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

5 結(jié)論

當(dāng)設(shè)計好需要的插件時,便可以對程序進(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ā)方法,并對其原理及實現(xiàn)各種功能的流程進(jìn)行了簡要的闡明。從文中的介紹中,我們可以看到利用該方法可輕松實現(xiàn)AutoCAD的二次開發(fā),并且比較容易掌握,只需具備一定的C#基礎(chǔ)和CAD的一些基本常識便可以進(jìn)行CAD的二次開發(fā),具有很好的實用價值。

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

[2] 余甚洋,謝元禮.AutoCAD平臺下坐標(biāo)文件圖形化模塊C#實現(xiàn)[J].西北大學(xué)學(xué)報.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ǔ)與實例教程[M].中國電力出版社.2009.

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

猜你喜歡
二次開發(fā)數(shù)據(jù)庫設(shè)計
淺談基于Revit平臺的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
瞞天過海——仿生設(shè)計萌到家
西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 国产精品白浆无码流出在线看| 国内嫩模私拍精品视频| 国产视频资源在线观看| 欧美日韩午夜| 中文字幕va| P尤物久久99国产综合精品| 欧美精品色视频| 欧美人与牲动交a欧美精品 | 国产成人精品视频一区视频二区| 国产欧美日韩另类| 四虎综合网| 精品国产乱码久久久久久一区二区| 亚洲人成在线精品| 中文字幕日韩丝袜一区| 激情乱人伦| 四虎永久在线精品国产免费| 欧美中文字幕在线播放| 日本影院一区| 狠狠ⅴ日韩v欧美v天堂| 中国丰满人妻无码束缚啪啪| 国产成人无码AV在线播放动漫| 国模极品一区二区三区| 国产精品制服| 丁香婷婷激情综合激情| 亚洲V日韩V无码一区二区| 精品国产免费观看一区| 亚洲女人在线| 国产三级毛片| a级毛片视频免费观看| 欧美色视频在线| 亚洲青涩在线| 日韩在线观看网站| 再看日本中文字幕在线观看| 亚洲第一页在线观看| 人妻中文久热无码丝袜| 亚洲一区黄色| 视频二区亚洲精品| 99er精品视频| 国产欧美中文字幕| 色国产视频| 亚洲视频欧美不卡| 91精品国产91欠久久久久| 久久semm亚洲国产| 免费观看无遮挡www的小视频| 亚洲永久视频| 日本道中文字幕久久一区| 午夜免费小视频| 农村乱人伦一区二区| 中文无码精品a∨在线观看| 亚洲精品自拍区在线观看| 一级成人a做片免费| 中文字幕亚洲乱码熟女1区2区| 92午夜福利影院一区二区三区| 激情综合图区| 91香蕉国产亚洲一二三区| 2021国产精品自产拍在线| 欧美性色综合网| 婷婷午夜影院| a级毛片免费在线观看| 亚洲欧美另类专区| 韩国自拍偷自拍亚洲精品| 日韩精品免费一线在线观看| 欧美不卡二区| 九九九久久国产精品| 久久狠狠色噜噜狠狠狠狠97视色| 日韩欧美中文字幕在线精品| 色综合五月婷婷| 99久久国产综合精品2020| 亚洲精品在线91| 国产尤物在线播放| 免费又黄又爽又猛大片午夜| 国产在线无码一区二区三区| 亚洲精品第一页不卡| 亚洲中文在线看视频一区| 国产精品所毛片视频| 亚洲自偷自拍另类小说| 九九热这里只有国产精品| 夜夜高潮夜夜爽国产伦精品| 国产成人综合网| 精品少妇人妻无码久久| 天天综合网色中文字幕| 欧美精品aⅴ在线视频|