Beschriftung. Beschriftungseinstellungen kopieren

Liebe Leute,
kann man in AV9 die Beschriftung eines Layer kopieren und einem anderen zuweisen.
Wichtig sind die Darstellungsoptionen (von ... bis ... Maßstab) und
der Bezug zu dem Beschriftungsfeld, der gleich ist (nur halt andere Daten)

bernd
Theoretisch könnte man das über Annotation-Groups lösen (Copy + Paste von der einen zur anderen Gruppe), die müsste man aus den Labels allerdings erst einmal erstellen.

Einfacher geht's mit diesem VBA-Code (zusammengestellt von Michael Knight). Er überträgt die Label-Properties des ersten Layers im Inhaltsverzeichnis auf den zweiten. Beschriftungsfeld usw. muss vorhanden sein - aber das ist bei dir ja so):

Sub CopyLabelProperties()

Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim pFromLayer As IGeoFeatureLayer
Dim pToLayer As IGeoFeatureLayer

Set pMxDoc = Application.Document
Set pMap = pMxDoc.FocusMap
Set pFromLayer = pMap.Layer(0)
Set pToLayer = pMap.Layer(1)

'**** Developer Help Example Code
' first get AnnotateLayerPropertiesCollection from layer
Dim pFromAnnoLayerPropsColl As IAnnotateLayerPropertiesCollection
Set pFromAnnoLayerPropsColl = pFromLayer.AnnotationProperties
' then get the (first) property set in the collection
Dim pFromAnnoLayerProps As IAnnotateLayerProperties
pFromAnnoLayerPropsColl.QueryItem 0, pFromAnnoLayerProps, Nothing, Nothing

' Update LabelEngineLayerProperties
Dim pFromLabelEngineLayerProps As ILabelEngineLayerProperties
Set pFromLabelEngineLayerProps = pFromAnnoLayerProps


Dim pToAnnoLayerPropsColl As IAnnotateLayerPropertiesCollection
Set pToAnnoLayerPropsColl = pToLayer.AnnotationProperties

Dim pToAnnoLayerProps As IAnnotateLayerProperties
pToAnnoLayerPropsColl.Clear

Dim pToLabelEngineLayerProps As ILabelEngineLayerProperties
Set pToLabelEngineLayerProps = pFromLabelEngineLayerProps

pToAnnoLayerPropsColl.Add pToLabelEngineLayerProps

pMxDoc.ActiveView.Refresh

End Sub
Theoretisch (ich habe es nicht ausprobiert) muss man doch nur dem Ursprungslayer im Inhaltsverzeichnis eine neue Datenquelle (die des neuen Layers) zuordnen.

Gruß
Jens
Die Zuweisung einer neuen Datenquelle funktioniert (zu dem vorher kopierten Ursprungslayer) funktioniert - Nur ist das Beschriftungsfeld (lable field) leer und muß neu angegeben werden.

danke
b
Dank für Deine Mühen,
nur mit VisalBasic bin ich recht unbewandert;
das Script hängt bei
Set pFromLayer = pMap.Layer(0)
und ich weiß nicht warum.

Einstweilen ist mir ohne VB mit dem Tipp von JensM der Datenquellenzuweisung an den vorher kopierten Layer gut gedient.

gruß
b
Hallo Maxilla,

habe das Script erfolgreich angewandt, könnte man es auch so verändern, dass es nicht nur den nächsten Layer, sondern alle nachfolgenden Layer auf einmal verändert?

Gruß Carsten