当将管道和结构添加到管网时,Civil 3D 会使用模板自动指定名称。通常,这在初始放置期间已够用;但随着设计的展开,这些名称在将来不可避免地需要更改。此外,可能还需要许多不同的命名模式;例如,从最远的下游结构开始按顺序命名管道管路中的结构,或遵循与本地机构的数据模式保持一致的命名模式。本例将演示如何使用 Dynamo 来定义任何类型的一贯应用的命名策略。
使用边界框
使用 List.FilterByBoolMask 节点过滤数据
使用 List.SortByKey 节点对数据排序
生成和修改文字字符串
此图形将在 Civil 3D 2020 及更高版本上运行。
首先下载下面的样例文件,然后打开 DWG 文件和 Dynamo 图形。
下面概述了此图形中的逻辑。
按图层选择结构
获取结构位置
按偏移过滤结构,然后按桩号对结构排序
生成新名称
重命名结构
开始吧!
首先,我们需要选择要处理的所有结构。为此,我们只需选择特定图层上的所有对象,这意味着我们可以选择不同管网中的结构(假定它们共享同一图层)。
此节点确保我们不会意外检索到任何可能与结构共享同一图层的并不需要的对象类型。
现在,我们已有这些结构,我们需要确定它们在空间中的位置,以便可以根据它们的位置对它们进行排序。为此,我们将利用每个对象的边界框。对象的边界框是完全包含该对象几何范围的最小大小的框。通过计算边界框的中心,我们会获取结构插入点的较佳近似值。
我们将使用这些点,来获取结构相对于选定路线的桩号和偏移。
以下是事情开始变得有点棘手的地方。在此阶段,我们已有一个包含指定图层上所有结构的大列表,然后选择我们要对沿其的结构排序的路线。问题是列表中可能有我们不想要重命名的结构。例如,它们可能不是我们感兴趣的特定管路的一部分。
选定的路线
要重命名的结构
应忽略的结构
因此,我们需要过滤结构列表,以便我们不必考虑大于与路线的特定偏移量的结构。最好使用 List.FilterByBoolMask 节点完成此操作。过滤结构列表后,我们使用 List.SortByKey 节点以按其桩号值对结构进行排序。
如果您对操作列表不熟悉,请参见 使用列表部分。
检查以查看结构的偏移量是否小于阈值
将任何空值替换为 false
过滤结构和桩号列表
按桩号对结构排序
最后,我们需要为结构创建新名称。我们将使用的格式是 <alignment name>-STRC-<number>
。此处有一些额外节点,可用于根据需要为数字填充额外的零(例如,“01”而不是“1”)。
最后但同样重要的是,我们重命名结构。
以下是一个使用 Dynamo 播放器运行图形的示例。
如果您对使用 Dynamo 播放器不熟悉,请参见 Dynamo 播放器部分。
它有助于利用 Dynamo 的三维背景预览来可视化图形的中间输出,而不仅仅是可视化最终结果。我们可以轻松地显示结构的边界框。此外,此特定数据集在文档中包含“道路”,因此我们可以将“道路要素线”几何图形导入 Dynamo,以便为结构在空间中的位置提供一些上下文。如果图形用于没有任何道路的数据集,这些节点将不会执行任何操作。
现在,我们可以更好地了解按偏移过滤结构的过程是如何工作的。
以下是一些有关如何扩展此图形功能的想法。
根据结构的 最近路线 来重命名结构,而不是选择特定路线。
除了结构外,还 重命名管道。
根据结构的管路,来 设置其图层。
根据路线的桩号标注按顺序重命名管网结构。
任务完成!