先决条件:
在配置“展开连接线”规则之前,必须检查逻辑示意图数据集中是否存在执行规则所必需的连接线逻辑示意图要素类,并且该要素类是否与将要指定该规则的逻辑示意图模板相关联。
通过“展开连接线”规则,可以在根据特定值将给定逻辑示意图要素类实现的所有连接线或某些特定连接线展开为几个连接线后生成逻辑示意图。这些值可能来自于原始连接线本身,也可能来自于逻辑示意图中其他逻辑示意图要素的其他任何属性。
典型示例就是电气数据模型中对相位的管理方式:
新创建的连接线是由同一连接线逻辑示意图要素类实现的连接线。您可以选择展开由该逻辑示意图要素类实现的所有原始连接线,也可以仅展开已通过 SQL 过滤器过滤的其中某些连接线(该 SQL 过滤器作用于连接线逻辑示意图要素类所关联的真实要素类/对象表)。
用于展开原始连接线的特定值从以下某一途径获得:
- 与指定连接线逻辑示意图要素类关联的要素/对象类中存储的特定字段
- 扩展条件 - 即,为每个需要展开的原始连接线返回特定值的自定义函数
这样,如果某原始逻辑示意图连接线的值指明该连接线对应于 N 个连接,则会在生成的逻辑示意图中显示 N 个展开的连接线。原始逻辑示意图连接线将会保留,此外还将新建 (N - 1) 个基于同一连接线逻辑示意图要素类的逻辑示意图连接线。与原始逻辑示意图连接线相关的属性全部都适用于这 (N - 1) 个新建的逻辑示意图连接线。
以下步骤重点介绍了对“展开连接线”规则的“规则属性”页面的配置(如果在“规则”选项卡工具条上单击“规则属性”按钮,同时该选项卡中已添加了这样的“展开连接线”规则,就会显示此页面)。要了解如何在“规则”选项卡中添加新规则项以及如何显示“规则属性”页,请参阅指定逻辑示意图模板的逻辑示意图规则主题。
对于刚刚添加到“规则”选项卡中的“展开连接线”规则,如果单击“规则”选项卡工具条上的 规则属性按钮,将打开下图所示的规则属性 对话框:
- 在描述字段中输入对规则的描述。
此描述字符串将显示在相关规则项的“规则”选项卡中,在逻辑示意图生成和更新过程中也会显示,以告知用户规则正在执行中。
- 从选择要展开的连接线逻辑示意图要素类下拉列表中选择将要实施该规则的连接线逻辑示意图要素类的名称。
从该下拉列表中可获取与逻辑示意图模板相关联的所有连接线逻辑示意图要素类。
当规则配置进行到此步骤时,由所选逻辑示意图要素类实现的所有连接线都是要展开的候选连接线。
- 如果要对指定的连接线逻辑示意图要素类指定 SQL 过滤器,以便只展开某些连接线,则执行以下操作:
- 单击关联要素/对象类的 SQL 过滤器区域右侧的编辑按钮。
将打开 SQL 查询 对话框。
- 构建所需的 SQL 表达式。
该过滤操作的作用对象是指定连接线逻辑示意图要素类所关联的要素类或对象类中存储的字段。
- 单击确定。
将关闭 SQL 查询 对话框,并且刚刚指定的 SQL 过滤器会自动显示在关联要素/对象类的 SQL 过滤器区域中。
然后,会使用指定的 SQL 过滤器来确定要成为展开候选项的一部分逻辑示意图连接线。未验证 SQL 过滤器的连接线在规则执行期间不会展开。
- 单击关联要素/对象类的 SQL 过滤器区域右侧的编辑按钮。
- 既然您已配置了要展开哪些连接线,此时就需要重点处理那些用于确定如何展开这些连接线的值。请在选择值源部分进行此配置:
- 如果要实施该规则的值存储在指定连接线逻辑示意图要素类所关联的要素类/对象表的字段中,则必须指定此字段:
- 选中选择字段选项。
- 从下拉列表中选择所需的字段。
与所选连接线逻辑示意图要素类相关联的要素类/对象表中的所有字段均可从此列表中获取。
- 如果所选字段有一个编码值属性域并且您希望通过这些编码值(而不是使用直接的字段值)来确定初始逻辑示意图连接线将如何展开,请确保当字段具有编码值属性域时,使用编码名称复选框处于选中状态。
- 如果要实施该规则的值由专门为此定义的特定扩展条件返回,请执行以下操作:
- 选中使用扩展条件复选框。
- 从下拉列表中选择所需扩展条件。
“展开连接线”规则的扩展条件是用于实现 esriSchematic.ISchematicExpandLinksByAttributeExtended 接口的组件。
扩展条件组件的作用对象是要展开的逻辑示意图候选连接线,并会为每个候选连接线都返回预期值。如果要实施该规则的值不是来自与指定连接线逻辑示意图要素类关联的要素类/对象表中存储的字段,而是来自其他要素类/对象表中的字段(例如,当这些值存储在连接线起始或末端结点逻辑示意图要素类的字段中时),通常会定义这样的扩展条件。
- 这样,在值格式部分中必须指定该规则应处理的值的类型:
- 为字符串值选择字符组合。在这种情况下,将逐个字符地对每个值进行解码,由字符数确定要为每个初始连接线创建的连接线数。
- 如果返回的信息与值列表(每个值由特定字符分隔)相对应,可选择带分隔符的字符集 = 并在文本区域的右侧指定字符分隔符。在此列表中找到的值的数量将决定展开的连接线数。
- 如果信息包含两个整数值(每个值由特定字符分隔),可选择带分隔符的值范围 = 并在文本区域的右侧指定字符分隔符。第一个值必须小于第二个值;否则,相关连接线将不会展开。
- 为整数值选择整数值。在这种情况下,这些整数将决定每条初始连接线展开的连接线数。
- 然后,在目标属性区域中,可以指定逻辑示意图的 PropertySet 属性,以便该规则存储与每个创建的连接线关联的解码值。在名称框中输入此逻辑示意图属性名称。
例如,如果要实施该规则的值是一串或一组字符,则解码后的字符数量决定着将要创建的连接线数量,并且每个解码后的字符都对应于这些连接线中的某一连接线。您随后可能想要保留这些解码后的字符并使用它们为展开的连接线配置特定图层属性。在“名称”框中定义 PropertySet 属性可以让规则存储解码后的值,以便在以后使用它们。
如果对于展开的连接线逻辑示意图要素类尚未存在指定的属性,则在验证规则配置时会自动创建该属性。
- 如果不想在生成的逻辑示意图中显示没有任何值可以让规则生效的所有连接线,请取消选中显示无值连接线。
在此情况下,只有已由“展开连接线”规则处理过的连接线会显示在所生成的逻辑示意图中。
- 单击确定以关闭规则属性 对话框。