| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für BricsCAD |
Autor
|
Thema: Objektdaten (1880 / mal gelesen)
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 05. Jun. 2019 14:21 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, in AutoCAD-Map haben wir zur Lageübersicht aller unserer Arbeiten eine Karte erstellt wo die von uns vermessenen Bereiche rot schraffiert sind. Diesen Schraffuren wurden dann Objektdaten (Geschäftszahl, Auftragsdatum, Auftraggeber usw.) mit dem Befehl ADEATTACHDATA zugeordnet. Zum Eintragen, Ergänzen, Lesen und Bearbeiten der Daten wurde der Befehl ADEEDITDATA verwendet. Da wir nun einen neuen Server bekommen haben und unsere AutoCAD-Map Version darauf nicht mehr läuft müssen wir diesen Datenbestand nun irgendwie durch BricsCAD weiter verwalten können. Bei meinen Recherchen im Internet habe ich leider keine Lösung gefunden. Hoffe Ihr könnt uns wie bisher weiterhelfen ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 05. Jun. 2019 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 05. Jun. 2019 14:58 <-- editieren / zitieren --> Unities abgeben:
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 05. Jun. 2019 15:11 <-- editieren / zitieren --> Unities abgeben:
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 06. Jun. 2019 12:23 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 06. Jun. 2019 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
|
Vino Mitglied
Beiträge: 207 Registriert: 24.05.2005 Windows 10 BricsCAD V21-22
|
erstellt am: 11. Jun. 2019 07:20 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 11. Jun. 2019 08:21 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADwiesel:Aber hast Recht es gibt nur xdlist und xdata
Also ich finde in der Expresstools Version die ich bekommen habe leider nicht mal diese zwei Befehle.
Zitat: Original erstellt von Vino:wenn das "normale" Xdatas sind, dann kann man die mit BricsCAD (zumindest ab pro) pur bearbeiten... EDITEDATEN
Hier geht zwar das Dialogfeld auf, es werden jedoch keine Daten angezeigt. ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 11. Jun. 2019 08:30 <-- editieren / zitieren --> Unities abgeben:
Hätte hier mal eines dieser DWG-Files mit den erwähnten Schraffuren und den darin enthaltenen Objektdaten. Könnt Ihr die Objektdaten jetzt mit Bricscad Werkzeugen Eintragen, Ergänzen, Lesen und Bearbeiten? Ich schaffe das nicht. ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vino Mitglied
Beiträge: 207 Registriert: 24.05.2005 Windows 10 BricsCAD V21-22
|
erstellt am: 11. Jun. 2019 08:40 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Hallo, Zitat: Original erstellt von cm-Zeichner:
Also ich finde in der Expresstools Version die ich bekommen habe leider nicht mal diese zwei Befehle.
Sollten unter "Express -> Tools -> XDaten-Zuordnung" bzw. "Express -> Tools -> Element-XDaten auflisten" zu finden sein. Zitat: Original erstellt von cm-Zeichner:
Hier geht zwar das Dialogfeld auf, es werden jedoch keine Daten angezeigt.
Dann sind das (wie ich befürchtet hatte) keine "normalen" XData. Und dann bringen dir die Befehle aus den Express Tools auch nichts. Das sind irgendwelche Map-Spezial-Sachen. Ob man mit BricsCAD an die ran kommt, kann ich dir nicht sagen. Vielleicht meldet sich ja jemand, der damit Erfahrung hat. Gruß Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 11. Jun. 2019 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Hallo Stefan, ich habe mich mal ausprobiert. In der Tat brauchst Du MAP, um an die Informationen ranzukommen. Ich habe die Daten ausgelesen und als XDATEN angehängt, jetzt sollten die auch über die Objektdaten von BricsCAD oder über Express-Tools sichbar sein. Folgende Struktur: AUFTRAG05003_DEF => Dort sind die Definitionen der Datenfelder gelistet AUFTRAG05003_DATA => Dort sind immer im Wechsel Name Datenfeld, Wert Datenfeld eingetragen. Folgenden LISP-Code habe ich in MAP verwendet, vor Weiterverwendung aber testen, war nur mal schnell ;-) -> wenn Du kein MAP hast kannst Du den Code nicht verwenden! Code:
(defun c:JB_MAP->Xdaten (/ AWS COLUMNSUB DEFAULTVAL FIELDDATA N TBLNAME XDATA XDATAGCN) (if (and (princ "\nObjekte auswählen:") (setq aws (ssget))) (progn (setq n 0) (repeat (sslength aws) (mapcar '(lambda (tblname) (setq xData nil XDataDef nil) (mapcar '(lambda (ColumnSub) (setq FieldData (ade_odgetfield (ssname aws n) tblname (cdr (assoc "ColName" ColumnSub)) 0)) (cond ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "character") (setq XdataGcN 1000)) ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "integer") (setq XdataGcN 1070)) ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "point") (setq XdataGcN 1010)) ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "real") (setq XdataGcN 1040))) (setq XdataDef (append XdataDef (list (cons 1000 "ColName") (cons 1000 (cdr (assoc "ColName" ColumnSub))) (cons 1000 "ColDesc") (cons 1000 (cdr (assoc "ColDesc" ColumnSub))) (cons 1000 "ColType") (cons 1000 (cdr (assoc "ColType" ColumnSub))) (cons 1000 "DefaultVal") (cons XdataGcN (cdr (assoc "DefaultVal" ColumnSub)))))) (setq Xdata (append Xdata (list (cons 1000 (cdr (assoc "ColName" ColumnSub))) (cons XdataGcN FieldData))))) (cdr (assoc "Columns" (ade_odtabledefn tblname)))) (regapp (strcat tblname "_DEF")) (entmod (append (entget (ssname aws n)) (list (list -3 (cons (strcat tblname "_DEF") XdataDef))))) (regapp (strcat tblname "_DATA")) (entmod (append (entget (ssname aws n)) (list (list -3 (cons (strcat tblname "_DATA") Xdata)))))) (ade_odgettables (ssname aws n))) (setq n (+ n 1))))) (princ))
Weitere Informationen für die Verarbeitung von MAP-Objektdaten in LISP findest Du unter folgendem Link: https://documentation.help/AutoCAD-Map-3D-2009-AutoLISP/object_data_functions.htm Ein Screenshot aus BricsCAD (_editedata) habe ich angehängt und die DWG-Datei.
------------------ viele Grüße Jörn http://www.bosse-engineering.com Foto-Manager Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 06. Nov. 2019 12:25 <-- editieren / zitieren --> Unities abgeben:
Danke Jörn, genau so. Kleine Frage noch, bei einigen Flächen sind mehrere Datensätze vorhanden (Folgevermessungen), er liest hier aber nur den ersten Datensatz aus. Kenn mich nicht genau aus, aber könntest Du das irgendwie ergänzen damit der Daten ausliest solange halt welche vorhanden sind. Tausend Dank
------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 06. Nov. 2019 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 BricsCAD V11 - V22 Pro Visual Basic
|
erstellt am: 06. Nov. 2019 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Zitat: Original erstellt von cm-Zeichner: Da wir nun einen neuen Server bekommen haben und unsere AutoCAD-Map Version darauf nicht mehr läuft müssen wir diesen Datenbestand nun irgendwie durch BricsCAD weiter verwalten können.
Hattet Ihr eine Netzwerklizenz von Autocad Map? Da sollte es doch möglich sein eine Aktualisierung der Lizenzdatei mit der neuen MAC-Adresse des Servers zu bekommen. Welche Version war das? Evtl. den alten Server noch weiterlaufen lassen? Muß ja kein Domänencontroller sein, man kann ihn herabstufen und als Memberserver im Adressraum belassen. Haben wir auch für einige alte Programme so gemacht. Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 06. Nov. 2019 15:37 <-- editieren / zitieren --> Unities abgeben:
Zitat: Hattet Ihr eine Netzwerklizenz von Autocad Map? Da sollte es doch möglich sein eine Aktualisierung der Lizenzdatei mit der neuen MAC-Adresse des Servers zu bekommen. Welche Version war das? Evtl. den alten Server noch weiterlaufen lassen? Muß ja kein Domänencontroller sein, man kann ihn herabstufen und als Memberserver im Adressraum belassen. Haben wir auch für einige alte Programme so gemacht.
Glaube so machen wir es jetzt auf einem alten Rechner, ist aber auf Dauer sicher keine Lösung daher schau ich wie wir das jetzt mit Bricscad lösen können. ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 06. Nov. 2019 15:57 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von joern bosse: Moin Bernd, wenn Du noch ein Beispiel hast kann ich mich in einer ruhigen Minute ja nochmal versuchen. Bin aber der Meinung, dass der vorhandene Code bereits alles ausgeben müßte: Pro Objekte alle Tabellen und Pro Tabelle alle Felder?!?
In der alten Beispielzeichnung hat die Fläche mit dem Schwerpunkt 31553.85/320642.64 10 unterschiedliche Datensätze mit dem Befehl EDITEDATEN bekomme ich nur den ersten Datensatz angezeigt. Gibt es einen anderen Befehl zu Anzeigen der erweiterten Objektdaten, oder ist in der von Dir erstellten Datei nur der eine Datensatz vorhanden? ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 06. Nov. 2019 16:10 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 06. Nov. 2019 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Hallo Bernd, ich habe mit MAP in Deiner Originaldaten geschaut, es sind pro Schraffufläche / Polylinie die Tabelle AUFTRAG05003 mit den Einträgen GZ, DATUM, ART, BEZ, NAME vorhanden, diese werden durch die LISP-Funktion in Xdaten umgewandelt und an die Objekte angehängt. Weitere Datensätze sehe ich nicht, vielleicht reichen da aber auch meine MAP-Kenntnisse nicht aus. Wenn ich in MAP alle Objekte auswähle kann ich über das Eigenschaftenfenster sehen, dass überall dieselbe Art von Daten dran hängen (siehe Bild)
------------------ viele Grüße Jörn http://www.bosse-engineering.com Foto-Manager Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 07. Nov. 2019 08:15 <-- editieren / zitieren --> Unities abgeben:
Hier mal mein Bearbeitungsfenster im MAP. Rechts sieht man die Anzahl der Vorhandenen Datensätze die mit der Fläche verknüpft sind. Mit NÄCHSTER, VORHER usw. kann man darin blättern. Wie gesagt, nicht alle Flächen haben mehrere Datensätze, die meisten nur einen. Die eine Fläche die ich ausgesucht habe (siehe Schwerpunktkoordinaten) hat aber 10.
------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 07. Nov. 2019 09:16 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Moin Bernd, jetzt habe ich die die Anzahl der Datensätze mit eingebaut. Als Beispiel habe ich die Fläche "472C" verwendet, die hatte 2 Datensätze: Code:
(defun c:JB_MAP->Xdaten (/ AWS COLUMNSUB DEFAULTVAL FIELDDATA N TBLNAME XDATA XDATAGCN Nrecord i) (if (and (princ "\nObjekte auswählen:") (setq aws (ssget))) (progn (setq n 0) (repeat (sslength aws) (mapcar '(lambda (tblname) (setq Nrecord(ade_odrecordqty (ssname aws n) tblname)) (setq xData nil XDataDef nil i -1) (while (< (+ i 1) Nrecord) (setq i (+ i 1))
(mapcar '(lambda (ColumnSub) (setq FieldData (ade_odgetfield (ssname aws n) tblname (cdr (assoc "ColName" ColumnSub)) i)) (cond ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "character") (setq XdataGcN 1000)) ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "integer") (setq XdataGcN 1070)) ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "point") (setq XdataGcN 1010)) ((= (strcase (cdr (assoc "ColType" ColumnSub)) 'T) "real") (setq XdataGcN 1040))) (if (= i 0) (setq XdataDef (append XdataDef (list (cons 1000 "ColName") (cons 1000 (cdr (assoc "ColName" ColumnSub))) (cons 1000 "ColDesc") (cons 1000 (cdr (assoc "ColDesc" ColumnSub))) (cons 1000 "ColType") (cons 1000 (cdr (assoc "ColType" ColumnSub))) (cons 1000 "DefaultVal") (cons XdataGcN (cdr (assoc "DefaultVal" ColumnSub))))))) (setq Xdata (append Xdata (list (cons 1000 (cdr (assoc "ColName" ColumnSub))) (cons XdataGcN FieldData)))) ) (cdr (assoc "Columns" (ade_odtabledefn tblname))))) (regapp (strcat tblname "_DEF")) (entmod (append (entget (ssname aws n)) (list (list -3 (cons (strcat tblname "_DEF") XdataDef))))) (regapp (strcat tblname "_DATA")) (entmod (append (entget (ssname aws n)) (list (list -3 (cons (strcat tblname "_DATA") Xdata)))))) (ade_odgettables (ssname aws n))) (setq n (+ n 1))))) (princ))
Ergebnis in Xdaten ist jetzt: * Registered Application Name: AUFTRAG05003_DEF * Code 1000, ASCII string: ColName * Code 1000, ASCII string: GZ * Code 1000, ASCII string: ColDesc * Code 1000, ASCII string: Geschäftszahl * Code 1000, ASCII string: ColType * Code 1000, ASCII string: Character * Code 1000, ASCII string: DefaultVal * Code 1000, ASCII string: ----------------------------------------- * Code 1000, ASCII string: ColName * Code 1000, ASCII string: DATUM * Code 1000, ASCII string: ColDesc * Code 1000, ASCII string: Auftragsdatum * Code 1000, ASCII string: ColType * Code 1000, ASCII string: Character * Code 1000, ASCII string: DefaultVal * Code 1000, ASCII string: ----------------------------------------- * Code 1000, ASCII string: ColName * Code 1000, ASCII string: ART * Code 1000, ASCII string: ColDesc * Code 1000, ASCII string: Auftragsart * Code 1000, ASCII string: ColType * Code 1000, ASCII string: Character * Code 1000, ASCII string: DefaultVal * Code 1000, ASCII string: ----------------------------------------- * Code 1000, ASCII string: ColName * Code 1000, ASCII string: BEZ * Code 1000, ASCII string: ColDesc * Code 1000, ASCII string: Kurzbezeichnung * Code 1000, ASCII string: ColType * Code 1000, ASCII string: Character * Code 1000, ASCII string: DefaultVal * Code 1000, ASCII string: ----------------------------------------- * Code 1000, ASCII string: ColName * Code 1000, ASCII string: NAME * Code 1000, ASCII string: ColDesc * Code 1000, ASCII string: Auftraggeber * Code 1000, ASCII string: ColType * Code 1000, ASCII string: Character * Code 1000, ASCII string: DefaultVal * Code 1000, ASCII string: ----------------------------------------- * Registered Application Name: AUFTRAG05003_DATA * Code 1000, ASCII string: GZ * Code 1000, ASCII string: 3614 * Code 1000, ASCII string: DATUM * Code 1000, ASCII string: 08-07-2011 * Code 1000, ASCII string: ART * Code 1000, ASCII string: Teilung * Code 1000, ASCII string: BEZ * Code 1000, ASCII string: Gst4183,4184/3/4/5,4185,4186/1/2 * Code 1000, ASCII string: NAME * Code 1000, ASCII string: Stadtgem.Bruck ----------------------------------------- * Code 1000, ASCII string: GZ * Code 1000, ASCII string: 4069 * Code 1000, ASCII string: DATUM * Code 1000, ASCII string: 03-02-2014 * Code 1000, ASCII string: ART * Code 1000, ASCII string: Teilung * Code 1000, ASCII string: BEZ * Code 1000, ASCII string: Florianistr. Gst4184/4,4184/5 * Code 1000, ASCII string: NAME * Code 1000, ASCII string: Windholz Ernst ----------------------------------------- Und immer schön auf Plausibilität prüfen, war nur auf die Schnelle!
------------------ viele Grüße Jörn http://www.bosse-engineering.com Foto-Manager Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 07. Nov. 2019 11:12 <-- editieren / zitieren --> Unities abgeben:
|
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 20. Mai. 2020 15:30 <-- editieren / zitieren --> Unities abgeben:
Corona sei dank, jetzt war Zeit zu probieren. Kann jetzt wirklich alles lesen. Danke Hab noch eine Frage da ich die Bricscad Dokumentation nicht verstehe. 1. Wenn ich jetzt ein neues Objekt in die Zeichnung einfüge wie kann ich dem die Definition AUFTRAG05003_DEF zuweisen. 2. Wie kann ich die GZ-Daten dann eingeben. 3. Wie kann ich bei einem bestehenden Objekt eine neue GZ hinzufügen. Wäre es so richtig wenn ich jetzt nur mehr die Geschäftszahl ohne Auftraggeberdaten usw. einem Objekt (Schraffur) zuweisen will: - Objektdaten erstellen oder bearbeiten - Objekt wählen - Einfügen - Name der Anwendung - Application durch zB Daten ersetzen - Einfügen - Zeichenkette - String durch die Geschäftsfallnummer ersetzen fertig Dann wird das Textfeld der Polylinie zugewiesen und fertig. So schauts zumindest aus. Sollten dann später zusätzliche Aufträge bei dem Grundstück kommen einfach mit einem Beistrich zum ersten Eintrag dazuschreiben fertig. Jetzt schaut das in dem Bricscaddialogfeld mit den 5 Datenfeldern unübersichtlich aus. ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 22. Mai. 2020 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Hallo Bernd, da könnte man natürlich ein Eingabe-LISP schreiben, ähnlich eines Attribut-Editors, damit die Xdaten-Struktur den anderen Objekten entspricht. Das ist aber nicht mal eben schnell und würde die Forenhilfe bei Weitem übersteigen. Vielleicht eine Krücke: mit folgender LISP-Funktion kannst Du die Xdaten eines vorhandenen Objektes auf ein neues Objekt kopieren, dann kannst Du mit dem "Objektdaten erstellen bearbeiten" - Dialog die Werte einfach anpassen. Code:
(defun c:JB_XdatenCopy ( / OBJ OBJ1 X XDATEN) (if (and(setq obj (car(entsel "\nQuellobjekt:"))) (or (and(setq xdaten(vl-remove-if (function (lambda(X) (not(or(wcmatch (car X)"*_DEF") (wcmatch (car X)"*_DATA")) ) ) ) (cdr(assoc -3(entget obj '("*")))))) (=(length xdaten)2)) (alert "Keine gültige Xdaten im Quellobjekt.")) (setq obj1 (car(entsel "\nZielobjekt:"))) ) (mapcar '(lambda(X) (regapp (car X)) (entmod(append (entget obj1)(list(list -3 X)))) ) xdaten)) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Multifilter Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 16. Dez. 2020 20:24 <-- editieren / zitieren --> Unities abgeben:
Folgende Liste konnte ich jetzt zB aus den Externen Daten einer Fläche auslesen nachdem ich Sie mit Jörns Programm von einem AutoCAD MAP DWG in eine Standart DWG mit Externen Daten umgewandelt habe. ("AUFTRAG05003_DATA" (1000 . "GZ") (1000 . "1167") (1000 . "DATUM") (1000 . "26-02-1998") (1000 . "ART") (1000 . "Teilung") (1000 . "BEZ") (1000 . "Acker Hinter ÖAMTC, Gst 3685/2,3685/3 - Jüly") (1000 . "NAME") (1000 . "Stadtgemeinde Bruck/L.") (1000 . "GZ") (1000 . "2875") (1000 . "DATUM") (1000 . "25-06-2007") (1000 . "ART") (1000 . "Parzellierung") (1000 . "BEZ") (1000 . "Hinter Jüly, Gst 3685/2, 3685/3") (1000 . "NAME") (1000 . "Stadtgemeinde Bruck/L.") (1000 . "GZ") (1000 . "3202") (1000 . "DATUM") (1000 . "19-02-2009") (1000 . "ART") (1000 . "Bauabsteckung") (1000 . "BEZ") (1000 . "Wohnhausanlage, Gst 3685/20 -/27 -/40 -/47") (1000 . "NAME") (1000 . "WBV GÖD") (1000 . "GZ") (1000 . "3220") (1000 . "DATUM") (1000 . "01-09-2008") (1000 . "ART") (1000 . "Teilung") (1000 . "BEZ") (1000 . "Kleingartensiedlung, Gst 3685/54") (1000 . "NAME") (1000 . "Stadtgemeinde Bruck an der Leitha") (1000 . "GZ") (1000 . "5538") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "4501") (1000 . "DATUM") (1000 . "24.02.2016") (1000 . "ART") (1000 . "Zusammenlegung") (1000 . "BEZ") (1000 . "Robert Eder Str.- Walter Legelg. Gst3685/42-/49") (1000 . "NAME") (1000 . "V-Lux Servitas Dienstleistungs GmbH") (1000 . "GZ") (1000 . "4564") (1000 . "DATUM") (1000 . "31.05.2016") (1000 . "ART") (1000 . "Absteckung") (1000 . "BEZ") (1000 . "Hochfeld West Gst3685/3,/9,/28,/51") (1000 . "NAME") (1000 . "Stadtgem. Bruck/Leitha") (1000 . "GZ") (1000 . "5251") (1000 . "DATUM") (1000 . "28.02.2019") (1000 . "ART") (1000 . "Absteckung+Höhenplan") (1000 . "BEZ") (1000 . "a+h, Robert Ederer Straße 21, Gst. 3685/38") (1000 . "NAME") (1000 . "Dr. Franca Steindl") (1000 . "GZ") (1000 . "") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5408") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5337") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5399") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5362") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "")) Diese Fläche hat jetzt z.B.: 14 Einträge (mit jeweils GZ, Datum, Art, Bez, Name) wenn ich mich nicht verzählt habe ;-: Diese Anzahl kann natürlich immer variieren von 1 bis ........ Wie bekomme ich nun einfach nur die Liste der GZ ohne andere Werte an eine Variable übergeben. Also für unser Beispiel sollte das Ergebnis dann so ausschauen: 1167, 2875, 3202, 3220, ........5362 Danke mal im Voraus
------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 16. Dez. 2020 21:10 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
naja, finde den Algorithmus Sehe es gerade nur auf einem miniDisplay, aber wie schauts denn aus mit: Einträge der "AUFTRAG05003_DATA" Applikation, jedes Listenelement nachfolgend einem (1000 . "GZ") ? Lispfunktionen MEMBER und die car/cdr Familie sollten helfen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004
|
erstellt am: 17. Dez. 2020 08:47 <-- editieren / zitieren --> Unities abgeben: Nur für cm-Zeichner
Hallo Bernd, es ist ja bald Weihnachten... Ich mache Dir mal einen Vorschlag mit einer REPEAT-Schleife, es würde mich freuen, wenn Du Dir das anschaust, und vielleicht auch alternative Funktionen dazu findest, da gibt es nicht nur eine Möglichkeit: Code:
(defun JB_xdaten:get (Key / N RETLIST XDATEN) (setq xdaten '("AUFTRAG05003_DATA" (1000 . "GZ") (1000 . "1167") (1000 . "DATUM") (1000 . "26-02-1998") (1000 . "ART") (1000 . "Teilung") (1000 . "BEZ") (1000 . "Acker Hinter ÖAMTC, Gst 3685/2,3685/3 - Jüly") (1000 . "NAME") (1000 . "Stadtgemeinde Bruck/L.") (1000 . "GZ") (1000 . "2875") (1000 . "DATUM") (1000 . "25-06-2007") (1000 . "ART") (1000 . "Parzellierung") (1000 . "BEZ") (1000 . "Hinter Jüly, Gst 3685/2, 3685/3") (1000 . "NAME") (1000 . "Stadtgemeinde Bruck/L.") (1000 . "GZ") (1000 . "3202") (1000 . "DATUM") (1000 . "19-02-2009") (1000 . "ART") (1000 . "Bauabsteckung") (1000 . "BEZ") (1000 . "Wohnhausanlage, Gst 3685/20 -/27 -/40 -/47") (1000 . "NAME") (1000 . "WBV GÖD") (1000 . "GZ") (1000 . "3220") (1000 . "DATUM") (1000 . "01-09-2008") (1000 . "ART") (1000 . "Teilung") (1000 . "BEZ") (1000 . "Kleingartensiedlung, Gst 3685/54") (1000 . "NAME") (1000 . "Stadtgemeinde Bruck an der Leitha") (1000 . "GZ") (1000 . "5538") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "4501") (1000 . "DATUM") (1000 . "24.02.2016") (1000 . "ART") (1000 . "Zusammenlegung") (1000 . "BEZ") (1000 . "Robert Eder Str.- Walter Legelg. Gst3685/42-/49") (1000 . "NAME") (1000 . "V-Lux Servitas Dienstleistungs GmbH") (1000 . "GZ") (1000 . "4564") (1000 . "DATUM") (1000 . "31.05.2016") (1000 . "ART") (1000 . "Absteckung") (1000 . "BEZ") (1000 . "Hochfeld West Gst3685/3,/9,/28,/51") (1000 . "NAME") (1000 . "Stadtgem. Bruck/Leitha") (1000 . "GZ") (1000 . "5251") (1000 . "DATUM") (1000 . "28.02.2019") (1000 . "ART") (1000 . "Absteckung+Höhenplan") (1000 . "BEZ") (1000 . "a+h, Robert Ederer Straße 21, Gst. 3685/38") (1000 . "NAME") (1000 . "Dr. Franca Steindl") (1000 . "GZ") (1000 . "") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5408") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5337") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5399") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") (1000 . "GZ") (1000 . "5362") (1000 . "DATUM") (1000 . "") (1000 . "ART") (1000 . "") (1000 . "BEZ") (1000 . "") (1000 . "NAME") (1000 . "") ) ) (setq n -2) (repeat (length (cdr xdaten)) (setq n (+ n 2)) (if (=(cdr(nth n (cdr xdaten)))key) (setq RetList (cons (cdr(nth (+ n 1)(cdr xdaten)))RetList)))) (reverse RetList) )
Aufruf: (JB_xdaten:get "GZ") oder (JB_xdaten:get "BEZ") .... In BricsCAD kannst Du auch den BLADE verwenden, um LISP-Dateien zu erstellen, editieren und debuggen, ich wüßte aber nicht, ob es dafür schon eine Dokumentation gibt (ich glaube noch nicht) https://help.bricsys.com/hc/de/articles/360006652793-BLADE-blade- ich wünsche frohe Festtage ------------------ viele Grüße Jörn http://www.bosse-engineering.com Bosse_tools-Überblick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cm-Zeichner Mitglied Vermessungstechniker
Beiträge: 162 Registriert: 23.07.2009 Win10Pro 64Bit, Bricscad-Classic V23.1.05
|
erstellt am: 17. Dez. 2020 13:15 <-- editieren / zitieren --> Unities abgeben:
Danke Jörg, konnte es bei mir einbauen und es funkt, so wie vorgestellt. Danke für das Weihnachtsgeschenk. Frohe Weihnachten, ruhig ist es in unserer Branche ja trotz Lockdown nicht wirklich oder schaut es bei Euch anders aus? ------------------ Grüße Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |