hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Verankertes Objekt per Script erzeugen?

 

« « 1 2 3 4 » »  


arnolddesign I
Beiträge: 75

18. Jan 2006, 20:41

Beitrag #1 von 52
Bewertung:

(8136 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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
Top

Martin Fischer  M  p
Beiträge: 9698

18. Jan 2006, 21:50

Beitrag #2 von 52
Beitrag ID: #205732

Bewertung:

(8123 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#205724]

(Dieser Beitrag wurde von Martin Fischer am 18. Jan 2006, 21:56 geändert)
Top

arnolddesign I
Beiträge: 75

18. Jan 2006, 23:00

Beitrag #3 von 52
Beitrag ID: #205740

Bewertung:

(8117 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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] Top

Martin Fischer  M  p
Beiträge: 9698

18. Jan 2006, 23:26

Beitrag #4 von 52
Beitrag ID: #205742

Bewertung:

(8114 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


> 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.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#205740] Top

arnolddesign I
Beiträge: 75

18. Jan 2006, 23:38

Beitrag #5 von 52
Beitrag ID: #205743

Bewertung:

(8113 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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] Top

Martin Fischer  M  p
Beiträge: 9698

18. Jan 2006, 23:53

Beitrag #6 von 52
Beitrag ID: #205744

Bewertung:

(8109 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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. ;-)


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#205743] Top

arnolddesign I
Beiträge: 75

20. Feb 2006, 11:45

Beitrag #7 von 52
Beitrag ID: #212762

Bewertung:

(7944 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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] Top

Martin Fischer  M  p
Beiträge: 9698

20. Feb 2006, 12:19

Beitrag #8 von 52
Beitrag ID: #212771

Bewertung:

(7934 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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. ;-)


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#212762] Top

arnolddesign I
Beiträge: 75

21. Feb 2006, 00:11

Beitrag #9 von 52
Beitrag ID: #212934

Bewertung:

(7902 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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] Top

Quarz  M  p
Beiträge: 2424

13. Mär 2008, 12:41

Beitrag #10 von 52
Beitrag ID: #341483

Bewertung:

(5892 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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] Top

Martin Fischer  M  p
Beiträge: 9698

13. Mär 2008, 12:48

Beitrag #11 von 52
Beitrag ID: #341486

Bewertung:

(5888 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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(); 



Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#341483] Top

Quarz  M  p
Beiträge: 2424

13. Mär 2008, 13:01

Beitrag #12 von 52
Beitrag ID: #341489

Bewertung:

(5885 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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)
Top

Anhang:
Fehlermeldung.jpg (19.3 KB)

Martin Fischer  M  p
Beiträge: 9698

13. Mär 2008, 15:42

Beitrag #13 von 52
Beitrag ID: #341530

Bewertung:

(5855 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


Quarz,

unter CS3 muß es so lauten:

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



Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#341489] Top

Quarz  M  p
Beiträge: 2424

13. Mär 2008, 16:27

Beitrag #14 von 52
Beitrag ID: #341555

Bewertung:

(5850 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


Hallo Martin,

leider bekomme ich wieder eine Fehlermeldung.

Gruß
Quarz

als Antwort auf: [#341530] Top

Anhang:
Fehlermeldung_2.jpg (20.2 KB)

Martin Fischer  M  p
Beiträge: 9698

13. Mär 2008, 16:34

Beitrag #15 von 52
Beitrag ID: #341557

Bewertung:

(5849 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Verankertes Objekt per Script erzeugen?


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


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#341555] Top
« « 1 2 3 4 » »  


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Verankertes Objekt per Script erzeugen?


^