Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Daten speichern

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:  Daten speichern (1501 mal gelesen)
MH Bit
Mitglied
Angestellter


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

Beiträge: 20
Registriert: 23.03.2004

erstellt am: 23. Mrz. 2004 11:17    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

Hallo,

ich möchte Daten anhand einer Liste einem Objekt anfügen, so dass ich nach erneutem laden der Zeichnung dies Daten wieder zur Verügung habe. Das Objekt das ich zeichnen möchte, wir über eine Maske dürch Längen der Kanten angegenen. Diese Daten möchte ich speichern
(z.B. Viereck Höhe: 100 Breite: 200 Liste die gespeichert werden soll: ((1 100)(2 200)) Aus diesen Daten errechne ich  mir die Koordinaten wo das Viereck gezeichnet werden soll. Leider sind die Objekte etwas komplizierter)

Ich hab etwas Code gefunden mit dem das klappen soll aber ich schaff es nicht. Die Funktion verlagt den Objektnamen, den ich mit (cdr(car(entget(entlast)))) bekomme. aber irgendwie klappt das nicht. Wer Kann mir weiterhelfen?

Hier noch der code den ich gefunden habe:
;; ! ****************************************************************************
;; ! XD_WriteX
;; ! ****************************************************************************
;; ! Function : Writes extended entity into an entity
;; ! Argument : [e]      - entity name
;; !            [xdLst]  - list of data
;; !            [AppName] - Application Name (must be already registered)
;; ! Return  : complete entity list is returned if (XD_WriteX ...) is successful,
;; !            else nil is returned
;; ! Updated  : August 11, 1998
;; ! Copyright: (C) 2000, Four Dimension Technologies, Singapore
;; ! Contact  : rakesh.rao@4d-technologies.com for help/support/info
;; ! Comment  : - Program can detect data types (STR, REAL,INT, LIST).
;; !            - Entitiy handles must be prefixed by a "#" sign
;; !              (eg. (XD_WriteX e (list "300XLCU" "#5DE")).
;; !            - 1010 group stores points, which is a list of 3 reals
;; !            - If you want to store a nested list, it should have {}
;; !            - as the first element of the list
;; ! ****************************************************************************

(defun XD_WriteX(ename xdLst AppName / entl xd)
(setq
xd (reverse (XD_WriteX@ xdLst))
xd (list -3 (cons AppName xd))
entl (append (entget ename) (list xd))
)
(entmod entl)
entl
)

(defun XD_WriteX@ (xdLst / xd xd1 itm)
(setq xd '())
(foreach itm xdLst
(cond
((and (= (type itm) 'LIST) (= (car itm) "{}"))
(setq
xd1 (cons (cons 1002 "}") (XD_WriteX@ (cdr itm)))
xd1 (append xd1 (list (cons 1002 "{")))
xd (append xd1 xd)
)
)
((and (= (type itm) 'LIST) (= (length itm) 3))
(setq xd (cons (cons 1010 itm) xd))
)
((and (= (type itm) 'STR) (= (substr itm 1 1) "#"))
(setq xd (cons (cons 1005 (substr itm 2)) xd))
)
((= (type itm) 'STR)
(setq xd (cons (cons 1000 itm) xd))
)
((= (type itm) 'INT)
(setq xd (cons (cons 1070 itm) xd))
)
((= (type itm) 'REAL)
(setq xd (cons (cons 1040 itm) xd))
)
)
)
xd
)


Gruß Michael

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Mrz. 2004 11:47    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 Nur für MH Bit 10 Unities + Antwort hilfreich

Hallo Michael,

bevor du XDatas anhängen kannst musst du mit (regapp..) die Applikation registrieren.

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

MH Bit
Mitglied
Angestellter


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

Beiträge: 20
Registriert: 23.03.2004

erstellt am: 23. Mrz. 2004 12:28    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

Hallo Holger,

Was muss ich??

Jetzt kapier ich gar nichts mehr.


Gruß Michael

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Mrz. 2004 12:34    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 Nur für MH Bit 10 Unities + Antwort hilfreich

Hallo Michael,

die XDatas werden einer bestimmten, bekannten Applikation zugeordnet -> (list -3 (cons AppName xd))

Damit das funktioniert, muss man Acad mitteilen, dass es die mit Applikation eines bestimmten Namens auch gibt. Das macht man mit (regapp "MEINSUPERAPPLOKATIONSNAME")
Die LISP-Hilfe schreibt dazu:

Zitat:

Registers an application name with the current AutoCAD drawing in preparation for using extended object data
(regapp application)

Arguments

application

A string naming the application. The name must be a valid symbol table name. See the description of snvalid for the rules AutoLISP uses to determine if a symbol name is valid.

Return Values

If an application of the same name has already been registered, this function returns nil; otherwise it returns the name of the application.
If registered successfully, the application name is entered into the APPID symbol table. This table maintains a list of the applications that are using extended data in the drawing.

Examples

(regapp "ADESK_4153322344")

(regapp "DESIGNER-v2.1-124753")

NOTE It is recommended that you pick a unique application name. One way of ensuring this is to adopt a naming scheme that uses the company or product name and a unique number (like your telephone number or the current date/time). The product version number can be included in the application name or stored by the application in a separate integer or real-number field; for example, (1040 2.1).


Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

MH Bit
Mitglied
Angestellter


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

Beiträge: 20
Registriert: 23.03.2004

erstellt am: 23. Mrz. 2004 13:07    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

Hallo Holger,

Das regapp, muss ich das jedesmal machen, also bei jeder neuen Zeichnung oder merkt sich AutoCAD  die Applikation für dem Rest seiner Lebenszeit auf dem Rechner?

Gruß Michael

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Mrz. 2004 13:42    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 Nur für MH Bit 10 Unities + Antwort hilfreich

in jeder Zeichnung.

Du kannst ja vorher Checken, ob es schon einen entsprechenden Eintrag in der Tabelle der Applikationseinträge gibt.
(if (tblobjname "APPID" "DEINSUPIAPPNAME"))
(alert "Ja, gibts schon")
(alert "Nö, gibts noch nicht")
)

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

MH Bit
Mitglied
Angestellter


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

Beiträge: 20
Registriert: 23.03.2004

erstellt am: 23. Mrz. 2004 14:33    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

Vielen Dank,

du hast mir sehr geholfen!!

Gruß Michael

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

MH Bit
Mitglied
Angestellter


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

Beiträge: 20
Registriert: 23.03.2004

erstellt am: 23. Mrz. 2004 15:42    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

Hallo Holger,

ich hab da noch ein Problem:

Die Daten von Hand einfügen, also beim erzeugen des Objekt funktioniert jetzt. Wenn ich aber die oben gezeigte Funktion verwenden will, muss ich den ename mitgeben (1.Argument).

Mit (entget(entlast)) bekomme ich die Letzte Lsite der Geometriedatenbank. Das entspricht auch dem Objekt dem ich die Daten anfügen will.
((-1 . <Objektname: 4005ded0> )....
Dann müsste doch 4005ded0 der Objektname sein.

Oben in der Funktion gibt es den Aufruf (entget ename)
Wenn ich jetzt (entget 4005ded0) eingebe kommt ein Fehler: ...lentityp nil
Was muß ich dem entget mitgeben (ich würd gerne den Objektnamen mitgeben)? Was gehört alles zum Objektnamen?

Gruß Michael
Aber, was gehört zum Objektnamen?

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Mrz. 2004 16:38    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 Nur für MH Bit 10 Unities + Antwort hilfreich

zum Objektnamen gehört alles nach dem (-1 .
Wenn du ein Objekt wählen möchtest dann mit (car (entsel)). willst du viele Objekte dann mit (ssget), dann hast du allerdings erst einen Auswahlsatz. Um daraus eine Elementliste zu machen, dann kopiere dir aus dem Beitrag http://ww3.cad.de/foren/ubb/Forum145/HTML/000037.shtml die Funktion (defun bau_elemli ..)
heraus. Mit den Elementnamen kannst du ja dann wieder etwas anfangen.

Bist aber ganz schön mutig, ohne so recht zu wissen, was du machst, das einfach zu machen. 

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

MH Bit
Mitglied
Angestellter


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

Beiträge: 20
Registriert: 23.03.2004

erstellt am: 25. Mrz. 2004 08:33    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

HAllo Holger

Vielen Dank, Du hast mir sehr geholfen. Wenn ich noch weiter Fragen hab werde mich wieder melden.

Ohne Mut kann man nichts neues lernen. Zum Glück weiß ich was das Proggi machen soll wenn es fertig ist.

Gruß Michael

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

Microstation V8i, TriCAD, AutoCAD2014, EPlan P8 2.2, Core I5, 16GB Arbeitsspeicher

erstellt am: 03. Apr. 2007 11:59    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 Nur für MH Bit 10 Unities + Antwort hilfreich

Hallo,

ich hab obige Routine mal ausprobiert, funktioniert auch, und hab Daten an einen Block angehängt, aber wie lese ich die Daten wieder aus ? Wo stehen die ? Hab GC -3 nirgends gefunden !

Gruß, Jürgen

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 03. Apr. 2007 12:21    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 Nur für MH Bit 10 Unities + Antwort hilfreich

(entget(car(entsel))'("*"))
liefert dir Xdatas aller Applis
(entget(car(entsel))'("ACAD"))
liefert dir Xdatas der Appli ACAD
usw.


------------------
  - 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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 03. Apr. 2007 13:56    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 Nur für MH Bit 10 Unities + Antwort hilfreich

das Werkzeug xdlist (ist glaube ich standard)
liefert dir eine Liste der xdatas am gewählten Objekt


------------------
Gruß
    CADwiesel
Besucht uns im CHAT

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 10. Apr. 2007 11:22    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 Nur für MH Bit 10 Unities + Antwort hilfreich

Hallo CADmium CADwiesel,

Danke ! Was ich erreichen wollte hat geklappt !

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