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的二次开发。

原文地址:https://www.cnblogs.com/myzw/p/8455168.html

时间: 2024-08-29 01:10:56

Civil 3D 2017本地化中VBA程序移植到2018版中的相关文章

希望每一位2017殚精竭力的“Java程序猿”在2018宏图大业

2017年,做得越多觉得自己不会得越多,有种殚精竭力的感觉.这一年在技术上的思考和实践的比较多,也大胆的尝试做了跨角色跨职能的架构.也有点什么都想做的冲动,所以反而有些事情没做好.没做精.初悟编程这一年并没有花多少时间在写代码上面,倒是CodeReview的代码不少,有种跳出"不识庐山真面目,只缘身在此山中",反而更注重代码的质量.可阅读性.可维护性.之前一直写Java,今年也写了两个月Vue,后面又写了段时间React Native ,有跨语言的对比后,对编程有种得心应手的感觉.规范

[转][osg]探究osg中的程序设计模式【目录】

作者:3wwang 原文接连:http://www.3wwang.cn/html/article_104.html 前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造型模式---AbstractFactory(抽象工厂)模式 探究osg中的程序设计模式---创造型模式---Singleton(单例)模式 探究osg中的程序设计模式---创造型模式-

添加程序到右键菜单并设置图标,在打开方式中添加程序

1. 2. 3.例添加notePad++,在shell下创建notePad++文件夹(项),并在notePad++文件夹(项)下创建command文件夹(项) 3.1 3.2 4.添加右键文字,点击notePad++文件夹,编辑右侧默认的值 5.选择要执行的程序,点击command文件夹,编辑右侧默认的值 6.此时已经能够右键打开了 7.添加图标,点击notePad++,右侧空白右键,新建,字符串值,随意命名例icon,并填入图标的路径,注图标格式为.ico 8.在右键菜单的打开方式中添加程序

程序中使用cocostudio移植到android手机需要的若干配置过程

本题就是测试读入数据的速度的. 如果有大量的数据读入,使用cin是很慢的. 那么使用scanf那么会快很多,但是如果数据量更大的话那么就还是不够快了. 所以这里使用fread. 首先开一个buffer,然后使用fread大块大块地读入数据就可以非常快地读入了. 题目如下: Input The input begins with two positive integers n k (n, k<=107). The next n lines of input contain one positive

漫谈程序员系列:3D打印能打印出程序猿吗

首先声明,本文是一本正经的胡扯,绝不是随随便便的胡扯,请您不要随便攻击我胡说八道,我要重复星爷在<喜剧之王>里的台词:其实,我是一本正经的喷子. 3D打印的定义 关于3D打印,下面是来自百度百科的解释: " 3D打印,即快速成型技术的一种,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术.    3D打印通常是采用数字技术材料打印机来实现的.常在模具制造.工业设计等领域被用于制造模型,后逐渐用于一些产品的直接制造,已经有使用这种技术打

【转】将 Linux 应用程序移植到 64 位系统上

原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软件已经变得比以前更为重要.在本文中,您将学习如何在进行语句声明.赋值.位移.类型转换.字符串格式化以及更多操作时,防止出现可移植性缺陷. 0 评论: Harsha S. Adiga, 软件工程师, IBM 2006 年 5 月 18 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个

STM32F429 LCD程序移植

STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动芯片做寄存器配置等等,一系列繁琐的操作.但是,如果MCU自带LCD驱动器,情况就不一样了,特别是加载了STemwin之后,不同厂家屏幕,只要其分辨率一样,则可以直接替换,最多是触摸屏的芯片不一样,做些触摸驱动.如果分辨率不同,则只需要更改分辨率就可以了,其硬件接口是一样的. 本文是从野火的5寸800

浅谈CIVIL 3D

随便聊聊使用Civil 3D的一些感受,希望能够为需要的同行提供一些启发.同时,也可以借助这个平台广聚有才有志之士,交流技术,提高技能,最终提升工作效率. 所写内容都是使用经验感受:此外,平时使用的是英语版本,功能名称如有不对,也希望大家多多包涵. 先来聊聊Civil 3D的概况,也可以作为一个题纲,今后陆陆续续的补全. Civil 3D是Autodesk公司开发的基于AutoCAD的道路设计软件,生成的文件为dwg. 整体的工作流程基本是:1. 点的输入2. 地形的创建3. 道路平面线形设计4

WPS执行VBA程序后的影响

作者:iamlaosong 我开发的Excel工具在下发到下属部门使用的过程中发现,低版本WPS不能执行所有的VBA代码,高版本也存在很多功能不能用,有些写法也不认同报错,这时,我会建议他们安装Excel应用软件,他们在安装完Excel之前,往往会删除WPS,结果导致Excel安装后执行VBA程序时会报错,提示如下图所示: 这个结果让我莫名其妙,在我这边正常的程序为啥到他那儿就报错呢? 通过远程工作,进入代码中调试,才找到错误原因,原来,安装了WPS的机器会自动引用金山的插件,卸载了WPS后,因