出于本地化考虑,Autodesk Civil 3D 备用部件使用外部代码文件来定义部件中参照的点代码、连接代码和造型代码。
外部代码文件被命名为“C3DStockSubassemblyScripts.codes”,并与“C3DStockSubassemblyScripts.dvb”文件和/或“C3DStockSubassemblies.dll”文件位于相同的文件夹中。 默认情况下,在基于英语的系统中,此位置通常为:C:\ProgramData\Autodesk\C3D <版本>\chs。对于非基于英语的系统,“enu”位置对应相应的语言或区域。
代码文件与 .dvb 文件中每个具有 CodesSpecific 模块的部件关联。 以下部分解释了代码文件的定义,以及如何对其进行编辑或向其添加点、连接和造型代码。
对于 .NET 部件,CodesSpecific 模块位于 C3DStockSubassemblies VB 项目的“CodesSpecific.vb”文件中,而对于 VBA 部件,则位于 .dvb 文件中。
了解 C3DStockSubassemblyScripts.codes 文件
可以使用任何文本编辑器打开 C3DStockSubassemblyScripts.Codes 文件。 通过在句子的前面添加 //,在此文件中添加注释。 请勿在文件中留有任何空行。 使用回车符来分隔每个代码行。每个代码定义均由以下组件组成(以逗号分隔):
- 索引编号:用于(根据需要,为点、连接或造型)将标签指定到部件模块的整数值。
- 本地化代码:将在“部件代码”、“装配代码”和/或“道路特性代码”选项卡中显示 Autodesk Civil 3D 的值,用于设定连接的样式。
- 原始代码:Autodesk Civil 3D 使用的代码变量。无论使用哪种本地化版本的部件,均以相同的方式对其进行解释,以便图形可以在不同的语言版本间移植。
- 代码描述:进一步解释与此代码关联的功能的本地化描述。此文本显示在“部件特性”、“装配特性”和/或“道路特性”对话框中“代码”选项卡的“描述”列中。 此文本是可选的。
注: 代码文件必须以 Unicode 格式保存。 例如,如果您要使用记事本更新代码文件,则在保存该文件时,可通过“另存为”对话框选择编码方式。请确保选择“Unicode”。
下例为 C3DStockSubassemblyScripts.codes 文件中的代码定义行:
38,BottomCurb,BottomCurb,无边沟路缘的路缘底部。
索引编号为:38
本地化代码为:BottomCurb
原始代码为:BottomCurb
代码描述为:无边沟路缘的路缘底部。
修改 Autodesk Civil 3D 备用部件的默认代码
要更改或本地化代码显示名称,请在文本编辑器中打开 C3DStockSubassemblyScripts.codes 文件,然后更改本地化代码和/或相应的代码描述。
例如,可以通过编辑 C3DStockSubassemblyScripts.codes 文件中以粗体显示的部分(如下所示)来更改路缘底部的显示名称:
38,BottomKerb,BottomCurb,无边沟的路缘的底部
将新代码添加到 Autodesk Civil 3D 备用部件
如果要将现有部件修改为新代码或添加新的部件模块,并且要使用与默认内容相同的结构,则对于 .NET 部件,可以执行以下操作:
- 将具有新索引、本地化名称、原始代码和可选描述的 <新代码> 添加到“C3DStockSubassemblyScripts.Codes”文件的结尾处。
- 在 C3DStockSubassemblies VB 项目的“CodesSpecific.vb”中,将以下内容添加到 AllCodes 结构的结尾处:Public <新代码> as CodeType
- 在 FillCodeStructure 例程的 With/End With 块的“CodesSpecific.vb”中,将以下内容添加到结尾处: GetFromCollection colCodesAndDescriptionHashtable, n,<新代码>
- 对于 CodesSpecific 模块的 InitializeDefaults() 函数中的 CodesDefault(<新代码索引>),如果找不到代码文件,接受默认值。
- 更改 Dim 语句的 CodesSpecific 模块中矩阵 CodesDefault 的大小。
使用这些步骤添加的新代码可以用于 Autodesk Civil 3D 备用部件中任何现有的或新的 .NET 代码部件。
对于 VBA 部件,您可以执行以下操作:
- 将具有新索引、本地化名称和可选描述的 <新代码> 添加到“C3DStockSubassemblyScripts.Codes”文件的结尾处。
- 在“C3DStockSubassemblyScripts.dvb”文件的 CodesSpecific 模块中,将以下内容添加到 AllCodes 结构的结尾处:g_s<新代码> as CodeType
- 在 CodesSpecific 文件中,在 FillCodeStructure 例程的 With/End With 块中,将以下内容添加到结尾处:GetFromCollection colCodesAndDescriptionHashtable, n,.g_s<新代码>
- 对于 CodesSpecific 模块的 InitializeDefaults() 函数中的 g_arrDefaults(<新代码索引>),如果找不到代码文件,接受默认值。
- 更改 CodesSpecific 模块中矩阵 g_arrDefault 的大小。
使用这些步骤添加的新代码可以用于 Autodesk Civil 3D 备用部件中任何现有的或新的 VBA 编码部件。
注: 关联点代码的过程主要是为了简化默认内容的本地化而进行。如果您要编写自定义部件,则不必执行此操作步骤。您可以创建包含部件可以参照的自定义代码列表的新模块。 也可以通过在每个模块内对字符串进行本地硬编码绕过此步骤。
本地化部件目录和工具选项板
默认部件通常为范围广泛的客户和地理区域而定义。 您可能想要更改某些目录、选项板、工具或工具变量,以适用于各种情况和语言。 这些目录和工具选项板在 .atc 文件中,以 XML 格式编写,并且可以进行编辑。
注: 默认情况下,在基于英语的系统中,Autodesk Civil 3D 部件工具目录 .atc 文件将安装到:C:\ProgramData\Autodesk\C3D <版本>\chs\Tool Catalogs\Road Catalog。
下表标识了您可以出于本地化目的在部件工具目录 .atc 文件中更改的数据元素值:
- <项目名称> 值是目录、类别、选项板或部件的描述名称。
- <描述> 值描述了目录、类别、选项板或部件。
- <关键字> 值包含了部件的帮助字符串。
- 以下为 <参数> 数据元素的属性:
- DisplayName:显示在选定部件的“AutoCAD 特性”窗口中的名称。
- 描述:显示在选定部件的“AutoCAD 特性”窗口左下角的描述性文本。
- 如果需要,可以更改以下数据元素值:
- <参数> 中任何子元素的参数值(例如“基本车道”部件中的“宽度”)。
- Autodesk Civil 3D 中支持英尺和米的 <单位> 值。
- 可修改以指向不同 .NET 类的 <DotNetClass 装配 = ...>(用于 .NET 部件)。
- 可修改以指向不同宏的 <宏模块>(用于 VBA 部件)。
注: 应仅更改数据元素的值,而不应更改其自身的数据元素名称(例如“基本车道”部件中的“宽度”)。这些数据元素是用于部件脚本的全局变量名称。
安装国家/地区套件、自定义代码文件或特定于区域的代码文件
如果您计划安装包含特定于区域的代码文件的国家/地区套件,或计划安装(使用)包含特定于区域的内容的代码文件,您必须在安装该国家/地区套件之前或在安装自定义代码文件之前执行以下操作。
对特定于区域或自定义的代码文件进行备份,将其重命名为已安装代码文件的默认名称(例如,对于英语版本产品,默认代码文件命名为 C3DStockSubassemblyScripts_US.codes),然后将其复制到以下位置:C:\ProgramData\Autodesk\C3D <版本>\chs。对于非基于英语的系统,“enu”位置应对应相应的区域。
请注意,在新计算机上第一次安装 Autodesk Civil 3D 时,将安装以下两个版本的代码文件:
- C3DStockSubassemblyScripts.codes
- C3DStockSubassemblyScripts_US.codes
安装“C3DStockSubassemblyScripts_<区域>.codes”文件(在此示例中为“C3DStockSubassemblyScripts_US.codes”)可提供用于保护代码文件内容的备份机制。
安装了包含特定于区域的代码文件的国家/地区套件后,本地化代码文件即安装到 C3DStockSubassemblyScripts.codes 并覆盖现有文件,同时会在 C3DStockSubassemblyScripts_<区域>.codes 处创建副本。 如果您已修改了“C3DStockSubassemblyScripts.codes”文件,此即为务必在安装国家/地区套件或特定于区域的代码文件之前对其进行备份的原因。
代码文件问题的故障排除
如果您在使用自定义部件时,或在执行特定 Autodesk Civil 3D 道路建模教程时遇到意外结果,则原因可能是由于图形试图参照其找不到的代码文件信息。在某些情况下,这些问题可通过更新现有代码文件以使其包含所需的信息来解决。