中国本地化包简直就是一块鸡肋,

但对于某些朋友来说还真离不了;

可惜中国本地化包的推出一直滞后,

在最新版软件出来后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版中的更多相关文章

  1. .NetCore中的程序通过Docker在CentOS中部署

    基础说明 安装Docker过程就略过了 创建一个Asp.Net Core程序 启用Docker支持,会生成Dockerfile文件,接下来看下这个文件,当然不同的版本生成的具体可能不一致 FROM m ...

  2. 总结我在huawei matebook D 2018版中安装archlinux的过程

    1.首先当然是准备一个启动U盘.按理说UEFI启动方式,只要将ISO镜像中的文件copy到U盘根目录即可,可以实际用的时候虽然能启动,但是进入live的时候会有些问题,所以老老实实用UltraISO ...

  3. Civil 3D CustomDraw .NET混合项目设置

    样例文件中的CustomDraw项目使用的是COM API,但COM API不完整,某些时候需要使用.NET API,此时需要将C++项目设置成"公共语言运行时支持(/clr)"但 ...

  4. 探究osg中的程序设计模式【目录】

    前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造 ...

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

    作者:3wwang 原文接连:http://www.3wwang.cn/html/article_104.html 前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模 ...

  6. AutoCAD Civil 3D 中缓和曲线的定义

    本文对AutoCAD Civil 3D中缓和曲线的定义进行了整理. 原英文网页如下: https://knowledge.autodesk.com/support/autocad-civil-3d/l ...

  7. ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目

    前言: 说明两个地方 1.点击按钮启动SmartConfig的地方 2.最终跳转的地方 说明 这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程 我要把所有的全部拿出来讲,让 ...

  8. 2017.9.1 Java中的程序方法

    今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...

  9. AutoCAD/Civil 3D 学习笔记

    Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...

随机推荐

  1. java 加密 解密 Illegal key size

    java.security.InvalidKeyException: Illegal key size   今天遇到一个奇怪的问题. 自己做的加签验签功能已经没有问题了,本地测试通过,同事放到服务器上 ...

  2. [C#] LINQ之GroupBy

    声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 本文作者文采欠佳,文字表达等方面不是很好,但实际的代码例子是非常实用的,请作参考. 一.先准备要使用的类: 1.Person类: cl ...

  3. 移动前端webApp开发点滴积累20140629

    #移动前端webApp开发点滴积累20140629 ##关于input行内居中的问题 给input设定一个比较高的高度,在某些版本的移动设备上,文字不能垂直居中,即使设定了相同的行高也不行.(见图) ...

  4. Python全栈开发之路 【第十六篇】:jQuey的动画效果、属性操作、文档操作、input的value

    01-动画效果 show 显示 概念:显示隐藏的匹配元素 语法:show(speed,callback) 参数: speed:三种预定速度之一的字符串('slow','normal','fast')或 ...

  5. public private protected default小结

    public:可以被所有其他类所访问: private:只能被自己访问和修改: protected:自身.子类及同一个包中类可以访问: default:声明时没有加修饰符,同一包中的类可以访问:当子类 ...

  6. js判断浏览器的类型,动态调整div布局

    最近写页面用bootstrap和amazeUi然后发现自己写的部分和两个框架做重合时,页面大小变化后有的元素变得很乱,很乱无奈只好用js判断 window.onscroll = function sc ...

  7. A direct formulation for sparse PCA using semidefinite programming

    目录 背景 Sparse eigenvectors(单个向量的稀疏化) 初始问题(low-rank的思想?) 等价问题 最小化\(\lambda\) 得到下列问题(易推) 再来一个等价问题 条件放松( ...

  8. poj3984 广度搜索BFS

      迷宫问题 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1 ...

  9. 15-分析Ajax请求并抓取今日头条街拍美图

    流程框架: 抓取索引页内容:利用requests请求目标站点,得到索引网页HTML代码,返回结果. 抓取详情页内容:解析返回结果,得到详情页的链接,并进一步抓取详情页的信息. 下载图片与保存数据库:将 ...

  10. Bad Hair Day POJ - 3250 (单调栈入门题)

    Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-cons ...