Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Objektsichtbarkeit in Blockreferenz eines Dynamischen Blocks ermitteln

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Objektsichtbarkeit in Blockreferenz eines Dynamischen Blocks ermitteln (1051 mal gelesen)
Andreas Widmann
Mitglied
ATHENA Support/Training


Sehen Sie sich das Profil von Andreas Widmann an!   Senden Sie eine Private Message an Andreas Widmann  Schreiben Sie einen Gästebucheintrag für Andreas Widmann

Beiträge: 218
Registriert: 24.08.2005

erstellt am: 20. Okt. 2015 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 20. Okt. 2015 14:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas Widmann 10 Unities + Antwort hilfreich

... visibility oder das Objekt ist nicht vorhanden.

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


Sehen Sie sich das Profil von Andreas Widmann an!   Senden Sie eine Private Message an Andreas Widmann  Schreiben Sie einen Gästebucheintrag für Andreas Widmann

Beiträge: 218
Registriert: 24.08.2005

erstellt am: 20. Okt. 2015 15:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 20. Okt. 2015 15:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas Widmann 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Andreas Widmann an!   Senden Sie eine Private Message an Andreas Widmann  Schreiben Sie einen Gästebucheintrag für Andreas Widmann

Beiträge: 218
Registriert: 24.08.2005

erstellt am: 20. Okt. 2015 15:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 20. Okt. 2015 15:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas Widmann 10 Unities + Antwort hilfreich

... 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


Sehen Sie sich das Profil von Andreas Widmann an!   Senden Sie eine Private Message an Andreas Widmann  Schreiben Sie einen Gästebucheintrag für Andreas Widmann

Beiträge: 218
Registriert: 24.08.2005

erstellt am: 20. Okt. 2015 16:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 20. Okt. 2015 17:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas Widmann 10 Unities + Antwort hilfreich

... 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


Sehen Sie sich das Profil von Andreas Widmann an!   Senden Sie eine Private Message an Andreas Widmann  Schreiben Sie einen Gästebucheintrag für Andreas Widmann

Beiträge: 218
Registriert: 24.08.2005

erstellt am: 20. Okt. 2015 17:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 20. Okt. 2015 17:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas Widmann 10 Unities + Antwort hilfreich

... 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


Sehen Sie sich das Profil von Andreas Widmann an!   Senden Sie eine Private Message an Andreas Widmann  Schreiben Sie einen Gästebucheintrag für Andreas Widmann

Beiträge: 218
Registriert: 24.08.2005

erstellt am: 20. Okt. 2015 18:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz