| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Geometrie in Map nach Objektdaten auswählen (2463 mal gelesen)
|
TomSt Mitglied Geograf

 Beiträge: 89 Registriert: 05.09.2006 Intel Core i7-4790 3,60 GHz, 16 GB, Windows 10 Prof. 64 bit, AutoCAD Map 3D 2022 und Civil 3D 2021
|
erstellt am: 06. Jul. 2007 10:45 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe in Autodesk Map 2007 eine Zeichnung mit Objektdaten an Linien. Jetzt möchte ich einzelne Linien anhand der Objektdaten auswählen. Laut Hilfe muss ich dazu eine Arbeitssitzung einrichten, die entsprechende Zeichnung zuordnen und die Linie abfragen. Das ist mir zu umständlich, ich will die Linie in der aktuellen Zeichnung von Map gesucht und markiert haben. Geht das? Grüße Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tsonne Mitglied Landschaftsplaner

 Beiträge: 71 Registriert: 06.03.2007 AutoCAD Map 2008
|
erstellt am: 06. Jul. 2007 12:54 <-- editieren / zitieren --> Unities abgeben:          Nur für TomSt
Hallo Thomas, wenn du keine externe Zeichnung abfragen möchtest, dann geht das m.W. nur über eine Topologie. Diese Topologie kannst du dann über Abrage /Topologieabfrage definieren ... ähnlich abfragen wie eine externe Zeichnung (Daten / Eigenschaft ändern). Gruß, Thorsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomSt Mitglied Geograf

 Beiträge: 89 Registriert: 05.09.2006 Intel Core i7-4790 3,60 GHz, 16 GB, Windows 10 Prof. 64 bit, AutoCAD Map 3D 2022 und Civil 3D 2021
|
erstellt am: 06. Jul. 2007 17:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thorsten, Topologie erscheint mir noch komplizierter als externe Zeichnung abfragen. Ich möchte möglichst einfach ein paar Sachdaten in der Zeichnung pflegen, und dachte, es wäre möglich, die Geometrie zu den Sachdaten über einen Filter oder die Schnellauswahl fassen zu können. Aber dort habe ich die Objektdatentabelle und ihr Feld zum Anwählen nicht gefunden. Wenn ich mal so weit bin, Topologien anzulegen, werde ich es ausprobieren. Viele Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Moderator CAD-Administrator
     

 Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2022 (deu/eng) AEC-Collection 2022 (Revit und Zeugs) Wenn sich's nicht vermeiden lässt: D-A-CH Erweiterung (mies' implementierter Schrott)
