| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Objektsichtbarkeit in Blockreferenz eines Dynamischen Blocks ermitteln (1121 mal gelesen)
|
Andreas Widmann Mitglied ATHENA Support/Training
Beiträge: 218 Registriert: 24.08.2005
|
erstellt am: 20. Okt. 2015 14:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, Ich möchte für ein Entity innerhalb eines Dynamischen Blocks mit Sichtbarkeitssteuerung ermitteln ob dieses sichtbar ist. Und zwar für jede Platzierung des Dynamischen Blocks. Wie ich an die Platzierungen des Dynamischen Blocks herankomme, es sind ja unbenannte Blöcke, weis ich soweit. Doch wie kann ich für ein Entity darin ermitteln ob es sichtbar ist. Beispiel: Der Block ist 3x platziert, zwei mal ist die Linie zu sehen, einmal nicht. Gewünschtes Ergebnis: 2x true und einmal false Hat mir einer ne zündende Idee? Ich finde leider keinen Ansatz dazu. Dankeschön! ------------------ Gruß Andreas ------------------------------------------------------------------------------------------------------------------------------------ Die Antwort ist 42! Die Antwort ist 42! Die Antwort ist 42! ...wenn ich nur die Frage wüsste... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 20. Okt. 2015 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Widmann
|
Andreas Widmann Mitglied ATHENA Support/Training
Beiträge: 218 Registriert: 24.08.2005
|
erstellt am: 20. Okt. 2015 15:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, du hast mich vermutlich auf ein grundlegendes Problem bei mir gebracht: - ich habe die ObjectID des Entity welches sich im Block befindet - diese ObjectID ist aber für alle Platzierungen gleich Wenn sie aber für jede Platzierung gleich ist, kann gar kein unterschiedliches Ergebnis raus kommen. Ich brauch also einen anderen Ansatz.
------------------ Gruß Andreas ------------------------------------------------------------------------------------------------------------------------------------ Die Antwort ist 42! Die Antwort ist 42! Die Antwort ist 42! ...wenn ich nur die Frage wüsste... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 20. Okt. 2015 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Widmann
die Grundsätze, dass ein Block in all seinen Referenzen gleich ist, gelten auch bei den dynamischen Blöcken. Sieht ein Block in einem Sichtbarkeitsstatus anders aus, so wird ein anonymer Block angelegt, für den dann das oben gesagte gilt. du musst dann eben die anonymen Blöcke untersuchen, auf denen die aktuell untersuchte Blockreferenz basiert. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Widmann Mitglied ATHENA Support/Training
Beiträge: 218 Registriert: 24.08.2005
|
erstellt am: 20. Okt. 2015 15:48 <-- editieren / zitieren --> Unities abgeben:
Ah, ok, das bedeutet dann, ich muss zuerst den anonymen Block finden welcher die Platzierung wiederspiegelt. Dann davon den Blocktablerecord abrufen und nachsehen ob dort das Entity vorhanden ist. Richtig? Weist du ob ich davon ausgehen kann, dass das Entity welches sich im Blocktablerecord des anonymen Blocks befindet die gleiche ID besitzt (sofern dort überhaupt vorhanden) wie es sie auch im Blocktablerecord des ursprünglichen Dynamischen Blocks hat? ------------------ Gruß Andreas ------------------------------------------------------------------------------------------------------------------------------------ Die Antwort ist 42! Die Antwort ist 42! Die Antwort ist 42! ...wenn ich nur die Frage wüsste... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 20. Okt. 2015 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Widmann
... IDs sind innerhalb einer Zeichnung eindeutig. D.h. Dein Objekt wird definitiv eine andere Id haben. Was hast du konkret vor? Dein Ansatz scheint mir nicht ganz stimmig zu sein. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Widmann Mitglied ATHENA Support/Training
Beiträge: 218 Registriert: 24.08.2005
|
erstellt am: 20. Okt. 2015 16:12 <-- editieren / zitieren --> Unities abgeben:
ok, ich versuche es nochmal genauer zu erläutern. Ich habe eine Palette kreiert welche eine Auflistung aller verwendeten Verbindungsmittel (Proxy Entity) und deren Abmessungen der aktuellen Zeichnung auflistet. Der User soll dann in der Lage sein eine der Abmessungen auszuwählen und durch zappen an jede Stelle zu springen an der das gewählte Verbindungsmittel dargestellt ist. Dazu durchforstet mein Tool einfach alle Blocktablerecord der DB nach den Verbindungsmitteln (in bisherigen Posts Entity genannt), listet alle Gefundenen auf und merkt sich im Hintergrund die zugehörige ID. Um an jede Stelle zoomen zu können berechne ich über die jeweiligen Elternblöcke und deren Transformation die tatsächliche Modellposition und zoome darauf. Somit kann ich auch auf Verbindungsmittel in verschachtelten Blöcken zuverlässig zoomen. ALLERDINGS: Das tut es auch bei Dynamischen Blöcken mit Sichtbarkeitsstatus wenn das Verbindungsmittel durch die Sichtbarkeit gar nicht zu sehen ist. Mein Tool zoomt dann an die Position "an der es wäre wenn es denn sichtbar wäre". Für den User sieht es aber nach einem Fehler aus weil quasi ins Leere gezoomt wird. Daher möchte ich bevor ich dorthin zoome prüfen ob das Verbindungsmittel an dieser Stelle denn überhaupt zu sehen ist und falls nicht, soll mein Tool einfach zum nächsten springen und dorthin zoomen. Ich hoffe ich konnte den Sachverhalt diesmal verständlich ausdrücken. ------------------ Gruß Andreas ------------------------------------------------------------------------------------------------------------------------------------ Die Antwort ist 42! Die Antwort ist 42! Die Antwort ist 42! ...wenn ich nur die Frage wüsste... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 20. Okt. 2015 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Widmann
... dann prüfe beim Erstellen der Liste, od Bref selbst sichtbar ist und ob die Refernzen des Elternblocks sichtbar sind, rekursiv natürlich. Dir ist aber schon klar, dass es durch die beliebige Verschachtelung zu einer Referenz mehrere sichtbare Objekte geben kann? Dein Vorhaben ist nicht trivial, da du eigentlich zu jedem Listeneintrag die übergeordnete Struktur speichern musst, um dann tatsächlich auf alle Objekte zoomen zu können. Dieses Thema hatte ich intensiv bearbeitet, als ich Stücklisten in Abhängigkeit der dynamischen Eigenschaften bei beliebiger Verschachtelung zu lösen hatte. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Widmann Mitglied ATHENA Support/Training
Beiträge: 218 Registriert: 24.08.2005
|
erstellt am: 20. Okt. 2015 17:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, mir ist die Komplexität bewusst, halte es aber für machbar. Ausserdem gilt bei mir die Einschränkung, dass bei wiederholten Elternblöcken nur der Erste gefunden werden muss. Für mein Dynamische-Blöcke-Sichtbarkeitsproblem bedeutet es wiederum ich muss nur den Ersten finden in dem die Schraube wirklich sichtbar ist. Ich kann mir das Speichern der gesamten Struktur dadurch ersparen. Bis hierher übrigens schon mal dankeschön, ich konnte nun erfolgreich die Sichbarkeit eines Entity in einem Dynamischen Block mit Sichtbarkeitsparameter detektieren. Was mir jedoch noch vollkommen fehlt ist es einen Bezug herzustellen welches Objekt im anonymen Blocktablerecord dem gesuchten Entity aus dem originalen Blocktablerecord des dynamischen Blocks entspricht. Die ObjektID stimmt schon mal nicht überein, das habe ich überprüft. ------------------ Gruß Andreas ------------------------------------------------------------------------------------------------------------------------------------ Die Antwort ist 42! Die Antwort ist 42! Die Antwort ist 42! ...wenn ich nur die Frage wüsste... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 20. Okt. 2015 17:56 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Widmann
... wird wohl nur über den Vergleich von ObjektTyp und (vergleichbaren) Eigenschaften gehen. Das ist sicher über die Reflection machbar. Allerdings bleibt die Interpretation der Ursprungsobjekte, was diese denn tatsächlich darstellen offen .. dass muss korrespondieren mit der Erstellung der Blöcke (Layer|Linientypen|Blocknamen|...) Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Widmann Mitglied ATHENA Support/Training
Beiträge: 218 Registriert: 24.08.2005
|
erstellt am: 20. Okt. 2015 18:01 <-- editieren / zitieren --> Unities abgeben:
Alles klar, dann werde ich als Vergleichskriterium die X-Daten hernehmen denn schließlich identifiziere ich das Ursprungsobjekt ebenfalls darüber. X-Daten identisch bedeutet dann bei mir auch es ist das gesuchte Gegenstück. Vielen Vielen Dank nochmal. Hab gut was dazugelernt! EDIT nach Versuch: Das klappt, die X-Daten kommen als ResultBuffer und diese können einfach per = verglichen werden. ACHTUNG an alle Anderen: Das klappt nur für meine Zwecke, Linien oder Anderes können so nicht überprüft werden! ------------------ Gruß Andreas ------------------------------------------------------------------------------------------------------------------------------------ Die Antwort ist 42! Die Antwort ist 42! Die Antwort ist 42! ...wenn ich nur die Frage wüsste... [Diese Nachricht wurde von Andreas Widmann am 20. Okt. 2015 editiert.] [Diese Nachricht wurde von Andreas Widmann am 20. Okt. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |