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

基于.NET的AutoCAD Civil 3D二次開發(fā)技術(shù)及應(yīng)用

2014-01-18 08:55:04何守望
鐵路技術(shù)創(chuàng)新 2014年5期
關(guān)鍵詞:二次開發(fā)調(diào)試程序

■ 何守望

基于.NET的AutoCAD Civil 3D二次開發(fā)技術(shù)及應(yīng)用

■ 何守望

以.NET API為工具,介紹在AutoCAD Civil 3D進(jìn)行二次開發(fā)的技術(shù)與實(shí)現(xiàn)過程,并以鐵路隧道洞口位置選擇軟件實(shí)例說明.NET API開發(fā)技術(shù)的實(shí)際應(yīng)用,進(jìn)一步驗(yàn)證利用.NET API可以擴(kuò)展AutoCAD Civil 3D專業(yè)功能,使其達(dá)到一個(gè)新的專業(yè)深度。

.NET API;AutoCAD Civil 3D;初始化與優(yōu)化;鐵路隧道;二次開發(fā)

0 引言

AutoCAD Civil 3D軟件是美國(guó)Autodesk公司推出的面向土木工程行業(yè)的建筑信息模型(BIM)解決方案,適用于勘察測(cè)繪、土地規(guī)劃、交通運(yùn)輸工程、市政基礎(chǔ)設(shè)置、水利水電、地質(zhì)礦產(chǎn)等多個(gè)不同的行業(yè)領(lǐng)域。它基于AutoCAD構(gòu)建,包含了AutoCAD全部的功能,并且包含了GIS桌面端產(chǎn)品Map 3D的全部功能,此外還具有用于項(xiàng)目協(xié)作的Vault的功能,它能夠在工程設(shè)計(jì)對(duì)象之間建立智能化關(guān)系,從而使設(shè)計(jì)變更實(shí)現(xiàn)動(dòng)態(tài)更新。它的功能非常強(qiáng)大,可以分析與調(diào)整測(cè)量數(shù)據(jù),創(chuàng)建精確三維地形,設(shè)計(jì)各種路線及縱斷面,生成道路模型并計(jì)算土方量等,能夠幫助項(xiàng)目團(tuán)隊(duì)更加高效地設(shè)計(jì)、分析和可視化項(xiàng)目。它具有開放的體系結(jié)構(gòu),允許用戶根據(jù)自己的專業(yè)特點(diǎn),進(jìn)行定制開發(fā),擴(kuò)展和延伸專業(yè)功能,從而滿足專業(yè)設(shè)計(jì)需求。

AutoCAD Civil 3D提供COM API 和.NET API以及CustomDraw API,利用這些可以創(chuàng)建、存取和操作絕大多數(shù)Civil 3D對(duì)象,包括點(diǎn)、曲面、地塊、路線、縱斷面、橫斷面、道路、管道、測(cè)量等。COM API主要以ActiveX 接口的方式提供,從托管代碼或者非托管代碼訪問COM API,可以采用任何支持COM的開發(fā)語言和開發(fā)環(huán)境,如VB(VBA)、C++、.NET(C# 、VB.NET)等。.NET API創(chuàng)建基于Civil 3D的NET應(yīng)用程序,可以使用.NET框架所支持的任何語言來編寫,如VB.NET、C# 和Managed C++等。CustomDraw API是對(duì)ObjectARX的擴(kuò)展,能定制Civil 3D渲染對(duì)象的方式,提高圖形的繪制顯示,該接口僅對(duì)C++開發(fā)語言提供支持。

1 .NET API概述

.NET是微軟面向XML Web服務(wù)的平臺(tái),是一個(gè)可以作為平臺(tái)支持下一代Internet的可編程結(jié)構(gòu),允許應(yīng)用程序通過Internet進(jìn)行通訊和共享數(shù)據(jù)。使用.NET開發(fā)的應(yīng)用程序具有統(tǒng)一的面向?qū)ο箝_發(fā)平臺(tái)、內(nèi)存自動(dòng)管理、一致的異常處理、支持多種開發(fā)語言等好處。AutoCAD Civil 3D的.NET API提供了一系列操縱或者訪問Civil 3D對(duì)象的類、結(jié)構(gòu)、方法及事件,使開發(fā)人員在.NET框架下,使用任何支持.NET的語言對(duì)Civil 3D進(jìn)行二次開發(fā)。其優(yōu)點(diǎn)是完全面向?qū)ο螅藫碛?NET開發(fā)應(yīng)用程序的好處的同時(shí),還具有方便易用的特點(diǎn),一般而言,.NET API的性能要比COM API快得多。另外,它包含的Map 3D與土木工程對(duì)象相關(guān)的最新的API只提供.NET API,所以是較理想的Civil 3D二次開發(fā)工具,也是今后的發(fā)展方向。利用.NET API可以實(shí)現(xiàn):(1)與AutoCAD Civil 3D進(jìn)行交互操作,監(jiān)控/編輯AutoCAD Civil 3D標(biāo)準(zhǔn)的行為;(2)訪問內(nèi)部圖形數(shù)據(jù)庫(kù);(3)定制命令或者用戶UI;(4)開發(fā)面向工程實(shí)際的專業(yè)的模塊或解決方案;(5)使工作流程自動(dòng)化,簡(jiǎn)化應(yīng)用操作,提高工作效率。

