Shape.SpatialRelation 属性 (Visio)

返回一个整数,它代表两个形状之间的空间关系。 两个形状必须在同一页面上或同一主控形状中。 此为只读属性。

语法

表达式SpatialRelation (OtherShapeToleranceFlags)

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

参数

名称 必需/可选 数据类型 说明
OtherShape 必需 [IVSHAPE] 比较关系中涉及到的另一个 Shape 对象。
Tolerance 必需 Double 采用 Shape 对象的父对象所定义的坐标空间的内部绘图单位表示的距离。
Flags 必需 Integer 影响结果的标志。 有关此参数的值,请参阅“注解”。

返回值

整数

备注

返回的整数可以是 Visio 类型库中 VisSpatialRelationCodes 中定义的值的任意组合。 如果进行比较的两个形状不属于 VisSpatialRelationCodes 主题的表中讨论的任何关系,则 SpatialRelation 属性返回零 (0)。

Flags 参数可以是下表中定义的常量值的任意组合。 这些常量在 Visio 类型库中的 VisSpatialRelationFlags 中声明。 使用 NoShow 单元格来确定“Geometry”内容是隐藏的还是可见的。 在 NoShow 单元格中,隐藏的“Geometry”内容的值为 TRUE,可见的“Geometry”内容的值为 FALSE。

常量 说明
visSpatialIncludeContainerShapes &H80 包括容器。 默认情况下,不包括容器。
visSpatialIncludeDataGraphics &H40 包括数据图形标注形状及其子形状。 默认情况下,不包括数据图形标注形状及其子形状。 如果父形状自身是数据图形标注,则除非设置了该标志,否则将在父形状的几何图形与非标注形状之间进行搜索。
visSpatialIncludeGuides &H2 考虑参考线的“Geometry”内容。 默认情况下,参考线不会影响结果。
visSpatialIncludeHidden &H10 保留供以后使用。 请勿使用。
visSpatialIgnoreVisible &H20 不考虑可见的“Geometry”内容。 默认情况下,可见的“Geometry”内容会影响结果。

注意

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

示例

此 Microsoft Visual Basic for Applications (VBA) 示例演示如何在 ShapeAdded 事件的事件处理程序中使用 SpatialRelation 属性来确定形状之间的空间关系。

在将以下代码添加到 VBA 项目之前,请确保绘图页上至少有一个形状。 接着,在添加代码之后将另一个形状添加到绘图中。

Public Sub Document_ShapeAdded(ByVal Shape As IVShape) 
 
    Dim vsoShapeOnPage As Visio.Shape  
    Dim intTolerance As Integer 
    Dim intReturnValue As VisSpatialRelationCodes  
    Dim intFlag As VisSpatialRelationFlags  
    Dim strReturn As String 
    On Error GoTo errHandler  
 
    'Initialize tolerance argument. 
    intTolerance = 0.25  
 
    'Initialize flags argument. 
    intFlag = visSpatialIncludeHidden  
    For Each vsoShapeOnPage In ActivePage.Shapes  
 
        'Get the spatial relationship. 
        intReturnValue = Shape.SpatialRelation(vsoShapeOnPage, _  
            intTolerance, intFlag)  
 
        'Convert return code to string value. 
        Select Case intReturnValue       
            Case VisSpatialRelationCodes.visSpatialContain  
                strReturn = "Contains"  
            Case VisSpatialRelationCodes.visSpatialContainedIn  
                strReturn = "is Contained in"  
            Case VisSpatialRelationCodes.visSpatialOverlap  
                strReturn = "overlaps"  
            Case VisSpatialRelationCodes.visSpatialTouching  
                strReturn = "is touching"  
            Case Else 
                strReturn = "has no relation with"  
        End Select  
        
        'Display relationship in the shape's text. 
        vsoShapeOnPage.Text = Shape.Name & " " & strReturn & " " & _  
            vsoShapeOnPage.Name  
 
    Next  
 
errHandler:  
 
End Sub

支持和反馈

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