ArcView: Beschriftungen ersetzen: Unterschied zwischen den Versionen
GISWiki - Das freie Portal für Geoinformatik (GIS)
HeinzJ (Diskussion | Beiträge) |
|||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 105: | Zeile 105: | ||
</pre> | </pre> | ||
− | [[Kategorie:ArcView | + | [[Kategorie:ArcView]] |
+ | [[Kategorie:Avenue]] |
Aktuelle Version vom 15. November 2005, 21:31 Uhr
Ich bitte um Vorsicht!
Das Ersetzen der Label funktioniert nur dann vernuenftig, wenn die Beschriftungen eindeutig sind!! Ich versuche das demnächst abzufangen!
Johannes Brinkmann, 19.12.2003
' HGraphic.ReplaceLabel ' ' Title: ersetzt die Beschriftungen in einem view ' ' Topics: Beschriftungen/Labels ' ' Description: mit diesem Skript können Label ' ausgestauscht werden. Dazu müssen die neu zu ' vergebenden Label in einer neuen Spalte stehen. ' ' Problems: bei verschiedenen gelabelten Themen gerät es durcheinander!! ' keine Ahnung, warum! ' es giebt kein richtiges Fehlerabfangen ' Das Ersetzen der Label funktioniert nur dann ' vernuenftig, wenn die Beschriftungen eindeutig sind ' ' Requires: das zu beschriftende Thema muss aktiv sein ' ' Self: ' ' ********************************************************** ' Author: Johannes Brinkmann 01.12.03 ' Address: Plan-Zentrum Umwelt, Bahnhofstr. 64, 44623 Herne ' ********************************************************** ' ' Changes: ' allgemeines Zeugs theView = av.GetActiveDoc theTheme = theView.GetActiveThemes.Get(0) theFTab = theTheme.GetFTab theBitmap = theFTab.GetSelection theBitmap.ClearAll FldLst = {} for each fld in theFTab.GetFields if (fld.IsTypeShape = FALSE) then FldLst.Add(fld) end end ' auswählen Fld1 = MsgBox.ChoiceAsString(FldLst, "zu ersetzen",theTheme.GetName) if (Fld1 = Nil) then Return Nil end FldLst.RemoveObj(Fld1) Fld2 = MsgBox.ChoiceAsString(FldLst, "ersetzen durch",theTheme.GetName) if (Fld2 = Nil) then Return Nil end allGraphicsLst = theView.GetGraphics allGraphicsLst.SelectAll if (allGraphicsLst.Count = 0) Then Return Nil end allGraphicsLst.UnselectAll GrphTxtLst = allGraphicsLst.FindAllByClass(GraphicText) ' Liste mit Labels erstellen i = 0 gStrLst ={} gStrXChLst ={} replStr = "" for each g in GrphTxtLst g = GrphTxtLst.Get(i) gStr = g.getText ' je nach Feldtyp braucht man unterschiedliche query strings if (Fld1.IsTypeString = TRUE) then expr = "[[[["+Fld1.AsString+"]] = "+gStr.Quote elseif (Fld1.IsTypeNumber = TRUE) then expr = "([[[["+Fld1.AsString+"]] = "+gStr+")" end theFTab.Query(expr, theBitmap,#VTAB_SELTYPE_NEW) theFTab.UpdateSelection ' suchen - ersetzen for each rec in theFTab.GetSelection tbreplStr = theFTab.ReturnValueString(Fld1, rec) replStr = theFTab.ReturnValueString(Fld2, rec) g.SetText(replStr) end gStrLst.Add(gStr) gStrXChLst.Add(replStr) i = i + 1 end if (replStr = "") then MsgBox.Info("Nichts ausgetauscht! Wurde das richtige Labelfeld ausgewählt?","Fehler") Return Nil end theBitmap.ClearAll