Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Absatzformatabweichungen ausgewählter Formate entfernen

Absatzformatabweichungen ausgewählter Formate entfernen

pitware2005
Beiträge gesamt: 39

23. Jan 2013, 15:23
Bewertung:

gelesen: 5178

Beitrag als Lesezeichen
Hallo zusammen,

kann mir jemand bitte schnell auf die sprünge helfen?

Ich habe ein Menü gebastelt welches mir alle Absatzformate auflisten soll die es in einem Dokument gibt, leider nimmt er nicht alle sondern nur die welche nicht in Ordner sind.

Code
if (app.documents.length != 0)  
{
var myDoc = app.activeDocument;
var myParagraphStyleArray = new Array();

myParagraphStyleArray = app.activeDocument.paragraphStyles.everyItem().name.slice(2);


var myDialog = app.dialogs.add({name:"Absatzformat auswählen",canCancel:true});

with(myDialog)
{
with(dialogColumns.add())
{
with(borderPanels.add())
{
staticTexts.add({staticLabel:"Absatzformate:"});
// Ein Dropdown Menue wird erzeugt
var myDocumentTypeMenu = dropdowns.add({stringList:myParagraphStyleArray, selectedIndex:0});
}
}
}

var myResult = myDialog.show();
}


Was muss ich da ergänzen?

Und den Befehl "Abweichungen löschen" bekomme ich nicht dazu nur die zuvor getroffene Auswahl zu ändern.
Hier ist der Globale Befehl:
Code
app.selection[0].paragraphs.everyItem().clearOverrides(OverrideType.all); 


Hoffe ihr könnt mir wie immer auf die richtige Bahn helfen.

Viele Grüße
Peter
Viele Grüße
Peter

Absatzformatabweichungen ausgewählter Formate entfernen

-hans-
Beiträge gesamt: 748

23. Jan 2013, 18:00
Bewertung:

gelesen: 5142

Beitrag als Lesezeichen
Hi,

myDoc.allParagraphStyles gibt dir einen Array mit Refernzen zu allen Absatzformaten. -> in Array sichern

-> Schleife durch diesen Array um die Namen für deinen Dialog ebenfalls in einen Array zu schreiben.

Index des zurüchgegebenen dropdown items = index des Absatzformates im Referenzarray.

-> Die Vorkommen des Absatzformates im Dokument suchen
-> Schleife durch Ergebnisse mit Befehl clearOverrides
Lieben Gruß

Hans-Gerd Claßen

Absatzformatabweichungen ausgewählter Formate entfernen

pitware2005
Beiträge gesamt: 39

24. Jan 2013, 07:41
Bewertung:

gelesen: 5091

Beitrag als Lesezeichen
Hallo Hans,

danke für den Hinweis. Aber warum geht das nicht mit dem
Code
myParagraphStyleArray = app.activeDocument.paragraphStyles.everyItem().name.slice(2); 


Hier müsste er doch auch alle Items in Absatzformaten auflisten, aber er macht leider nur die oberen Elemente z.B.
Absatzformat 1
Absatzformat 2
Arial/
Arial/Absatzformat 3
Arial/Absatzformat 4

Absatzformat 1 und 2 zeigt er im Dropdown an aber alles was in Ordnern ist nicht. Warum?
Weil in der Referenz steht:
ParagraphStyleeveryItem () => Returns every ParagraphStyle in the collection.

Hoffe das kann mir wer noch beantworten :-)

Viele Grüße
Peter
Viele Grüße
Peter

(Dieser Beitrag wurde von pitware2005 am 24. Jan 2013, 07:52 geändert)

Absatzformatabweichungen ausgewählter Formate entfernen

Martin Fischer
  
Beiträge gesamt: 12783

24. Jan 2013, 08:19
Bewertung:

gelesen: 5076

Beitrag als Lesezeichen
Hallo Peter,

hier als Anregung ein Basis-Dialog zur Auswahl von Absatzformaten auch in Gruppen.

Code
var ps = get_ps(app.activeDocument); 