2 利用.NET API進(jìn)行AutoCAD Civil 3D的二次開發(fā)

2.1 構(gòu)建開發(fā)環(huán)境

利用.N E T A P I進(jìn)行定制開發(fā),雖然不像利用ObjectARX對(duì)AutoCAD進(jìn)行二次開發(fā)時(shí)需要嚴(yán)格遵守編譯環(huán)境與SDK版本的對(duì)應(yīng)關(guān)系,但是依然還存在運(yùn)行沒有問題,但不能用來調(diào)試加載等版本問題,所以需要考慮開發(fā)環(huán)境。開發(fā)環(huán)境包括目標(biāo)平臺(tái)、開發(fā)包以及開發(fā)工具,一般來說,開發(fā)AutoCAD Civil 3D 2012/2013/2014 .NET API項(xiàng)目,需要使用Visual Studio 2010與Microsoft .NET Framework 4.0;開發(fā)AutoCAD Civil 3D 2010/2011 .NET API項(xiàng)目,需要使用Visual Studio 2008與Microsoft .NET Framework 3.5;開發(fā)AutoCAD Civil 3D 2007/2008/2009 .NET API項(xiàng)目,需要使用Visual Studio 2005與Microsoft .NET Framework 2.0或2.0以上。從一個(gè)版本遷移到另一個(gè)版本,幾乎不用修改代碼,只需要加載不同版本的.NET API庫(kù)文件和選擇不同的.NET框架重新編譯程序即可。

2.2 .NET API的初始化與優(yōu)化

通常,AutoCAD Civil 3D在載入程序模塊時(shí),需要執(zhí)行一些代碼,在卸載程序或AutoCAD Civil 3D終止時(shí),需要做一些清理工作。.NET API通過IExtensionApplication接口實(shí)現(xiàn)對(duì)程序的初始化和清理工作,該接口包含Initialize與Terminate兩個(gè)函數(shù),其中Initialize實(shí)現(xiàn)加載程序時(shí)的初始化操作,Terminate實(shí)現(xiàn)卸載程序時(shí)的清理操作。在Initialize中,一般要設(shè)置系統(tǒng)變量和可能調(diào)用命令來執(zhí)行一些預(yù)先存在的程序的初始化代碼。AutoCAD Civil 3D終止時(shí).NET程序才會(huì)被卸載,這意味著在Terminate被調(diào)用時(shí),AutoCAD Civil 3D已經(jīng)在關(guān)閉進(jìn)程了,所以Terminate可用來實(shí)現(xiàn)關(guān)閉任何打開的文件、數(shù)據(jù)庫(kù)連接等清理工作。

對(duì)于大型的程序,需要考慮優(yōu)化工作,使得程序更快地被載入到AutoCAD Civil 3D中。通常的做法是在類的聲明語句之前加入以下語句:

[assembly: ExtensionApplication(typeof(InitClass))]

[assembly: CommandClass(typeof(CmdClass))]

