Hallo Forum,
ich habe ein Script gefunden, daß Bilder zu einem Polygon-Thema läd, wenn die Tabelle eine Spalte "Image" mit Pfad- und Dateinamenangaben enthält.
Die Tabelle enthält diese Information, ich erhalte jedoch immer eine Fehlermeldung: No DOQ Index Polygon Selected. Diese resultiert aus den folgenden Script-Zeilen.
If (theVTab.GetNumSelRecords < 1) then
msgBox.Warning("No DOQ Index Polygon Selected","ERROR")
return Nil
Ich frage mich nur: Wonach wird mit theVTab.GetNumSelRecords gesucht? Was genau darf hier nicht <1 sein?
Ich hoffe jemand kennt Avenue besser als ich ...
Danke und Gruß,
Maggie
ich habe ein Script gefunden, daß Bilder zu einem Polygon-Thema läd, wenn die Tabelle eine Spalte "Image" mit Pfad- und Dateinamenangaben enthält.
Die Tabelle enthält diese Information, ich erhalte jedoch immer eine Fehlermeldung: No DOQ Index Polygon Selected. Diese resultiert aus den folgenden Script-Zeilen.
If (theVTab.GetNumSelRecords < 1) then
msgBox.Warning("No DOQ Index Polygon Selected","ERROR")
return Nil
Ich frage mich nur: Wonach wird mit theVTab.GetNumSelRecords gesucht? Was genau darf hier nicht <1 sein?
Ich hoffe jemand kennt Avenue besser als ich ...
Danke und Gruß,
Maggie
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Mi., 03.12.2003 - 10:44
PermalinkMein erster Gedanke dazu:
Das Script setzt voraus, daß mindestens 1 Objekt markiert ist.
Gespeichert von Juergen Evert am Mi., 03.12.2003 - 10:46
PermalinkMit etwas Phantasie bekommt man es eigentlich auch so raus:
get number of selected records
d.h. Die Anzahl der selektierten Datensätze.
Übrigens, wenn man einen Avenue-Befehl nicht kennt, einfach ein Script aufmachen, den Befehl hineinkopieren oder hineinschreiben, diesen Befehl (ohne Punkt) markieren und dann die Taste mit dem Fragezeichen drücken.
Gruß Jürgen
Gespeichert von Maggie am Mi., 03.12.2003 - 11:06
PermalinkWarum sagt mir das Script das denn auch, wenn ich ein Objekt markiert habe? Ist ein Record kein Objekt?
Ist ein Index-Polygon was anderes als ein normales Polygon?
Maggie
Gespeichert von Andre Steinhaeuser am Do., 04.12.2003 - 09:36
Permalinkdas ist ja wirklich eigenartig.
Hast Du auch im richtigen Thema markiert und das Script auf Dein Überischtsthema angepasst? Sonst poste dochnochmal das Script, vielleicht finden wir nen Fehler drin. Ansonsten könnte ich Dir auch mal meine Version eines solchen Bildladers zumailen, vielleicht hiflt Dir das dann weiter.
Gruß
André
Gespeichert von Maggie am Do., 04.12.2003 - 16:56
Permalinkich sehe schon, ich hätte das Script gleich posten sollen. Es ist nicht aus meiner Feder, aber ich denke, Bill Chappell hat nix dagegen.
Und ja, ich bin sicher, daß ich das richtige Thema ausgewählt hatte (es war nur eins). Ich habe alle möglichen Versionen (Thema aktiv, in-) ausprobiert, es wollte nicht.
Zwischenzeitlich habe ich mir manuell beholfen, ich hatte keine Wahl, aber für's nächste Projekt mit zig tausend Bildern hätte ich doch lieber ein Script.
Danke im Voraus!
Maggie
So, hier das Script:
'Bill Chappell 8/01
'This script was designed to use the mouse click over a theme to determine
'which image, then it loads the image behind the theme.
' Reads the Active theme's "image" field to determine path/filename
'
'Add this to the AV GUI as a tool
theView = av.GetActiveDoc
theTheme = theView.getactivethemes.get(0)
theThemes = theView.GetActiveThemes
For each i in theThemes
i.SetActive(False)
End
theTheme.SetActive(True)
theTheme.SetVisible(True)
r = theView.ReturnUserRect
if (r.IsNull) then
p = theView.GetDisplay.ReturnUserPoint
op = #VTAB_SELTYPE_NEW
for each t in theThemes
if (t.CanSelect) then
t.SelectByPoint(p, op)
end
end
else
op = #VTAB_SELTYPE_NEW
for each t in theThemes
if (t.CanSelect) then
t.SelectByRect(r, op)
end
end
end
av.GetProject.SetModified(true)
theVTab = theTheme.GetFTab
theImageField = theVtab.FindField("Image")
if (theImageField = nil) then
msgBox.Info("No IMAGE field in this theme","")
return Nil
end
theImageList = {}
If (theVTab.GetNumSelRecords < 1) then
msgBox.Warning("No DOQ Index Polygon Selected","ERROR")
return Nil
else
For each record in theVtab.GetSelection
theDOQ = theVtab.ReturnValueString(theImageField,record)
theImage = (theDOQ.Trim)
theImageList.Add(theImage)
End
End
For each i in theImageList
dataSrc = SrcName.Make(i)
if (dataSrc <> nil) then
theImageTheme = Theme.Make(dataSrc)
theView.AddTheme(theImageTheme)
else
msgBox.Warning("Image not Available"+nl+"Check Folder for Image","ERROR")
return Nil
end
theThemeList=theview.GetThemes
theThemeList.Get(0).SetVisible(true)
theThemeList.Shuffle(theImageTheme,(theThemeList.Count))
end
theTheme.SetActive(True)
theView.InvalidateTOC(nil)
theView.GetDisplay.Invalidate(true)
Gespeichert von Johannes Brinkmann am Fr., 05.12.2003 - 08:26
Permalinkbei mir funktioniert das Skript, wenn Du es einem (neuen) Werkzeug zuordnest. Erst dann funktioniert es.
Du darfst es nur nicht "so" (also einfach als Skript, Du weißt, was ich meine?) ausführen. Denn dann wird irgendwann die Selektion aufgehoben.
Grüße
Johannes
PS: Ich habe für ein vergleichbares Problem (wiederfinden einer DGK5) ein Skript, das Dir den Pfad aus dem Bildkatalog (aus der Spalte "image") auf den Bildschirm ausgibt und dann zum Bildthema zoomt. Bei Interesse ....
Gespeichert von Maggie am Mo., 15.12.2003 - 14:11
Permalinkdoch, ich habe es einem Werkzeug zugeordnet, und dieses auch den Views zugeordnet.
Es will auch arbeiten, bringt nur die Fehlermeldung immer.
Danke für das Angebot mit dem anderen Skript, aber mir geht es eben darum, einen solchen IC zu erstellen, und dafür muß ich die Bilder erstmal in's View kriegen! Ich werde es einfach nochmal mit einem frischen Projekt probieren...
Danke und Gruß,
Maggie
Gespeichert von Andre Steinhaeuser am Mo., 15.12.2003 - 14:17
PermalinkDu bist sicher, dass Du das Script einem Werkzeug und nicht einer Schaltfläche zugewiesen hast?
Dies hier ist ein Apply-script, und Du musst es einem Buttn unter nicht unter "Click" sonder "Apply" zuweisen. (Sorry, hab grad keine deutsche Version zur Hand). Also im View die untere Leiste und dort bei den Eigenschaften des Tools ganz oben bei "Apply" das script zuweisen.
Gruß
André