function get_ps( _doc )
{
var all_ps = get_allparagraphstyles (app.activeDocument);
var _dialog = app.dialogs.add({name:"Auswahl Absatzformat"});
with(_dialog.dialogColumns.add())
{
with(dialogRows.add())
{
with(dialogColumns.add())
{
staticTexts.add({staticLabel:"Absatzformat: "});
}
with(dialogColumns.add())
{
var ps_dropdown = dropdowns.add({stringList:all_ps.name, selectedIndex:2});
}
}
}
var r = _dialog.show();
if(r == true)
{
var ps = all_ps.p_style[ps_dropdown.selectedIndex];
_dialog.destroy();
}
else
{
_dialog.destroy();
exit();
}
return ps;
}

function get_allparagraphstyles (_doc)
{
var all_ps_names = new Array;
var all_ps = _doc.allParagraphStyles;
for (var i = 0; i < all_ps.length; i++)
{
a_name = all_ps[i].name;
var g = all_ps[i];
while (g.parent.constructor == ParagraphStyleGroup)
{
g = g.parent;
a_name = g.name + ' || ' + a_name;
}
all_ps_names.push(a_name);
}
return {p_style:all_ps, name:all_ps_names}
}


Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 24. Jan 2013, 08:20 geändert)

Absatzformatabweichungen ausgewählter Formate entfernen

cwenet
Beiträge gesamt: 1139

29. Mai 2016, 17:30
Bewertung:

gelesen: 4159

Beitrag als Lesezeichen
Hallo Martin,

danke für diese Anregung.

Wie kann ich nun den zurückgegeben Wert ps weiterverarbeiten?

Z.B. hierfür:
Code
app.findTextPreferences.appliedParagraphStyle = ps; 


ps wird ohne Gruppe ausgegeben.

Bitte um Hilfe.

Grüße
Christoph

(Dieser Beitrag wurde von cwenet am 29. Mai 2016, 17:31 geändert)

Absatzformatabweichungen ausgewählter Formate entfernen

Kai Rübsamen
Beiträge gesamt: 4684

29. Mai 2016, 20:35
Bewertung:

gelesen: 4112

Beitrag als Lesezeichen
Hallo Christoph,

z.B. so:
Code
  if (ps.parent.constructor.name == "ParentStyleGroup") { 
ps = app.activeDocument.paragraphStyleGroups.itemByName(ps.parent.name).paragraphStyles.itemByName(ps.name);
return ps;
}
else {
return ps;
}


Gruß Kai Rübsamen

(Dieser Beitrag wurde von Kai Rübsamen am 29. Mai 2016, 20:37 geändert)

Absatzformatabweichungen ausgewählter Formate entfernen

Martin Fischer
  
Beiträge gesamt: 12783

30. Mai 2016, 07:07
Bewertung:

gelesen: 4047

Beitrag als Lesezeichen
Hallo Christoph,

Antwort auf [ cwenet ] ps wird ohne Gruppe ausgegeben.



Diesen Fehler kann ich nicht nachvollziehen.
Siehe Bildschirmfoto.

In welcher Version von InDesign und auf welcher Plattform taucht der Fehler (Ignorieren der Formatgruppe) bei Dir auf?

Viele Grüße
Martin


Absatzformatabweichungen ausgewählter Formate entfernen

cwenet
Beiträge gesamt: 1139

30. Mai 2016, 07:16
Bewertung:

gelesen: 4043

Beitrag als Lesezeichen
Guten Morgen Matthias,

ich verwende gerade CS6 und WIN10(1511).

Folgendes habe ich an Deinen Code angehängt:

Code
app.findTextPreferences = NothingEnum.nothing; 
app.changeTextPreferences = NothingEnum.nothing;

function sunde(zeichenformat,ueberschrift) {

try {
app.findChangeTextOptions.includeFootnotes = true;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findTextPreferences.appliedCharacterStyle = zeichenformat;
app.findTextPreferences.appliedParagraphStyle = ueberschrift;
app.changeTextPreferences.appliedCharacterStyle = '[No character style]';
var myFound = app.activeDocument.findText();
app.activeDocument.changeText();


if (myFound.length > 0){
alert("Fertig Treffer: "+myFound.length);
}
if (myFound.length == 0){
alert("Fertig Treffer: "+myFound.length);
}


}

catch (_)
{
alert("Nichts gefunden "+ps.name);
}




}

sunde('Bold',ps.name);


//Aufräumen
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;


Ich denke, es handelt sich sicher um einen Bedienungsfehler.



Grüße
Christoph

Absatzformatabweichungen ausgewählter Formate entfernen

cwenet
Beiträge gesamt: 1139

