Shape.SpatialRelation 属性 (Visio)
返回一个整数,它代表两个形状之间的空间关系。 两个形状必须在同一页面上或同一主控形状中。 此为只读属性。
语法
表达式。SpatialRelation (OtherShape、 Tolerance、 Flags)
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。