Hallo zusammen,
gibt es eine Möglichkeit mehrere Layouts auf einmal zu drucken? Ich hatte mir vorgestellt, dass wenn ich mehrere Layouts makiere und dann auf Drucken (in Datei schreiben) mir mehrere Layouts in eine Datei geschrieben werden. Es kommt aber immer nur die erste Datei "an".????
roland
gibt es eine Möglichkeit mehrere Layouts auf einmal zu drucken? Ich hatte mir vorgestellt, dass wenn ich mehrere Layouts makiere und dann auf Drucken (in Datei schreiben) mir mehrere Layouts in eine Datei geschrieben werden. Es kommt aber immer nur die erste Datei "an".????
roland
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von uwelangehh am Mi., 19.01.2005 - 09:04
PermalinkMehrfachausdrucke sind ueber folgende Avenue-Zeilen moeglich:
' Name: multiplot.simple
Printer.The.Setup
theLayout1 = av.FindDoc("Layout1")
theLayout1.Print
theLayout2 = av.FindDoc("Layout2")
theLayout2.Print
Falls du mehrere Ausdrucke ueber einen Plotter durchfuehren moechtest, koenntest du hiermit jedoch Speicherprobkeme bekommen. Zu deiner Frage siehe daher auch:
Mehrfachausdrucken aus ArcView
Das etwas laengere Skript druckt alle Layouts, deren Name mit einem Unterstrich beginnt, im Abstand von X Minuten. Dabei ist die Anzahl der Minuten frei waehlbar.
Gruss
Uwe
Gespeichert von Gast am Mi., 19.01.2005 - 09:11
Permalinkwie funktioniert das mit der Druckerauswahl? Wenn ich diese in ArcView einstelle, dann schickt er die Druckaufträge automatisch an die richtige Druckeradresse? Wenn ich in eine Datei drucken möchte wäre das damit auch abgehandelt?
roland
Gespeichert von uwelangehh am Mi., 19.01.2005 - 16:44
Permalinkmeines Wissens kannst du die Datei, in die du schreiben moechtest, ueber folgende Zeile definieren:
Printer.The.SetFileName ("C:\Layout1.dat".AsFilename)
Diese Zeile muesste dann wohl vor jedem Print-Befehl stehen.
Um den Ausdruck in eine Datei umzuleiten, musst du am Anfang des Skriptes den Print-Dialog aufrufen:
intResult = Printer.The.Edit({"Meine Layouts"})
If (intResult <> 0) then
Return Nil
End
Gruss und viel Erfolg
Uwe
Gespeichert von Gast am Di., 08.02.2005 - 09:34
Permalinkich habe das mit dem Schreiben in die Datei soweit ans laufen gebracht. Ich habe nur noch das Problem, das alle Layouts in die gleiche Datei geschrieben werden. Wenn ich also drei Layouts auswähle schreibt mein script die einzelnen Layouts in eine Datei überschreibt sie aber dann gleich wieder, sodass ich nur das letzte Layout als ps vorliegen habe.
Wie könnte ich das ändern?
roland
Gespeichert von uwelangehh am Di., 08.02.2005 - 11:27
Permalinkhast du fuer jeden Ausdruck den Dateinamen gesetzt? Enthaelt dein Skript also folgende Zeilen:
Printer.The.SetFileName ("C:\Layout1.dat".AsFilename)
:
Printer.The.SetFileName ("C:\Layout2.dat".AsFilename)
:
Printer.The.SetFileName ("C:\Layout3.dat".AsFilename)
Wenn ja, dann wuesste ich gerne, in welcher Datei (erste oder letzte) deine Ausdrucke landen. Der Vollstaendigkeit halber waere dein aktuelles Skript interessant zu lesen.
Gruss
Uwe
Gespeichert von Gast am Di., 08.02.2005 - 11:36
Permalinknaja, ich glaube ich bin da einen anderen Weg gegangen (Script von Jamie Love). Ich habe mir bisher so geholfen, dass ich die "gewählte" Pause dazu verwende die Dateien im Explorer direkt umzubenenen. Funktioniert ist aber ein wenig lästig da man bei dem Prozess immer anwesend sein muss, da ja sonst die Datei überschrieben wird.
'(: (; !: O:
'written by Jamie Love, originaly for printing multiple layouts.
'in AV R3.1, should run on other R's of AV.
'feel free to modify, distribute, add to extension as long as this header (or refrence to) remains.
'very simple script written very quickly.
'prints documents of specified type and containing a specified string with a delay between each one.
'very easy to use, can be run from script, or from any document window.
'loads the print setup dialog when first run.
'asks for the doc type, containing string and a delay.
'I accept no responsability for any consequences from using this script.
'please acknowledge the author if using this script, I would acknowledge you.
'runs the print setup
intResult = Printer.The.Edit({"Layoutdruck"})
If (intResult <> 0) then
Return Nil
end
'gets a list of docs
alist = av.getproject.getdocs
'get a class type
aclass = msgbox.listasstring({"Layout","View","Table","Chart","Script"},
"Select a document type to print.",
"Print Multiple Documents")
if (aclass = nil) then
exit
end
'get a text string
astring = msgbox.input ("Only"++aclass+"'s who's name contains the following text will be printed."+NL+
"Please enter a text string (Leave blank to print all"++aclass+"'s).",
"Print Multiple"++aclass+"'s"," ")
if (astring = nil) then
exit
end
'get a delay time
adelay = msgbox.input("Please enter a delay time in seconds"+NL+"for each print job.",
"Print Multiple"++aclass+"'s containing"++astring,"0")
if (adelay = nil) then
exit
end
'convert delay time from string to number
adelaytime = adelay.asnumber
for each i in alist
ac = i.getclass
if (ac.getclassname = aclass) then
if (astring = " ") then
i.print
'used for testing
'msgbox.info(i.AsString,"")
adate = date.now
bdate = adate + adelaytime.AsSeconds
cdate = adate
while (cdate < bdate)
cdate = date.now
end
elseif (i.getname.contains(astring)) then
'used for testing
'msgbox.info(i.AsString,"")
i.print
adate = date.now
bdate = adate + adelaytime.AsSeconds
cdate = adate
while (cdate < bdate)
cdate = date.now
end
end
end
end
Gespeichert von uwelangehh am Di., 08.02.2005 - 12:42
Permalinkergaenze die Zeile zum Setzen des Dateinamens an folgender Stelle:
if (ac.getclassname = aclass) then
Printer.The.SetFileName ((i.GetName + ".ps").AsFilename)
if (astring = " ") then
Viel Erfolg und Gruss
Uwe
Gespeichert von Gast am Di., 08.02.2005 - 13:32
Permalinkso einfach scheint es nicht zu sein. Ich bekomme folgende Fehlermeldung zurück. Habe leider null Ahnung von Avenue. Vielleicht fällt Dir ja noch was ein!
Fehler:
Falsche Klasse für Parameter 1 der Anforderungen SetFileName. Erhalten: FileName. Erwartet: String
Gruss
roland
Gespeichert von Gast am Di., 08.02.2005 - 13:44
Permalinkversuche es mal so:
((i.GetName.asString + ".ps")[i][/i][u][/u]
sollte dann klappen
Gespeichert von Gast am Di., 08.02.2005 - 13:47
Permalinknimm bitte nur das:
((i.GetName.asString + ".ps").AsFilename)
die zeichen dahinter sollten eigendlich den text kursiv und unterstrichen zeigen!
Gespeichert von Gast am Di., 08.02.2005 - 13:51
Permalinkleider tut sich da gar nichts Neues, ist das Selbe wie vorher auch.
roland
Gespeichert von uwelangehh am Di., 08.02.2005 - 13:53
PermalinkPrinter.The.SetFileName ((i.GetName.asString + ".ps").AsString)
Danke Gast.
Uwe
Gespeichert von Gast am Di., 08.02.2005 - 14:01
Permalinkich bin fasziniert!
Vielen, vielen Dank!!!!
roland