ich hab hier ein Mini-Skript wo ich auf den Fehler leider nicht draufkomme: Folgende Situation: Es soll geprüft werden ob das aktuelle Bild sichtbar ist.
Sichtbar heißt für mich: Das Bild wurde direkt ausgeblendet oder es liegt auf einer ausgeblendeten Ebene.
Leider gibt mir der Code immer ein falsches Alert, also wenn das Bild sichtbar ist gibt er keine Meldung, wenn es unsichtbar ist gibt er es als sichtbar aus. Wo liegt der Fehler?
danke für den Hinweis. Aber leider ist das Ergebnis dasselbe.
Egal ob das Bild eingeblendet ist oder nicht: Mit NOT bekomme ich keine Meldung, Ohne NOT die Meldung dass das Bild nicht sichtbar ist. Das ist doch verkehrt rum oder?
Dein Code blendet das Bild aus, als alert erhalte ich "false".
In der Ebenenpalette hat aber das Bildobjekt das Auge sichtbar.
Jetzt sehe ich den Wald vor lauter Bäumen nicht mehr.
Ich glaube ich hab da was falsch verstanden von der Umsetzung her. Bedeutet "visible" nicht, dass das Objekt in der Ebenenpalette eingeblendet ist? Sind das 2 verschiedene Herangehensweisen? Man kann ja ein Objekt direkt ausblenden (command 3) oder über die Ebenenpalette. Bewirkt das nicht das selbe? Ich wollte testen ob das Objekt in der Ebenenpalette ausgeblendet ist, ging davon aus nicht sichtbar weil man es ja auch tatsächlich nicht sieht.
Hallo Werner, vielen Dank für deine Antwort. Ja wir nähern uns, allerdings bin ich noch nicht dort wo ich hin will :-)
Das Skript mit der Abfrage des itemlayers funktioniert nur insofern dass es richtig ausgibt sobald die gesamte Ebene ausgeblendet ist, nicht aber wenn nur das Bild auf der Unterebene ausgeblendet ist und die hierarchisch darüber liegende Ebene eingeblendet ist. Struktur: Ebene 1, auf Ebene 1 liegt das Bild. Ebene 1 und Bild ausgeblendet: funktioniert. Ebene 1 und Bild eingeblendet: funktioniert. Ebene 1 eingeblendet, Bild ausgeblendet: funktioniert nicht. Ebene 1 ausgeblendet, Bild eingeblendet: funktioniert nicht.
Ergänzend zu meinen letzen Beitrag, manchmal hilft ein wenig Nachdenken :-): 1. es gibt keine Sublayers 2. muss die Eigenschaft als im Objekt liegen. 3. die direkte Abfrage des Objektes funltioniert nicht, also ist die Eigenschaft mit dem Objekt verbunden, daraus folgt: Suche das Objekt auf der Ebene: object.itemLayer.objects.itemByID(object.id).visible sollte die gewünschte Information enthalten.
Wirklich spannend wird es allerdings, wenn sich Dein Objekt tief verschachtelt in einer Gruppe befindet.
Das wäre dann aber etwas für Fortgeschrittene -> rekursive Programmierung.
Hallo Jungs, wie wäre es mal mit Durchatmen? Oooom…
Zur Verwirrung:
Spezialfälle: [1] Grafikrahmen der Abbildung ist in Übersatztext. [2] Grafikrahmen ist Teil eines nicht aktiven Status ( Schaltfläche, MSO etc. ) [3] Grafik ist innerhalb des Grafikrahmens so verschoben, dass kein Teil von ihr zu sehen ist. [4] Ein Transparenteffekt macht die Grafik unsichtbar. [5] Die Grafik wird durche ein Element verdeckt.
Allgemein gilt:
Eine Grafik kann nur dann sichtbar sein, wenn die ihr übergeordnete Struktur sichtbar ist. Also der Grafikrahmen beispielsweise. Oder die Gruppe, deren Teil der Grafikrahmen ist. Oder der Textrahmen, in dem der Grafikrahmen verankert ist.
Mal die Spezialfälle nicht geprüft, könnte das ein möglicher Ansatz sein:
Ist der Rechner eingeschaltet? Ist InDesign geladen? Ist eine Datei geöffnet? Ist die Datei sichtbar? Ist die Datei aktiv? Ist die Seite sichtbar? Reicht der Zoomfaktor? Schaut der Anwender auf den Rechner?
Und dabei hatte Faxinger ursprünglich doch nur gefragt. wie man mit einer Und-Bedingung umgeht. :-)
Meistens steckt also das eigentlich Problem in der Frage.
Uwe, Du hast auf jeden Fall mal wieder die ganze Problematik einer vermeintlich einfachen Frage aufgezeigt.
Danke, hättest Du Dich doch nur schon um 9:35 Uhr zu Wort gemeldet.
Gruß Werner
der mal wieder auch der Suche nach einem verschwunden Vieableninhalt ist.
Hallo Werner, die Prüfung nach den geometricBounds einer Grafik sollte man in jedem Fall in mein obiges Skript noch einfügen. Für jede Grafik, die in einem sichtbaren Element steckt. Weshalb? Es könnten auch Tabellenzellen mit Grafiken überlaufen.
Hallo Uwe, hallo Werner! Danke für eure Beiträge. Keine Angst Uwe, alles im grünen Bereich, wir sind ganz entspannt. :-)
Mir war nicht bewusst, dass die Sichtbarkeit eines Objektes in diesem Fall eine Ebeneneigenschaft ist und nicht eine Eigenschaft des Objektes obwohl es ja beides gibt.
@Uwe: Ich werde deinen Code mal testen. Deine von dir erwähnten Spezialfälle sind mir bewusst, treten aber in meinem Beispiel nicht auf. Es geht immer darum ob die übergeordnete Struktur sichtbar ist. Es gibt keine unterschiedlichen Status, keine Verschiebungen oder Verdeckungen oder sonstigen Transparenzeffekte oder auch Verankerungen in Textfeldern. Es geht lediglich darum ob das Bild innerhalb der Ebenenpalette auf sichtbar oder unsichtbar gestellt wurde.
Danke nochmals ganz herzlich für eure Beiträge. LG faxinger
Äh. Diesen Satz würde ich so nicht unterschreiben; oder formulieren.
Die Sichtbarkeit eines Objekts kann zunächst mal eine von der Eigenschaft visible unabhängige Geschichte sein. Siehe auch meinen Ausnahmen-Katalog.
Wie ich bereits geschrieben habe:
Es kommt primär auf die Sichtbarkeit der übergeordneten Struktur an. Wenn diese gewährleistet ist, kann man das einzelne Objekt untersuchen. Auch deshalb prüfe ich layer.pageItem.allGraphics, um einer möglichen Verschachtelung Herr zu werden.
Man könnte natürlich auch mit doc.pageItems beginnen und auch pageItem.itemLayer.visible neben pageItem.visible prüfen. Da wären dann die Musterseiten automatisch einbezogen. Falls Du nur den sichtbaren Druckbogen auswerten wolltest, ob eine Grafik zu sehen ist, müssten wir mit app.documents[0].layoutWindows[0].activeSpread.pageItems beginnen und, je nach Zielsetzung, auch die angewendeten Musterseitenelemente noch hinzuziehen. ***** Mit herzlichem Gruß, Uwe Laubender
ja genau darum ging es mir auch. Wenn ich das Bildobjekt in der Ebenenpalette und nur dieses ausblende, dann ist auch eine etwaig vorhandene Struktur (Bild in Rahmen in Rahmen in Rahmen) nicht mehr sichtbar.
Mein Fall ist ja prinzipiell ganz einfach: Ist das Bild in der Ebenenpalette ausgeblendet worden, soll mir das Skript sagen dass es ausgeblendet ist. Wenn nicht dann nicht. Ohne Berücksichtigung eventueller Fälle, die natürlich sein könnten. Aber das war nicht das Ziel, hier alle möglichen Konstruktionen mit zu berücksichtigen.
Natürlich könnte ich auch noch prüfen ob das Bild überhaupt im Dokument vorhanden ist etc. Das ist aber alles nicht notwendig.
Falls "das Bild" im Verknüpfungen-Bedienfeld gelistet ist und Du möchtest wissen, ob das nun ausgeblendet ist, musst Du nur die Verknüpfung des Bildes dort auswählen und die Funktion "Gehe zu Verknüpfung" anwenden.
Im Falle eines ausgeblendeten Bildes wird Dich InDesign per Infokasten davon in Kenntnis setzen, dass das Bild sich entweder auf einer ausgeblendeten Ebene befindet oder dass es selbst ausgeblendet ist. ***** Mit herzlichem Gruß, Uwe Laubender
Die Tatsache ob das Bild eingeblendet ist oder nicht soll im weiteren Verlauf des Skriptes dann verwendet werden. Also der Wert true oder false wird dann ausgewertet und hat Auswirkungen wie das Skript dann weiterarbeitet. Das Nachsehen im Verknüpfungsbedienfeld ist mir natürlich bekannt.