Connect failed: Connection timed out

[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:
(24466 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:
(24403 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:
(24354 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: 12779

10. Mär 2011, 09:09
Beitrag # 4 von 8
Beitrag ID: #466624
Bewertung:
(24346 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: 12779

10. Mär 2011, 09:24
Beitrag # 5 von 8
Beitrag ID: #466628
Bewertung:
(24343 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:
(23440 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: 12779

2. Dez 2011, 10:36
Beitrag # 7 von 8
Beitrag ID: #485619
Bewertung:
(23420 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:
(23376 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