這樣在AutoCAD Civil 3D載入程序時(shí),將與ExtensionApplication屬性相關(guān)的類型做為程序的入口點(diǎn),并在Initialize中進(jìn)行初始化。否則,AutoCAD Civil 3D將搜索程序中所有輸出類型的IExtensionApplication實(shí)現(xiàn),以此進(jìn)行初始化,如果找不到則不進(jìn)行初始化。同樣,通過CommandClass屬性,AutoCAD Civil 3D也會(huì)直接到類中搜索要注冊(cè)的命令。當(dāng)程序中包含的類數(shù)目較多時(shí),通過ExtensionApplication和CommandClass這兩個(gè)屬性可顯著地加快程序的加載速度。

2.3 程序的調(diào)試、加載和運(yùn)行

在程序的開發(fā)過程中,需要進(jìn)行大量的調(diào)試工作,.NET API程序的調(diào)試可以跟普通的C#程序一樣通過設(shè)置斷點(diǎn)跟蹤。.NET API程序的跟蹤調(diào)試首先需要設(shè)置調(diào)試版本的編譯環(huán)境,選擇AutoCAD Civil 3D程序的位置,編譯完成后,設(shè)置斷點(diǎn),點(diǎn)擊F5進(jìn)行跟蹤調(diào)試,調(diào)試開始時(shí)會(huì)自動(dòng)打開AutoCAD Civil 3D進(jìn)程,加載運(yùn)行.NET API應(yīng)用程序后,到達(dá)斷點(diǎn)的位置,進(jìn)入調(diào)試界面,可以查詢程序中變量的當(dāng)前值,點(diǎn)擊F5可以繼續(xù)調(diào)試。程序運(yùn)行完成后,退出AutoCAD Civil 3D,結(jié)束調(diào)試。

.NET API應(yīng)用程序編譯完成后,就可以在AutoCAD Civil 3D上加載運(yùn)行,加載方式主要有使用NETLOAD命令的手動(dòng)方式和基于注冊(cè)表的自動(dòng)載入方式,其中自動(dòng)載入機(jī)制基于注冊(cè)表中描述條件的信息,說明在何種條件下哪些模塊會(huì)被載入以及如何載入,基本上信息被存儲(chǔ)在HKEY_LOCAL_MACHINE下或HKEY_ CURRENT_USER下,主要是在AutoCAD Civil 3D相應(yīng)版本下的Application項(xiàng)下創(chuàng)建一個(gè)新項(xiàng),并在里面設(shè)四個(gè)鍵值: “DESCRIPTION”(應(yīng)用程序描述)、“LOADCTRLS”(應(yīng)用程序隨AutoCAD Civil 3D加載的方式)、“LOADER”(應(yīng)用程序路徑)、“MANAGED”(應(yīng)用程序形式)。定義一個(gè)后綴名為.reg的文件,文件內(nèi)容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREAutodesk AutoCADR16.0ACAD-B000:804Applications SDPortal3D(注:這個(gè)名稱可以自己定義)]

“DESCRIPTION”=“Tunnel Portal”

“LOADCTRLS”=dword:00000002(注:此處表示隨AutoCAD Civil 3D啟動(dòng)時(shí)一起啟動(dòng))

“LOADER”=“D:\SDPortal3D\Debug\ SDPortal3D.dll”(注:此處為應(yīng)用程序SDPortal3D.dll所在路徑)

“MANAGED”=dword:00000001(注:此處表示為托管程序)

完成以后,雙擊此文件,將注冊(cè)信息導(dǎo)入注冊(cè)表,即可實(shí)現(xiàn)啟動(dòng)AutoCAD Civil 3D時(shí)應(yīng)用程序自動(dòng)加載。

執(zhí)行.NET API應(yīng)用程序僅需在AutoCAD Civil 3D命令行中輸入程序中所注冊(cè)的命令即可。

2.4 利用CustomDraw API提高圖形的繪制

為了提高圖形的顯示,需要借助CustomDraw API,該接口僅對(duì)C++開發(fā)語言提供支持,它通過使用在模塊程序加載時(shí)注冊(cè)生效的回調(diào)函數(shù)實(shí)現(xiàn),傳入回調(diào)函數(shù)的是要繪制對(duì)象和匿名塊的COM接口指針,可實(shí)現(xiàn)曲面、路線、縱斷面、道路、地塊、管道等的定制繪制。在工程設(shè)置中需要添加對(duì)其頭文件和庫(kù)文件路徑的支持,它們?cè)贏utoCAD Civil 3D安裝目錄下Sample文件夾下可以找到。

