Shape.SpatialNeighbors 属性 (Visio)

返回 Selection 对象,该对象代表与指定形状相比符合特定条件的形状。 此为只读属性。

语法

表达式SpatialNeighbors (关系容差标志ResultRoot)

expression 一个代表 Shape 对象的变量。

参数

名称 必需/可选 数据类型 说明
Relation 必需 Integer 说明要使用的关系类型的整数。
Tolerance 必需 Double 采用父形状定义的坐标空间的内部绘图单位表示的距离。
Flags 必需 Integer 影响结果中返回的项目类型的标志。
ResultRoot 可选 Variant 表示页面或组的 Shape 对象。

返回值

选择

备注

有关 Relation 参数的值,请参阅 SpatialRelation 属性主题。

Flags 参数可以是下表中定义的常量值的任意组合。 这些常量也在 Visio 类型库的 VisSpatialRelationFlags 中定义。

常量 说明
visSpatialIncludeContainerShapes &H80 包括容器。 默认情况下,不包括容器。
visSpatialIncludeDataGraphics &H40 包括数据图形标注形状及其子形状。 默认情况下,不包括数据图形标注形状及其子形状。 如果父形状自身是数据图形标注,则除非设置了该标志,否则将在父形状的几何图形与非标注形状之间进行搜索。
visSpatialIncludeGuides &H2 考虑参考线的“Geometry”内容。 默认情况下,参考线不会影响结果。
visSpatialFrontToBack &H4 将项目从前向后进行排序。
visSpatialBackToFront &H8 将项目从后向前进行排序。
visSpatialIncludeHidden &H10 考虑隐藏的“Geometry”内容。 默认情况下,隐藏的 Geometry 节不会影响结果。
visSpatialIgnoreVisible &H20 不考虑可见的“Geometry”内容。 默认情况下,可见的“Geometry”内容会影响结果。

使用 NoShow 单元格来确定“Geometry”内容是隐藏的还是可见的。 在 NoShow 单元格中,隐藏的“Geometry”内容的值为 TRUE,可见的“Geometry”内容的值为 FALSE。

如果未指定 Relation,则 SpatialNeighbors 属性使用所有可能的关系作为条件。

从 Visio 2002 开始,如果 Flags 包含 VisSpatialFrontToBack,则 SpatialNeighbors 属性返回的 Selection 对象中的项目将从前向后进行排序。 如果设置了 visSpatialBackToFront,返回的项将按照从后到前的顺序进行排序。 如果没有设置此标志,或者运行的是 Visio 的早期版本,顺序将不可预测。 可以使用 Selection 对象中标识的形状的 Index 属性来确定顺序。

如果没有指定 ResultRoot,此属性将返回 Selection 对象,该对象代表与指定形状相比符合特定条件的形状。 如果指定了 ResultRoot,此属性将返回 Selection 对象,该对象代表由 ResultRoot 指定的 Shape 对象中与指定形状相比符合特定条件的所有形状。 例如,指定 ResultRoot 来查找组中与指定形状接近的所有形状。

如果指定了 ResultRoot,但它与您要进行比较的 Shape 对象不在同一页面上或同一主控形状中,则 SpatialNeighbors 属性会发生异常并返回 Nothing

SpatialNeighbors 属性在比较两个形状时不考虑形状的线条、阴影、线端、控制点或连接点的宽度。

示例

以下 Microsoft Visual Basic for Applications (VBA) 示例显示如何在 ShapeAdded 事件的事件处理程序中使用 SpatialNeighbors 属性来确定一个形状是否包含在另一个形状中。

在将以下代码添加到 VBA 项目之前,请向绘图添加至少一个形状。 然后通过如下方法将另一个形状添加到绘图中:从模具中拖出一个形状或者绘制一个形状,并放置到适当的位置以使其完全包含在现有的形状中。

 
Public Sub Document_ShapeAdded(ByVal Shape As IVShape) 
 
 Dim vsoShapeOnPage As Visio.Shape 
 Dim intTolerance As Integer 
 Dim vsoReturnedSelection As Visio.Selection 
 Dim strSpatialRelation As String 
 Dim intSpatialRelation As VisSpatialRelationCodes 
 
 On Error GoTo errHandler 
 
 'Initialize string 
 strSpatialRelation = "" 
 
 'Set tolerance argument 
 intTolerance = 0.25 
 
 'Set Spatial Relation argument 
 intSpatialRelation = visSpatialContainedIn 
 
 'Get the set of spatially related shapes 
 'that meet the criteria set by the arguments. 
 Set vsoReturnedSelection = Shape.SpatialNeighbors _ 
 (intSpatialRelation, intTolerance, 0) 
 
 'Evaluate the results. 
 If vsoReturnedSelection.Count = 0 Then 
 
 'No shapes met the criteria set by 
 'the arguments of the method. 
 strSpatialRelation = Shape.Name & " is not contained." 
 
 Else 
 
 'Build the positive result string. 
 For Each vsoShapeOnPage In vsoReturnedSelection 
 strSpatialRelation = strSpatialRelation & _ 
 Shape.Name & " is contained by " & _ 
 vsoShapeOnPage.Name & Chr$(10) 
 
 Next 
 
 End If 
 
 'Display the results on the shape added. 
 Shape.Text = strSpatialRelation 
 
 errHandler: 
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。