|
erstellt am: 06. Jul. 2007 19:01 <-- editieren / zitieren --> Unities abgeben:          Nur für TomSt
Hi, AdeskMap hat eine exzellente Lisp-Api. Ich habe mir zu diesem Zweck eine Lisp Funktion geschrieben die Auswahlsätze nach Objektdaten erzeugen kann. Ich arbeite dabei allerdings auch teilweise mit dem direkten Zugriff auf die Map-Extension-Dictionaries, könnte also sein, das die Lisp-Api alleine nicht ausreicht ;-). Auf jeden Fall geht es. Und die Funktion arbeitet auch erstaunlich schnell. Hier mal ein Auszug, insbesondere die Kommentare sind für einen Neueinstieg in die Thematik interessant... (Dies ist KEINE ALLEIN laufende Funktion, es ist nur ein Auszug aus meiner Bibliothek): Code:
;| Funktion ermittelt die an ein Objekt angehängten Objektdaten und zwar mit allen für die weitere Verarbeitung notwendigen Daten, so z.B. auch die für den schnellen Zugriff auf die Feldinhalte relevante RecordID die von der Funktion ADE_ODGETRECFIELD verwendet wird. (setq recid (ade_odgetrecord ename strTablename recordnumber)) Anmerkung: recordnumber beginnt mit dem Zählen bei 0 (setq fielddata (ade_odgetrecfield recid strFieldname))Beispiel: (setq recid (ade_odgetrecord (car (entsel)) "ASSETNETZKLASSE" 0)) (setq Fielddata (ade_odgetrecfield recid "BITCODENETZKLASSE")) -> 8 (setq Fielddata (ade_odgetrecfield recid "TESTFELD")) -> 10 Rückgabe: Vollständige Information für ein Element oder nil z.B.: '(("Tablename" (((RECNUM . RECID) (("Feldname" . FELDWERT) ("Feldname2" . FELDWERT) . . .) ) ((RECNUM2 . RECID2) (("Feldname" . FELDWERT) ("Feldname2" . FELDWERT) . . .) ) . . . ) ) ("Tablename2" (((RECNUM . RECID) (("Feldname" . FELDWERT) ("Feldname2" . FELDWERT) . . .) ) . . . ) ) . . . ) |; (defun DT:MAP-OD-READ2 (ENAME / CT FIELDLST FIELDVALS FLDNAMELIST FLDNME FLDTYP FLDTYPELIST NUMREC RECID RETVAL TABLE TBLDEFINITIONS VAL VALLIST ) (if (setq TBLDEFINITIONS (DT:MAP-OD-TBLDEFINITIONS-READ ENAME)) ;; ((("Tablename" . "Flaechennr")("TableDesc" . "") ;; ("Columns" ;; (("ColName" . "Nummer") ("ColDesc" . "Flaechennummer") ;; ("ColType" . "Integer") ("DefaultVal" . 0) ;; ) ;; ... mehrere möglich ;; ) ;; ) ;; ... mehrere möglich ;; ) (progn (foreach TBLDEFINITION TBLDEFINITIONS (setq FIELDLST (cdr (nth 2 TBLDEFINITION)) TABLE (cdar TBLDEFINITION) FLDNAMELIST NIL FLDTYPELIST NIL FIELDVALS NIL ) ;_ end of setq (foreach FLD FIELDLST (setq FLDNME (cdr (nth 0 FLD)) FLDTYP (cdr (nth 2 FLD)) FLDNAMELIST (append FLDNAMELIST (list FLDNME)) FLDTYPELIST (append FLDTYPELIST (list FLDTYP)) ) ) ;; Für ein Feld können n-Datensätze erfaßt werden... (setq NUMREC (ade_odrecordqty ENAME TABLE) CT 0 ) (while (< CT NUMREC) (setq VALLIST NIL RECID (cons CT (ade_odgetrecord ENAME TABLE CT)) ) (foreach FLD FLDNAMELIST (setq VAL (cons FLD (ade_odgetrecfield (cdr RECID) FLD)) VALLIST (cons VAL VALLIST) ) ) (setq FIELDVALS (cons (list RECID (reverse VALLIST)) FIELDVALS) CT (1+ CT) ) ) (setq RETVAL (cons (cons (cdar TBLDEFINITION) (list (reverse FIELDVALS))) RETVAL ) ) ) ) ) RETVAL )
;| DT:MAP-OD-GET-OBJECTS-BY-VALUE findet Objekte die für einen bestimmten Datensatz einen bestimmten Wert aufweisen. Argumente: WITH-LAYOUT? = Flag, ob auch die Layouts miteinbezogen werden sollen. 'T = Ja auch Layouts einbeziehen STRTABLENAME = String mit der Definition der gesuchten Tabelle STRFIELD = String mit dem Feldnamen VALUE = gesuchter Wert, Datentyp unterschiedlich. Die Strings AUSSER VALUE (wenn String) werden hier NICHT CASE-SESITIVE verarbeitet!
Rückgabe: nil = Wenn kein Objekt den Kriterien entsprach Liste = aus vl-Objekten die den Kriterien entsprachen
Beispielanwendung: (setq XX (DT:OBJECTLIST->SELSET (DT:MAP-OD-GET-OBJECTS-BY-VALUE NIL "assetnetzklasse" "bitcodenetzklasse" 4 ) ) ) (sssetfirst xx xx) |; (defun DT:MAP-OD-GET-OBJECTS-BY-VALUE (WITH-LAYOUT? STRTABLENAME STRFIELD VALUE / RETVAL) (if (setq RETVAL (DT:MAP-OD-GET-OBJECTS-FOR WITH-LAYOUT? STRTABLENAME)) (vl-remove-if-not (function (lambda (X) (member VALUE (DT:MAP-OD-FIND-VALUE2 (vlax-vla-object->ename X) STRTABLENAME STRFIELD ) ) ) ) RETVAL ) ) )
Was ich damit sagen will: Es geht mit Lisp hier wirklich alles was Map kann und noch weitaus mehr als mit Map Funktionen. Und das auch noch sehr performant. Mit anderen Worten: Es lohnt sich sich damit zu beschäftigen. ------------------ Ciao, Marc Mein AG sucht u.a. Architekten und Bauzeichner! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomSt Mitglied Geograf

 Beiträge: 89 Registriert: 05.09.2006 Intel Core i7-4790 3,60 GHz, 16 GB, Windows 10 Prof. 64 bit, AutoCAD Map 3D 2022 und Civil 3D 2021
|
erstellt am: 07. Jul. 2007 08:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo Marc, danke für die ausführliche Information. Mit mitgelieferten Bordwerkzeugen scheint es also nicht zu gehen, mit Programmierung schon: mit AutoLISP habe ich schon was gemacht, muss mich allerdings erst wieder herein finden. Das Codebeispiel wird mir dabei helfen. Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomSt Mitglied Geograf

 Beiträge: 89 Registriert: 05.09.2006 Intel Core i7-4790 3,60 GHz, 16 GB, Windows 10 Prof. 64 bit, AutoCAD Map 3D 2022 und Civil 3D 2021
|
erstellt am: 27. Jul. 2007 11:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo, es geht doch mit bordeigenen Werkzeugen: Zeichnung öffnen, im Aufgabenfenster "Daten" anklicken, "Zeichnungsdaten hinzufügen" wählen, "Aktuelle Zeichnung abfragen ..." wählen. Es erscheint das Dialogfeld Abfrage definieren, ich wähle "Daten...", "Objektdaten" und gebe meinen abzufragenden Wert ein. Ich kehre zum Dialogfeld Abfrage definieren zurück, "Zeichnen" ist voreingestellt und ich klicke auf "OK". Map fügt im Aufgabenfenster einen Layer "Aktuelle Zeichnung-Element" mit den gesuchten Elementen hinzu. Gleichzeitig hat es die gesuchten Elemente aus dem Layer "Kartenbasis" herausgenommen. (So in AutoCAD Map 2008 ausgeführt.) Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
marc.scherer Moderator CAD-Administrator
     

 Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2022 (deu/eng) AEC-Collection 2022 (Revit und Zeugs) Wenn sich's nicht vermeiden lässt: D-A-CH Erweiterung (mies' implementierter Schrott)
|
erstellt am: 27. Jul. 2007 16:15 <-- editieren / zitieren --> Unities abgeben:          Nur für TomSt
|