Howto: 确定注记要素类中哪些符号的属性被覆盖
文章编号 : 30204
软件: ArcGIS - ArcEditor 9.0, 9.1, 9.2, 9.3, 9.3.1 ArcGIS - ArcInfo 9.0, 9.1, 9.2, 9.3, 9.3.1 ArcGIS - ArcView 9.0, 9.1, 9.2, 9.3, 9.3.1
操作系统: N/A
软件: ArcGIS - ArcEditor 9.0, 9.1, 9.2, 9.3, 9.3.1 ArcGIS - ArcInfo 9.0, 9.1, 9.2, 9.3, 9.3.1 ArcGIS - ArcView 9.0, 9.1, 9.2, 9.3, 9.3.1
操作系统: N/A
1 个回复
EsriSupport
赞同来自:
例如,如果覆盖字段的值是65,是因为XOffset(1)和Size(64)属性值被覆盖(1+64=65)。
内容:
使用下面的代码示例来显示属性被覆盖的注记要素ID。
1. 启动 ArcMap。
2. 打开 Visual Basic Editor。 在ArcMap中,选择 Tools > Macros > Visual Basic Editor。
3. 在项目资源管理器中,展开Project.mxt,并导航至 ArcMap Objects > ThisDocument,右键点击,选择查看代码。
项目中 ThisDocument 代码模块仅在当前的地图文档上运行。如果想将代码存储到所有地图文档,需要打开 Normal.mxt 的ThisDocument 代码模块。
4. 复制以下代码到代码模块:
Public Sub GetFeatureandReportOverrides()
Dim pMxDoc As IMxDocument
Dim pFL As IFeatureLayer
Dim pFeature As IFeature
Dim pAnnoFeat As IAnnotationFeature
Dim pElement As IElement
Dim pSymbolCollectionElement As ISymbolCollectionElement
Dim pQF As IQueryFilter
Dim pFeatureCursor As IFeatureCursor
Dim OID As Long
Set pMxDoc = ThisDocument
Set pFL = pMxDoc.ActiveView.FocusMap.Layer(0)
If TypeOf pFL Is IAnnotationLayer Then
Set pFeatureCursor = pFL.Search(pQF, False)
Set pFeature = pFeatureCursor.NextFeature
Do Until pFeature Is Nothing
OID = pFeature.OID
Set pAnnoFeat = pFeature
Set pElement = pAnnoFeat.Annotation
If TypeOf pElement Is ISymbolCollectionElement Then
Set pSymbolCollectionElement = pElement
If pSymbolCollectionElement.SymbolID = -1 Then
Debug.Print "Feature " & OID & " does not reference a symbol in the symbol collection"
Else
ReportOverrides OID, pSymbolCollectionElement.OverriddenProperties
End If
Else
Debug.Print "Feature " & OID & " is not a text element"
End If
Set pFeature = pFeatureCursor.NextFeature
Loop
Else
Debug.Print "The first layer in the map is not a Geodatabase Annotation layer"
End If
End Sub
Public Sub ReportOverrides(OID As Long, lngOverrideVal As Long)
Debug.Print "Feature " & OID & " has the following overrides:"
'lookup the overrides
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideXOffset) <= lngOverrideVal Then _
Debug.Print "X Offset"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideYOffset) <= lngOverrideVal Then _
Debug.Print "YOffset"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideHorzAlignment) <= lngOverrideVal Then _
Debug.Print "Horizontal Alignment"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideVertAlignment) <= lngOverrideVal Then _
Debug.Print "Vertical Alignment"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideFlipAngle) <= lngOverrideVal Then _
Debug.Print "Flip Angle"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideSize) <= lngOverrideVal Then _
Debug.Print "Size"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideColor) <= lngOverrideVal Then _
Debug.Print "Color"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideCharSpacing) <= lngOverrideVal Then _
Debug.Print "Character Spacing"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideCharWidth) <= lngOverrideVal Then _
Debug.Print "Character Width"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideWordSpacing) <= lngOverrideVal Then _
Debug.Print "Word Spacing"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideLeading) <= lngOverrideVal Then _
Debug.Print "Leading"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideBold) <= lngOverrideVal Then _
Debug.Print "Bold"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideItalic) <= lngOverrideVal Then _
Debug.Print "Italic"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideUnderline) <= lngOverrideVal Then _
Debug.Print "Underline"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideBackground) <= lngOverrideVal Then _
Debug.Print "Background"
If (lngOverrideVal Xor esriSymbolOverrideEnum.esriSymbolOverrideFontName) <= lngOverrideVal Then _
Debug.Print "Font Name"
Debug.Print " " 'a space for formatting
End Sub
5. 选择 Run > Run Sub/User Form,运行代码。
6. 在 VBA 即时窗口中代码会显示覆盖值。在 VBA 编辑器中,导航至 View > Immediate window ,打开此窗口。
创建时间:2005-12-21
最近更新: 2011-05-03
【原文链接】
http://support.esrichina.com.c ... .html
要回复问题请先登录或注册