| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: ssget und xdata (1869 mal gelesen)
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 13. Okt. 2009 14:45 <-- editieren / zitieren --> Unities abgeben:
Servus! In einer dwg sind Blöcke mit folgenden XDATA ("appxy" (1002 . "{") (1040 . 97.791) (1000 . "xxxx") (1002 . "}")) ("appxy" (1002 . "{") (1040 . 97.791) (1000 . "yyyy") (1002 . "}")) enthalten. Mit (ssget "X" '((0 . "INSERT") (-3 ("appxy")))) bekomme ich alle blöcke aus "appxy". Wie kann ich denn jetzt noch weiter nach dem Gruppencode 1000 selektieren? So (ssget "X" '((0 . "INSERT") (-3 ("appxy") (1000 "xxxx")))) oder so (ssget "X" '((0 . "INSERT") (-3 ("appxy") (1002 . "{") (1000 . "xxxx") (1002 . "}")))) bekomme ich jedenfalls eine Fehlermeldung. Ciao Georg
------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 13. Okt. 2009 15:26 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 13. Okt. 2009 15:34 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 13. Okt. 2009 23:48 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von gmk: Ja, schade, hab's grad im AUGI-Forum gelesen.Ciao Georg
Du kannst ja noch weitere Apps an das Objekt hängen. Ich hänge oft für 5, 6 oder mehr Appnamen Daten ein Objekt, oft sogar nur Dummy-Daten. Die Appnamen der Xdata dienen dann nur der schnellen Objektwahl. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 14. Okt. 2009 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von archtools: Ich hänge oft für 5, 6 oder mehr Appnamen Daten ein Objekt, oft sogar nur Dummy-Daten. Die Appnamen der Xdata dienen dann nur der schnellen Objektwahl.
.... schöne Idee .... Hauptsache denke ich dann daran , wenn ichs brauch ..
------------------ - 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 |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 14. Okt. 2009 12:23 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von archtools: Du kannst ja noch weitere Apps an das Objekt hängen. Ich hänge oft für 5, 6 oder mehr Appnamen Daten ein Objekt, oft sogar nur Dummy-Daten. Die Appnamen der Xdata dienen dann nur der schnellen Objektwahl.
...wäre eine Möglichkeit. Im GC 1000 ist ein Zeitstempel abgelegt. Könnte u.U. sehr viele Applinamen ergeben. Ciao Georg ------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 14. Okt. 2009 21:34 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von gmk: ...wäre eine Möglichkeit. Im GC 1000 ist ein Zeitstempel abgelegt. Könnte u.U. sehr viele Applinamen ergeben.
Ja, das ist normal. Ich verwende auch fast immer die Erzeugungszeit als eindeutige Referenz, um z.B. zusammegehörende Objekte zu markieren. Da gibt's dann z.B. einen Appnamen "APP", unter dem dann eine Assoc-Liste mit u.a. ("REFERENZ" . "20091014.10235564878") gespeichert ist, und dann gibt's einen weiteren Appnamen "APP-20091014.10235564878". Damit kann ich für jedes angeklickte Objekt die RefHandle auslesen und die zusammen gehördenden Objekte schnell auswählen. Niemand stört es, wenn in einer DWG 100.000 verschiedene Appnamen vorkommen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 14. Okt. 2009 22:44 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Okt. 2009 08:08 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von cadffm: [b]Darf ich mich kurz Vorstellen: Niemand ! [/B]
aber im Grunde sind die App-Einträge wirklich für nichts relevant .. es sei denn ein ganz schlauer hat ne Firmenrichtlinien herausgegeben, wo sowas nicht erlaubt ist ...
------------------ - 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 |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 15. Okt. 2009 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Okt. 2009 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 15. Okt. 2009 19:47 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von cadffm: [i]Nein nicht wirklich, ich habe nur etwas gegen Datenmüll in den DWG´s.
Naja, in dem Fall ist das ja kein Datenmüll, sondern es sind Nutzdaten, die die Selektion von applikationsspezifisch zusammenhängenden Objekten quer durch eine DWG mit etlichen hunderttausend Objekten ermöglichen. Du kannst Dich natürlich immer auf den Standpunkt stellen, dass eine DWG nur die Daten enthalten darf, die Du für notwendig erachtest. Da ist dann natürlich gut die Hälfte der DXF-Gruppencodes völlig obsolet, und da reicht es dann ja auch völlig aus, wenn Layernamen usw durch fortlaufende Nummern ersetzt werden - alles andere ist ja in der Tat nicht notwendiger Datenmüll. Und warum steht bei einer Linie unter Gruppencode 0 "LINE", wenn es ein einfaches "L" genau so tut? Datenmüll! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 15. Okt. 2009 19:52 <-- editieren / zitieren --> Unities abgeben:
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 16. Okt. 2009 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Hallo Georg, Zitat: Original erstellt von gmk:
Wie speicherst Du die ASSOC-Liste zu einer Appli?
meine Listen der erweiterten Daten sehen zum Beispiel so aus: (-3 ("20029" (1070 . 11000)) ("20025" (1040 . 1624.52)) ("20026" (1040 . 2657.67)) ("20027" (1040 . 654.644)) ("20028" (1040 . 126.0)) ("20060" (1040 . 126.0)) ("20062" (1040 . 0.0)) ("20063" (1002 . "{") (1002 . "}")) ("20061" (1000 . "m")) ("20066" (1000 . "Test")) ("20022" (1000 . "4_0121C114_47C8C")) ("20075" (1070 . 5)) ("20067" (1000 . "unbenutzt")) ("20074" (1000 . "unbenutzt")) ("20072" (1000 . "unbenutzt")) ("20073" (1000 . "unbenutzt")) ("20033" (1002 . "{") (1000 . "weiß!-!-") (1002 . "}")) ("20031" (1070 . 12)) ("20032" (1000 . "unbenutzt")) ("20086" (1000 . "")) ("20087" (1040 . 0.0)) ("20088" (1040 . 94.5)) ("20034" (1070 . 1)) ("20089" (1070 . 0)) ("20092" (1040 . 0.0)) ("20093" (1040 . 0.0)) ("20094" (1002 . "{") (1002 . "{") (1040 . 1624.52) (1040 . 2656.56) (1070 . 1) (1002 . "}") (1002 . "{") (1040 . 2279.16) (1040 . 2656.56) (1070 . 2) (1002 . "}") (1002 . "{") (1040 . 2279.16) (1040 . 2782.56) (1070 . 2) (1002 . "}") (1002 . "{") (1040 . 1624.52) (1040 . 2782.56) (1070 . 2) (1002 . "}") (1002 . "{") (1040 . 1624.52) (1040 . 2656.56) (1070 . 2) (1002 . "}") (1002 . "}")) ("20098" (1002 . "{") (1000 . "") (1002 . "}")) ("20059" (1000 . "Test-Schriften")) ("20110" (1000 . "m"))) Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 16. Okt. 2009 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 16. Okt. 2009 17:49 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von gmk: Wie speicherst Du die ASSOC-Liste zu einer Appli? siehe auch hier meine Frage: http://ww3.cad.de/foren/ubb/Forum145/HTML/002885.shtml
Naja, ein klein bißchen Arbeit muss ein Programmierer schon selber leisten. So ziemlich jeder Profi wird wohl in seiner Funktionsbibliothek Funktionen wie (xdata-put <ename> <appname> <data> ) und (xdata-get <ename> <appname> ) haben, bei denen in <data> ganz xbeliebige Daten angegeben werden können. Aber der Trick, um beispielsweise Assoc-Listen oder überlange Strings speichern zu können, ist simpel: Du markierst die Daten dann speziell. Bei Listen hast Du ja noch (1002 . "{") usw, um die Listenstrukturen abbilden zu können, und für dotted pairs nimmst Du halt einfach noch ein selbst definiertes Steuerzeichen zur Erkennung mit rein. Mit anderen Worten: das dotted pair (ABC . 123) speicherst Du dann als diese Liste: (§§DOTTEDPAIR ABC 123). Beim Auslesen der Xdata musst Du solche speziell behandelte Listen halt wieder passend entschlüsseln. Entitynamen speichere ich ganz simpel in Form der jeweiligen Refhandle, die ja die Zeichnungssicherung überstehen. AUch da hilft wieder ein spezielles Steuerzeichen. Wenn in den Daten ein Ename steht, wird aus dessen Entget-Liste die Refhandle gelesen, und dann wird das als (§§REFHANDLE <refhandle> ) gespeichert Damit Du auch Symbole speichern kannst, empfiehlt es sich, beim Verschlüsseln der Xdata Strings nicht einfach so zu speichern, sondern mit Anführungszeichen im String, der String "STR" wird also als ""STR"" gespeichert. Wenn Du dann beim Entschlüsseln alle Strings mit READ "eine Stufe" zurück führst, wird aus (read ""STR"") der wieder der String "STR", und aus "STR" das Symbol STR. Lange Strings (die maximale Länge ist irgend wie begrenzt, vermutlich 255 Zeichen oder ähnlich), zerlegst Du in die nötige Anzahl Teilsstrings und speicherst die in einer Liste, die Du zwecks Wiedererkennbarkeit eben auch wieder mit einem Steuerzeichen versiehst - wenn also das erste Element einer Liste §§LONGSTRING ist, dann macht die Decrypt-Funktion daraus (apply 'strcat (cdr lst)). Die einzige Sorge, die Du beim Speichern von Xdata dann noch hast, ist die Einhaltung des maximalen Speicherraums von ca 16 kByte. Um so blöde Sachen wie (1002 . "{") usw und den DXF-Gruppencodes für Integer- oder Realzahlen brauchst Du Dich dann nie mehr zu kümmern - ich hab das bis jetzt in dem Thread bestimmt schon über 10 Jahre lang nicht mehr eingetippt. Wenn ich eine Liste (1 2 3 A B C) speichern will, dann speichere ich die eben einfach mit (xdata-put <ename> <appname> '(1 2 3 A B C)). Um die Ver- und Entschlüsselung kümmern sich dann meine Hilfsprogramme, aber damit will ich doch bitte nix mehr zu tun haben. [Diese Nachricht wurde von archtools am 16. Okt. 2009 editiert.] [Diese Nachricht wurde von archtools am 16. Okt. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 16. Okt. 2009 17:55 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von cadffm: @Tom Genau, denn wer hat schon von den Endkunden die jeweiligen Applikationen um diesen Datenwust nutzen zu können. [i](du bist doch ein alter Fuchs: Ist dir bekannt wozu Adesk als erstes die EEDs genutzt hat ? - würde mich mal interessieren) [/i]
Das kann ich Dir auch nicht sagen, aber ich vermute mal ganz stark, dass die erste Anwendung dafür bei den Volumemmodellierern war. Das dürfte wohl etwa mit AutoCAD 12 und AME gewesen sein. AME war ein CSG-Modellierer, und da wird Autodesk das schon genutzt haben. In den später folgenden ACIS-Volumenkörpern (R13 oder R14) jedenfalls wird die NURBS-Geometrie nur geringfügig verschlüsselt (das war damals Auflage der ACIS-Lizenz) in Form von XData gepeichert. Andere Anwendungen der Xdata wie z.B. Bemaßungsstil-Überschreibungen kamen erst später. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 16. Okt. 2009 21:25 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
Ex-Mitglied
|
erstellt am: 16. Okt. 2009 22:04 <-- editieren / zitieren -->
Hi, reine Vermutungen: AME AutoCAD-Modelling-Extension (schon erwähnt) AVE AutoCAD-Visualisation-Extension (an Lichtern, Kameras, Pfade/Einstellungen für FLC-Erzeugung) ASE AutoCAD-SQL-Extension (um die Datenverknüpfung zur Datenbank/Datensatz speichern zu können) alles neu in AutoCAD 12 (als auch imho EED dazukam) - alfred - ------------------ www.hollaus.at |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 19. Okt. 2009 09:37 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 19. Okt. 2009 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Zitat: Original erstellt von gmk: @ Bernd und TomDanke für das Beispiel und die Erläuterung. Ich wollte nur sicher gehen dass es nicht doch geht beliebige Listen in den xdatas ohne Zusatzprogramm unter zubringen. Ciao Georg
Merkwürdige Formulierung. Natürlich geht es "ohne Zusatzprogramm". Du bist der Programmierer, und Du allein entscheidest, wie Du xbeliebige Daten als Xdata speicherst. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |