Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textrahmen per Script verketten

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

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Jun 2010, 13:16
Beitrag # 1 von 22
Bewertung:
(16980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Indesign-Scripter,

habe ziemlich lange gesucht, aber mein altes CS2-Script "Join-all.js" funktioniert nicht mehr mit CS4. Es hat stets alle Textrahmen (auch aus der Datenzusammenführung;-)) in der richtigen Reihenfolge miteinander verkettet, so daß alle Texte via Absatzmarken in einem Textabschnitt zusammengefaßt wurden.

Ich habe versucht, einfach nur *.jsx hintendranzuhängen. Das alleine hilft nicht!?

Grüße
Frank
X

Textrahmen per Script verketten

Martin Fischer
  
Beiträge gesamt: 12779

7. Jun 2010, 13:24
Beitrag # 2 von 22
Beitrag ID: #443866
Bewertung:
(16975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frank,

was macht Dein altes Skript statt dessen?

Wie sieht es aus?
Ist der Code irgendwo einsehbar?


> Ich habe versucht, einfach nur *.jsx hintendranzuhängen.

CS3 und höher akzeptieren *.js undj *.jsx gleichermaßen.
*.jsx kann mit dem ExtendScript Toolkit verknüpft werden, damit sich bei Klick auf eine jsx-Datei dieses mit der geklickten Datei öffnet.


als Antwort auf: [#443864]

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Jun 2010, 13:45
Beitrag # 3 von 22
Beitrag ID: #443868
Bewertung:
(16958 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

der Quellcode lautet:
Code
//join_stories.js  
if(app.documents.length != 0){
var myDoc = app.activeDocument;
for (oneStory=myDoc.stories.length-1;oneStory>0;oneStory--){
// fügt am Ende des Textflusses eine Absatzschaltung ein,
// wenn der Textfluß nicht bereits mit einer Absatzschaltung endet.
if (myDoc.stories[oneStory-1].characters.length>0){
if (myDoc.stories[oneStory-1].characters[-1].contents!="\r") myDoc.stories[oneStory-1].insertionPoints[-1].contents="\r";
}
// Verknüpfung des letzten Textrahmens des vorherigen Textflusses (oneStory-1)
// mit dem ersten Textrahmen des aktuellen Textflusses (oneStory)
myDoc.stories[oneStory-1].textFrames[-1].nextTextFrame = myDoc.stories[oneStory].textFrames[0];
}
}


Die Fehlermeldung lautet:
http://www.reinzeichnen.de/mat/fehlermeldung.png

Grüße
Frank


als Antwort auf: [#443866]

Textrahmen per Script verketten

Martin Fischer
  
Beiträge gesamt: 12779

7. Jun 2010, 14:11
Beitrag # 4 von 22
Beitrag ID: #443871
Bewertung:
(16936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frank,

versuch's mal mit textContainers an Stelle von textFrames.

Seit CS3 sind die Textrahmen, die ein Textabschnitt durchläuft, textContainers, um sie von den verankerten textFrames im Textabschnitt zu unterscheiden.


als Antwort auf: [#443868]
(Dieser Beitrag wurde von Martin Fischer am 7. Jun 2010, 14:15 geändert)

Textrahmen per Script verketten

der-markus
Beiträge gesamt:

17. Aug 2010, 14:22
Beitrag # 5 von 22
Beitrag ID: #449018
Bewertung:
(16624 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

habe es mal mit dem geänderten Script versucht. Leider kommt da auch eine Fehlermeldung. Bin allerdings absoluter Script-Unwissender.... Gibt es ein funktionierendes Script für CS4 um die Textrahmen zu verketten? Habe nämlich nach einer Datenzusammenführung zwar die Textrahmen auf einer Seite, möchte diese aber gene verketten.

Grüße


als Antwort auf: [#443871]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5826

18. Aug 2010, 16:44
Beitrag # 6 von 22
Beitrag ID: #449225
Bewertung:
(16576 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

Martin ist anscheinend abwesend (oder hat Deine Frage nicht gesehen).

Das textFrames muss an zwei Stellen durch textContainers ersetzt werden.

Zusätzlich muss man nach dem ersten Vorkommen das [-1] in [0] ändern: textContainers[0]

Code
//join_stories.js 
if(app.documents.length != 0) {
var myDoc = app.activeDocument;
for (oneStory=myDoc.stories.length-1; oneStory>0; oneStory--) {
// fügt am Ende des Textflusses eine Absatzschaltung ein,
// wenn der Textfluß nicht bereits mit einer Absatzschaltung endet.
if (myDoc.stories[oneStory-1].characters.length>0) {
if (myDoc.stories[oneStory-1].characters[-1].contents!="\r") {
myDoc.stories[oneStory-1].insertionPoints[-1].contents="\r";
}
}
// Verknüpfung des letzten Textrahmens des vorherigen Textflusses (oneStory-1)
// mit dem ersten Textrahmen des aktuellen Textflusses (oneStory)
myDoc.stories[oneStory-1].textContainers[0].nextTextFrame = myDoc.stories[oneStory].textContainers[0];
}
}

So funktioniert es hier mit CS4.

Gruss, Hans


als Antwort auf: [#449018]

Textrahmen per Script verketten

der-markus
Beiträge gesamt:

19. Aug 2010, 08:02
Beitrag # 7 von 22
Beitrag ID: #449290
Bewertung:
(16548 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Hans,

wunderbar! Hat funktioniert, großes Lob und vielen Dank.

Frohes Schaffen noch.


als Antwort auf: [#449225]

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Sep 2011, 10:51
Beitrag # 8 von 22
Beitrag ID: #479726
Bewertung:
(15475 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ihr Lieben,

ich verstehe nicht, warum dieses Script nicht mehr funktioniert?
Die dazugehörige Fehlermeldung ist: http://www.reinzeichnen.de/fileadmin/data/JS-Fehler.png
Habe ganz bewußt als Basis eine Datei genommen, die funktioniert hat.
Hat jemand eine Idee, was dieser Fehler besagt?

Verzweifelte Grüße
Frank


als Antwort auf: [#449290]

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Sep 2011, 10:55
Beitrag # 9 von 22
Beitrag ID: #479727
Bewertung:
(15471 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ha!
Habe den Fehler gefunden. Es war ein verankerter leerer Textrahmen.
Habe ihn in einen Grafikrahmen umgewandelt, und jetzt läufts wieder!

Hurra!

Grüße
Frank


als Antwort auf: [#479726]

Textrahmen per Script verketten

cwenet
Beiträge gesamt: 1139

15. Sep 2019, 11:39
Beitrag # 10 von 22
Beitrag ID: #571878
Bewertung:
(9905 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

bin hier gerade drüber gestolpert. Danke, das Script hilft.

Ich würde es gerne etwas einschränken wollen.

Es sollen nur Rahmen verknüpft werden, die ein Scriptetikett besitzen.

Ich habe diese Ausnahme eingebaut:

Code
 if (myDoc.stories[oneStory-1].textContainers[0].label =="mein_ScriptEtikett"){ 


Der gelbe Textrahmen auf Seite 1 wird dennoch irgendwie mit dem Textrahmen von Seite 6 verknüpft.
Testdokument:
https://www.dropbox.com/...erknuepfen.idml?dl=0

Mit der Bitte um Hilfe
Grüße
Christoph


als Antwort auf: [#449225]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5826

15. Sep 2019, 12:06
Beitrag # 11 von 22
Beitrag ID: #571879
Bewertung:
(9892 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

der zu prüfende Rahmen sollte jener sein, welcher als nächster verknüpft wird.

Also: In Deiner Zeile das '[oneStory-1]' zu '[oneStory]' ändern:

Code
if (myDoc.stories[oneStory].textContainers[0].label == "mein_ScriptEtikett") { 

Und es funktioniert wie gewünscht.

Gruss, Hans


als Antwort auf: [#571878]

Textrahmen per Script verketten

cwenet
Beiträge gesamt: 1139

15. Sep 2019, 12:21
Beitrag # 12 von 22
Beitrag ID: #571880
Bewertung:
(9884 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Hans,

irgendwie ist da noch ein Durcheinander drin, was die Reihenfolge angeht.
Wie wird denn beim Verknüpfungsvorgang die Reihenfolge festgelegt?

Kann es sein, dass Indesign weiss, in welcher Reihenfolge die Textrahmen zuvor erstellt wurden?

In meinem Fall ist ja pro Seite 1 Textrahmen mit dem bestimmten Scriptetikett.

Wie kann ich die Reihenfolge beeinflussen?

Grüße
Christoph


als Antwort auf: [#571879]

Textrahmen per Script verketten

cwenet
Beiträge gesamt: 1139

15. Sep 2019, 12:50
Beitrag # 13 von 22
Beitrag ID: #571881
Bewertung:
(9877 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nochmal ich,

es ist vielleicht der sichere Weg, wenn ich die Textrahmen alle der Reihe nach neu erzeuge und dann verknüpfe.

So mache ich es.

Einen schönen Sonntag
Danke und Gruß
Christoph


als Antwort auf: [#571880]

Textrahmen per Script verketten

WernerPerplies
Beiträge gesamt: 2760

15. Sep 2019, 13:31
Beitrag # 14 von 22
Beitrag ID: #571882
Bewertung:
(9864 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Zitat Wie kann ich die Reihenfolge beeinflussen?


Die Reihenfolge bestimmst doch ausschließlich Du, indem Du Dir einen Textrahmen nimmst und in die Eigenschaft previousTextFrame den Vorgängertextrahmen und in die Eigenschaft nextTextFrame den Nachfolgertextrahmen einträgst.

Übrigens:
Mit meinem Skript WpsCreateAnchoredFrames kann man automatisch Textrahmen erzeugen und die Rahmen dann ebenfalls automatisch in der Reihenfolge der Erzeugung automatisch verketten.


als Antwort auf: [#571881]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5826

15. Sep 2019, 13:53
Beitrag # 15 von 22
Beitrag ID: #571883
Bewertung:
(9858 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

die Reihenfolge wird durch die Schichtung der Rahmen bestimmt.

Wenn letztere schön brav von Seite eins bis zur letzen und auf jeder Seite von links oben nach rechts unten erzeugt wurden, dann können die Rahmen mit einer Schleife der Reihe nach abgearbeitet werden.

Wenn aber auf jeder Seite nur ein Textrahmen mit dem Label "mein_ScriptEtikett" existiert, dann könnte folgendes Script benutzt werden.

Code
if (app.documents.length != 0) { 
var allPages = app.documents[0].pages;
var nPages = allPages.length;
var labeledFrames = [];
for (p=0; p<nPages; p++) {
var allTextFrames = allPages[p].textFrames;
var nFrames = allTextFrames.length;
for (var t=0; t<nFrames; t++) {
var curFrame = allTextFrames[t];
if (curFrame.label == "mein_ScriptEtikett") {
labeledFrames.push(curFrame);
break;
}
}
}
var nLabeled = labeledFrames.length;
var curFrame = labeledFrames[0];
for (var n=1; n<nLabeled; n++) {
curFrame.nextTextFrame = labeledFrames[n];
curFrame = labeledFrames[n];
}
alert ("Fertig.", "");
}
else {
alert ("Ein Dokument öffnen.", "");
}

Gutes Gelingen!

Gruss, Hans


als Antwort auf: [#571881]
X