Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » [share] Skript verschiebt Objekt ein Layer rauf/runter

[share] Skript verschiebt Objekt ein Layer rauf/runter

Stephan_M
Beiträge gesamt: 480

8. Mai 2008, 18:06
Bewertung:

gelesen: 6782

Beitrag als Lesezeichen
Juipee, hab mir ein Skript geschrieben. Skripten lernen macht freude. Vielleicht kann es jemand gebrauchen. Kritik herzlich willkommen. :)

Das Skript verschiebt die angewählten Objekt von Ihren Ebenen auf die jeweils nächst höhere, also eine Ebene hoch, oder eine Ebene runter. Praktisch auf nem Keyboard Shortcut. *Klack-Klack* und man hat das Objekt auf der gewünschten Ebene. Das muss man ja sonst immer umständlich mit der Maus in der Ebenenpalette machen.

Umschalt|Alt|ö, Umschalt|Alt|ä bieten sich an.

Code
// an InDesign CS3 JavaScript for moving an object to the next higher up layer 
// MoveToNextLayer uses Henryk Jursz framework of his "zerostepsonerepeat" skript for handling the selection
// modified by Stephan Möbius, may2008

//all script messages
myScriptIDC = "No InDesign documents are open or nothing is selected!";
MTNL_noSel = "Nothing is selected. \nPlease select object and try again.";

//is InDesign?
if ((app.name != "Adobe InDesign") || ((app.name == "Adobe InDesign") && (app.documents.length == 0)))
{
alert(myScriptIDC);
}
else if (app.selection.length != 0)
{
(app.version[0] < "4") ? (app.userInteractionLevel = UserInteractionLevels.interactWithAll) : (app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll);
MTNL_myObjects = new Array;
for(MTNL_myCounter = 0; MTNL_myCounter < app.selection.length; MTNL_myCounter++)
{
switch(app.selection[MTNL_myCounter].constructor.name)
{
case "Rectangle":
case "Polygon":
case "GraphicLine":
case "Oval":
case "TextFrame":
case "Group":
MTNL_myObjects.push(app.selection[MTNL_myCounter]);
}
}
if(MTNL_myObjects.length > 0)
{
for (MTNL_myObjectCounter=0; MTNL_myObjectCounter < MTNL_myObjects.length; MTNL_myObjectCounter++)
{
MTNL_myObject = MTNL_myObjects[MTNL_myObjectCounter];
var MTNL_myOBject_currentLayer = MTNL_myObject.itemLayer;
if ( MTNL_myOBject_currentLayer != app.activeDocument.layers.firstItem() ) {
var MTNL_myOBject_prevLayer = app.activeDocument.layers.previousItem(MTNL_myOBject_currentLayer);
// MTNL_myObject.itemLayer = app.activeDocument.layers.item('Graphics');
MTNL_myObject.itemLayer = MTNL_myOBject_prevLayer;
}
}
}
}
else
{
alert(MTNL_noSel);
} //end of MoveToLayer Script


Code
// an InDesign CS3 JavaScript for moving an object to the previous layer below 
// MoveToNextLayer uses Henryk Jursz framework of his "zerostepsonerepeat" skript for handling the selection
// modified by Stephan Möbius, may2008

//all script messages
myScriptIDC = "No InDesign documents are open or nothing is selected!";
MTNL_noSel = "Nothing is selected. \nPlease select object and try again.";

//is InDesign?
if ((app.name != "Adobe InDesign") || ((app.name == "Adobe InDesign") && (app.documents.length == 0)))
{
alert(myScriptIDC);
}
else if (app.selection.length != 0)
{
(app.version[0] < "4") ? (app.userInteractionLevel = UserInteractionLevels.interactWithAll) : (app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll);
MTNL_myObjects = new Array;
for(MTNL_myCounter = 0; MTNL_myCounter < app.selection.length; MTNL_myCounter++)
{
switch(app.selection[MTNL_myCounter].constructor.name)
{
case "Rectangle":
case "Polygon":
case "GraphicLine":
case "Oval":
case "TextFrame":
case "Group":
MTNL_myObjects.push(app.selection[MTNL_myCounter]);
}
}
if(MTNL_myObjects.length > 0)
{
for (MTNL_myObjectCounter=0; MTNL_myObjectCounter < MTNL_myObjects.length; MTNL_myObjectCounter++)
{
MTNL_myObject = MTNL_myObjects[MTNL_myObjectCounter];
var MTNL_myOBject_currentLayer = MTNL_myObject.itemLayer;
if ( MTNL_myOBject_currentLayer != app.activeDocument.layers.lastItem() ) {
var MTNL_myOBject_nextLayer = app.activeDocument.layers.nextItem(MTNL_myOBject_currentLayer);
// for selecting a certain layer--- MTNL_myObject.itemLayer = app.activeDocument.layers.item('Graphics');
MTNL_myObject.itemLayer = MTNL_myOBject_nextLayer;
}
}
}
}
else
{
alert(MTNL_noSel);
} //end of MoveToLayer Script


