[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Objektinhalt = "Image" ?

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

Objektinhalt = "Image" ?

Bartholome
Beiträge gesamt:

27. Mai 2011, 09:22
Beitrag # 1 von 7
Bewertung:
(2244 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

mit

Code
var myObjectType = app.selection; 
alert(myObjectType);


kann ich auslesen, ob das selectierte Objekt ein
[object Rectangle]
[object TextFrame]
[object Oval] usw. ist;

wie bekomme ich die Information, das der Objektinhalt ein "Image" enthält?

Gruß
Bartholome
X

Objektinhalt = "Image" ?

Martin Fischer
  
Beiträge gesamt: 12714

27. Mai 2011, 09:33
Beitrag # 2 von 7
Beitrag ID: #472453
Bewertung:
(2243 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Bartholome,


Antwort auf: kann ich auslesen, ob das selectierte Objekt ein


Prüfe den Konstruktor des ersten ausgewählten Objekts (bzw. dessen Name).
Code
$.writeln( app.selection[0].constructor ); 
$.writeln( app.selection[0].constructor.name );



Antwort auf: wie bekomme ich die Information, das der Objektinhalt ein "Image" enthält?


Ermittle die Zahl (length) der enthaltenen Bilder (wenn > 0, dann Bild enthalten).
Code
app.selection[0].images.length; 



als Antwort auf: [#472452]
(Dieser Beitrag wurde von Martin Fischer am 27. Mai 2011, 09:36 geändert)

Objektinhalt = "Image" ?

Bartholome
Beiträge gesamt:

27. Mai 2011, 10:56
Beitrag # 3 von 7
Beitrag ID: #472470
Bewertung:
(2210 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin.

Ist das so "in etwa" richtig?

Code
var myObjectType = app.selection[0]; 
app.select(myObjectType);

if (app.selection[0].constructor.name == "Group") {
alert (app.selection[0].constructor.name);
alert("Inhalt ist kein Bild");
}
else if (myObjectType.images.length > 0){
alert("Inhalt ist ein Bild");
}


Ich möchte nur eine "Reaktion" wenn der "myObjectType" ein "Image" ist. Wenn es z.B. eine Gruppe ist, soll gar nichts "passieren".

Gruß
Bartholome


als Antwort auf: [#472453]

Objektinhalt = "Image" ?

Martin Fischer
  
Beiträge gesamt: 12714

27. Mai 2011, 11:16
Beitrag # 4 von 7
Beitrag ID: #472473
Bewertung:
(2205 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Bartholome,

im Prinzip sollte das so gehen.

Ein paar Kleinigkeiten:
1. Welche Absicht steckt hinter app.select(myObjectType); ?
Sicherstellen, dass nur ein Objekt aus eventuell mehreren ausgewählten Objekten ausgewählt wird?

2. Der Variablenname myObjectType ist m.E. nicht optimal gewählt und könnte anderswo in die Irre führen. Es handelt sich schließlich nicht um einen Objekttypen, sondern um ein Objekt, das untersucht (u.a. nach seinem Typ) wird.

3. Bei else if (myObjectType.images.length > 0){ solltest Du zunächst prüfen, ob das ausgewählte Objekt überhaupt images haben kann. Sonst führt die Prüfung der Zahl der images z.B. in einem ausgewählten Textrahmen zu einem Fehler.
Code
else if (myObjectType.hasOwnProperty('images') && myObject.images.length > 0){ 



als Antwort auf: [#472470]

Objektinhalt = "Image" ?

Bartholome
Beiträge gesamt:

27. Mai 2011, 11:42
Beitrag # 5 von 7
Beitrag ID: #472475
Bewertung:
(2191 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin.

Zu 1. - Ja.

Zu 2. - ist "IfObjectImage" i.O. ?

Zu 3. - Danke, hab ich geändert.

Gruß
Bartholome


als Antwort auf: [#472473]

Objektinhalt = "Image" ?

Martin Fischer
  
Beiträge gesamt: 12714

27. Mai 2011, 12:13
Beitrag # 6 von 7
Beitrag ID: #472478
Bewertung:
(2174 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Variablenname ist nach Deinem Belieben.

Er sollte allerdings für Dich auch in anderem Kontext und zu einer anderen Zeit, wenn Du den Code später mal schnell überfliegst, nachvollziebar sein.

Du kannst bei Deinem Namen bleiben, wenn es so Deiner Konvention entspricht.


Ich persönlich würde wohl eher einen Namen wie
myObject,
sel_obj (ausgewählten Objekt)

oder einfach
o (= object) oder
s (= selection)

wählen.


als Antwort auf: [#472475]

Objektinhalt = "Image" ?

Uwe Laubender
Beiträge gesamt: 5293

27. Mai 2011, 15:50
Beitrag # 7 von 7
Beitrag ID: #472512
Bewertung:
(2151 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Bartholome!
Selbst beim Typ Gruppe kann es sich dennoch um ein Bild handeln. Wie denn das?

Das ist zwar ein absoluter Spezialfall, aber es ist nicht auszuschließen, dass per Skript (nicht per Userinterface) von einer Gruppe alle Objekte bis auf eines entfernt werden und ein Rechteck mit einem Bild übrigbleibt. Vom Typ her ist die Auswahl dann trotzdem noch eine Gruppe…

Also, die Schlußfolgerung "Inhalt ist kein Bild" im Alert, wenn der constructor.name "Group" ist, kann angezweifelt werden…

Beispiel: Neues Dokument mit einer Seite anlegen, auf der ausschleßlich zwei Bilder platziert sind (nicht gruppieren). Laß dann mal folgendes Script laufen. Ergebnis: eine Gruppe mit einem Element bleibt auf der Seite zurück.

Code
var d = app.activeDocument; 
var p = d.pages[0];
var id = p.rectangles[0].id;
d.pages[0].groups.add([p.rectangles[0],p.rectangles[1]]);
app.activeDocument.pageItems.itemByID(id).remove();


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


als Antwort auf: [#472470]
X