Hallo Hans, lang nichts mehr gehört, ich hoffe es geht Dir gut soweit.
Doch nun zur Sache, ich hätte da mal wieder eine kleine Script Aufgabe für Dich denn Du liebst ja die Herausforerung ;-)
Also: Bei Quarkdokumenten veerschiedener grösse (z.B. 300 x 80 oder 400x 400) sollen kleine Kästchen in der Farbe Schwarz immer genau 2 mm nach innen versetzt um das Dokument laufen.
Die Kästchen sollen ein Grösse von 0,5 x 0,5mm haben.
Und der Abstand zwischen den Kästchen soll variabel einstellbar sein, also z.B. bei 300 x 80 sollen 6 Kästchen im Abstand von 50mm erzeugt werden.
Zur Erklärung, das Ganze sollen Makierungspunkte werden, immer dort wo ein Punkt sitzt soll später eine Öse gestezt werden.
ich nehme mal an, dass Du in einem früheren Leben (sprich: dtpro-Forum) als 'dosman' aufgetreten bist. Stimmt's? ;-)
Ich nehme weiter an, dass Du immer noch QuarkXPress 6.1 benutzest.
Doch wie stellst Du Dir das Variabel-Einstellen vor? Ein Dialog, in welchem man den Abstand zwischen den Kästchen eingeben kann?
Zu Deinem Beispiel: 6 Kästchen in einem Abstand von 50 mm brauchen horizontal 250 mm Platz (plus die Kästchen-Breite). Doch was ist mit den restlichen 49.5 mm?
Oder sollen 7 Kästchen erzeugt werden? Das erste 2 mm vom linken Rand entfernt, das letzte 2 mm vom rechten Rand entfernt. Und die übrigen 5 gleichmässig dazwischen positioniert. Aber dann ist der Abstand von Kästchen zu Kästchen (Mitte bis Mitte) nur noch 49.25 mm.
Und was ist mit dem linken und dem rechten Rand? Wie sollen die vertikalen 80 mm aufgeteilt werden?
Würdest Du mir bitte ein Musterprojekt zustellen? Mit Angaben, wie bei anderen Layout-Dimensionen der Anwender welche Wünsche anbringen können sollte.
ja Du hast Recht ich bin der dosman ;-) und ich benutze immer noch QuarkXPress 6.1 bzw. 6.5 Ein entsprechendes Quar File sende ich Dir gleich per Mail.
Ja, ein Dialog wäre perfekt. Nochmal zur Erklärung: Wenn das Format z.B. 300 x 80 mm ist und die Vorgabe = Punkte alle 50 mm zusetzen, dann müssen jeweils in den Ecken Punkte sitzen und Mittelpunkt des Punktes muss 2mm nach innen versetzt sein. Problemmatik ist das ja alle 50 mm mathematisch dann nicht mehr möglich ist, also müssen die restlichen Punkte bzw. Kästchen gleichmässig verteilt auf dem Rest der Strecke liegen, genau so wie Du es beschrieben hier hast:
Genauso wie die anderen. Das Problem ist das das Format auch z.B. 300 x 125 mm sein kann. Meinst Du das das überhaupt lösbar ist ??
danke für die Datei. Doch habe ich im Moment eine dringende Arbeit zu erledigen (für eine Beilage anlässlich der Fussball WM). Ich kann deshalb nicht vor heute Abend mit dem Studium Deines Problems beginnen.
@ TMA: Danke für den Hinweis. Werde ich mir anschauen.
Zwischenbericht: Es sieht gut aus. Erste Versuche ergeben, dass es möglich ist. Der Code ist allerdings noch nicht präsentabel. Und ich kann voraussichtlich erst im Laufe des Sonntagabends weiterfahren.
und hier ist eine erste Lösung. Schon recht komfortabel, kannst Du im Script das Ausrechnen der Abstände steuern, indem Du die als 'property' definierte Variable 'boxDistance' auf "enger", "mittel" oder "weiter" setzest.
Was bedeuten diese drei Ausdrücke? Mit "enger" wird die Anzahl der zu setzenden Kästchen auf die nächsthöhere Ganzzahl aufgerundet. Egal, ob 5.12 oder 5.92: Beide werden zu 6. Mit "mittel" werden Dezimalstellen von 0.5 und höher aufgerundet. Darunter wird abgerundet. Mit "weiter" wird die Anzahl der zu setzenden Kästchen auf die nächstkleinere Ganzzahl abgerundet. Die genannten 5.12 und 5.92 werden beide zu 5.
Je nach Dimension des Layouts wird zwischen "mittel" und "weiter" kein Unterschied zu sehen sein. Aber mit dem von Dir genannten Format von 300 x 125 mm (und einem gewünschten Abstand von 50 mm) schon.
Die Properties 'boxH' und 'boxW' dienen zum Bestimmen der Boxenhöhe und -breite. Mit 'boxC' definiert man die Distanz vom Seitenrand zur Boxenmitte und mit 'fillColor' die Hintergrundfarbe.
Das Script "Kaestchen_6x_01d" ist unterwegs zu Dir.
bitteschön! Deine Wünsche betreffend Erweiterung des Dialoges werde ich ausführen. Hatte ich von Anfang an geplant, aber es fehlte mir die Zeit. Denn bei so vielen Angaben ist es nicht anwenderfreundlich, wenn alle einzeln abgefragt werden.
Doch wenn man die Optionen in einem einzigen Dialog zeigen will, dann muss man zu einem Hilfsmittel greifen (z.B. Pashua) und der Entwicklungsaufwand wird recht gross.
Frage: Ist es wünschenswert, für die vertikal angeordneten Kästchen einen anderen Abstand eingeben zu können?
ja, dem ist so. Der Code eines Scripts muss auf die vorhandene Version von "Pashua" abgestimmt sein.
Näheres steht im Thema "Neue Version von "Pashua" (erweiterte Dialoge)" http://www.page-online.de/page/forum/viewthread/2947/
Wenn Du bei Deiner aktuellen Version von Pashua bleiben möchtest, dann teile mir bitte deren Nummer mit (per E-Mail) und ich werde das vorliegende Script mit dem passenden Code ausstatten.
Das Kästchen-Script mit dem Pashua-Dialog ist unterwegs zu Dir. Ich kann es hier nicht veröffentlichen, weil es 18'560 Zeichen umfasst - unformatiert! (ein neuer Eintrag in diesem Forum ist auf 6000 Zeichen beschränkt).
Achja, wenn Du noch eine Option für nur in jede Ecke des Dokuments ein Kästchen einbauen könntest, ware das mal wieder ein völlig perfektes, Nein ein noch perfekteres Script von Dir.
wird gemacht! Wird nicht einfach sein, dies alles rationell umzusetzen, weil die Kästchen in den Ecken je zu den horizontalen sowie den vertikalen gehören.
In der aktuellen Version werden zuerst die horizontalen erzeugt. Bei den vertikal angeordneten Kästchen wird mit dem zweiten begonnen und mit dem vorletzten aufgehört, damit in den Ecken nur je eines erscheint.
Wenn nun aber, sagen wir, die obere horiontale Reihe weggelassen werden soll, dann müssen die beiden ersten vertikalen erzeugt werden.
Wie gesagt: nicht einfach. Aber es wird schon werden. :-)
das Script "Kaestchen_6x_03d" ist unterwegs zu Dir. Ja, es war eine Herausforderung. :-) Aber die Umsetzung Deiner Wünsche scheint mir gut gelungen.
Weil viele Kombinationen möglich sind und weil die Eckpunkte nicht doppelt erzeugt werden sollten, habe ich den Code in acht Handler aufgeteilt: Vier für die Ränder und vier für die Ecken. Je nach Wahl des Anwenders, werden die entsprechenden Handler aufgerufen.
Die Kästchen werden im Uhrzeigersinn erzeugt. Das bedingt, dass die 15 Möglichkeiten einzeln und komplett - d.h. ohne Kombinierungen untereinander - codiert sind. Dadurch wird das Script zwar länger, aber der Ablauf ist harmonischer.
Wenn die Checkbox "nur in jeder Ecke der Seite ein Kästchen" aktiviert ist, dann werden natürlich einige Angaben ignoriert: der Abstand; oben, links, unten, rechts; die Ausrichtung (enger, mittel, weiter).
Und noch: Kann sein, dass mal das Resultat nicht den Vorstellungen entspricht. Dann ganz einfach das Script nochmals starten. Im Dialog erscheint die letzte Einstellung. Die Korrekturen anbringen und "OK" klicken. Die "alten" Kästchen werden abgeräumt (sie sind benannt) und die neuen erzeugt.
Ja, stimmt, ich musste mich übertreffen. Doch freut es mich umso mehr, wenn Dir das Script die Arbeit erleichtert.
Zum Testen der 16 Möglichkeiten (oder 17, wenn keine Checkbox aktiviert), habe ich die Kästchen als rote 4-mm-Quadrate, mit einem Abstand der Zentren 6 mm vom Seitenrand eingestellt. Dadurch wirkt der Ablauf eindrücklicher, als mit den schwarzen Viertels- quadratmillimeter-Pünktchen der Vorgaben-Werte.
Schade, dass ich das Script hier nicht veröffentlichen kann (weil zu umfangreich). Wer sich dafür interessiert, sende bitte ein E-Mail an mich.
Zu Deiner Zusatzfrage: Ja, das sollte auch mit InDesign gehen. Doch muss das Script total überarbeitet werden. Ich kann aber erst heute Abend damit beginnen. Der Einfachheit halber, werde ich den Pashua-Dialog beibehalten.
Welche Version von InDesign benutzest Du? InDesign CS? Oder InDesign CS2?
ich habe Dir soeben das Kästchen-Script für InDesign zugestellt. Entwickelt mit Indesign CS2, sollte es aber auch mit InDesign CS funktionieren (nicht ausprobiert).
Die wesentlichen Änderungen: Das Zusammenstellen der Liste der Farben, das Übersetzen von "Black" zu "Schwarz" und "Paper" zu "Papier" (zum Anzeigen im Dialog).
In den Handlern, welche die Rahmen erzeugen, musste 'graphic box' durch 'rectangle' ersetzt werden; 'bounds' durch 'geometric bounds'; 'color' = 'fill color'; 'shade' = 'fill tint'; 'name' = 'label'.
erstmal Danke für die InDesign Version und Deine Mühe.
Dann die gute Nachricht, ja es funzt unter CS2 perfekt. Unter CS allerdings erhalte ich ne Fehlermeldung, was aber eigentlich egal ist da wir hier sowieso alles auf CS2 umstellen.
Falls Du jedoch neugierig bist welcher Fehler auftritt, hier die Beschreibung:
Also der Pashua Dialog wird richtig angezeigt, wenn ich allerdings auf OK klicken kommt die Fehlermeldung:
InDesign CS hat einen Fehler erhalten: Einige Parameter wurden nicht verstanden !
Ist aber wie gesgat nicht weiter schlimm den unter CS2 gehts ja, nochmal Danke und Grüsse
Hallo Hans, aktuell ist gerade die Frage aufgetreten ob das Script auch mit der Musterseite funktioniert. Ich habe festgestellt das das nicht der Fall ist, welchen Scriptteil muss ich ändern damit das script auch mit der Musterseite funzt ?
Und die andere Frage ist warum geht das immer nur auf Seite 1 ?
Nachtrag: Interessant wäre wenn man auf der jeweiligen aktiven Seite die Kästchen extra setzen könnte.
ja, wenn ich das Script mit InDesign CS entwickelt hätte, dann wäre die Chance grösser, dass es unverändert mit CS2 funktionieren würde. Denn die Umwege, welche mit CS notwendig sind, klappen auch. Umgekehrt, muss man einiges ändern.
Anstelle von ... --- make rectangle at beginning with properties ¬ {geometric bounds:{ty1, x1, (ty1 + boxH), (x1 + boxW)} ¬ , fill color:fillColor, fill tint:boxSh, label:"blackBox"} --- ... muss man zuerst einen Rahmen erzeugen und dann dessen Properties ändern: --- set newFrame to make rectangle set properties of newFrame to {geometric bounds:{ty1, x1, (ty1 + boxH), (x1 + boxW)} ¬ , fill color:fillColor, fill tint:boxSh, stroke color:noColor, label:"blackBox"} ---
Das 'at beginning' kann man in beiden Versionen weglassen. Aber die Farbe der Kontur muss auf "Keine" gesetzt werden, sonst kann eine Konturvorgabe wirksam werden. Der Variablen 'noColor' wird vorgängig die Referenz der Farbe "Keine" zugewiesen: --- set noneID to (id ofevery swatch whose name is "None") set noColor to swatch id noneID ---
Damit die Farben sichtbar zugewiesen werden, muss mit InDesign CS eine Referenz zum entsprechenden 'swatch' definiert sein (das direkte Zuweisen gelingt nur mit CS2): --- if colorName is "Schwarz" then set fillColor to swatch "Black" of document 1 elseif colorName is "Papier" then set fillColor to swatch "Paper" of document 1 else set fillColor to swatch colorName of document 1 endif ---
Wie vorstehend gezeigt, müssen der Name und die Referenz zwei verschiedenen Variablen zugewiesen sein. Sonst wird beim Test, welcher feststellt, ob die gespeicherte Farbe im Dokument existiert, immer die Default-Farbe "Schwarz" zugewiesen und erscheint anstelle der erwarteten im Dialog.
Ich stelle Dir die geänderte Version für InDesign CS zu.
Auf Deine Fragen des letzen Eintrags werde ich später eingehen.
das Scripten von Objekten auf XPress-Musterseiten war schon immer problematisch. Aber ich kann versuchen, im vorliegenden Script die Sperre aufzuheben. Damit ist es aber nicht getan, denn je nachdem, ob eine Musterseite oder eine Layout- Seite angezeigt ist, muss die Adressierung angepasst werden.
Dass nur die erste Seite mit den Kästchen bestückt wird, ist bewusst so codiert, weil ich angenommen hatte, dass es sich immer um Layouts von einer Seite handelt. Der Code kann leicht so geändert werden, dass die aktive Seite adressiert wird. Dabei ist nicht die Seite massgebend, welche man sieht, sondern jene, welche in der Seitenlayoutpalette ausgewählt ist.
Man könnte vielleicht auch den Dialog um zwei Radiobuttons ergänzen: - aktive Seite - alle Seiten des Layouts
Zurück zu den Musterseiten: Kommen auch Doppelseiten vor?
das XPress-Script, mit welchem die Boxen auf der aktuellen Seite erzeugt werden, ist unterwegs zu Dir. Die Anpassung war schnell gemacht. Im Code musste überall 'tell page 1' durch 'tell current page' ersetzt werden.
Das Adressieren der Musterseite hingegen, ist schwieriger. Ein erster Versuch lief aus dem Ruder. Ich habe eine Ahnung, warum. Muss aber nachforschen, wie das Problem umgangen werden kann. Doch dazu werde ich nicht vor heute Abend Zeit finden.
Und auch für die Erweiterung des Dialoges (aktive Seite, alle Seiten) benötige ich mehr Zeit.
ja, es ist mir auch recht, wenn wir die Musterseiten-Option weglassen können ...
Doch bis das Script erlaubt, die Kästchen auf allen Seiten zu erzeugen, kann man sich so behelfen: Ein neues Projekt der gleichen Grösse anlegen, das Script starten. Dann alles auswählen und kopieren. Schliesslich auf die Musterseite des aktuellen Projekts schalten und mit "Befehl + Option + Umschalt + V" die Objekte "An gleicher Stelle einfügen" (= Artikel des Menüs "Bearbeiten").
Und ja, die InDesign-Scripts werde ich auch erweitern.
Betreffend der Auswahl der Seiten: Hey! Könnt Ihr Gedankenlesen?!? Habe ich mir nämlich auch überlegt, habe mir aber gesagt, dass ich es vorerst nicht erwähne, denn das ist viel schwieriger, als es den Anschein macht ...
Aber Deinen lieben Kollegen werde ich es zeigen! ;-)
jetzt ist der Dialog ergänzt. Und der Handler zum Prüfen des Seitenbereichs ist bereit. Aber es bleibt noch viel zu tun, weil es möglich sein soll, mit einer einzigen Text-Eingabezeile entweder die aktive Seite oder alle Seiten oder Seitenbereiche in verschiedenen Schreibweisen einzugeben.
Für die aktive Seite tippt man ein "a". Für alle Seiten ... "alle". Und für Seitenbereiche die Seitenzahlen, welche in der Layoutpalette sichtbar sind.
Als Seitenbereichsunterteiler werden jene der XPress-Vorgaben verwendet: Bindestrich für fortlaufend (z.B. 3-7) Komma für nichtfortlaufend (z.B. 5,8) Kombinert (z.B. 3-6,9)
Alternativ kann der Index der Layoutpalette eingesetzt werden, indem man Pluszeichen voranstellt (z.B. +2-+6).
Das ausgewertete Ergebnis muss jetzt "nur" noch umgesetzt werden. Und schliesslich gilt es, alle Möglichkeiten durchzuspielen. Und eventuelle falsche Eingaben abzufangen. Kann ich aber nicht vor Freitagabend erledigen.
die Version 06 des Scripts "Kaestchen_6x" ist unterwegs zu Dir.
Ich habe die angekündigten Optionen noch ausgebaut. An Stelle der bereits genannten Seitenbereichsunterteilern können nun auch die Buchstaben g (= gerade Seiten) oder u (= ungerade Seiten) eingegeben werden. Und auch az (= aktive bis letzte Seite). Eine Kombination ist auch möglich: azg (= gerade Seiten von der aktiven bis zur letzten) und azu (= ungerade Seiten von der aktiven bis zur letzten).
Weil nun mehr als eine Seite mit Kästchen versehen wird, dauert die Aktion länger. Damit man sieht, dass etwas geschieht, wird die jeweils aktive Seite angezeigt. Am Schluss sagt ein Dialog "Fertig." (eine Sekunde sichtbar).
Ich habe mir auch überlegt: Es kann vorkommen, dass die Kästchen auf der falschen Seite und/oder in einer falschen Anordnung erzeugt worden sind. Das manuelle Korrigieren kann mühsam sein. Deshalb gibt es nun ein zweites Script zum Entfernen von Kästchen. Die Seitenfolge funktioniert genau gleich wie im ersten Script. Ebenfalls die Checkboxen: aktivierte bedeuten "Kästchen behalten", nichtaktivierte dagegen = Kästchen entfernen.
Eine Option ist das Aktivieren der Checkbox "nur die Ecken-Kästchen stehenlassen". In diesem Fall werden die anderen Checkboxen ignoriert.
Das Entwickeln des Codes dieses Scripts war nicht so einfach, wie es zuerst den Anschein machte. Auf jeder Seite muss festgestellt werden, ob an den benachbarten Seitenrändern Kästchen vorkommen. Wenn nicht, muss das Kästchen in der Ecke ebenfalls entfernt werden. Nachteil: Einem Seitenrand, bei welchem keine Zwischenkästchen Platz haben, werden die Ecken entfernt. Es gibt leider keine vernünftige Lösung, um dies zu verhindern.
Ich hoffe, dass nun die wichtigsten Wünsche abgedeckt sind (und dass Deine Kollegen nicht überfordert sein werden ;-).