| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: assoziative Beziehungen in Elementdaten (1039 mal gelesen)
|
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 27. Aug. 2008 22:06 <-- editieren / zitieren --> Unities abgeben:
Hallo User, vielleicht hat jemand einen Tipp. Ich habe in AutoCAD 2005 über ein LISP-Programm jeweils ein Schriftfeld, dass mit der Fläche eines geschl. Polygons assoziativ verknüpft ist, einem Blockattribut zugeordnet. Somit beziehen sich alle Blockattribute in der DWG jeweils auf eine geschl. PL. Um Plausibilitätsprüfungen durchführen zu können (Gibt es zu jeder PL ein Blockattribut, bezieht sich jeweils nur 1 Blockattribut auf eine PL etc.) will ich in AutoLISP über die Abfrage der Elementdaten der PL und des B.-Attributes eine eindeutige Zuordnung über eine Objekt-ID herausfinden(AutoLisp-Befehle ssget, entnext, entget etc.), was mir selbst in tieferen Verschachtelungs- ebenen nicht gelingt. Wie kann ich bei der Abfrage der Elementdaten des Blockattributes herausfinden, auf welche Polylinie sich das Blockatribut bezieht oder umgekehrt von der PL zum Blockattribut? Wenn jemand mir weiterhelfen kann, kann ich zum besseren Verständnis eine kleine Beispieldatei mailen. Als neues Mitglied bin ich gespannt auf Eure Vorschläge. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 28. Aug. 2008 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 28. Aug. 2008 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
|
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 28. Aug. 2008 20:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke für Deine Links, die teilweise auf sehr hohen Niveau, die Problematik behandeln. Die meisten Beiträge bieten eine Lösung über XDATA an. Eine Beziehung zwischen Attribut und Polylinie über XDATA aufzubauen, habe ich zwar schon nachvollzogen, aber leider kann ich diese Methode nicht anwenden, da die Zeichnungen mit Hunderten von Polygonen und der dazugehörigen Flächen schon exestieren und ich nicht im nachhinein Extendes Entity Data zuweisen kann bzw. möchte. Ich kann Dir mal eine kleine Beispieldatei anhängen, dass Du eine genauere Vorstellung von meiner Struktur bekommst(Habe sie leider momentan nicht parat) Gruß Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 28. Aug. 2008 21:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Andreas, danke Für Deinen Link, ich habe nach ähnlichen Muster über entnext und entget die Elementdaten sowohl des Attributes als auch der Polylinie durchsucht (330, 360 etc.), aber nirgends habe ich einen eindeutigen Objektverweis gefunden. Ich kann Dir ja mal eine kleine Beispieldatei anhängen(bei der nächsten Antwort). Falls Du das Problem, was Du am 21.8. geschildert hast (Feldinhalte von Blockattributen abfragen und in andere übertragen) noch haben solltest, kann ich Dir weiterhelfen, habe so etwas ähnliches vor kurzem programmiert. Gruß Volker 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 (d-tools.eu)
|
erstellt am: 29. Aug. 2008 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
Hallo Volker, da muss dir beim Durchforsten der Elementverschachtelungen etwas entgangen sein. So geht's: Code:
(mapcar '(lambda (DD) (if (and (= 360 (car DD)) (assoc 331 (entget(cdr DD))) ) (redraw (cdr(assoc 331 (entget(cdr DD)))) 3) ) ) (entget(cdr(assoc 360(entget(cdr(assoc 360 (entget(cdr(assoc 360(entget(car(nentsel "\nAttribut wählen: ")))))))))))) )
Das (mapcar .. -Konstrukt ermöglicht das herausfinden aller Objektverweise in Schriftfeldern, denn es könnte ja sein, dass innerhalb eines Attributs mehrere Schriftfelder existieren, mit verschiedenen Objektverweisen. Alles klar? ... einfach mal debuggen, dann wird's sicher klarer. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 29. Aug. 2008 21:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, wir hatten ja schon heute schon mehrere Emails ausgetauscht. Dank Deiner Hilfe kann ich jetzt nach Attribute filtern, die keinen Objektverweis haben und die mehrfach einen Objekt zugeordnet sind. Mit den Programm Deiner letzten Mail werde ich mich noch genauer auseinandersetzen. Das Arbeiten mit anonymen Funktionen hatte ich bisher sträflich vernachlässigt, was ich jetz aber nachholen werde. Gruß Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |