[GastForen Programmierung/Entwicklung AppleScript ID CS6: Objektstil ändern

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

ID CS6: Objektstil ändern

Goar
Beiträge gesamt: 384

8. Jun 2022, 11:32
Beitrag # 1 von 15
Bewertung:
(1267 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Skripter,

ich möchte in einem Objektstil die Optionen für verankertes Objekt von »Benutzerdefiniert« ändern in »Eingebunden«. Wenn ich das manuell mache, springen alle verankerten Textrahmen zu ihrem Anker.

Mit diesem Skript …
Code
tell application "Adobe InDesign CS6" 
tell document 1
activate
set anchObjSet to anchored object settings of properties of object style "amerikPage"
-- get anchored position of properties of anchObjSet
set properties of anchObjSet to {anchored position:inline position}
end tell
end tell

… wird die Änderung im Objektstil zwar ausgeführt, sie wirkt sich aber nicht auf das Layout aus; die verankerten Rahmen bleiben, wo sie sind.
Was fehlt da noch? Oder ist das der falsche Weg?

Gruß
Goar
---
> iMac 27" 3,2 GHz Intel Core i5, 8 GB, MacOS 10.11.6, QXP 2018, ID CS6 <
> iMac 27" 3,1 GHz Intel 6 Core i5, 16 GB, MacOS 10.15.5, QXP 2019/2020 <
X

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

8. Jun 2022, 16:41
Beitrag # 2 von 15
Beitrag ID: #583651
Bewertung:
(1230 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,
ich kann Dir zwar bei AppleScript nicht weiterhelfen, jedoch weiß ich aus dem ExtendScript DOM, dass man bei Objektstilen die gewünschte Funktion erstmal prinzipiell freischalten muss.

In ExtendScript ausgedrückt:

Code
enableAnchoredObjectOptions = true; 


Daraufhin folgen dann alle anderen Eigenschaften für verankerte Objekte in den anchoredObjectSettings. Es genügt also nicht, die anchoredObjectSettings zu definieren, sondern man muss sie explizit zuschalten.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583644]

ID CS6: Objektstil ändern

Goar
Beiträge gesamt: 384

8. Jun 2022, 16:53
Beitrag # 3 von 15
Beitrag ID: #583652
Bewertung:
(1225 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

etwas Derartiges befürchte ich auch in AS; bei vielen Manipulationen muss man erst in einem Nebenzimmer oder hinter einer Geheimtür einen Schalter umlegen, bevor die offensichtliche Handlung gelingt.
Bloß – wie lautet das Gegenstück in AS. In der Dokumentation zu AS in ID ist nur zu finden, wie man einen Objektstil anlegt und anwendet; da ist keine Rede von einem Freischaltbefehl. Auch in der AS-Bibliothek zu ID konnte ich nichts aufspüren.

Danke aber schon mal für den Hinweis
Goar
---
> iMac 27" 3,2 GHz Intel Core i5, 8 GB, MacOS 10.11.6, QXP 2018, ID CS6 <
> iMac 27" 3,1 GHz Intel 6 Core i5, 16 GB, MacOS 10.15.5, QXP 2019/2020 <


als Antwort auf: [#583651]

ID CS6: Objektstil ändern

Hans Haesler
  
Beiträge gesamt: 5816

8. Jun 2022, 17:30
Beitrag # 4 von 15
Beitrag ID: #583653
Bewertung:
(1214 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

vorneweg: Einen herzlichen Dank an Uwe für seinen wertvollen Hinweis.

Leider muss ich mich momentan um andere Scriptprobleme kümmern. Dennoch habe ich nun rasch in der AppleScript-Bibliothek von InDesign nachgeforscht und folgendes gefunden:
-----
enable anchored object options (boolean) : If true, the object style will apply an anchored object setting.
-----

Kann gut sein, dass es mit ...
Code
set enable anchored object options to true 

... klappen wird.

Gruss, Hans


als Antwort auf: [#583652]

ID CS6: Objektstil ändern

Goar
Beiträge gesamt: 384

8. Jun 2022, 18:12
Beitrag # 5 von 15
Beitrag ID: #583654
Bewertung:
(1189 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich hoffe, es geht dir gut!

enable anchored object options gehört zu den properties von object style.
Es stand schon auf true.
Aber auch wenn ich diesen Wert noch einmal auf true setze, wirkt sich die Änderung am Objektstil nicht aus.

Hm
Goar
---
> iMac 27" 3,2 GHz Intel Core i5, 8 GB, MacOS 10.11.6, QXP 2018, ID CS6 <
> iMac 27" 3,1 GHz Intel 6 Core i5, 16 GB, MacOS 10.15.5, QXP 2019/2020 <


als Antwort auf: [#583653]

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

9. Jun 2022, 10:33
Beitrag # 6 von 15
Beitrag ID: #583655
Bewertung:
(1083 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,
wir könnten natürlich auch mogeln.
Etwas ExtendScript in Dein AppleScript einfügen und mit beispielsweise doScript zum Laufen bringen.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583644]

ID CS6: Objektstil ändern

Goar
Beiträge gesamt: 384

9. Jun 2022, 19:07
Beitrag # 7 von 15
Beitrag ID: #583658
Bewertung:
(1009 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

do script als Aufruf eines externen AppleScripts ist mir früher schon gelungen.
Hier ein »fremdsprachiges« Skript einzufügen ist für mich aber eine Nummer zu groß, zumal ich mich mit ExtendScript nicht auskenne.
Mit der oben zitierten Zeile konnte ich auch per do script nichts bewirken.

Kann ich dazu etwas Unterstützung bekommen?

Herzlich grüßt
Goar
---
> iMac 27" 3,2 GHz Intel Core i5, 8 GB, MacOS 10.11.6, QXP 2018, ID CS6 <
> iMac 27" 3,1 GHz Intel 6 Core i5, 16 GB, MacOS 10.15.5, QXP 2019/2020 <


als Antwort auf: [#583655]

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

13. Jun 2022, 13:40
Beitrag # 8 von 15
Beitrag ID: #583674
Bewertung:
(861 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,
lade doch 'mal eine Beispieldatei aus InDesign CS6 auf die Dropbox und stelle den Download-Link bereit. Ich schau' mir das mal mit meiner "ExtendScript-Brille" an. Falls es mit ExtendScript funktioniert, werden wir das auch mit AppleScript und der do script-Methode zum Laufen bringen.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583644]

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

13. Jun 2022, 21:23
Beitrag # 9 von 15
Beitrag ID: #583681
Bewertung:
(832 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ohne das testen zu können, glaube ich, dass hier der Hund begraben sein könnte:

Code
{anchored position:inline position} 


In ExtendScript jedenfalls braucht es für [b]anchoredPosition diesen Wert als Enumerator:
Code
{ 
anchoredPosition : AnchorPosition.INLINE_POSITION
}


Also fehlt möglicherweise ein Teil des Enumerators.
Aber frage mich bitte nicht wie da die genaue Syntax für AppleScript lautet.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583658]

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

13. Jun 2022, 21:46
Beitrag # 10 von 15
Beitrag ID: #583682
Bewertung:
(819 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,
falls ich mit meiner Vermutung mit dem Enumerator in AppleScript falsch liege, kann das Problem einfach daran liegen, dass nach der Änderung des Objektstils alle Elemente, die mit diesem Stil ausgezeichnet sind, trotzdem nicht auf die Veränderung reagieren, sondern einfach eine Abweichung im zugewiesenen Objektstil anzeigen.

Das ist jedenfalls mit ExtendScript der Fall, wenn ich diesen Teil des Codes laufen lasse:

Code
var doc = app.documents[0]; 
var objStyle = doc.objectStyles.itemByName("amerikPage");
if( objStyle.isValid )
{
objStyle.enableAnchoredObjectOptions = true ;
objStyle.anchoredObjectSettings.properties =
{
anchoredPosition : AnchorPosition.INLINE_POSITION
};

};


Um zum gewünschten Ergebnis zu kommen, braucht es noch eine Zutat.

Ich untersuche also alle Elemente der Datei und frage nach dem zugewiesenen Objektstil. Ist der geänderte Objektstil zugewiesen, dann weise ich ihn erneut zu mit einer Methode (Funktion), die die Abweichungen löscht.

Der untere Code zusätzlich zum obigen erledigt dann den Job:

Code
var allPageItems = doc.allPageItems; 
for( var n=0; n<allPageItems.length; n++ )
{
if( allPageItems[n].appliedObjectStyle == objStyle )
{
allPageItems[n].applyObjectStyle( objStyle , true );
};
};

*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583658]
(Dieser Beitrag wurde von Uwe Laubender am 13. Jun 2022, 21:48 geändert)

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

13. Jun 2022, 22:10
Beitrag # 11 von 15
Beitrag ID: #583683
Bewertung:
(802 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kommen wir zur Einschleusung des oben genannten ExtendScript-Codes über do script nach AppleScript. Vielleicht gelingt das einfach so:
Code
set myJavaScript to '''var doc = app.documents[0]; 
var objStyle = doc.objectStyles.itemByName("amerikPage");
if( objStyle.isValid )
{
objStyle.enableAnchoredObjectOptions = true ;
objStyle.anchoredObjectSettings.properties =
{
anchoredPosition : AnchorPosition.INLINE_POSITION
};

};

var allPageItems = doc.allPageItems;
for( var n=0; n<allPageItems.length; n++ )
{
if( allPageItems[n].appliedObjectStyle == objStyle )
{
allPageItems[n].applyObjectStyle( objStyle , true );
};
};'''

do script myJavaScript language javascript


Wobei ich unsicher bin, ob das Tripple-Fencing mit den drei einfachen Anführungen um den ExtendScript-Code herum gelingt. Falls nicht, müsste unschönerweise vielleicht so gearbeitet werden:

Code
set myJavaScript to "var doc = app.documents[0]; var objStyle = doc.objectStyles.itemByName('amerikPage'); if( objStyle.isValid ){ objStyle.enableAnchoredObjectOptions = true ; objStyle.anchoredObjectSettings.properties = { anchoredPosition : AnchorPosition.INLINE_POSITION};}; var allPageItems = doc.allPageItems; for( var n=0; n<allPageItems.length; n++ ) { if( allPageItems[n].appliedObjectStyle == objStyle ){allPageItems[n].applyObjectStyle( objStyle , true );};};''' 

do script myJavaScript language javascript

*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583658]

ID CS6: Objektstil ändern

Goar
Beiträge gesamt: 384

19. Jun 2022, 18:20
Beitrag # 12 von 15
Beitrag ID: #583711
Bewertung:
(554 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

schon interessant, ich konnte dein ExtendScript soweit verstehen, dass ich es in AS mit etwas Probieren nachbauen konnte:

Code
tell application "Adobe InDesign CS6" 
tell document 1
activate
set myObjStyle to object style "amerikPage"

-- Änderung am Objektstil »amerikPage« vornehmen
set anchObjSet to anchored object settings of properties of myObjStyle
set properties of anchObjSet to {anchored position:inline position}

-- alle page items aufnehmen
set allPageItems to all page items
set cntPI to length of allPageItems

-- allen page items, die mit dem object style formatiert sind …
repeat with i from 1 to cntPI
set curPI to object reference of item 1 of item i of allPageItems
set applObjStyle to applied object style of curPI
if (applObjStyle is myObjStyle) then
tell curPI -- … diesen object style noch einmal zuweisen
apply object style using myObjStyle
end tell
end if
end repeat

end tell
end tell


So hat es tatsächlich funktioniert.
Die Zuweisung {enable anchored object options:true} – wie auch immer sie zu verpacken sei – war offensichtlich nicht erforderlich.

Vielen Dank für deinen Einsatz und deine Geduld!
Goar
---
> iMac 27" 3,2 GHz Intel Core i5, 8 GB, MacOS 10.11.6, QXP 2018, ID CS6 <
> iMac 27" 3,1 GHz Intel 6 Core i5, 16 GB, MacOS 10.15.5, QXP 2019/2020 <


als Antwort auf: [#583683]

ID CS6: Objektstil ändern

Uwe Laubender
Beiträge gesamt: 5170

20. Jun 2022, 12:14
Beitrag # 13 von 15
Beitrag ID: #583721
Bewertung:
(478 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,
sehr schön, dass Du das nun in AppleScript hast umsetzen können.

Es sei noch angemerkt, dass das erneute Zuweisen des Objektstils bei anderen Änderungen des Objektstils nicht notwendig ist. Habe aber nicht getestet, ob Änderungen in den anchoredObjectSettings die einzige Ausnahme ist.

Auch gibt eine Alternative zur Methode adjustObjectStyle() in ExtendScript, um die Abweichungen loszuwerden.
Die Methode clearObjectStyleOverrides().
Code
allPageItems[n].clearObjectStyleOverrides(); 


Diese Methode sollte es auch unter AppleScript geben.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#583711]

ID CS6: Objektstil ändern

Hans Haesler
  
Beiträge gesamt: 5816

20. Jun 2022, 14:07
Beitrag # 14 von 15
Beitrag ID: #583722
Bewertung:
(438 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

Gratulation auch meinerseits, weil Du das Script zum Laufen gebracht hast.

Und nochmals herzlichen Dank an Uwe, für seine wertvollen Anstösse.

Urlaubsgrüsse aus Samos,
Hans


als Antwort auf: [#583721]

ID CS6: Objektstil ändern

Goar
Beiträge gesamt: 384

20. Jun 2022, 14:45
Beitrag # 15 von 15
Beitrag ID: #583725
Bewertung:
(415 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, Uwe, die Zeile

Code
apply object style using myObjStyle 


kann durch diese

Code
clear object style overrides 


ersetzt werden. Das ist vermutlich die sauberere Lösung.
Die werde ich dann auch in dem Skript verwenden.

Vielen Dank
Goar
---
> iMac 27" 3,2 GHz Intel Core i5, 8 GB, MacOS 10.11.6, QXP 2018, ID CS6 <
> iMac 27" 3,1 GHz Intel 6 Core i5, 16 GB, MacOS 10.15.5, QXP 2019/2020 <


als Antwort auf: [#583721]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/