[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Verankertes Objekt per Script erzeugen?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Verankertes Objekt per Script erzeugen?

arnolddesign
Beiträge gesamt: 75

18. Jan 2006, 20:41
Beitrag # 1 von 55
Bewertung:
(34502 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag miteinander

die verankerten Objekte haben, wenn man sie mit Objektstilen nutzt, doch eigentlich nur eine Schwachstelle: die Dimensionen der verankerten Boxen müssen beim Einfügen jedesmal neu eingegeben werden, obwohl doch diese in den meisten Fällen immer gleich gross sind. Klar, ich kann in den Standardeinstellungen eine andere Grösse als die 25,7 x 25,7 mm einstellen. Ich möchte aber gerne aus unterschiedlichen immer wieder gleich grossen Boxen auswählen können.

Ist jemand von euch schon mal über ein Script gestolpert, das diese Schwachstelle elegant umschiffen lässt, indem man die Dimensionen der Marginalien-Textbox (und natürlich den Objektstil) als Parameter festlegen und es dann anstelle des Einfügen-Befehls laufen lassen kann? Martin – hast du vielleicht schon mal ...? :-)

Oder kennt jemand einen eleganteren Weg, die Textmarken für verankerte Boxen "abzulegen", als in einer Textbox, aus der sie bei Bedarf herauskopiert werden können?

Danke für eure Tipps!

Lukas
X

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

18. Jan 2006, 21:50
Beitrag # 2 von 55
Beitrag ID: #205732
Bewertung:
(34449 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Lukas,

ja, ich habe da ein paar Varianten auf Lager. ;-)
Hatte das letzte halbe Jahr öfters mit Randnummern und Marginalien zu arbeiten.

Hier eine einfache Variante ohne viel Abfragen.

Code
// insertAnchoredFrame_simpleVersion.jsx 
//
var mySelection=app.selection[0];
var myOStyle = app.activeDocument.objectStyles.item("Marginalien"); // Objektstil
var myBounds = [ "0p", "0p", "3mm", "18mm"]; // Koordinaten des Marginalientextrahmens [y1, x1, y2, x2]

var myFrame = mySelection.insertionPoints[0].textFrames.add(); // Einfügen eines Textrahmen am Einfügepunkt (Cursor)
myFrame.parent.parentTextFrames[0].characters.length;
myFrame.geometricBounds = myBounds; // Zuweisung der Koordinaten (Höhe und Breite)
myFrame.applyObjectStyle(myOStyle, true); // Zuweisung des Objektstils


Das Skript setzt einen Objektstil "Marginalien" voraus und bricht mit einer Fehlermeldung ab, wenn dem nicht so ist.
Es setzt ungeprüft voraus, daß der Cursor sich als "Einfügepunkt" an dem Platz befindet, an dem der neue Textrahmen verankert werden soll.
Bei den Koordinaten ist zu beachten, daß entgegen der herkömmlichen Regeln y vor x kommt.
Die Koordinaten eines Rechteck sind also y1, x1, y2, x2 (siehe myBounds).

Übrigens, wenn der Text für den verankerten Rahmen bereits im Fließtext enthalten ist (z.B. Marginalie), dann könnte dieser mit zwei zusätzlichen Skriptzeilen in den verankerten Rahmen übernommen werden.


als Antwort auf: [#205724]
(Dieser Beitrag wurde von Martin Fischer am 18. Jan 2006, 21:56 geändert)

Verankertes Objekt per Script erzeugen?

arnolddesign
Beiträge gesamt: 75

18. Jan 2006, 23:00
Beitrag # 3 von 55
Beitrag ID: #205740
Bewertung:
(34443 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin – danke vielmals!

Das ist genau, was ich mir als simple Version vorgestellt hatte. Wenn ich den Scriptfolder mit Subfoldern organisiere, kann ich gut ein paar Versionen dieses Scripts für verschiedene Marginalien ablegen.

Die beiden Zeilen, die den Text für die Marginalie extrahieren interessieren mich auch noch – sowie offengestanden auch eine allfällig vorhandene notSoSimpleVersion ... (meine Wunschvorstellung: ein Script mit einer Dialogbox, in der ich aus einem Dropdown-Menü verschiedene Versionen von Marginalien auswählen kann?)

Lukas


als Antwort auf: [#205732]

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

18. Jan 2006, 23:26
Beitrag # 4 von 55
Beitrag ID: #205742
Bewertung:
(34440 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Dialogbox, in der ich aus einem Dropdown-Menü verschiedene Versionen von Marginalien auswählen kann?

Du meinst eine Auswahl an Objektstilen?
Das wäre schon möglich, wenn Dich die lästigen Bestätigungen nicht stören.

Hier die zwei versprochenen Zeilen für den Inhalt (einfach unten anhängen):
Code
myFrame.contents=mySelection.contents; 
app.selection[0].contents = ""


Ich gehe davon aus, daß Du vor dem Start des Skripts das erste Wort (oder mehrere Wörter) und ein anschließendes Leerzeichen markiert hast. Das ist ein bißchen Trickserei, denn durch das Einfügen des Textrahmens ändert sich die Auswahl, deswegen ist das Leerzeichen als Abschluß der Auswahl notwendig.

Es sei denn, Du würdest noch eine dritte Zeile verkraften, denn dann könnte man den Inhalt der Auswahl vor dem Einfügen des Textrahmens in eine Variable speichern.


als Antwort auf: [#205740]

Verankertes Objekt per Script erzeugen?

arnolddesign
Beiträge gesamt: 75

18. Jan 2006, 23:38
Beitrag # 5 von 55
Beitrag ID: #205743
Bewertung:
(34439 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Du meinst eine Auswahl an Objektstilen?


nein, eine Auswahl an "Marginalienstilen" – ich stelle mir das so vor, dass ich im Script eine Liste von Box-Dimensionen mit den zugehörigen Objektstilen anlegen kann und dass ich für jeden Eintrag in dieser Liste einen Namen vergeben kann, der beim Scriptaufruf ins Dropdownmenü eingelesen wird. Das wäre zugegebenermassen eine full blown Version, die du, falls überhaupt, eigentlich nur im Austausch gegen ein Paar handgestrickte Socken anbieten solltest ;-)

Antwort auf: Es sei denn, Du würdest noch eine dritte Zeile verkraften, denn dann könnte man den Inhalt der Auswahl vor dem Einfügen des Textrahmens in eine Variable speichern.


die dritte Zeile würde ich rein interessehalber vermutlich noch verkraften :-)

Gruss, Lukas


als Antwort auf: [#205742]

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

18. Jan 2006, 23:53
Beitrag # 6 von 55
Beitrag ID: #205744
Bewertung:
(34435 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also die notSoSimpleVersion mit einem Mißverständnis ist fertig.
Darin habe ich die von Dir gewünschte dritte Zeile (nebst vielen anderen) untergebracht.
Damit hast Du hoffentlich genug Stoff für diese Nacht. ;-)

Das Mißverständnis liegt darin, daß ich unter "verschiedene Versionen von Marginalien" die Auswahl der Objektstile verstanden habe. Die ist hier geboten:
Code
// insertAnchoredFrame_notSoSimpleVersion.jsx  
//
var mySelection=app.selection[0];
var theOStyles = app.activeDocument.objectStyles.everyItem().name;
var myOStyleName = myDisplayDialog();
var myOStyle = app.activeDocument.objectStyles.item(myOStyleName);
var myBounds = [ "0p", "0p", "3mm", "18mm"]; // Koordinaten des Marginalientextrahmens [y1, x1, y2, x2]

var myContent = mySelection.contents; // Sicherung des Inhalts der Auswahl
var myFrame = mySelection.insertionPoints[0].textFrames.add(); // Einfügen eines Textrahmen am Einfügepunkt (Cursor)
myFrame.parent.parentTextFrames[0].characters.length;
myFrame.geometricBounds = myBounds; // Zuweisung der Koordinaten (Höhe und Breite)
myFrame.applyObjectStyle(myOStyle, true); // Zuweisung des Objektstils
myFrame.contents = myContent; // Zuweisung des Inhalts
app.selection[0].contents = ""; // Löschen der ursprünglichen Auswahl

function myDisplayDialog()
{
var myFieldWidth = 150;
var myDialog = app.dialogs.add({name:"Objektstil für verankerten Rahmen"});
with(myDialog.dialogColumns.add())
{
with(dialogRows.add())
{
with(dialogColumns.add())
{
staticTexts.add({staticLabel:"Objktstil:", minWidth:myFieldWidth});
}
with(dialogColumns.add())
{
var myOStyleDropDown = dropdowns.add({stringList:theOStyles, selectedIndex:theOStyles.length-1});
}
}
}
var myResult = myDialog.show();
if(myResult == true)
{
var aOStyle = theOStyles[myOStyleDropDown.selectedIndex]
myDialog.destroy();
}
else
{
myDialog.destroy();
exit();
}
return aOStyle ;
}


Für die full blow Version (mit Wunschlisten) braucht's aber dann schon eine sehr exquisite Wolle. Und nach meinen Vorleistungen möchte ich erst mal sehen, ob Du überhaupt stricken kannst. ;-)


als Antwort auf: [#205743]

Verankertes Objekt per Script erzeugen?

arnolddesign
Beiträge gesamt: 75

20. Feb 2006, 11:45
Beitrag # 7 von 55
Beitrag ID: #212762
Bewertung:
(34270 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin

bei der Verwendung des sehr hilfreichen Scripts insertAnchoredFrames_simpleVersion haben wir plötzlich noch ein kleines Problem gefunden: Wenn ein anderes Zeichenformat als [keine] ausgewählt ist, wird der Text in der verankerten Box damit formatiert, da ja leider das Zeichenformat im Objektstil nicht definiert werden kann.

Darf ich dich auf diesem Weg (ohne Zeitdruck!) um eine Version des Skripts bitten, in der das Zeichenformat nach dem Anlegen des verankerten Objekt auf [keine] gestellt wird?! (wenn es, wie ich vermute, nur um eine Zeile Code geht, kann ich diese natürlich auch selbst ins Skript einbauen)

Herzlichen Dank!

Lukas


als Antwort auf: [#205744]

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

20. Feb 2006, 12:19
Beitrag # 8 von 55
Beitrag ID: #212771
Bewertung:
(34260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Lukas,

> Wenn ein anderes Zeichenformat als [keine] ausgewählt ist, wird der Text in der
> verankerten Box damit formatiert, da ja leider das Zeichenformat im Objektstil
> nicht definiert werden kann.

füge vor der Zeile
Code
myFrame.contents = myContent; // Zuweisung des Inhalts 


Die folgende Zeile ein
Code
myFrame.insertionPoints[0].appliedCharacterStyle = app.documents[0].characterStyles.item("[Keine]"); 


(Probier das mal, hab's nicht getestet).

Es ist möglich, daß dennoch die Formatierung, die in dem "aktiven" Zeichenformat vom Standard abweicht, beim Einfügen des Inhalts aktiv bleibt.
Um dies zu beheben bräuchte es eine Routine, die dem ersten Einfügepunkt alle Attribute des Zeichenformats "[Keine]" zuweist.

Einfacher wäre es, Du würdest das Zeichenformat "[Keine]" aktiviert halten (und nicht ein anderes Zeichenformat).

> da ja leider das Zeichenformat im Objektstil
> nicht definiert werden kann.
Würde das Sinn machen?
Was wäre der Unterschied zu der möglichen Zuweisung eines Absatzformats?

Ach so, es geht möglicherweise um die Aufhebung eines ggf. vorher aktiven Zeichenformats.
Ein sehr spezieller Fall. ;-)


als Antwort auf: [#212762]

Verankertes Objekt per Script erzeugen?

arnolddesign
Beiträge gesamt: 75

21. Feb 2006, 00:11
Beitrag # 9 von 55
Beitrag ID: #212934
Bewertung:
(34228 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin

herzlichen Dank; ich habe die Zeile zwar noch nicht mit derjenigen Version des Scripts getestet, die wir im Büro im Einsatz haben, es sieht aber danach aus, dass das Problem gelöst ist.
Ein Zeichenformat ist ja bei einem neuen verankerten Objekt noch nicht zugewiesen, muss also nicht aufgehoben werden; es geht nur darum, dass das in der Palette aktive Zeichenformat für den aktuellen Cursor auf [keine] gestellt wird und genau das scheint die zusätzliche Zeile zu machen.

Lukas


als Antwort auf: [#212771]

Verankertes Objekt per Script erzeugen?

Quarz
Beiträge gesamt: 3555

13. Mär 2008, 12:41
Beitrag # 10 von 55
Beitrag ID: #341483
Bewertung:
(32218 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

lang, lang ist’s her mit diesem Thread.

Wie Du weißt, setze ich die Endnoten eines Textes als
Fußnoten ›per Hand‹ unten auf jede Seite.

Damit ich mir nicht eine Lupenbrille aufsetzen muß, um
die Fußnotenzeichen im Text zu sehen, kopiere ich sie
mir als Marginalien in einer größeren Schriftgröße an den
Rand.

Nun zu meiner Frage.
Wäre es möglich, dass nach dem Erzeugen des verankerten
Objektes der Cursor autom. hineinspringt und ich die Zahl
direkt eingeben kann?

Gruß
Quarz


als Antwort auf: [#212934]

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

13. Mär 2008, 12:48
Beitrag # 11 von 55
Beitrag ID: #341486
Bewertung:
(32214 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Quarz,

versuch's mal mit dem Einfügen der folgenden Zeile (am Ende des Skripts bzw. vor der Funktion 'function ...'):

Code
myFrame.insertionPoints[0].select(); 



als Antwort auf: [#341483]

Verankertes Objekt per Script erzeugen?

Quarz
Beiträge gesamt: 3555

13. Mär 2008, 13:01
Beitrag # 12 von 55
Beitrag ID: #341489
Bewertung:
(32211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin,

funktioniert prima!

Du hast mir das Script mit der Zeile
Code
app.selection[0].parentStory.texts[0].textFrames.everyItem().remove(); 

damals empfohlen, um all diese verankerten Objekte wieder
los zu werden.

Doch unter CS3 gibt es eine Fehlermeldung.
Siehe Anlage

Gruß
Quarz


als Antwort auf: [#341486]
(Dieser Beitrag wurde von Quarz am 13. Mär 2008, 13:10 geändert)

Anhang:
Fehlermeldung.jpg (19.3 KB)

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

13. Mär 2008, 15:42
Beitrag # 13 von 55
Beitrag ID: #341530
Bewertung:
(32181 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Quarz,

unter CS3 muß es so lauten:

Code
app.selection[0].parentStory.texts[0].textContainers.everyItem().remove(); 



als Antwort auf: [#341489]

Verankertes Objekt per Script erzeugen?

Quarz
Beiträge gesamt: 3555

13. Mär 2008, 16:27
Beitrag # 14 von 55
Beitrag ID: #341555
Bewertung:
(32176 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

leider bekomme ich wieder eine Fehlermeldung.

Gruß
Quarz


als Antwort auf: [#341530]
Anhang:
Fehlermeldung_2.jpg (20.2 KB)

Verankertes Objekt per Script erzeugen?

Martin Fischer
  
Beiträge gesamt: 12783

13. Mär 2008, 16:34
Beitrag # 15 von 55
Beitrag ID: #341557
Bewertung:
(32175 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach entschuldige, Quarz,
bin mit dem Kopf grad ganz wo anders.
Vergiß den letzten Hinweis.

Die alte Zeile stimmt.
Aber es kommt darauf an, von wo und wann sie ausgeführt wird.
Und ich weiß nicht mehr, wie Dein Skript aussieht.

Schick's doch noch mal her.
Dann muß ich nicht so im Dunkeln tappen


als Antwort auf: [#341555]
X

Aktuell

Farbmanagement
impressed_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
18.06.2024

Online
Dienstag, 18. Juni 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow