Connect failed: Connection timed out

[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:
(34209 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: 12779

18. Jan 2006, 21:50
Beitrag # 2 von 55
Beitrag ID: #205732
Bewertung:
(34156 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:
(34150 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: 12779

18. Jan 2006, 23:26
Beitrag # 4 von 55
Beitrag ID: #205742
Bewertung:
(34147 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:
(34146 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: 12779

18. Jan 2006, 23:53
Beitrag # 6 von 55
Beitrag ID: #205744
Bewertung:
(34142 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:
(33977 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: 12779

20. Feb 2006, 12:19
Beitrag # 8 von 55
Beitrag ID: #212771
Bewertung:
(33967 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:
(33935 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: 3550

13. Mär 2008, 12:41
Beitrag # 10 von 55
Beitrag ID: #341483
Bewertung:
(31925 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: 12779

13. Mär 2008, 12:48
Beitrag # 11 von 55
Beitrag ID: #341486
Bewertung:
(31921 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: 3550

13. Mär 2008, 13:01
Beitrag # 12 von 55
Beitrag ID: #341489
Bewertung:
(31918 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: 12779

13. Mär 2008, 15:42
Beitrag # 13 von 55
Beitrag ID: #341530
Bewertung:
(31888 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: 3550

13. Mär 2008, 16:27
Beitrag # 14 von 55
Beitrag ID: #341555
Bewertung:
(31883 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: 12779

13. Mär 2008, 16:34
Beitrag # 15 von 55
Beitrag ID: #341557
Bewertung:
(31882 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