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版中的更多相关文章
- .NetCore中的程序通过Docker在CentOS中部署
基础说明 安装Docker过程就略过了 创建一个Asp.Net Core程序 启用Docker支持,会生成Dockerfile文件,接下来看下这个文件,当然不同的版本生成的具体可能不一致 FROM m ...
- 总结我在huawei matebook D 2018版中安装archlinux的过程
1.首先当然是准备一个启动U盘.按理说UEFI启动方式,只要将ISO镜像中的文件copy到U盘根目录即可,可以实际用的时候虽然能启动,但是进入live的时候会有些问题,所以老老实实用UltraISO ...
- Civil 3D CustomDraw .NET混合项目设置
样例文件中的CustomDraw项目使用的是COM API,但COM API不完整,某些时候需要使用.NET API,此时需要将C++项目设置成"公共语言运行时支持(/clr)"但 ...
- 探究osg中的程序设计模式【目录】
前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造 ...
- [转][osg]探究osg中的程序设计模式【目录】
作者:3wwang 原文接连:http://www.3wwang.cn/html/article_104.html 前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模 ...
- AutoCAD Civil 3D 中缓和曲线的定义
本文对AutoCAD Civil 3D中缓和曲线的定义进行了整理. 原英文网页如下: https://knowledge.autodesk.com/support/autocad-civil-3d/l ...
- ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目
前言: 说明两个地方 1.点击按钮启动SmartConfig的地方 2.最终跳转的地方 说明 这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程 我要把所有的全部拿出来讲,让 ...
- 2017.9.1 Java中的程序方法
今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...
- AutoCAD/Civil 3D 学习笔记
Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...
随机推荐
- python爬虫随笔-scrapy框架(1)——scrapy框架的安装和结构介绍
scrapy框架简介 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...
- java 浅克隆 深克隆
对象的克隆是java的一项高级技术,他可以根据给定的对象,获得与其完全相同的另一个对象. 1.浅克隆主要是复制对象的值 2.深克隆:当类存在聚合关系的时候,克隆就必须考虑聚合对象的克隆,可以复制引用类 ...
- from bs4 import BeautifulSoup 报错
一: BeautifulSoup的安装: 下载地址:https://www.crummy.com/software/BeautifulSoup/bs4/download/4.6/ 下载后,解压缩,然后 ...
- 2017湘潭大学邀请赛G题(贪心+优先队列)
参考博客:http://www.cnblogs.com/chendl111/p/6891770.html 题目链接:https://www.icpc.camp/contests/4mYguiUR8k0 ...
- Comet OJ 热身赛(E题)(处理+最短路算法)
dijkstra 已经提交 已经通过 42.86% Total Submission:189 Total Accepted:81 题目描述 Eagle Jump公司正在开发一款新的游戏.泷本一二三作为 ...
- mysql常用命令行操作(二):表和库的操作、引擎、聚合函数
一.查看.创建.删除数据库 create database library default character set utf8 collate utf8_general_ci; # 创建数据库并设置 ...
- 【Python3练习题 025】 一个数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同
[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同 x = input('请输入任意位数的数字:') if x == x[::-1]: ...
- 生命周期函数以及vue的全局注册
beforeCreate 在创造实例之前 created 创造实例以后 beforeMount 在挂载前 render 渲染节点到页面上 //将虚拟dom数组渲染出来 mounted 挂载以后 bef ...
- vscode开发中绝对让你惊艳的插件!!!(个人在用)
识别模版引擎 1.Apache Velocity :识别Velocity(vm) 2.Art Template Helper:识别artTemplate 点击路径跳转 1.Laravel goto v ...
- findBugs安装
点击“Help->InstallNew Software”,如下图所示: 2 接着如下图所示: 3 Name”输入“findBugs”,“Location”输入“http://findbugs. ...