[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Objektebenenoptionen per Skript ändern (Optionen)

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

Objektebenenoptionen per Skript ändern (Optionen)

hansmaulwurf90
Beiträge gesamt: 6

9. Mär 2011, 15:45
Beitrag # 1 von 8
Bewertung:
(23506 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich möchte mir einem Skript, welches bereits von allen in ein Indesign-Dokument verknüpfte Bilder (Illustrator) die Ebene ändert, auch die "Optionen für Verknüpfungsaktualisierung" verändern. Diese ist per Default auf "Ebenensichtbarkeit von PDF verwenden", ich möchte diese Optionen jedoch auf "Benutzerdefinierte Ebenensichtbarkeit beibehalten" schalten. Jedoch habe ich keine Ahnung wie ich diese Option in dem Skript umsetzen soll. Anbei das Skript:
Code
var myLinks = app.activeDocument.links;   
var newLang = "DE";
avaiLangs = new Array("DE", "GB", "ES", "FR", "IT", "NL", "DK", "FI", "SE");
for ( var i = 0; i < myLinks.length; i++ )
{
if ( myLinks[i].parent.hasOwnProperty('graphicLayerOptions') ) {
checkLayers( myLinks[i], newLang);
}

}
alert("Sprachumstellung abgeschlossen!");
function checkLayers( oneLink, newLang)
{
for ( var n = 0; n < avaiLangs.length; n++ ){
var myObjectLayers = oneLink.parent.graphicLayerOptions.graphicLayers;
if ( myObjectLayers.itemByName(avaiLangs[n]).isValid)
{ myObjectLayers.itemByName(avaiLangs[n]).currentVisibility = false;


}

}
if ( myObjectLayers.itemByName(newLang).isValid){
myObjectLayers.itemByName(newLang).currentVisibility = true;
}

}


Ich hoffe mir kann jemand helfen.
Danke!

LG
Sebastian

(Dieser Beitrag wurde von hansmaulwurf90 am 9. Mär 2011, 15:56 geändert)
X

Objektebenenoptionen per Skript ändern (Optionen)

hansmaulwurf90
Beiträge gesamt: 6

9. Mär 2011, 16:23
Beitrag # 2 von 8
Beitrag ID: #466597
Bewertung:
(23443 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab es jetzt mit:
Code
myLinks[i].parent.graphicLayerOptions.updateLinkOptions =  UpdateLinkOptions.KEEP_OVERRIDES; 


Hab es in die erste If-Anweisung, kommt aber immer eine Fehlermeldung#: Objekt unterstützt Eigenschaft oder Methode nicht.


als Antwort auf: [#466591]

Objektebenenoptionen per Skript ändern (Optionen)

hansmaulwurf90
Beiträge gesamt: 6

10. Mär 2011, 08:27
Beitrag # 3 von 8
Beitrag ID: #466621
Bewertung:
(23394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok habe es hinbekommen, einfach in die erste If-Anweisung folgende Zeile:

Code
myLinks[i].parent.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.keepOverrides; 



als Antwort auf: [#466597]

Objektebenenoptionen per Skript ändern (Optionen)

Martin Fischer
  
Beiträge gesamt: 12685

10. Mär 2011, 09:09
Beitrag # 4 von 8
Beitrag ID: #466624
Bewertung:
(23386 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sebastian,

Du bist mir mit Deiner Antwort zuvorgekommen.

Lag es tatsächlich nur am Underscore in UpdateLinkOptions.KEEP_OVERRIDES, der in der Skriptreferenz so enthalten ist?

Hattest Du's zwischendurch auch mal mit dem Enumerator 1819241327 versucht?


als Antwort auf: [#466621]

Objektebenenoptionen per Skript ändern (Optionen)

Martin Fischer
  
Beiträge gesamt: 12685

10. Mär 2011, 09:24
Beitrag # 5 von 8
Beitrag ID: #466628
Bewertung:
(23383 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sebastian,

hab's nun selbst nachgestellt.

Der Fehler liegt nicht am Underscore.
Der liegt im Plural-s:

Code
myLinks[i].parent.graphicLayerOptions.updateLinkOptions = UpdateLinkOptions.KEEP_OVERRIDES; 


Das muss so lauten:
Code
myLinks[i].parent.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.KEEP_OVERRIDES; 


In Deinem zweiten Schnippsel hattest auch Du das Plural-s nicht mehr drin.


Hier das aktualisierte Skript, das ich interessant und nützlich finde.
Danke dafür.

Code
var myLinks = app.activeDocument.links;    
var avaiLangs = new Array("DE", "GB", "ES", "FR", "IT", "NL", "DK", "FI", "SE");
//var avaiLangs = app.activeDocument.layers.everyItem().name;
var newLang = prompt(avaiLangs.join(', '), "DE");

for ( var i = 0; i < myLinks.length; i++ )
{
if ( myLinks[i].parent.hasOwnProperty('graphicLayerOptions') )
{
myLinks[i].parent.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.KEEP_OVERRIDES;
checkLayers( myLinks[i], newLang);
}
}
alert("Sprachumstellung abgeschlossen!");

function checkLayers( oneLink, newLang)
{
for ( var n = 0; n < avaiLangs.length; n++ )
{
var myObjectLayers = oneLink.parent.graphicLayerOptions.graphicLayers;
if ( myObjectLayers.itemByName(avaiLangs[n]).isValid)
{
myObjectLayers.itemByName(avaiLangs[n]).currentVisibility = false;
}
}
if ( myObjectLayers.itemByName(newLang).isValid)
{
myObjectLayers.itemByName(newLang).currentVisibility = true;
}
}



als Antwort auf: [#466624]
(Dieser Beitrag wurde von Martin Fischer am 10. Mär 2011, 09:46 geändert)

Objektebenenoptionen per Skript ändern (Optionen)

tomwal
Beiträge gesamt: 29

2. Dez 2011, 09:49
Beitrag # 6 von 8
Beitrag ID: #485616
Bewertung:
(22480 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo zusammen,

versuche gerade das Script so zu editieren, daß nur beim aktivierten Objekt die Ebenenoptionen eingestellt werden.

Code
#target Indesign 
var myDoc = app.activeDocument;
var myLink = app.selection[0].graphics[0];

var avaiLangs = new Array("DE", "GB");
//var avaiLangs = app.activeDocument.layers.everyItem().name;
var newLang = (avaiLangs.join(', '), "FR");

if ( myLink.getElements()[0].constructor.name == "Image") {
}
if ( myLink.parent.hasOwnProperty('graphicLayerOptions') )
{
myLink.parent.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.KEEP_OVERRIDES;
checkLayers( myLink, newLang);
}

function checkLayers( oneLink, newLang)
{
for ( var n = 0; n < avaiLangs.length; n++ )
{
var myObjectLayers = oneLink.parent.graphicLayerOptions.graphicLayers;
if ( myObjectLayers.itemByName(avaiLangs[n]).isValid)
{
myObjectLayers.itemByName(avaiLangs[n]).currentVisibility = false;
}
}
if ( myObjectLayers.itemByName(newLang).isValid)
{
myObjectLayers.itemByName(newLang).currentVisibility = true;
}
}


Leider funktioniert es nicht, weiß jemand woran es liegt?

Gruß tomwal


als Antwort auf: [#466591]

Objektebenenoptionen per Skript ändern (Optionen)

Martin Fischer
  
Beiträge gesamt: 12685

2. Dez 2011, 10:36
Beitrag # 7 von 8
Beitrag ID: #485619
Bewertung:
(22460 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Tomwal,

was ist ein aktives Objekt?
Ist damit ein ausgewähltes Bild gemeint?

Dann sollte es so funktionieren:
Code
 
#target Indesign
var myDoc = app.activeDocument;
var myImage = app.selection[0].graphics[0];

var avaiLangs = new Array("DE", "GB");
//var avaiLangs = app.activeDocument.layers.everyItem().name;
var newLang = (avaiLangs.join(', '), "FR");

if ( myImage.constructor.name == "Image") {
}
if ( myImage.hasOwnProperty('graphicLayerOptions') )
{
myImage.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.KEEP_OVERRIDES;
checkLayers( myImage, newLang);
}

function checkLayers( oneImage, newLang)
{
for ( var n = 0; n < avaiLangs.length; n++ )
{
var myObjectLayers = oneImage.graphicLayerOptions.graphicLayers;
if ( myObjectLayers.itemByName(avaiLangs[n]).isValid)
{
myObjectLayers.itemByName(avaiLangs[n]).currentVisibility = false;
}
}
if ( myObjectLayers.itemByName(newLang).isValid)
{
myObjectLayers.itemByName(newLang).currentVisibility = true;
}
}


Wenn's den Test besteht, dann solltest Du am Anfang allerdings noch eine Prüfung einbauen, ob überhaupt etwas ausgewählt ist und ob das, was ausgewählt ist, Graphiken enthält.


als Antwort auf: [#485616]

Objektebenenoptionen per Skript ändern (Optionen)

tomwal
Beiträge gesamt: 29

5. Dez 2011, 13:19
Beitrag # 8 von 8
Beitrag ID: #485749
Bewertung:
(22416 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
funktioniert wie gewünscht,
hab eine try Schleife eingebaut, wenn: a) versehentlich das Inhaltswerkzeug verwendet wurde - oder: b) kein Bild aktiv ist - wird eine Meldung ausgegeben.

vielen Dank
tomwal


als Antwort auf: [#485619]
X

Aktuell

InDesign / Illustrator

| 23.05.2022

IDUG_300

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
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/