| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: objektdaten auslesen. (1980 mal gelesen)
|
h9140028 Mitglied Landschaftsplanerin
Beiträge: 10 Registriert: 05.04.2005 Win 2000, AcadMap 2000 und 2004, ArcView3.2
|
erstellt am: 25. Jan. 2006 13:36 <-- editieren / zitieren --> Unities abgeben:
hallo zusammen, kann man/frau objektdaten als tabelle auslesen, diese dann bsp. im Excel verändern und rückimportieren? ich müßte nämlich aus einer kurzen id eine lange berechnen (5stellige Gemeindenummer + 6stellge Projektnummer + laufende nummer). wenn ich das während der gesamten eingabe mitführen müßte ist das etwas aufwendig. und weiß jemand vielleicht ein gutes buch zu acad map - denn das benutzerhandbuch beschäftigt sich nicht mit solch komplexen fragestellungen. lg pc
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 25. Jan. 2006 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für h9140028
wenn deine Objektdaten den Inhalt eines Attributes oder Textes darstellen, da gibs Lisp für suchen und Ersetzen, bzw. Präfix setzen ect. z.B. sowas------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 25. Jan. 2006 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für h9140028
Hi, ich arbeite gerade an einem Satz von AutoLisp Funktionen die sich u.a. der Lisp Api von AdeskMap bedienen. Damit könnte man sicher das ein oder andere machen. Beispiel: 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) . . .) ) . . . ) ) . . . )
Beispielanwendung: (DT:MAP-OD-READ2 (car (entsel))) |; (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 ) ;;; Gibt eine Liste aller Tabellendefinitionen zu einem Objekt zurück (defun DT:MAP-OD-TBLDEFINITIONS-READ (ENAME / RETVAL ODTABLE) (if (setq ODTABLE (ade_odgettables ENAME)) (mapcar '(lambda (X) (ade_odtabledefn X)) ODTABLE) ) )
'n Buch über Map kenne ich leider nicht.------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
h9140028 Mitglied Landschaftsplanerin
Beiträge: 10 Registriert: 05.04.2005 Win 2000, AcadMap 2000 und 2004, ArcView3.2
|
erstellt am: 25. Jan. 2006 15:07 <-- editieren / zitieren --> Unities abgeben:
hallo thomas, das mit dem lsp geht leider nicht weil ich keine blöcke habe. meine objektdaten sind an digitalisierte Linien geknüpft. d.h. jede linie hat objektdaten die gleich bleiben (gemeindenummer, projektnummer) aber auch sich verändernde wie eine typ, eindeutige id, ...) damit ich beim digitalisieren nicht alles eingeben muss, in der eingabemaske von acad ein bißchen mühsam, würde ich gerne nur die kurze id eingeben und die lange zusammengesetzte extern berechnen). und das ganze sollte in den objektdaten stehen - denn dann kann ich mein altes problem (http://ww3.cad.de/foren/ubb/Forum54/HTML/012897.shtml#000004) lösen. denn objektdaten werden beim erzeugen von e00 files mitgeschrieben!!! lg petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tblaenky Mitglied Landschaftsarchitekt
Beiträge: 82 Registriert: 30.07.2002
|
erstellt am: 25. Jan. 2006 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für h9140028
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 25. Jan. 2006 20:41 <-- editieren / zitieren --> Unities abgeben: Nur für h9140028
Wenn die zu ändernde Nummer nicht gerade das Schlüsselfeld ist, kann die Objektdaten doch ganz eichfach mit MAPOD2ASE von Objektdaten in Datenbankverknüpfungen konvertieren. Dabei wird eine neue Tabelle angelegt, die sich leicht mit Access oder Excel modifizieren läßt. Der Export in das E00 Format unterstützt doch Datenbankverknüfpungen genau so gut wie Objektdaten - da ergibt sich meiner Ansicht nach kein Unterschied. Es ist natürlich auch möglich ein kleines Lisp-Makro zu schreiben, welches die Einträge in der Objektdatentabelle von Kurzform auf Langform bringt, wenn die dazugehörige Regel bekannt ist. ------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autogis Mitglied Dr.-Ing. E-Technik
Beiträge: 185 Registriert: 09.02.2001
|
erstellt am: 26. Jan. 2006 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für h9140028
Hallo, per Menü erreichst Du den von U. Hübner genannten Befehl mittels Map ---> Werkzeuge ---> Objektdaten nach Datenbankverknüpfung konvertieren ... Dort kannst Du die entsprechende Objektdatentabelle wählen und mußt außerdem die Verknüpfungsvorlage definieren. Letztlich wählst Du die Elemente, deren Objektdaten Du exportieren möchtest. Viele Grüße - Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
h9140028 Mitglied Landschaftsplanerin
Beiträge: 10 Registriert: 05.04.2005 Win 2000, AcadMap 2000 und 2004, ArcView3.2
|
erstellt am: 26. Jan. 2006 10:24 <-- editieren / zitieren --> Unities abgeben:
hallo udo und peter, das mit dem konvertieren von objektdaten in eine datenbankverknüpfung habe ich noch nicht gekannt - in der werkzeugleiste bin ich immer ganz blind zu bereinigungsfunktion und zum exportieren/importieren. danke vorerst einmal für die ratschläge - ich glaube ich werde damit weiterkommen. grüße aus wien petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |