[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Ausgewähltes Objekt aus Verankerung lösen

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

Ausgewähltes Objekt aus Verankerung lösen

Uwe Laubender
Beiträge gesamt: 5316

21. Jan 2012, 13:46
Beitrag # 1 von 5
Bewertung:
(16004 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!

Folgender Artikel auf InDesignSecrets.com stellt ein Script von Dave Saunders vor, das ausgewählte Inline-Objekte aus ihrer Verankerung löst und an ihrer ursprünglichemn Position stehenläßt:

http://indesignsecrets.com/releasing-inlines.php

Dave schreibt selbst in einem der Kommentare, dass dieses Script nur eine Studie ist und noch etliche Schwächen aufweist:

1. Erst ab InDesign CS5 lauffähig
2. Objekte auf dem pasteboard können nicht gelöst werden

Zusätzliche Einschränkung (noch nicht in den Kommentaren erwähnt):
3. Werden Objekte innerhalb von verankerten Gruppen ausgewählt, können diese ebenfalls nicht gelöst werden

Ich habe nun versucht mit einem anderen Konzept alle diese Punkte aufzuarbeiten. Mein Script löst zusätzlich auch benutzerdefinierte, verankerte Objekte und positioniert diese an ihre ursprüngliche Position.

Zusätzlich kann das Ganze in einem Rutsch rückgängig gemacht werden.

Ich bitte um ausgiebige Tests mit InDesign CS4, CS5 und CS5.5. Vielleicht nützt es der/dem Einen oder Anderen von euch.

Ein wenig Bauchgrimmen habe ich mit der Funktion ancestorIsCharacter(_object), in der ich eine while-Schleife benutze, um festzustellen, ob ein ausgewähltes Objekt teil einer verankerten Gruppe ist.

Nach langer Vorrede hier das Script:

Code
//ReleaseInLineOrAnchoredObjectAtSamePosition.jsx 
//Uwe Laubender
/**
* @@@BUILDINFO@@@ ReleaseInLineOrAnchoredObjectAtSamePosition.jsx !Version! Sat Jan 21 2012 13:25:59 GMT+0100
*/

//For InDesign CS4, CS5, CS5.5

//DESCRIPTION:Releases an selected inline or anchored object. Does not change position of the object. Undo in one step.

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

if(parseFloat(app.version)<6){
alert("Your InDesign app version should be version 6 (CS4) or above!");
exit();
};

if(parseFloat(app.version)>7.6){
alert("Script is not tested for InDesign above version 7.5 (CS5.5)");
exit();
};

if(app.selection.length === 1 && ancestorIsCharacter(app.selection[0])){
app.doScript(_ReleaseInlineObject, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, "Release inline object");
}
else(alert("Select an inline or anchored object you want to release!"));


function _ReleaseInlineObject(){

var _oldRulerOrigin = app.documents[0].viewPreferences.rulerOrigin;

app.documents[0].viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN;

var _sel = app.selection[0];
var _selBounds = _sel.geometricBounds;
var _releasedObject = _sel.duplicate();
_sel.remove();

_releasedObject.geometricBounds = _selBounds;

app.documents[0].viewPreferences.rulerOrigin = _oldRulerOrigin;

//If you want to work on with the released object, we select it:
app.select(_releasedObject);

};

//If ancestor of _object is Character, function returns "true":
function ancestorIsCharacter(_object){

if(_object.parent instanceof Character){return true};

while(_object.parent instanceof Group){
_object = _object.parent;
if(_object.parent instanceof Character){
return true};
};
return false;
};

X

Ausgewähltes Objekt aus Verankerung lösen

Hans Haesler
  
Beiträge gesamt: 5826

21. Jan 2012, 21:16
Beitrag # 2 von 5
Beitrag ID: #488257
Bewertung:
(15969 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

CS5, einfaches Testdokument: eine A4-Seite, ein Textrahmen mit Platzhaltertext gefüllt; ein Bildrahmen (59 x 39 mm), ein Bild enthaltend; mit Kopieren/Einsetzen verankert. Diesen Bildrahmen ausgewählt, das Script gestartet.
Ergebnis: Der Bildrahmen ist gelöst. Aber das Bild ist komplett verschoben. Wenn man es lokalisiert (durch Klick auf den Donut) dann erscheint die braune Begrenzung aliniert am linken Seitenrand. Vertikal ist der obere Rand auf 109.5 mm positioniert.

Zweiter Test: Zurück zur letzten Version; den Textrahmen nach unten verschoben; den Bildrahmen ausgewählt; das Script gestartet.
Ergebnis: Bild verschoben. An dieselbe Stelle wie beim ersten Mal.

Dritter Test: In den "Optionen für verankertes Objekt" die Checkbox "Manuelle Position verhindern" aktiviert.
Ergebnis: Eine Fehlermeldung ("Objekt ist gesperrt").

Gruss, Hans


als Antwort auf: [#488238]

Ausgewähltes Objekt aus Verankerung lösen

drerol74
Beiträge gesamt: 507

21. Jan 2012, 22:17
Beitrag # 3 von 5
Beitrag ID: #488260
Bewertung:
(15950 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

bei mir tritt ein ähnliches Verhalten auf, wie schon von Hans beschrieben.

Wenn die Koordinaten direkt bei der Erzeugung übergeben werden, funktioniert es bei mir:

Code
...  
var _selBounds = _sel.visibleBounds;
var _newBounds = [_selBounds[1],_selBounds[0]];
var _releasedObject = _sel.duplicate(_newBounds);
...


Schöne Grüße
Roland


als Antwort auf: [#488238]
(Dieser Beitrag wurde von drerol74 am 21. Jan 2012, 22:27 geändert)

Ausgewähltes Objekt aus Verankerung lösen

Uwe Laubender
Beiträge gesamt: 5316

21. Jan 2012, 22:45
Beitrag # 4 von 5
Beitrag ID: #488261
Bewertung:
(15936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans & Roland!

Danke für die Tests.
Werde mich morgen um die Korrekturen kümmern.
Schönen Abend noch!


als Antwort auf: [#488260]

Ausgewähltes Objekt aus Verankerung lösen

Uwe Laubender
Beiträge gesamt: 5316

22. Jan 2012, 11:50
Beitrag # 5 von 5
Beitrag ID: #488275
Bewertung:
(15888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Roland!
Ich habe Deinen Vorschlag getestet. Leider nur mit mäßigem Erfolg.

Testdaten (InDesign CS5.5 v7.5.5.2):
Grafikrahmen mit platzierter Abbildung leicht gedreht (6° CCW) in Textrahmen eingefügt. Nach Ausführung des Scripts bleibt die Abbildung korrekt positioniert innerhalb des Grafikrahmens, aber das gelöste Objekt war nicht mehr an exakt der gleichen Stelle.

Es gab einen vertikalen Versatz nach oben. Bei unterschiedlichen Drehwinkeln fällt dieser unterschiedlich aus.


als Antwort auf: [#488260]
X