关于本地化或修改部件代码

出于本地化考虑,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 文件。 通过在句子的前面添加 //,在此文件中添加注释。 请勿在文件中留有任何空行。 使用回车符来分隔每个代码行。每个代码定义均由以下组件组成(以逗号分隔):

注: 代码文件必须以 Unicode 格式保存。 例如,如果您要使用记事本更新代码文件,则在保存该文件时,可通过“另存为”对话框选择编码方式。请确保选择“Unicode”。

下例为 C3DStockSubassemblyScripts.codes 文件中的代码定义行:

38,BottomCurb,BottomCurb,无边沟路缘的路缘底部。

索引编号为:38

本地化代码为:BottomCurb

原始代码为:BottomCurb

代码描述为:无边沟路缘的路缘底部。

修改 Autodesk Civil 3D 备用部件的默认代码

要更改或本地化代码显示名称,请在文本编辑器中打开 C3DStockSubassemblyScripts.codes 文件,然后更改本地化代码和/或相应的代码描述。

例如,可以通过编辑 C3DStockSubassemblyScripts.codes 文件中以粗体显示的部分(如下所示)来更改路缘底部的显示名称:

38,BottomKerb,BottomCurb,无边沟的路缘的底部

将新代码添加到 Autodesk Civil 3D 备用部件

如果要将现有部件修改为新代码或添加新的部件模块,并且要使用与默认内容相同的结构,则对于 .NET 部件,可以执行以下操作:

  1. 将具有新索引、本地化名称、原始代码和可选描述的 <新代码> 添加到“C3DStockSubassemblyScripts.Codes”文件的结尾处。
  2. 在 C3DStockSubassemblies VB 项目的“CodesSpecific.vb”中,将以下内容添加到 AllCodes 结构的结尾处:Public <新代码> as CodeType
  3. FillCodeStructure 例程的 With/End With 块的“CodesSpecific.vb”中,将以下内容添加到结尾处: GetFromCollection colCodesAndDescriptionHashtable, n,<新代码>
  4. 对于 CodesSpecific 模块的 InitializeDefaults() 函数中的 CodesDefault(<新代码索引>),如果找不到代码文件,接受默认值。
  5. 更改 Dim 语句的 CodesSpecific 模块中矩阵 CodesDefault 的大小。

使用这些步骤添加的新代码可以用于 Autodesk Civil 3D 备用部件中任何现有的或新的 .NET 代码部件。

对于 VBA 部件,您可以执行以下操作:

  1. 将具有新索引、本地化名称和可选描述的 <新代码> 添加到“C3DStockSubassemblyScripts.Codes”文件的结尾处。
  2. 在“C3DStockSubassemblyScripts.dvb”文件的 CodesSpecific 模块中,将以下内容添加到 AllCodes 结构的结尾处:g_s<新代码> as CodeType
  3. 在 CodesSpecific 文件中,在 FillCodeStructure 例程的 With/End With 块中,将以下内容添加到结尾处:GetFromCollection colCodesAndDescriptionHashtable, n,.g_s<新代码>
  4. 对于 CodesSpecific 模块的 InitializeDefaults() 函数中的 g_arrDefaults(<新代码索引>),如果找不到代码文件,接受默认值。
  5. 更改 CodesSpecific 模块中矩阵 g_arrDefault 的大小。

使用这些步骤添加的新代码可以用于 Autodesk Civil 3D 备用部件中任何现有的或新的 VBA 编码部件。

注: 关联点代码的过程主要是为了简化默认内容的本地化而进行。如果您要编写自定义部件,则不必执行此操作步骤。您可以创建包含部件可以参照的自定义代码列表的新模块。 也可以通过在每个模块内对字符串进行本地硬编码绕过此步骤。

本地化部件目录和工具选项板

默认部件通常为范围广泛的客户和地理区域而定义。 您可能想要更改某些目录、选项板、工具或工具变量,以适用于各种情况和语言。 这些目录和工具选项板在 .atc 文件中,以 XML 格式编写,并且可以进行编辑。

注: 默认情况下,在基于英语的系统中,Autodesk Civil 3D 部件工具目录 .atc 文件将安装到:C:\ProgramData\Autodesk\C3D <版本>\chs\Tool Catalogs\Road Catalog

下表标识了您可以出于本地化目的在部件工具目录 .atc 文件中更改的数据元素值:

注: 应仅更改数据元素的值,而不应更改其自身的数据元素名称(例如“基本车道”部件中的“宽度”)。这些数据元素是用于部件脚本的全局变量名称。

安装国家/地区套件、自定义代码文件或特定于区域的代码文件

如果您计划安装包含特定于区域的代码文件的国家/地区套件,或计划安装(使用)包含特定于区域的内容的代码文件,您必须在安装该国家/地区套件之前或在安装自定义代码文件之前执行以下操作。

对特定于区域或自定义的代码文件进行备份,将其重命名为已安装代码文件的默认名称(例如,对于英语版本产品,默认代码文件命名为 C3DStockSubassemblyScripts_US.codes),然后将其复制到以下位置:C:\ProgramData\Autodesk\C3D <版本>\chs。对于非基于英语的系统,“enu”位置应对应相应的区域。

请注意,在新计算机上第一次安装 Autodesk Civil 3D 时,将安装以下两个版本的代码文件:

安装“C3DStockSubassemblyScripts_<区域>.codes”文件(在此示例中为“C3DStockSubassemblyScripts_US.codes”)可提供用于保护代码文件内容的备份机制。

安装了包含特定于区域的代码文件的国家/地区套件后,本地化代码文件即安装到 C3DStockSubassemblyScripts.codes 并覆盖现有文件,同时会在 C3DStockSubassemblyScripts_<区域>.codes 处创建副本。 如果您已修改了“C3DStockSubassemblyScripts.codes”文件,此即为务必在安装国家/地区套件或特定于区域的代码文件之前对其进行备份的原因。

代码文件问题的故障排除

如果您在使用自定义部件时,或在执行特定 Autodesk Civil 3D 道路建模教程时遇到意外结果,则原因可能是由于图形试图参照其找不到的代码文件信息。在某些情况下,这些问题可通过更新现有代码文件以使其包含所需的信息来解决。