• 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:ProgramDataAutodeskC3D 2017chsDataCountrification 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 SettingsAll UsersApplication DataAutodeskC3D 2018chsDataCountrification VBAAlignSectionConfig.dat"

    m_sFileName = WindowsDisk & "ProgramDataAutodeskC3D 2017chsDataCountrification VBAAlignSectionConfig.dat"

    End Function

    这里的路径是Civil 3D 2017本地化包的路径,

    并在相应的位置创建一个文本文件,

    名称为AlignSectionConfig.dat,

    文件内容为空即可,

    这个文件如果不存在,

    程序运行可能会弹出错误对话框;

    程序正常运行后,

    设置信息将保存在此文件中。

    4运行导出命令

    创建曲面、路线、采样线,

    注意路线要从属于某一场地,

    不能是非场地路线。

    出现以下对话框:

    选择横断面数据文件:

    点击 导出

    导出文件的内容:

    后记:

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

    使本地化包中的个别功能在最新版的Civil 3D中能够使用,

    但并不是所有功能都能升级,

    个别程序使用其他的库文件,

    没有这些文件从而使代码无法运行。

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

    建议大家还是自己动手,

    学习Civil 3D的二次开发。

  • 相关阅读:
    dedecms list 判断 每隔3次输出内容
    dede 后台登录以后一片空白
    SSO单点登录在web上的关键点 cookie跨域
    简单批量复制百度分享链接
    PHP强大的内置filter (一)
    MySql数据备份与恢复小结
    linux命令 screen的简单使用
    xdebug初步
    本地虚拟机挂载windows共享目录搭建开发环境
    MySQL 5.6 警告信息 command line interface can be insecure 修复
  • 原文地址:https://www.cnblogs.com/myzw/p/8455168.html
Copyright © 2020-2023  润新知