Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Textrahmen Absatzformat zuweisen

Textrahmen Absatzformat zuweisen

MarioF
Beiträge gesamt: 390

19. Okt 2019, 18:38
Bewertung:

gelesen: 9809

Beitrag als Lesezeichen
Moin,
ich wollte einen ausgewählten Textrahmen ein Absatzformat zuweisen.
Code
app.selection[0].parentStory.ParagraphStyle = 'Abstzformat'; 

funktioniert nicht.
---
Viele Grüße
Mario

Textrahmen Absatzformat zuweisen

MarioF
Beiträge gesamt: 390

19. Okt 2019, 19:42
Bewertung:

gelesen: 9799

Beitrag als Lesezeichen
Mit
Code
app.selection[0].parentStory.appliedParagraphStyle 

klappt es.
---
Viele Grüße
Mario

Textrahmen Absatzformat zuweisen

MarioF
Beiträge gesamt: 390

20. Okt 2019, 14:18
Bewertung:

gelesen: 9760

Beitrag als Lesezeichen
Moin,
ich habe gleich noch eine weitere Frage dazu.
Ich versuche, einem Textrahmen das Format '[Einf.Abs.]' zuzuweisen. Dies macht er aber nicht.
Hier mal das Script, bei dem einem ausgewählten TR ein AF zuweist
Code
#targetengine "TestAbsatz"; 

var _dok = app.activeDocument;

var w = new Window("palette");
w.text = "Test";
w.preferredSize.width = 400;
w.orientation = "column";
w.alignChildren = ["left", "top"];
w.spacing = 10;
w.margins = 16;

var group1 = w.add("group", undefined, { name: "group1" });
group1.orientation = "row";
group1.alignChildren = ["left", "center"];
group1.spacing = 10;
group1.margins = 0;

var statictext1 = group1.add("group");
statictext1.orientation = "column";
statictext1.alignChildren = ["left", "center"];
statictext1.spacing = 0;

statictext1.add("statictext", undefined, "Absatzformat", { name: "statictext1" });

var _CharStyles = _dok.paragraphStyles.everyItem().name;
var dropdown1 = group1.add("dropdownlist", undefined, undefined, { name: "dropdown1", items: _CharStyles });
dropdown1.selection = 0;
dropdown1.alignment = ["left", "top"];

var _start = w.add("button", undefined, undefined, { name: "_start" });
_start.text = "Zuweisen";

w.show();

_start.onClick = function () {

if (
app.selection.length == 0
) {
alert('Es wurde kein Textrahmen ausgewählt');
exit()
}
else {
app.selection[0].parentStory.appliedParagraphStyle = dropdown1.selection.toString();
}
}

In der Auswahl wird das Format angezeigt, zeigt aber keine Reaktion.
---
Viele Grüße
Mario

Textrahmen Absatzformat zuweisen

WernerPerplies
Beiträge gesamt: 2760

20. Okt 2019, 15:12
Bewertung:

gelesen: 9751

Beitrag als Lesezeichen
Moin Mario,

obwohl die Doku sagt, Zuweisung "String oder Style" werden Strings nicht in jedem Fall aktzeptiert, deshalb solltest Du auf die sichere Seite gehen:

Code
app.selection[0].parentStory.appliedParagraphStyle = app.activeDocument.paragraphStyles.itemByName(dropdown1.selection.text); 


Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Textrahmen Absatzformat zuweisen

MarioF
Beiträge gesamt: 390

20. Okt 2019, 15:23
Bewertung:

gelesen: 9747

Beitrag als Lesezeichen
Moin Werner,
das klappt so super. Danke!
---
Viele Grüße
Mario

Textrahmen Absatzformat zuweisen

MarioF
Beiträge gesamt: 390

20. Okt 2019, 17:10
Bewertung:

gelesen: 9739

Beitrag als Lesezeichen
Eine Frage erledigt, viele neue kommen.
Ich habe die Auswahl auf Formatgruppen ausgeweitet
Code
var allParaStyles = app.activeDocument.allParagraphStyles; 

_allStyle = []
for (var i = 0; i < allParaStyles.length; i++) {
var curStyle = allParaStyles[i];
var curName = curStyle.name;
_allStyle[i] = curName
}

AF ausserhalb von Gruppen werden zugewiesen, aber keine Formate innerhalb von Gruppen. Wie bekomme ich bei
Code
app.selection[0].parentStory.appliedParagraphStyle = app.activeDocument.paragraphStyles.itemByName(dropdown1.selection.text); 

die Gruppe mit rein?
---
Viele Grüße
Mario

Textrahmen Absatzformat zuweisen

WernerPerplies
Beiträge gesamt: 2760

20. Okt 2019, 17:24
Bewertung:

gelesen: 9731

Beitrag als Lesezeichen
Hallo Marion,

da solltest Du alles finden, was Du brauchst:
WpsStylesClass

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Textrahmen Absatzformat zuweisen

Uwe Laubender
Beiträge gesamt: 5316

31. Okt 2019, 22:56
Bewertung:

gelesen: 8607

Beitrag als Lesezeichen
Hallo Mario,

Du fragst, weshalb die Formate nicht zugewiesen werden.

Das liegt an = "Name" oder = item("Name") oder = itemByName("Name").

Warum? Weil die Architekten, die Entwickler, das so wollten.

Hingegen: = itemByID( id-Nummer ) kann das.
itemByID( id-Nummer ) ist gewissermaßen die "Magic-Bullet".

Beispiel: Lass die id-Nummer eines tief verschachtelten Absatzformats 335 sein.
Dann kannst Du das Absatzformat folgendermaßen aufrufen:

Code
app.documents[0].paragraphStyles.itemByID( 335 ); 


Witzigerweise sogar so:

Code
app.documents[0].pageItems.itemByID( 335 ); 


Wobei ich eher sichergehen würde, nämlich so:

Code
app.documents[0].pageItems.itemByID( 335 ).getElements()[0]; 



Das getElements()[0] reduziert, da wo nötig, das allgemein gehaltene pageItem auf seine wahre Natur. In unserem Beispiel ist das ein Absatzformat.


Also: Speichere die id-Nummer des Absatzformats zusammen mit dessen Name im Array.
Dein UI zeigt dann den Namen, zuweisen musst Du aber das Format mit der zugehörigen ID-Nummer.
Nicht ganz so bequem wie Du's jetzt hast, dafür aber hochfunktionabel.

Nur so als Idee…
*****
Mit herzlichem Gruß,
Uwe Laubender