30. Mai 2016, 07:21
Bewertung:

gelesen: 4038

Beitrag als Lesezeichen
Guten Morgen Kai,

vielen Dank. So klappt es.

Einen schönen Tag

Christoph

Absatzformatabweichungen ausgewählter Formate entfernen

cwenet
Beiträge gesamt: 1139

30. Mai 2016, 07:31
Bewertung:

gelesen: 4035

Beitrag als Lesezeichen
Lieber Martin,

mit Ergänzung von Kai klappt es wie gewünscht.


Code
app.findTextPreferences = NothingEnum.nothing; 
app.changeTextPreferences = NothingEnum.nothing;

function sunde(zeichenformat,ueberschrift) {

try {
app.findChangeTextOptions.includeFootnotes = true;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findTextPreferences.appliedCharacterStyle = zeichenformat;
app.findTextPreferences.appliedParagraphStyle = ueberschrift;
app.changeTextPreferences.appliedCharacterStyle = '[No character style]';
var myFound = app.activeDocument.findText();
app.activeDocument.changeText();


if (myFound.length > 0){
alert("Fertig Treffer: "+myFound.length);
}
if (myFound.length == 0){
alert("Fertig Treffer: "+myFound.length);
}

}
catch (_)
{
alert("Nichts gefunden "+ps.name);
}
}

sunde('Bold',ps);

//Aufräumen
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;



Einen schöne Tag
Christoph

Absatzformatabweichungen ausgewählter Formate entfernen

Martin Fischer
  
Beiträge gesamt: 12783

30. Mai 2016, 07:32
Bewertung:

gelesen: 4036

Beitrag als Lesezeichen
Hallo Christoph,

beim Aufruf der Funktion sunde übergibst du nicht das ermittelte Absatzformat ps, sondern nur dessen Namen ps.name.
Damit wird die Absatzformatgruppe umgangen.

Code
sunde('Bold',ps.name); 



Richtig wäre:

Code
sunde('Bold',ps); 



Edit:
Wie ich sehe, hast Du das nun selbst herausgefunden. ;-)
Aber wo hast Du den Code von Kai versteckt?
Dieser ist zwar durchaus interessant, aber hier nicht nötig.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 30. Mai 2016, 07:36 geändert)

Absatzformatabweichungen ausgewählter Formate entfernen

cwenet
Beiträge gesamt: 1139

30. Mai 2016, 07:36
Bewertung:

gelesen: 4024

Beitrag als Lesezeichen
Hallo Martin,

dankeschön. Es klappt auch ohne Schnipsel von Kai.

Trotzdem danke an Euch beide.

Schönen Tag
Christoph

Absatzformatabweichungen ausgewählter Formate entfernen

Kai Rübsamen
Beiträge gesamt: 4684

30. Mai 2016, 09:42
Bewertung:

gelesen: 3691

Beitrag als Lesezeichen
Antwort auf: Dieser ist zwar durchaus interessant, aber hier nicht nötig.

Hm, ich hätte geschworen, dass es gestern um halb neun nur so ging. Heute morgen geht es auch ohne … Danke Martin.

Gruß Kai Rübsamen

Absatzformatabweichungen ausgewählter Formate entfernen

cwenet
Beiträge gesamt: 1139

30. Mai 2016, 09:52
Bewertung:

gelesen: 3681

Beitrag als Lesezeichen
Hallo Martin,

Kai's Schnipsel hatte ich hier versteckt:

Am Ende der ersten Funktion habe ich diese Zeile ersetzt:

Code
return ps; 



Schönen Tag
Christoph

Absatzformatabweichungen ausgewählter Formate entfernen

Martin Fischer
  
Beiträge gesamt: 12783

30. Mai 2016, 10:04
Bewertung:

gelesen: 3676

Beitrag als Lesezeichen
Hallo Kai,

Antwort auf: Hm, ich hätte geschworen, dass es gestern um halb neun nur so ging. Heute morgen geht es auch ohne … Danke Martin.


Ja, um 7 heute früh ging es ohne. ;-)

Dein Ansatz sieht verführerisch aus.
Allerdings funktioniert das so nur auf der ersten Ebene der Formatgruppen. Für tiefere Verschachtelungen wären weitere parent-Kletterstufen nötig.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 30. Mai 2016, 10:25 geändert)