mit freundlichem Gruß,
Stephan Möbius

(Dieser Beitrag wurde von Stephan_M am 8. Mai 2008, 18:15 geändert)

[share] Skript verschiebt Objekt ein Layer rauf/runter

Stephan_M
Beiträge gesamt: 480

27. Feb 2009, 13:27
Bewertung:

gelesen: 6315

Beitrag als Lesezeichen
[UPDATE, Febr. 2009] - InDesign CS3/CS4 Javascript

- verschiebt alle selektierten Objekte auf die für sie jeweils nächst höhere, beziehungsweise tiefere UNABGESCHLOSSENE Ebene. Vorher gab's hier Fehler.
Nachwievor super auf ALT-SHIFT-Ä und ALT-SHIFT-Ö.

Skripte siehe Anhang.

Liebe Grüße,
Stephan

Anhang:
MoveToNextLayer.jsx (1.80 KB)   MoveToPrevLayer.jsx (1.81 KB)

[share] Skript verschiebt Objekt ein Layer rauf/runter

Sacha Heck
Beiträge gesamt: 3281

27. Feb 2009, 15:08
Bewertung:

gelesen: 6302

Beitrag als Lesezeichen
Hi Stephan,

Danke fürs Sharen :-) und Kompliment für deine Ausdauer dich mit
dem Thema Skripten zu beschäftigen ;-)

Viele Grüße,
Sacha



mediengestalter.lu

[share] Skript verschiebt Objekt ein Layer rauf/runter

desertman
Beiträge gesamt: 365

27. Feb 2009, 16:47
Bewertung:

gelesen: 6279

Beitrag als Lesezeichen
... habe gerade in dieser Woche staendig Objekte verschieben muessen und fand das ueber die Palette sehr laestig und habe mir gewuenscht, dass das doch ueber einen Shortcut moeglich waere. Da kommt dein Skript wortwoertlich "wie gerufen". Vielen Dank!

Grüße - desertman
----------------------------------------------------------------------------
Mac mini 2.3 GHz i7; 16 GB RAM; OS X 10.12.x [US]; Creative Suite CC [US]

[share] Skript verschiebt Objekt ein Layer rauf/runter

bb99
Beiträge gesamt: 2

24. Mär 2016, 09:39
Bewertung:

gelesen: 3600

Beitrag als Lesezeichen
Hallo,

bin auf CC 2015 umgestiegen. Jetzt funktionieren die beiden Scripte nicht mehr - habe mich aber über Jahre an sie gewöhnt, kann nicht mehr OHNE. Kann jemand helfen?

====
Fehler 55
Fehlerzeichenfolge: Object does not support the property or method 'userInteractionLevel'
Zeile 15
====

[share] Skript verschiebt Objekt ein Layer rauf/runter

Hans Haesler
  
Beiträge gesamt: 5826

24. Mär 2016, 20:44
Bewertung:

gelesen: 3512

Beitrag als Lesezeichen
Hallo bb99,

herzlich willkommen in der Skriptwerkstatt auf HilfDirSelbst! :-)

Mit ...

Code
alert (app.version[0]); 

... ist das Ergebnis "1". Also kleiner als die gegebene "4".
Obwohl die Version Deines Programms höher ist.

Nämlich:
Code
alert (app.version); 

ergibt "11.3.0.34"

Mit der [0] wird nur das erste Zeichen zurückgegeben.

Radikale Abhilfe: Die Zeile 15 so kürzen:

Code
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; 

Zusätzliche, kosmetische Korrektur: Auch in der ersten Zeile das "CS3/CS4" ändern.

Gruss, Hans

[share] Skript verschiebt Objekt ein Layer rauf/runter

bb99
Beiträge gesamt: 2

29. Mär 2016, 10:17
Bewertung:

gelesen: 3299

Beitrag als Lesezeichen
1a

So funktioniert es wieder. Besten Dank :-)