2.5 應(yīng)用事例

根據(jù)前面敘述的方法,在AutoCAD Civil 3D平臺(tái)上利用.NET API進(jìn)行鐵路隧道洞口位置選擇軟件的開發(fā)(下文討論基于AutoCAD Civil 3D 2013,Visual Studio 2010,Microsoft .NET Framework 4.0, C#進(jìn)行)。

(1)新建項(xiàng)目。啟動(dòng)Visual Studio 2010,選擇“文件/新建/項(xiàng)目”菜單項(xiàng),在項(xiàng)目類型中選擇Visual C#語言,然后在模板列表中選擇“類庫(kù)”項(xiàng)目,最后輸入項(xiàng)目名稱及項(xiàng)目存儲(chǔ)位置,單擊“OK”按鈕,完成新建項(xiàng)目。

(2)添加引用。添加對(duì)acdbmgd.dll、acmgd.dll、accoremgd.dll 、AecBaseMgd.dll、AeccDbMgd.dll程序集的引用。在“解決方案資源管理器”標(biāo)簽項(xiàng)中,用鼠標(biāo)右鍵單擊項(xiàng)目名稱下面的“引用”節(jié)點(diǎn),然后選擇“添加引用”菜單項(xiàng),在“添加引用”對(duì)話框中選擇“瀏覽”選項(xiàng)卡,然后選擇AutoCAD Civil 3D安裝目錄下的上述五個(gè)DLL庫(kù)文件,并把引用的DLL庫(kù)文件的“復(fù)制本地”屬性設(shè)置為False。

(3)項(xiàng)目屬性設(shè)置。在“解決方案資源管理器”標(biāo)簽項(xiàng)中,用鼠標(biāo)右鍵點(diǎn)擊項(xiàng)目名稱,選擇“屬性”菜單項(xiàng),在項(xiàng)目屬性頁對(duì)話框中,將“應(yīng)用程序”選項(xiàng)卡中的“目標(biāo)框架”設(shè)置為.NET Framework 4,將“調(diào)試”選項(xiàng)卡中的“啟動(dòng)外部程序”設(shè)置為AutoCAD Civil 3D 2013主程序acad.exe的路徑。

(4)加入命名空間和添加命令。根據(jù)實(shí)現(xiàn)功能要求,加入需要的命名空間(可以使用“對(duì)象瀏覽器”瀏覽加入的程序集所提供的類獲取),使用CommandMethod屬性,注冊(cè)CreateCurveCC命令。聲明命令:

[CommandMethod(“CreateCurveCC”)]

public void CreateCurveCC () {}

(5)程序編譯與加載運(yùn)行。程序編寫完成之后,按快捷鍵F7或者選擇“生成/生成解決方案”菜單項(xiàng)進(jìn)行編譯,編譯成功后,在工程目錄的binDebug文件夾下生成SDPortal3D.dll文件。

打開AutoCAD Civil 3D,在命令行中輸入NETLOAD命令,在“選擇.NET程序集”對(duì)話框中選擇編譯好的SDPortal3D.dll文件,執(zhí)行CreateCurveCC命令,出現(xiàn)軟件“從原始地形圖生成三維曲面”模塊主界面,點(diǎn)擊“生成曲面”按鈕,生成曲面模型,截屏見圖1。

圖1 曲面模式截屏

3 結(jié)束語

隨著BIM技術(shù)在勘察設(shè)計(jì)行業(yè)應(yīng)用中的不斷深化,基于BIM平臺(tái)進(jìn)行二次開發(fā)以此擴(kuò)展專業(yè)功能勢(shì)在必行。以C#作為開發(fā)語言,對(duì)基于.NET API的AutoCAD Civil 3D二次開發(fā)作了較詳細(xì)的介紹,并應(yīng)用于實(shí)際的鐵路隧道洞口位置選擇軟件的開發(fā)中,所開發(fā)的軟件具有模塊性好、使用方便、內(nèi)部功能高效等特點(diǎn),取得很好的效果,進(jìn)而驗(yàn)證了利用.NET API可以在AutoCAD Civil 3D平臺(tái)上開發(fā)出實(shí)用、高效、簡(jiǎn)潔的應(yīng)用程序。

[1] 秦洪現(xiàn),崔惠嵐,孫劍,等. Autodesk系列產(chǎn)品開發(fā)培訓(xùn)教程[M]. 北京:化工工業(yè)出版社,2008.

[2] 曾洪飛,盧擇臨,張帆. AutoCAD VBA&VB.NET 開發(fā)基礎(chǔ)與實(shí)例教程[M]. 北京:電力出版社,2013.

[3] 王田煜,徐剛. 基于ObjectARX的AutoCAD二次開發(fā)技術(shù)[J]. 河北能源職業(yè)技術(shù)學(xué)院學(xué)報(bào),2003(2).

何守望:中鐵第一勘察設(shè)計(jì)院集團(tuán)有限公司,工程師,陜西 西安,710043

責(zé)任編輯楊倩

U231+.4;TP319

A

1001-683X(2014)05-0042-03

猜你喜歡
二次開發(fā)調(diào)試程序
淺談基于Revit平臺(tái)的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
試論我國(guó)未決羈押程序的立法完善
基于航拍無人機(jī)的設(shè)計(jì)與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
FOCAS功能在機(jī)床調(diào)試中的開發(fā)與應(yīng)用
西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
調(diào)壓柜的調(diào)試與試運(yùn)行探討
主站蜘蛛池模板: 激情六月丁香婷婷| 亚洲二区视频| 扒开粉嫩的小缝隙喷白浆视频| 精品国产欧美精品v| 日韩视频免费| 美女潮喷出白浆在线观看视频| 成年人福利视频| 亚洲日韩高清在线亚洲专区| 不卡无码网| 尤物成AV人片在线观看| 成人国产一区二区三区| 久久无码av三级| 福利在线免费视频| 亚洲IV视频免费在线光看| 素人激情视频福利| 日韩小视频在线观看| 亚洲最大综合网| 国产欧美日韩综合在线第一| 久热re国产手机在线观看| 久久频这里精品99香蕉久网址| 青青草国产在线视频| 在线观看国产一区二区三区99| 国产精品第一区在线观看| www.91在线播放| 亚洲视频色图| 婷婷中文在线| 天堂在线www网亚洲| 亚洲一区二区三区在线视频| 亚洲无码精品在线播放| 亚洲无线国产观看| 久久精品国产免费观看频道| 亚洲第一精品福利| 丰满人妻一区二区三区视频| 欧美中文字幕一区二区三区| 日本人又色又爽的视频| 成人在线第一页| 日本人又色又爽的视频| 日韩不卡高清视频| 午夜视频www| 亚洲第一网站男人都懂| 国产精品美女在线| 欧美激情成人网| 精品色综合| 中文无码伦av中文字幕| 精品福利视频导航| 999国产精品| 亚洲欧美自拍一区| 一级一毛片a级毛片| 激情网址在线观看| 国产成人艳妇AA视频在线| 国产激情在线视频| 青青草一区| 四虎国产精品永久一区| 国产清纯在线一区二区WWW| 日韩免费中文字幕| 国产精品区视频中文字幕| 亚洲综合在线最大成人| 女同国产精品一区二区| 中文字幕色在线| 日韩东京热无码人妻| 欧美高清三区| 国产成年无码AⅤ片在线| 国产一二三区视频| 9cao视频精品| a在线亚洲男人的天堂试看| 久久精品丝袜| 美女免费黄网站| www.av男人.com| 国产精品无码AV中文| 伊人久久久久久久| 亚洲中文字幕久久精品无码一区| a级毛片免费播放| 精品无码国产一区二区三区AV| 3344在线观看无码| 久久天天躁狠狠躁夜夜躁| 婷婷综合亚洲| 人妻精品全国免费视频| 亚洲成A人V欧美综合| 午夜限制老子影院888| 国产精品主播| 欧美日韩精品在线播放| 午夜限制老子影院888|