Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  einfach und für alle: XDATA, XDICTIONARY, DICTIONARY

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  einfach und für alle: XDATA, XDICTIONARY, DICTIONARY (416 / mal gelesen)
archtools
Mitglied



Sehen Sie sich das Profil von archtools an!   Senden Sie eine Private Message an archtools  Schreiben Sie einen Gästebucheintrag für archtools

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 22. Mrz. 2022 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Schon oft wurde hier nach Programmierung für XDATA et al gefragt, und meistens kam dann auch von mir der Hinweis auf Programmbibliothelken, die sich jeder Programmierer selbst dafür zurecht programmiert hat. Das schließt Geegenheitsprogrammierer aus, weil die idR nicht über die notwendige Zeit und die vertieften Kenntnisse der XDATA-Codierung verfügen. Das geht mit CALSCRIPT jetzt anders, weil das eine sehr umfangreiche Programmbibliothek enthält, die unabhängig von CALSCRIPT in allen Lisp-Anwendungen nutzbar ist. CALSCRIPt gibt es als kostenfreie Lizenz von archtools.de/calscript.zip (noch Betaversion, Quellcodelizenz auf Anfrage verfügbar).

Mit den CALSCRIPT Funktionen XDATA-PUT, XDATA-GET, XDICTIONYRA-PUT und -GET, DICTIONARY-PUT und -GET kann jeder sehr einfach beliebige Daten an Zeichnungsobjekte oder in der DWG speichern und wieder abfragen. Dabei werden auch Symbole (Variablennamen), beliebig verschachtelte Listen und auch "Dotted Pairs" (den meisten als ENTGET bzw DXF Listen bekannt) gespeichert und korrekt wieder ausgelesen. Das ermöglicht auch das Speichern kompletter DEFUN bzw LAMBDA-Konstrukte am Objekt. Damit kann jedes von einem Programm erzeugte Objekt auch den Programmcode für seine Modifizierung oder Neuerzeugung an sich speichern.

Die Syntax ist banal und selbsterklärend:
(xdata-put <ename> <appname> <data> )
speichert am Objekt <ename> unter dem Appnamen <appname> die Daten <data>. Als Daten kann alles verwendet werden, was man in einem Lisp-Programm schreeiben kann, also alle Daten außer Entitynamen und Pikcsets (was auch wenig Sinn machen würde, weil diese nur inenrhalb einer AutoCAD-Sitzung Bestand haben). Allerdings gibt es eine mittels XDROOM ermittelbare maximale Menge an Daten (typisch um die 16 kByte), die man als XDATA an ein Objekt anhängen kann.

Gelesen werden die daten wieder via
(xdata-get <ename> <appname>

Man kann also auch sowas speichern:
(xdata-put (entlast) "TEST" '(ABC "DEF" (8 . "LAYERNAME")))

Die Funktionen XDICTIONARY-PUT und XDICTIONARY-GET funktionieren ganz analog. Der einzige Unterschied zu XDATA ist, dass man die Objekte nicht nach dem Appnamen filtern kann, und dass keine prinzipielle Begrenzung für die Datenmenge existiert.

Die Funktion DICTIONARY-PUT speichert Daten direkt in der DWG. Die Syntax lautet:
(dictionary-put <appname> <key> <data> )
Appname und Key sind wieder Strings, und die Daten können so wieder gelesen werden:
(dictionary-get <appname> <key> )

Aufbauend auf einem Dictionary ist in CALSCRIPT auch die Möglichkeit gegeben, über eine eigene "SETVAR" Funktion beliebige eigene Systemvariablen zu speichern:
(cc-setvar <varname> data)
Die Daten können sinnvollerweise so wieder ausgeklesen werden:
(cc-getvar <varname> )
Also etwa so:
(cc-setvar "MYVAR" 123)

Fragen und Verbesserungsvorschläge dazu sind immer willkommen, bitte hier im Forum stellen. Und noch ein Hinweis: in der letzten CALSCRIPT-Betaversion war ein fehler beim Auslesen von verschachtelten Dotted Pairs (die gibt's tatsächlich) enthalten, der in der aktuellen Version von heute behoben ist.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz