2014-01-07

AutoCAD從 VBA 到 VB.Net

不知道您是否有利用VBA在AutoCAD中運用的需求,您是否開始改用VSTA來開發輔助程式了呢?這裡分兩個主題聊聊:一個是:我真的要轉過去VB.NET????另外是:我既有的VBA程式可以轉過去??


我想AutoCAD的VB開發主力目前漸漸以VSTA(VB.Net)為主要開發工具,主因還是Microsoft已經終止對VBA的IDE的支援(註:VBA利用ActiveX運行,在系統中你還是可以調用相關的API,只是未來可能沒有IDE這個開發環境)。

以下就AutoCAD中的 VBA與VB.Net差異做個比較:

VBA VB.Net
程式編輯環境 利用AutoCAD所提供的IDE介面,就猶如Word/Excel中都有一個VBA的程式撰寫環境 由外部程式所負責,也就是說是微軟的Visual Studio(*註1)
檔案格式 *.dvb *.dll
於AutoCAD中載入的方式 利用工具-巨集 -載入專案(vbaload指令)
,或是將程式直接嵌在檔案中。
利用Netload指令加載,或是註冊表(Registry Key)
於AutoCAD中使用的方式 利用工具-巨集 -巨集(vbarun指令) 從中挑選你要執行的巨集
,或是將程式直接嵌在檔案中。(*註2)
在程式撰寫時,就自訂指令名稱,在AutoCAD命令列直接鍵入指令執行,就如Line就可劃線一樣。
安全性 較不安全,網路有破解程式 較安全,dll要反組譯難度高
64位元系統 不行 可以
作業效能

註1:MS Visual Studio 有免費版(Visual Studio Express)供業餘開發者與學生使用。
註2:VBA也可以包裝程僅用指令就可執行的效果,不過要調用Lisp來完成這樣的功能。

其次是,難道我們過去千辛萬苦寫的VBA程式,難道就此付諸流水?這也不能這麼說, 否則這些廠家不就被使用者給罵死!!

不過話說回來,若你的程式內容複雜度不大,打破重煉換來金剛不壞之身又未嘗不是件好事,記得當年微軟剛出Visual Studio .Net的時候,也可以將VB6給轉換過去,不過以在下當時的經驗及對.Net的不熟悉,轉過去的結果當然是"慘不忍睹"。不過以下的步驟似乎又要惡夢重演...

以下有幾個方式可以進行VBA轉VB.Net的方式,提供需要的朋友參考參考:

A. VBA->VB6-VB.Net
  1. 將VBA專案中所有的ThisDrawing、Form、Module、Class等全給匯出。
  2. 在VB6(還找得到這套軟體?呵呵!!)中開啟DLL專案,並經上述匯出的種種全部給匯入,並存檔
  3. 在VS(以2008版為例),開啟VB6所建立的DLL專案,並進行轉換及除錯(這是重點工作),然後建立成DLL檔供AutoCAD載入調用。
B.利用VBA轉換程式,再於VS中編譯。
有個轉換巨集VBA_to_VB6_Converter,可以讓您省去上述1、2兩個步驟,而直接跳到第3步做主要的處理,需要的可下載試試(GoogleDriver  DropBox)

C.付錢了事,若你覺得你的程式很重要,也沒法子自己改,Autodesk有提供一堆專業的移植服務商來幫您處理這類的問題,很可惜的台灣好像沒有><。



沒有留言:

張貼留言