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


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

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

可惜中國本地化包的推出一直滯后,

在最新版軟件出來后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的二次開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM