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

Posted david96007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的二次开发。

以上是关于Civil 3D 2017本地化中VBA程序移植到2018版中的主要内容,如果未能解决你的问题,请参考以下文章

Civil3D有哪些API

Civil3D二次开发能做些什么

Civil3D跟AutoCAD是什么关系

四 civil3d 装配(标准横断面)

四 civil3d 装配(条件部件)

AutoCAD Civil3D 2023安装图文教程