1. 程式人生 > >Civil 3D 2017本地化中VBA程序移植到2018版中

Civil 3D 2017本地化中VBA程序移植到2018版中

cati nbsp 包含 技術分享 修改配置 instance 信息 msi ons

中國本地化包簡直就是一塊雞肋,

但對於某些朋友來說還真離不了;

可惜中國本地化包的退出一直滯後,

在最新版軟件出來後1年多,

本地化還不一定能夠出來,

即使出來了,

也只能是購買了速博服務的用戶才能得到。

在2017版的本地化包中,

包含了一些2009版的VBA源代碼,

雖然不全,

沒有包含本地化包的所有功能,

但對於想學習使用VBA進行Civil 3D二次開發的朋友來說,

作為樣例文件,還是不錯的選擇。

技術分享圖片

下面就以AlignSectionDataPortTool.dvb為例,

演示一下如何讓這些代碼在2018版中運行起來。

1.下載並安裝VBA編輯器,

2014版之後,VBA編輯器就不隨Civil 3d主程序一起發行了,

需要單獨下載並安裝。

點擊管理→應用程序→Visual Basic 編輯器,

會彈出對話框,

並有相應的下載鏈接。

安裝後的界面如下:

技術分享圖片

2.加載VBA項目

如果已經安裝civil 3d 2017及本地化包,

可以在如下位置找到.dvb文件:

C:\ProgramData\Autodesk\C3D 2017\chs\Data\Countrification VBA

如果沒有安裝Civil 3D 2017及本地化包,

可以單獨解壓2017版的本地化包msi文件,

從中復制相應的.dvb文件到合適位置。

可以使用菜單"加載工程"來加載,

技術分享圖片

也可以直接拖放.dvb文件到Civil 3D程序窗口中。

之後打開VBA編輯器進行編輯。

技術分享圖片

3.修改代碼

1)修改對象版本

Application模塊中,

修改如下:

‘ Const sAppName = "AeccXUiLand.AeccApplication.6.0" //修改前

Const sAppName = "AeccXUiLand.AeccApplication.12.0" //修改後

如何查詢對象版本,

在我的書《AutoCAD Civil 3D .NET二次開發》中有簡單的介紹,

2)添加PtrSafe

‘Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long //修改前

Private Declare PtrSafe Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 修改後

代碼中有多處需要修改,

如果直接運行程序,

會彈出對話框進行提示,

代碼顏色為紅色,

比較好找,

不再贅述。

3)添加引用

菜單:工具→引用

技術分享圖片

瀏覽到:

技術分享圖片

切換文件類型為"所有文件"

選擇相應的.tlb文件。

4)修改CFileDialog類模塊

‘ hwndOwner As Long //修改前

‘ hInstance As Long

hwndOwner As LongPtr //修改後

hInstance As LongPtr

‘ lCustData As Long

‘ lpfnHook As Long

lCustData As LongPtr

lpfnHook As LongPtr

將上述四個變量類型由Long修改為LongPtr,

否則打開文件對話框將不能顯示。

5)修改配置文件路徑並創建配置文件

打開setting模塊修改如下:

Public Function GetConfigFileName() As String

‘ m_sFileName = WindowsDisk & "\Documents and Settings\All Users\Application Data\Autodesk\C3D 2018\chs\Data\Countrification VBA\AlignSectionConfig.dat"

m_sFileName = WindowsDisk & "\ProgramData\Autodesk\C3D 2017\chs\Data\Countrification VBA\AlignSectionConfig.dat"

End Function

這裏的路徑是Civil 3D 2017本地化包的路徑,

並在相應的位置創建一個文本文件,

名稱為AlignSectionConfig.dat,

文件內容為空即可,

這個文件如果不存在,

程序運行可能會彈出錯誤對話框;

程序正常運行後,

設置信息將保存在此文件中。

4運行導出命令

創建曲面、路線、采樣線,

註意路線要從屬於某一場地,

不能是非場地路線。

技術分享圖片

出現以下對話框:

技術分享圖片

選擇橫斷面數據文件:

技術分享圖片

點擊 導出

技術分享圖片

導出文件的內容:

技術分享圖片

後記:

上述操作將VBA程序由低版本移植到了高版本,

使本地化包中的個別功能在最新版的Civil 3D中能夠使用,

但並不是所有功能都能升級,

個別程序使用其他的庫文件,

沒有這些文件從而使代碼無法運行。

如果要讓Civil 3D的功能更符合自己的需求,

建議大家還是自己動手,

學習Civil 3D的二次開發。

Civil 3D 2017本地化中VBA程序移植到2018版中