[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt createOutlines(false) entstehendes Objekt zu fassen bekommen

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

createOutlines(false) entstehendes Objekt zu fassen bekommen

Uwe Laubender
Beiträge gesamt: 5312

8. Jul 2011, 11:59
Beitrag # 1 von 3
Bewertung:
(895 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen!
Ich quäle mich gerade mit folgendem Problem:
1. ausgewählter Text wird in Outlines gewandelt (den Originaltext behalte ich bei)
2. mit dem entstehenden Objekt soll weitergearbeitet werden

Code
//etwas Text ist ausgewählt: 
var _object = app.selection[0].createOutlines(false);

$.writeln("_object ist: "+_object); //_object ist: [object Polygon] ODER _object ist: [object Rectangle] ODER _object ist: [object Oval]
$.writeln("_object ID: "+_object.id); // _object ID: undefined


_object wird zwar beispielsweise als [object Polygon] erkannt, aber ich kann damit nicht mehr arbeiten. Die ID wird zum Beispiel als "undefined" ausgegeben.

Gut. Also probiere ich es mit einem Trick. Da das Objekt neu erstellt wird, müßte die ID-Nummer des pageItems die höchste aller pageItems sein:

//Highest ID of objects:

Code
HighestID = function(){ 
var _IDArray = [];
var _pageItems = app.activeDocument.pageItems;
for(var n=0;n<_pageItems.length;n++){
_IDArray.push(_pageItems[n].id);
};

_IDArray.sort(function(a,b){return a-b}).reverse();

return _IDArray[0];

};


Mit dieser ID-Nummer kann ich dann unmittelbar nach der Entstehung das Objekt direkt ansprechen:

Code
var _object = app.activeDocument.pageItems.itemByID(HighestID()); 
_object.do_something();


Ich frage mich, ob diese Methode wasserdicht ist oder ob es einfachere Methoden gibt das neu entstandene Objekt zu fassen zu bekommen.
Ideen? Anmerkungen?

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium
X

createOutlines(false) entstehendes Objekt zu fassen bekommen

Martin Fischer
  
Beiträge gesamt: 12775

8. Jul 2011, 12:37
Beitrag # 2 von 3
Beitrag ID: #475564
Bewertung:
(881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

meines Wissens gibt createOutlines() nicht ein Objekt, sondern einen Array mit einem Objekt zurück.

Teste also mal dies:
Code
var _object = app.selection[0].createOutlines(false)[0]; 



als Antwort auf: [#475550]

createOutlines(false) entstehendes Objekt zu fassen bekommen

Uwe Laubender
Beiträge gesamt: 5312

8. Jul 2011, 12:44
Beitrag # 3 von 3
Beitrag ID: #475566
Bewertung:
(879 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!

Danke. Das war's. Es wird tatsächlich ein Array zurückgegeben.

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium


als Antwort auf: [#475564]