Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Kann man Variablen dauerhaft...

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:  Kann man Variablen dauerhaft... (3952 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 23. Nov. 2012 16:02    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

Ähnlich wie bei den Systemvariablen, kann man denn lokale Variablen dauerhaft in der Zeichendatenbank speichern. Bei meiner Aufgabenstellung habe ich ZeichnungsStempelBeschriftungen, die über Textfields aus der entsprechenden LispVariable gefüllt werden. Jetzt ist es so wenn ich die Zeichnung neu öffne sind logischweise die Variablen leer.

------------------
Gruss Dirk

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Nov. 2012 17:51    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
vielleicht über ein Dictionary, anbei ein Beispiel:
Code:

;;;-Neues Dict anlegen, wenn vorhanden löschen
(defun JB_Dict:New(GcList name / NEWDICT)
  (if(dictsearch (namedobjdict) name)(dictremove (namedobjdict) name))
 
  (setq newdict(dictadd (namedobjdict) name
                (entmakex (list '(0 . "DICTIONARY")
                                '(100 . "AcDbDictionary")))))
  (dictadd newdict name (entmakex
                          (append (list '(0 . "XRECORD")
                                        '(100 . "AcDbXrecord"))
                            GCList))))
;;;vorhandenes Dict auslesen, GC's 1 70 40 10
(defun JB_Dict:Read (name / DICT)
  (if (setq dict(dictsearch (namedobjdict) name))
  (vl-remove-if '(lambda(A)
                  (not(member(car A)'(1 70 40 10))))
    (dictnext(cdr(assoc -1 dict))'T)))
  )

(defun c:test ( / liste)
  (setq liste (list (cons 1 "MeinWert")
                    (cons 70 999)
                    (cons 40 999.1)
                    (cons 10 '(10.0 10.0 10.0))))
  (JB_Dict:New liste "JB_Dict1")

  (JB_Dict:Read "JB_Dict1")
  )


Als Alternative dazu wären Xdaten, die z.B. an das Stempelfeld gehängt werden auch nicht schlecht.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

VektorAdd-HD-Youtube

Stammtisch in Wolfsburg am 03.12. oder 10.12.2012

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 23. Nov. 2012 18:58    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

Echt toll Jörn, muss ich am Montag gleich mal ausprobieren - Danke

------------------
Gruss Dirk

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: 24. Nov. 2012 10:52    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
eine andere Idee wären die Zeichnungseigenschaften. Die hätten auch den Vorteil, dass diese leicht durch den Anwender zu ändern wären.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

PixelMission
Mitglied
Designer


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

Beiträge: 31
Registriert: 17.12.2011

erstellt am: 26. Nov. 2012 09:24    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 cadplayer 10 Unities + Antwort hilfreich

Moin!

Klingt evtl "altbacken" ... aber ich behelfe mir damit, alles Mögliche als Attribute (sind in einem Fall knapp 300!) in einem Block zu hinterlegen - und diesem beim Öffnen der Zeichnung alle Variablen zu "entlocken"... So habe ich alles wieder dort, wo ich es brauche! Die Uservar's haben mir noch nie gereicht...

Gruß PM

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 26. Nov. 2012 13:35    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

Danke ersteinmal für alle Beiträge, sind alles ganz unterschiedliche Wege. Mein erster Weg war auch der, zu fragen was steht in den Zeichnungseigenschaften. Allerdings bin ich da nicht fündig geworden, wie man die in vlide abfragen kann. Dann kam ich ich rein zufällig auf die Textfields, die es ermöglichen, immer wenn ich eine Änderung in den Eigenschaften vornehme auch die Texte aktualisiert werden.

Der Einworf von Jörn ist prima, allerdings muss ich mich auf dem Gebiet der Dictonary´s erstmal einarbeiten. Es funktioniert aber einwandfrei in meinem code und ist bereits das was ich brauche.

Bei PM ist mir unklar, wie aus den Attributwerten die Variablen bedient werden sollen

Holger, der Vorteil , wie du schon sagtest, es wäre sichtbar auf einen Blick... kannst du sagen, wo die Angaben der Zeichnungseigenschaften abgelegt werden oder wie ich auf diese zugreifen kann ?

------------------
Gruss Dirk

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 26. Nov. 2012 13:43    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 cadplayer 10 Unities + Antwort hilfreich

bei PM: Mit einer SCHREIB- und LESE-Funktion (welche Du erst erstellen mußt)
Generell: User löscht aus Unwissenheit die Referenz(hörte sich so an als reden wir dabei von einer Blockreferenz)
bedeutet = Daten weg.

Zeichnungseigenschaften:
Google-Suche im Lispforum , zB. so: site:cad.de Forum145 "Zeichnungseigenschaften"
ergibt zB. dieser Treffer hier: KLICK oder HIER
 

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 26. Nov. 2012 editiert.]

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: 26. Nov. 2012 18:39    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:

Holger, der Vorteil , wie du schon sagtest, es wäre sichtbar auf einen Blick... kannst du sagen, wo die Angaben der Zeichnungseigenschaften abgelegt werden oder wie ich auf diese zugreifen kann ?


bin zwar nicht Holger aber ein Schubs in die richtige Richtung
sollten folgende Zeilen sein:

(setq DOC(vla-get-activedocument (vlax-get-acad-object)))
(setq INFOOBJ (vla-get-SummaryInfo DOC))
(vlax-dump-object INFOOBJ)

der Rest ergibt sich eigentlich  

du könntest auch einfach mal das Forum nach vla-get-SummaryInfo durchsuchen ...

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

joeycool
Mitglied
Ingenieur TGA


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

Beiträge: 1451
Registriert: 01.06.2004

MEP/ACAD 2008, 2010, 2011 2012 und 2013, 2014, 2015
WIN7 64 bit
ATI 2,8 GHZ, SSD Platte, 16 GB Ram
NVDIA Quadro FX 4600

erstellt am: 27. Nov. 2012 09:20    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
......


Holger, der Vorteil , wie du schon sagtest, es wäre sichtbar auf einen Blick... kannst du sagen, wo die Angaben der Zeichnungseigenschaften abgelegt werden oder wie ich auf diese zugreifen kann ?



Moin,

also mein Favourit wären dafür auf jeden Fall die selbst definierten Variablen unter "benutzerdefinierten Eigenschaften", (nicht verwechseln mit Zeichnungseigenschaften) die haben übrigens (erstmal) keine mengenmäßige Beschränkung, und "rankommen" tut man damit mit dwgeigen....
(wie man immer ins richtige der 4 Register kommt, habe ich noch nicht rausgefunden, aber da ich immer nur das Letzte benutze, und das Programm sich das merkt, habe ich kein Problem damit...)

Und hier hat mir ein anderer Großmeister die Hand geführt, wie ich aus diesem benutzerdefinierten Variablen ZeichnungsVariablen erzeuge.

Joeycool

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 27. Nov. 2012 10:31    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


STAMPEL.odcl.txt

 
Danke joeycool, nicht unbeding das was ich brauche, aber hab ich für alle Fälle auf meine Platte gelegt. Damit vllt mal Ergebnisse gezeigt werden zum testen.
Voraussetzung Odcl-runtime von www.opendcl.com installieren

Code:

; >>>>>>>>> Funktionen zum dauerhaften Ablegen von Variablen <<<<<<<<<<<<<<<<<<<<<<<<<<<<
;;;-Neues Dict anlegen, wenn vorhanden löschen
(defun JB_Dict:New(GcList name / NEWDICT)
  (if(dictsearch (namedobjdict) name)(dictremove (namedobjdict) name))

  (setq newdict(dictadd (namedobjdict) name
                (entmakex (list '(0 . "DICTIONARY")
                                '(100 . "AcDbDictionary")))))
  (dictadd newdict name (entmakex
                          (append (list '(0 . "XRECORD")
                                        '(100 . "AcDbXrecord"))
                            GCList))))
;;;vorhandenes Dict auslesen, GC's 1 70 40 10
(defun JB_Dict:Read (name / DICT)
  (if (setq dict(dictsearch (namedobjdict) name))
  (vl-remove-if '(lambda(A)
                  (not(member(car A)'(1 70 40 10))))
    (dictnext(cdr(assoc -1 dict))'T)))
  )
; (defun c:test ( / liste) (setq liste (list (cons 1 "MeinWert"))) (JB_Dict:New liste "JB_Dict1") (JB_Dict:Read "JB_Dict1") )

(command "_OPENDCL")
(defun c:stamp (/)
  (dcl_project_load "h:\\MARKTEKNIK\\STÄMPEL.odcl") ; <<<<<<<<<<<<<<<<<<<<<<<<<< Pfad angeben wo die die ODCL-form liegt !!!!!!!!!!!!!
  (dcl_form_show STÄMPEL_Form1)
  (setvar "CMDECHO" 0)
  (princ)
)
(defun c:STÄMPEL_Form1_OnInitialize ()
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict1"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_HANDLING value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_HANDLING "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict2"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_HANDLÄGGARE value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_HANDLÄGGARE "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict3"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_DWG-FIL value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_DWG-FIL "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict4"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_KONSTR value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_KONSTR "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict5"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_DATUM value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_DATUM "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict6"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_PROJEKTNAMN value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_PROJEKTNAMN "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict7"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_RITNING value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_RITNING "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict8"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_SKALA_A1 value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_SKALA_A1 "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict9"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_SKALA_A3 value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_SKALA_A3 "-")
    )
  (if (setq value (cdr (assoc 1 (JB_Dict:Read "JB_Dict10"))))
    (dcl_Control_SetText STÄMPEL_Form1_tb_OBJEKTNR value)
    (dcl_Control_SetText STÄMPEL_Form1_tb_OBJEKTNR "-")
    )
)

(defun c:STÄMPEL_Form1_tb_HANDLING_OnEditChanged (handling /)
  (setq s_handling handling)
  (setq liste1 (list (cons 1 s_handling)))
  (JB_Dict:New liste1 "JB_Dict1")
  (JB_Dict:Read "JB_Dict1")

(defun c:STÄMPEL_Form1_tb_HANDLÄGGARE_OnEditChanged (handläggare /)
  (setq s_handlägare handläggare)
  (setq liste2 (list (cons 1 s_handlägare)))
  (JB_Dict:New liste2 "JB_Dict2")
  (JB_Dict:Read "JB_Dict2")
)

(defun c:STÄMPEL_Form1_tb_DWG-FIL_OnEditChanged (dwg-fil /)
  (setq s_dwg-fil dwg-fil)
  (setq liste3 (list (cons 1 s_DWG-FIL)))
  (JB_Dict:New liste3 "JB_Dict3")
  (JB_Dict:Read "JB_Dict3")
)

(defun c:STÄMPEL_Form1_tb_KONSTR_OnEditChanged (konstr /)
  (setq s_konstr konstr)
  (setq liste4 (list (cons 1 s_KONSTR)))
  (JB_Dict:New liste4 "JB_Dict4")
  (JB_Dict:Read "JB_Dict4")
)

(defun c:STÄMPEL_Form1_tb_DATUM_OnEditChanged (datum /)
  (setq s_datum datum)
  (setq liste5 (list (cons 1 s_DATUM)))
  (JB_Dict:New liste5 "JB_Dict5")
  (JB_Dict:Read "JB_Dict5")
)

(defun c:STÄMPEL_Form1_tb_PROJEKTNAMN_OnEditChanged (projektnamn /)
  (setq s_projektnamn projektnamn)
  (setq liste6 (list (cons 1 s_PROJEKTNAMN)))
  (JB_Dict:New liste6 "JB_Dict6")
  (JB_Dict:Read "JB_Dict6")
)

(defun c:STÄMPEL_Form1_tb_RITNING_OnEditChanged (ritning /)
  (setq s_ritning ritning)
  (setq liste7 (list (cons 1 s_RITNING)))
  (JB_Dict:New liste7 "JB_Dict7")
  (JB_Dict:Read "JB_Dict7")
)

(defun c:STÄMPEL_Form1_tb_SKALA_A1_OnEditChanged (skala-a1 /)
  (setq s_skala-a1 skala-a1)
  (setq liste8 (list (cons 1 s_SKALA-A1)))
  (JB_Dict:New liste8 "JB_Dict8")
  (JB_Dict:Read "JB_Dict8")
)

(defun c:STÄMPEL_Form1_tb_SKALA_A3_OnEditChanged (skala-a3 /)
  (setq s_skala-a3 skala-a3)
  (setq liste9 (list (cons 1 s_SKALA-A3)))
  (JB_Dict:New liste9 "JB_Dict9")
  (JB_Dict:Read "JB_Dict9")
)

(defun c:STÄMPEL_Form1_tb_OBJEKTNR_OnEditChanged (objektnr /)
  (setq s_objektnr objektnr)
  (setq liste10 (list (cons 1 s_OBJEKTNR)))
  (JB_Dict:New liste10 "JB_Dict10")
  (JB_Dict:Read "JB_Dict10")
)

(defun c:STÄMPEL_Form1_tb_copy_OnEditChanged (copy /)
  (setq s_copy copy)
)
(defun c:STÄMPEL_Form1_cmdLayout_OnClicked (/ anz)
  (if (setq anz (fix (distof s_copy)))
    (repeat anz (command "_.-LAYOUT" "_copy" "" ""))
    )
  (setvar "CMDECHO" 1)
)


------------------
Gruss Dirk

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 27. Nov. 2012 10:35    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


SectionTemplate.dwt.txt

 
Stempel vorlage vergessen...

------------------
Gruss Dirk

[Diese Nachricht wurde von cadplayer am 27. Nov. 2012 editiert.]

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Nov. 2012 08: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 Nur für cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
ich würde vielleicht noch versuchen, nur ein Dict zu verwenden, und dann anhand abgespeicherter Gruppencodes die Einträge speichern oder wiederholen.

Dabei bin ich aber auf ein Problem gestoßen: Welche Gruppencodes kann ich in den XRecords überhaupt verwenden?
1 String
70 INT
40 REAL
10 Koordinatenliste

So war eigentlich mein Stand.

Dann habe ich mal 1-9 für String's ausprobiert, das klappt, und dann habe ich noch folgendes Beispiel im Netz gefunden:
http://www.orlowski-matthias.de/cad/downloads/AutoLISP-Handbuch.pdf

Code:

(defun C:MAKEXRECORD( / xrec xname )
; Erstellen der Xrecord-Datenliste
(setq xrec '((0 . "XRECORD")(100 . "AcDbXrecord")
(1 . (1 . "Dies ist eine Testliste")
(10 1.0 2.0 0.0) (40 . 3.14159) (50 . 3.14159)
(62 . 1) (70 . 180)))
)

; Entmakex zur Erstellung eines Xrecord ohne Besitzer verwenden
(setq xname (entmakex xrec))
; Neuen Xrecord zum benannten Objekt-Wörterbuch hinzufügen
(dictadd (namedobjdict) "XRECLIST" xname)
(princ)
)
(defun C:LISTXRECORD ( / xlist )
; Auffinden des Xrecord im benannten Objekt-Wörterbuch
(setq xlist (dictsearch (namedobjdict) "XRECLIST"))
; Drucken Xrecord-Datenliste
(princ xlist)
(princ)
)


Das sieht sehr interessant aus, dann könnte man doch unter dem Gruppencode 1 eine ganze Liste speichern, das wäre ziemlich gut, hat bei mir aber leider nicht funktioniert.

So in der Form kommt im VLIDE-Editor folgende Meldung:
"Überzählige CDR-Exemplare in Listenpaar mit Punkttrennung in Eingabe"

Wenn ich den Punkt hinter der 1 wegnehme, dann akzeptiert mir zwar der VLIDE-Editor den Code, aber bei der Ausführung gibt es folgenden Fehler:

Befehl: MAKEXRECORD
; Fehler: Fehlerhafte DXF-Gruppe: (1 (1 . "Dies ist eine Testliste") (10 1.0
2.0 0.0) (40 . 3.14159) (50 . 3.14159) (62 . 1) (70 . 180))


Wer von Euch kennt sich mit erlaubten Daten/typen in XRecords für die Verwendung von Dictionary's gut aus und kann das hier mal erläutern?

Aber davon ab, Dirk, ich finde die Idee gut mit dem hinterlegten Bild des Stempelfeldes im Dialogfenster, das hat was.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

VektorAdd-HD-Youtube

Stammtisch in Wolfsburg am 03.12. oder 10.12.2012

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 28. Nov. 2012 08:48    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 cadplayer 10 Unities + Antwort hilfreich

@Jörn
Du stehst direkt vor dem Wald der dir die Bäume verdeckt, da müßte man doch etwas mehr als einen Punkt entfernen oder ?
(Schreibfehler in der R14-Hilfe)

Zitat:

(defun C:MAKEXRECORD ( / xrec xname )
  ; Erstellen der Xrecord-Datenliste
(setq xrec '((0 . "XRECORD")
      (100 . "AcDbXrecord")
      (1 . "Dies ist eine Testliste")
      (10 1.0 2.0 0.0)
      (40 . 3.14159)
      (50 . 3.14159)
      (62 . 1)
      (70 . 180))
  )
  ; Entmakex zur Erstellung eines Xrecord ohne Besitzer verwenden
  (setq xname (entmakex xrec))
  ; Neuen Xrecord zum benannten Objekt-Wörterbuch hinzufügen
(dictadd (namedobjdict) "XRECLIST" xname)
(princ)
)

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Nov. 2012 09:32    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Sebastian,
vom Prinzip hast Du recht, aber ich hatte die vage Hoffnung, daß ich in den Gruppencode 1 eine ganze Liste speichern kann, die dann wiederum mit Gruppencodes gekennzeichnet ist.

Das würde dann z.B. beim auswerten der Testliste heißen:
(cdr(assoc 1(cdr(assoc 1 Liste)))) => "Dies ist eine Testliste"

Wenn das aber nicht funktioniert wäre es trotzdem schön zu wissen, welche Gruppencodes ich wofür verwenden kann.
Dann könnte ich mir z.B. einen GruppencodeWertbereich von 200 - 250 anlegen, damit ich direkt mit Assoc darauf zugreifen kann. Aber ich habe auch keine Lust alles einzeln auszuprobieren.

In der DXF-Referenz steht:

Zitat:
XRecord-Objekte dienen zum Speichern und Verwalten von beliebigen Daten. Sie bestehen aus DXF-Gruppencodes mit “Normalobjekt”-Gruppen (also keine XDaten-Gruppencodes) von 1 bis 369 für unterstützte Bereiche. Das Konzept dieses Objekts ähnelt den XDaten, mit dem Unterschied, dass das Objekt keinen Einschränkungen hinsichtlich der Größe oder der Reihenfolge unterliegt.

Daraus werde ich aber nichts so recht schlau, da steht z.B. nicht davon, daß die Gruppencodes 10, 40 und 70 eine spezielle Verwendung haben.

Vielleicht bin ich ja völlig auf dem Holzweg (da waren sie wieder, der Wald und Deine Bäume), wer bringt bei noch etwas Licht ins Dunkle?

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

VektorAdd-HD-Youtube

Stammtisch in Wolfsburg am 03.12. oder 10.12.2012

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 28. Nov. 2012 09:41    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 cadplayer 10 Unities + Antwort hilfreich

Wald2
Welche m,an verwenden kann steht in der Hilfe und wurde von dir eben auch noch zitiert: 1-369 !
Das steht in der Hilfe, in Release14, aber auch in aktuellen.

Wald3
Datentyp für welchen Gruppencode ?!
das solltest du eigentlich grob wissen, ansonsten steht das ja aber auch in jeder DXF/Lisp Hilfe:
Welcher  KLICK!


Nachtrag: Ich verstehe dein Problem nicht ganz, aber evtl. hilft es dir zu wissen das du Gruppencodes mehrfach im XRECORD speichern(anlegen) darfst ?
------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 28. Nov. 2012 editiert.]

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Nov. 2012 10:15    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Sebastian,
Zitat:
Nachtrag: Ich verstehe dein Problem nicht ganz, aber evtl. hilft es dir zu wissen das du Gruppencodes mehrfach im XRECORD speichern(anlegen) darfst ?

Genau das ist es, was ich umgehen will, wenn ich 20 mal den Gruppencode 1 mit verschiedenen Werten speicher, dann muss ich immer streng auf die Reihenfolge achten. Ich möchte eine Lösung, um z.B. 20 Werte mit 20 verschiedenen Gruppencodes zu speichern, damit ich diese dann einfach mit (cdr(assoc ansprechen kann.


------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

VektorAdd-HD-Youtube

Stammtisch in Wolfsburg am 03.12. oder 10.12.2012

[Diese Nachricht wurde von joern bosse am 28. Nov. 2012 editiert.]

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 28. Nov. 2012 10:54    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 cadplayer 10 Unities + Antwort hilfreich

Also "direkt" geht das imho nicht, wenn ich Listen ablegen wollte dann in Xdata.

Wenn ich die Daten in Xrecords unterbringen muß, dann als String.
Braucht man 2 Funktionen dazu: List2String und String2List, nichts für mich.

Schau mal hier, die nächste Antwort dazu und auch der Link:
http://ww3.cad.de/foren/ubb/Forum145/HTML/002965.shtml#000012

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Nov. 2012 11:15    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Sebastian,
danke erstmal für die Antworten. Die Variante mit List2String und umgekehrt habe ich bereits in meinem Repertoire.

Code:

(defun c:test ( / liste str)
  (setq liste (list '((1 . "TEST")
                      (2 . 12)
                      (3 . 12.12)
                      (4 12.0 12.0 12.0))))
                       
  ;;;List2String
  (setq str(vl-prin1-to-string liste))
  ;;;String2List
  (read str))

Ich hatte nur ein wenig Hoffnung geschöpft, daß es vielleicht noch ein wenig einfacher/eleganter geht.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

VektorAdd-HD-Youtube

Stammtisch in Wolfsburg am 03.12. oder 10.12.2012

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 28. Nov. 2012 12:45    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 Jörn!

Danke nochmal für deinen ursprünglichen Beitrag hier, mit dictionary´s zu arbeiten. So wie ich es hier verstanden habe, ist es besser immer dictionary´s gesondert anzulegen, damit fällt dein Vorhaben alles in ein reinzupacken aus 
Was ich aber noch nicht verstanden habe, was will man mit dictionary´s erreichen. Kann ja nicht sein, dass die nur eine dwg zu müllen. Eine andere Frage: müssen XDATA immer einen Objekt zugewiesen werden, oder könnte man da eine "Endlosliste" mit allen Projektparametern eingeben, die wiederum mit assoc abgefragt werden könnten ?

------------------
Gruss Dirk

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: 28. Nov. 2012 12:46    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 cadplayer 10 Unities + Antwort hilfreich

... eleganter geht's immer ;-) Das ist aber nicht immer die frage: den Weg, den ihr ihr vor habt, den halte ich für Fehleranfällig.

Denn man sollte beachten, dass beim 1er GruppenCode nur eine begrenzte Zeichenanzahl möglich ist .. nicht dass dann irgendwann irgendwelche Daten fehlen oder unvollständige Listen zurück gegeben werden. Daher meine Empfehlung: Finger weg von dieser Lösung.

Meine Empfehlung: Dann geht doch über Dictionaries, in welches ihr die Daten ja sogar benannt ablegen könntet. Sinnvolle Strukturierungsmöglichkeiten kann man sich ja ausdenken:
z.Bsp: Ein Dictionary, in dem alle Handle's und die zugehörigen Namen der DatenDictionaries, der Objekte, denen Daten angehangen werden sollen, gespeichert sind.
Als Zweites gibt's dann noch gaaanz Daten-Dictionaries, die einen zufälligen/eindeutigen Namen haben, in denen die Daten gespeichert werden.

Das Ganze gefällt mir persönlich sehr viel Besser, da die ZeichnungsObjekte nicht manipuliert werden, man keinen extra Applikationseintrag erzeugen muss, und die Daten ausgelesen werden können, ohne dass das Objekt erst gesucht werden (alsodie Ganze Zeichnung durchgehechelt werden) muss.
Natürlich benötigt man dann noch eine Funktion, die die Dictionaries bereinigt (also die Dicts löscht, zu denen keine Objekte mehr gefunden werden).

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 28. Nov. 2012 14:04    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

Lustig bei Theswamp wird grad gleiche Diskussion geführt

------------------
Gruss Dirk

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: 28. Nov. 2012 14:09    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
Lustig bei Theswamp wird grad gleiche Diskussion geführt


Ich wußte gar nicht, das du da jetzt auch SIDESHOWBOB heißt .. 

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 28. Nov. 2012 14:39    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

Nej der bin ich nich cplay weiterhin

------------------
Gruss Dirk

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 28. Nov. 2012 16: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 Nur für cadplayer 10 Unities + Antwort hilfreich

@Dirk, Holger,
die Idee, alle Datei in ein Dict reinzupacken finde ich für so kleine Sachen (wie das Beispiel von Dirk) gut, ist übersichtlicher. Sicherlich müßte man mal die Grenzbereiche austesten, wie groß so ein String sein darf, aber denke wegen 10 Einträgen wird mir das nicht gleich um die Ohren fliegen.

Ansonsten geben ich Dir, Holger, recht. Aber ich müßte mich dann noch ein bißchen mehr mit dem Thema auseinandersetzten, im Moment nutze ich die Methode nur, um z.B. mal einen Zeitstempel oder so in einer Zeichnung zu sichern.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

VektorAdd-HD-Youtube

Stammtisch in Wolfsburg am 03.12. oder 10.12.2012

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

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: 29. Nov. 2012 09:10    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von joern bosse:
@Dirk, Holger,
die Idee, alle Datei in ein Dict reinzupacken finde ich für so kleine Sachen (wie das Beispiel von Dirk) gut, ist übersichtlicher. Sicherlich müßte man mal die Grenzbereiche austesten, wie groß so ein String sein darf, aber denke wegen 10 Einträgen wird mir das nicht gleich um die Ohren fliegen.

Nein, auch bei 1000 Einträgen läuft das sehr gut.

Ich habe große Applikationen, die jede Menge eigener "Systemvariablen" haben. Diese speichere ich in einem einzigen Dictionary als Assoc-Liste, also jeweils Liste aus Varnamen und Wert. Zum Screiben habe ich folglich eine Funktion (APP-SETVAR "VarName" <Wert> ), und zum Lesen das entsprechende Analogon.

Da man normalerweise keine Symbole, dotted pairs, oder sehr lange Strings speichern kann, muss dafür jeweils ein Trick angewandt werden: die Werte werden verschlüsselt, wobei lange Strings zerhackt werden, und Symbole und dotted pairs mit einem eigenen Schlüssel als solche gekennzeichnet werden, so dass sie beim Lesen wieder rekonstruiert werden können.

Damit kann ich grundsätzlich alle von Lisp verwendbaren Daten unter einem Variablennamen in einem Dictionary sichern, also sogar auch kompletten Lisp-Code. Ich habe so ein Programm, das für die DWG spezifische Lisp-Programme erzeugt und so auch in der DWG abspeichert.

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

PixelMission
Mitglied
Designer


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

Beiträge: 31
Registriert: 17.12.2011

erstellt am: 29. Nov. 2012 09: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 cadplayer 10 Unities + Antwort hilfreich

Hallo archtools ...

Was würde denn diese fertige Lösung kosten?! Es sieht mir danach aus, als bräuchte ich exakt so etwas ... 

Gruß: PM

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: 29. Nov. 2012 09: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 cadplayer 10 Unities + Antwort hilfreich

@archtools

die Begrenzung der Datenmenge bezog sich auf die EED's (16kB?).

In den Dictionaries spielt die Anzahl (ich habe zumindest noch keine Grenze gefunden) wohl keine Rolle.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

PixelMission
Mitglied
Designer


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

Beiträge: 31
Registriert: 17.12.2011

erstellt am: 29. Nov. 2012 11: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 cadplayer 10 Unities + Antwort hilfreich

OKEE ...

Diese Möglichkeit war mir NEU - besser kann man m. E. keine Werte, wie auch immer geartet, in der DWG ablegen!

ABER ... irgendwie bekomme ich es nicht ganz hin - Werte SETZEN kann ich, aber beim Auslesen scheine ich irgendwas falsch zu machen!

(vla-setcustombykey isoinfo "koor" "0 0 1000") - wunderbar!

aber beim Aufruf von (vla-getcustombykey isoinfo "koor") bekomme ich grundsätzlich "Error: too few / too many arguments at [VLA-GETCUSTOMBYKEY]"


Evtl. kann mich jemand vom Schlauch schubsen, bitte?!


Edit: hat sich erledigt - wer lesen kann ... 

Für diejenigen, welche auch auf'm Schlauch stehen: NICHT (setq t1 (vla-getcustombykey isoinfo "koor")) sondern (vla-getcustombykey isoinfo "koor" 't1)!
Gruß: PM

[Diese Nachricht wurde von PixelMission am 29. Nov. 2012 editiert.]

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

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: 29. Nov. 2012 11:52    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Brischke:
@archtools

die Begrenzung der Datenmenge bezog sich auf die EED's (16kB?).

In den Dictionaries spielt die Anzahl (ich habe zumindest noch keine Grenze gefunden) wohl keine Rolle.


Da haben wir aneinader vorbeigeredet. Ich meinte die Stringlänge in Gruppencode 1. Die ist begrenzt und muss zerhackt und speziell encoded werden, um lange Strings sauber unter einer Variablen speichern zu können.

Nachtrag: vermutlich noch ein Missverständnis: ich hatte Jörns Einwand als Bezug zur Performance verstanden, nicht in Bezug zur Datenmenge

[Diese Nachricht wurde von archtools am 29. Nov. 2012 editiert.]

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

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: 29. Nov. 2012 11:55    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von PixelMission:
Hallo archtools ...

Was würde denn diese fertige Lösung kosten?! Es sieht mir danach aus, als bräuchte ich exakt so etwas ...  

Gruß: PM


Du weisst, solche Sachen sind eigentlich unbezahlbar :-)

Aber mal sehen, vielleicht kann ich das mal aufbereiten und demnächst hier als Weihnachtsgeschenk veröffentlichen ...

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

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: 29. Nov. 2012 12:27    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von archtools:

Du weisst, solche Sachen sind eigentlich unbezahlbar :-)

Aber mal sehen, vielleicht kann ich das mal aufbereiten und demnächst hier als Weihnachtsgeschenk veröffentlichen ...


Ach, wozu der Aufwand, es existiert doch schon alles im Netz: http://vnestr.tripod.com/SaveData.txt

Für's Encoden seiner Daten verwendet Vlad die Funktion x-enlist, die man für eigene Bedürfnisse passend erweitern kann.

Hier die modifizierte Variante, die auch Symbole und Dotted Pairs speichern kann. In der Decode-Funktion re-list-aux muss das dann einfach ausgewertet werden:

Code:

(defun x-enlist (lst)
  ;; encode!
  (cond
    ;; 2004 NULL NULL ((null lst) lst)
    ((null lst) (list (cons 4 (vl-princ-to-string lst))))
    ((atom lst)
    ;; automatic code groups
    (cond
      ((= 'REAL (type lst))
(list (cons 40 lst))
      )
      ((= 'INT (type lst))
(if ;; special handling of long integers
    (< -32768 lst 32767)
  (list (cons 70 lst))
  (list (cons 41 (float lst)))
)
      )
      ((= 'STR (type lst))
(list (cons 1 lst))
      )
      ((= 'SYM (type lst))
(list (cons 4 (vl-princ-to-string lst)))
      )
      (T nil)
    )
    )
    ((and (cdr lst) (atom (cdr lst)))
    (cons '(2 . "{")
  (reverse
    (cons '(2 . "}")
  (reverse
    (apply 'append
    (mapcar 'x-enlist (list "&&&DOTTETPAIR" (car lst) (cdr lst)))
    )
  )
    )
  )
    )
    ;; (list lst)
    )
    ((and (= (length lst) 3)
  (apply 'and (mapcar 'realp lst))
    )
    (list (cons 10 lst))
    )
    ((cons '(2 . "{")
  (reverse
    (cons '(2 . "}")
  (reverse
    (apply 'append
    (mapcar 'x-enlist lst)
    )
  )
    )
  )
    )
    )
  )
)

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

PixelMission
Mitglied
Designer


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

Beiträge: 31
Registriert: 17.12.2011

erstellt am: 29. Nov. 2012 12:45    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 cadplayer 10 Unities + Antwort hilfreich

Ja ... is' denn scho' Weihnachten?!

DANKE!!

Bis eben habe ich mir damit beholfen (klappt ganz gut ...):

Code:

(defun varsave()
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq sInfo (vla-get-SummaryInfo doc))
)
(defun pvar ( key value / )
(vla-setcustombykey sInfo key value)
)
(defun gvar ( key value / )
(vla-getcustombykey sinfo key value)
)

(defun zvar ( summaryinfo / i key value result )
    (repeat (setq i (vla-NumCustomInfo summaryinfo))
        (vla-GetCustomByIndex summaryinfo (setq i (1- i)) 'key 'value)
        (setq result (cons (cons key value) result))
    )
    result
)

Insgesamt hat mich dieses Thema einen immensen Schritt weitergebracht - ich werde mich ab sofort NOCH mehr mit "vla ..." beschäftigen! Herr Moses legte mir dies' schon ans Herz ... aber als "alter Hase" (seit 1988) fällt es mir ein wenig schwer, mich "umzugewöhnen" - einen alten Baum ... 

Gruß: Walter - B.

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

Windows 10
64bit system
Autocad Civil3d 2020 ENGLISH
Visual Studio 2019
OpenDCL.Runtime.9<P>

erstellt am: 17. Jun. 2013 12:48    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

archtools: kannst du mir mal einen dictionary auslesen, wie er bei dir aussieht.
Bin gerade dabei mich mit diesem Thema zu beschäftigen.
Jörn Import/Export Funktion von Items in einen Dictionary zu stopfen habe ich kappiert. Aber nicht wie ich mehrere Items in einen Dictionary reinpacken kann...?

------------------
Gruss Dirk

http://cadplayerlounge.blogspot.se

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

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: 17. Jun. 2013 16:49    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadplayer:
archtools: kannst du mir mal einen dictionary auslesen, wie er bei dir aussieht.
Bin gerade dabei mich mit diesem Thema zu beschäftigen.
Jörn Import/Export Funktion von Items in einen Dictionary zu stopfen habe ich kappiert. Aber nicht wie ich mehrere Items in einen Dictionary reinpacken kann...?


Hier wird unter Name "TEST", Key "KEY" der String "VALUE" gespeichert:
((-1 . <Entity name: 7ffffb05eb0> ) (0 . "XRECORD") (5 . "263") (102 . "{ACAD_REACTORS") (330 . <Entity name: 7ffffb05ea0> ) (102 . "}") (330 . <Entity name: 7ffffb05ea0> ) (100 . "AcDbXrecord") (280 . 1) (1 . "VALUE"))

Hier wird unter Name "TEST", Key "KEY" die Assoc-Liste '(("ASS1" 1) ("ASS2" 2)) gespeichert:

((-1 . <Entity name: 7ffffb05ec0> ) (0 . "XRECORD") (5 . "264") (102 . "{ACAD_REACTORS") (330 . <Entity name: 7ffffb05ea0> ) (102 . "}") (330 . <Entity name: 7ffffb05ea0> ) (100 . "AcDbXrecord") (280 . 1) (2 . "{") (2 . "{") (1 . "ASS1") (70 . 1) (2 . "}") (2 . "{") (1 . "ASS2") (70 . 2) (2 . "}") (2 . "}"))

Du siehst, wie Du (2 . "{") als öffnende und (2 . "}") als schließende Klammer verwendest. Du kannst damit also beliebige Daten sichern.

Willst Du ein Symbol sichern, so sicherst Du das einfach als String in einer Liste mit einem beliebigen Schlüssel: ("%%SYMBOL" "MYSYMBOL"). Beim Lesen entschlüsselst Du einfach, indem Du prüfst, weas das erste Element der Liste ist. Du kannst so beliebige Daten sichern, auch komplette Lisp-Funktionen.

Du kannst so auch sehr einfach beliebige Voreinstellungen in einer DWG sichern. Dazu schreibst Du einfach Funktionen wie (mysetvar <varname> <value> ) und (mygetvar <varname> ). Diese Varnamen samt Wert sicherst Du in einer Assoc-Liste, die Du wie im obigen Beispiel als Dictionary unter passendem Namen und Key sicherst.

[Diese Nachricht wurde von archtools am 17. Jun. 2013 editiert.]

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 18. Jun. 2013 09:24    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

Etwas mühselig habe ich mir ein Programm aufgezogen, welches Dictionaries anlegt und die Möglichkeit hat diverse Items in den Dictionary abzulegen.
Jetzt habe ich mal den Versuch unternommen eine Funktion in einem Item abzulegen.

Item Beispiel:

Code:
((-1 . <Entity name: 7ffff741cc0>) (0 . "XRECORD") (5 . "3CC64") (102 . "{ACAD_REACTORS") (330 . <Entity name: 7ffff741c30>) (102 . "}") (330 . <Entity name: 7ffff741c30>) (100 . "AcDbXrecord") (280 . 1) (70 . 0) (1 . "(defun c:test () (entsel \"\\nWähle etwas \"))"))

Da stosse ich auf ein Problem, wenn ich mit "-zeichen arbeite, dass ich die Funktion nicht korrekt geschrieben wird.

(write-line (cdr (assoc 1 Item))) ergibt

Code:
"(defun c:test () (entsel \"\\nWähle etwas \"))"

Muss ich jetzt die \"-zeichen durch "-zeichen ersetzen oder gibt es da eine andere Möglichkeit?

------------------
Gruss Dirk

http://cadplayerlounge.blogspot.se

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 18. Jun. 2013 09: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 cadplayer 10 Unities + Antwort hilfreich

Hello

Zitat:
Original erstellt von archtools:

Willst Du ein Symbol sichern, so sicherst Du das einfach als String in einer Liste mit einem beliebigen Schlüssel: ("%%SYMBOL" "MYSYMBOL"). Beim Lesen entschlüsselst Du einfach, indem Du prüfst, weas das erste Element der Liste ist. Du kannst so beliebige Daten sichern, auch komplette Lisp-Funktionen.

eine Frage...
Was passiert wenn ich den Schlüssel welcher für ein Symbol stehen soll ("%%SYMBOL"), selbst in der Liste ablegen will?
funktioniert nicht, oder? weil dann bei der "entschlüsselung" ein Fehler gemacht wird, sofern der dieser eigentliche Nicht-Schlüssel an erster Stelle einer Liste steht...

Um dies zu vermeiden würde ich vorschlagen einfach für jeden Wert bzw. Typ in der Liste einen Schlüssel zu vergeben und die Schlüssel und die Werte in getrennten Listen zu verarbeiten.

Ich liebäugle ja mit sowas...

Code:

Die zu "verschlüsselnde" Liste: '((1 2) (4 . 20) ((a "t" <Entity name: 7f701506890>) (123.21313 . "hallo")


nur als Vorschlag zb. gibt dann...
(setq lst '("<II>.II<<STE>.RT>" "1" "2" "4" "20" "a" "t" "621" "123.21313" "hallo"))

(mapcar '(lambda (a / ) (cons 1 a)) lst)

Hier steht zB. I für INT
               < für eine öffnende Klammer; > schließend
               . dotted Pair
          der Rest ist ersichtlich?



Wie gesagt, nur ein Vorschlag, zur Übertragung einer Liste in ein formales System von Nur-Strings

oder vielleicht auch 

"<2II.II<2<3STE.RT" weiteres formales System :P der fantasie sind keine Grenzen gesetzt

lg

[Diese Nachricht wurde von reltro am 18. Jun. 2013 editiert.]

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 18. Jun. 2013 09:40    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
vor jedes Sonderzeichen muss in einem String ein Backslash:
"(defun c:test () (entsel \"\nWähle etwas \"))"

Wenn kein Tippfehler drin ist müßte es so funktionieren.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Kordinaten einlesen Youtube

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

cadplayer
Ehrenmitglied
CADniker


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

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 18. Jun. 2013 09:54    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

Hi Jörn!

Habe ich genauso eingegeben in den Dictionary, wenn ich den auslese haut der mir noch mehr slashs rein

Code:
((-1 . <Entity name: 7ffff740990>) (0 . "XRECORD") (5 . "3CE39") (102 . "{ACAD_REACTORS") (330 . <Entity name: 7ffff73e9b0>) (102 . "}") (330 . <Entity name: 7ffff73e9b0>) (100 . "AcDbXrecord") (280 . 1) (70 . 0) (1 . "(defun c:test () (getpoint \\\"wähle etwas \\\"))"))

------------------
Gruss Dirk

http://cadplayerlounge.blogspot.se

[Diese Nachricht wurde von cadplayer am 18. Jun. 2013 editiert.]

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

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: 18. Jun. 2013 10: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von reltro:
eine Frage...
Was passiert wenn ich den Schlüssel welcher für ein Symbol stehen soll ("%%SYMBOL"), selbst in der Liste ablegen will?
funktioniert nicht, oder?

Stimmt. Du musst Dir den Schlüsselnamen so aussuchen, dass Du den niemals anders verwenden willst :-)

Dein Vorschlag würde das Problem lösen, würde aber enorm Performance kosten.

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 18. Jun. 2013 12:31    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 cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,
nochmal zu Deinem BackSlash's Problem, kannst Du die Funktion nicht gequotet übergeben in die Liste?

Code:

(defun c:testSlash ( / )
  (setq liste (list(cons 1 '(defun c:test () (getpoint "wähle etwas")))))
 
  (eval (cdr(assoc 1 liste)))

  (c:test)

  )


Vielleicht liege ich auch daneben, heute ist alles ein bißchen hektisch

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Kordinaten einlesen Youtube

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 18. Jun. 2013 12: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von archtools:

Dein Vorschlag würde das Problem lösen, würde aber enorm Performance kosten.

Können wir das testen?

Code:

(setq encode
    (    (lambda (rec / )
            (eval
                (list 'lambda '(lst / key Out)
                    '(setq key "")
                    (list rec rec 'lst)
                    '(cons (cons 1 key) (reverse Out))
                )
            )
        )
        (lambda (rec lst / )
            (foreach l lst
                (cond
                    ((null l) (setq key (strcat key "N")))
                    ((and (listp l) (atom (cdr l)) (not (null (cdr l))))
                        (setq key (strcat key "."))
                        (rec rec (list (car l) (cdr l)))
                    )
                    ((listp l)   
                        (setq key (strcat key "<"))
                        (rec rec l)
                        (setq key (strcat key ">"))
                    )
                    ((= 'STR (type l))
                        (setq key (strcat key "-"))
                        (setq Out (cons (cons 1 l) Out))
                    )
                    ((= 'SYM (type l))
                        (setq key (strcat key "S"))
                        (setq Out (cons (cons 1 (vl-princ-to-string l)) Out))
                    )
                    ((= 'REAL (type l))
                        (setq key (strcat key "-"))
                        (setq Out (cons (cons 40 l) Out))
                    )
                    ((= 'INT (type l))
                        (setq key (strcat key "-"))
                        (setq Out
                            (cons
                                (if (< -32768 l 32767)
                                    (cons 70 l)
                                    (cons 41 (float l))
                                )
                                Out
                            )
                        )
                    )
                    ((= 'Ename (type l))
                        (setq key (strcat key "E"))
                        (setq Out (cons (cons 1 (cdr (assoc 5 (entget l)))) Out))
                    )
                    ((= 'VLA-Object (type l))
                        (setq key (strcat key "V"))
                        (setq Out (cons (cons 1 (cdr (assoc 5 (entget (vlax-vla-object->ename l))))) Out))
                    )
                )
            )
        )
    )
)
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------------------------------------
(setq decode
    (    (lambda (expr rec / )
            (eval
                (list 'lambda '(lst / key expr)
                    (list 'setq 'expr expr)
                    '(setq key (cdar lst))
                    '(setq lst (cdr lst))
                    (list rec rec)
                )
            )
        )
        (lambda (K V / )
            (cond
                ((eq K "N") nil)
                ((eq K "S") (read (cdr V)))
                ((eq K "E") (handent (cdr V)))
                ((eq K "V") (vlax-ename->vla-object (handent (cdr V))))
                ((eq K "-")
                    (    (lambda (a / )
                            (cond
                                ((= (car a) 41) (cdr a)) ;wie wandelst du lange Integeres zurück?
                                ('T (cdr a))
                            )
                        )
                        V
                    )
                )
            )
        )
        (lambda (rec / Out K)
            (while (not (or (= key "") (= (setq K (substr key 1 1)) ">")))
                (cond
                    ((eq K "<")
                        (setq key (substr key 2))
                        (setq Out (cons (rec rec) Out))
                        (setq key (substr key 2))
                    )
                    ((eq K ".")
                        (setq key (substr key 2))
                        (setq Out
                            (cons
                                (cons
                                    (    (lambda (a / )
                                            (setq a (expr a (car lst)))
                                            (setq lst (cdr lst))   
                                            a
                                        )
                                        (substr key 1 1)
                                    )
                                    (    (lambda (a / )
                                            (setq a (expr a (car lst)))
                                            (setq lst (cdr lst))
                                            a
                                        )
                                        (substr key 2 1)
                                    )
                                )
                                Out
                            )
                        )
                        (setq key (substr key 3))
                    )
                    ('T
                        (setq Out (cons (expr K (car lst)) Out))
                        (setq key (substr key 2))
                        (if (not (= K "N"))
                            (setq lst (cdr lst))
                        )
                    )
                )
            )
            (reverse Out)
        )
    )
)


Wie wandelst du ehemalig große Integer wieder zur?


EDIT: produziert wenn die eingangsliste so etwas '((1 . 2) . 3) enthält einen Fehler... bzw. wenn der car-teil eines dottedPair eine Liste ist... muss ich noch überarbeiten...

[Diese Nachricht wurde von reltro am 18. Jun. 2013 editiert.]

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 19. Jun. 2013 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 cadplayer 10 Unities + Antwort hilfreich


en-decode.lsp

 
Im Anhang die überarbeitete Version...
Kann jetzt alle Arten von Daten (abgesehn von 'SUBR und 'USUBR) behandeln... Ob Atom oder Liste, dottedPair oder Ename/vla-Object, alles dabei  


@Archtools...
Du meinst mein Vorgehen mindert die Performance? In wie Fern argumentierst du das? Fühl dich bloß nicht angegriffen, würds nur gern erklärt haben.
Ich meine du musst ja genauso gut jedes Element prüfen, auf Typ...
Außerdem kommen dann noch die ganzen GC 2 dazu um die Liste zu strukturieren. Die Struktur ist bei mir auch im Schlüssel verpackt, demnach, keine GC2

Was mich intressieren würde, wie lange darf ein String werden?
Ich könnte ihn ohne Probleme aufteilen, oder gar kürzen, mittels "MusterErkennung"....


Hab das ganze versucht einen Code den ich am Anfang meiner Lispkarriere produziert habe zu "verschlüsseln"; ziemlich lang und vieles unnötig... Hat reibungslos funktioniert...


Zur Verwendung:

Code:

(setq d (encode '(ich bin ("Zum" . Beispiel) ((1 e) ((ver . schachtelte) . "Liste")))))

(princ d) ;;---> ((0 . "{SS[.S]{{.S}[[SS].]}}") (1 . "ICH") (1 . "BIN") (1 . "Zum") (1 . "BEISPIEL") (70 . 1) (1 . "E") (1 . "VER") (1 . "SCHACHTELTE") (1 . "Liste"))

(decode d)


lg

[Diese Nachricht wurde von reltro am 19. Jun. 2013 editiert.]

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

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: 19. Jun. 2013 13:31    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von reltro:

Können wir das testen?

Erst in ein paar Tagen ...

Gruß


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

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: 19. Jun. 2013 13:41    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von reltro:

@Archtools...
Du meinst mein Vorgehen mindert die Performance? In wie Fern argumentierst du das? Fühl dich bloß nicht angegriffen, würds nur gern erklärt haben.

Beim Programmieren fühle ich mich prinzipiell niemals angegriffen.

Du musst, damit das konsistent ist und zu keinerlei Verwirrungen mit potentiell anders verwendeten Schlüsselnamen führt, ausnahmslos jedes einzelne Datum Verschlüsseln. Man würde das der Einfachheit halber so machen, wie es beispielsweise im ResBuf bei C++/C# Programmierung läuft, also vor jedes Datum einen Schlüssel schreiben.

Aus 1 würde 5001 1, aus 1.0 würde 5002 1.0, aus "1" würde 5003 "1", aus (1 . 2) würde 5008 { 5001 1 5001 2 }, aus (3 5) würde 5009 { 5001 3 5001 5 }. Auf diese Weise kannst Du dann problemlos alle Datentypen sichern und wieder decoden, hast aber wegen der zusätzlich nötigen Schlüssel zwingend mehr Daten zu speichern und damit Performanceverlust.

Das Problem existiert real eigentlich gar nicht. Wenn Du individuelle Schlüssel verwendest. sind die natürlich im Extremfall mal gefährdet, aber das kann Dir bei Deinen globalen Variablen, bei Funktionsnamen, bei Appnamen für Xdata und Dictionaries ebenfalls passieren. Jeder andere Programmierer kann jederzeit mit seiner Applikation Deine Xdata/Dictionaries löschen oder überschreiben.

Du musst also ohnehin individuelle Namen finden, und das ist bei den Schlüsselnamen ja auch problemlos möglich.

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

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: 19. Jun. 2013 13:48    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von reltro:
Ich meine du musst ja genauso gut jedes Element prüfen, auf Typ...

Ich muss nur die zurückgegebenen Listen decoden, und brauche deshalb nur auf listp zu prüfen.

Zitat:
[/i]
Was mich intressieren würde, wie lange darf ein String werden?
Ich könnte ihn ohne Probleme aufteilen, oder gar kürzen, mittels "MusterErkennung"....
[/i]

Mach' ich auch. Lange Strings (maximal sind IIRC 1024 Byte erlaubt) werden als Liste von kleinen Strings gespeichert, erstes Listenelement ist zwecks Erkennung wieder ein individueller Schlüssel. Sieh' Dir einfach mal an, wie lange MTEXTe gespeichert werden - da läuft das analog.

Du musst bei Xdata dann auch noch unterschiedlich unter Gruppencodes 1010 und 1011 gespeicherte Vektoren auseinander halten können ...

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

reltro
Mitglied
student


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

Beiträge: 125
Registriert: 08.11.2009

Acad 2012 - VBA,Lisp
Revit 2012
3dsMax 2012
Rhino 5 - GH,Pyhton 3,rhino.Common<P>Win 7 - i7 4x3.2GHz - 8Gb DDR3

erstellt am: 19. Jun. 2013 14: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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von archtools:

ich muss nur die zurückgegebenen Listen decoden, und brauche deshalb nur auf listp zu prüfen.

versteh ich nicht... ich hab eigentlich vom encoden gesprochen...

Aber beim decoden, glaub ich schon was du meinst...
Die wieder zusammengebastelte Liste, ürsprünglich mit GC2 strukturiert kommt raus, jetzt läufs du sie nochmal durch und siehst in den Listen nach ob der car-Teil einer Schlüssel ist? liege ich richtig? ;)


Kannst du mir vielleicht deinen Code zeigen?
Wenn du nicht hier posten willst, meine email haste ja...
keine Sorge, werde ihn dir nicht streitig machen, dafür bastle ich zu gerne ;)


Zitat:

Du musst bei Xdata dann auch noch unterschiedlich unter Gruppencodes 1010 und 1011 gespeicherte Vektoren auseinander halten können ...

AiAi Captain... 
Hab eh schon eine Version für XData geschrieben, die kann/konnte aber keine Symbole oder DottedPairs speichern... Hab ich eigentlich noch nie gebraucht...

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



Technischer Produktdesigner / Technischer Zeichner (m/w/d)

Digitale Trans­formation. Nach­haltig­keit. Friedens­sicherung. Spannende Aufgaben, an denen auch wir bei Diehl in unseren fünf Teil­konzernen Metall, Controls, Defence, Aviation und Metering und unsere über 16.000 Mit­arbeiter­innen und Mit­arbeiter mit Hochdruck arbeiten. Entdecken Sie faszinierende Techno­logien und bewerben Sie sich. In einem von Vertrauen und Mut geprägten Familien­unter­nehmen, das beständig und stabil ist ? aus Tradition....

Anzeige ansehenTechnischer Zeichner, Bauzeichner
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: 19. Jun. 2013 15:50    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 cadplayer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von reltro:

Hab eh schon eine Version für XData geschrieben, die kann/konnte aber keine Symbole oder DottedPairs speichern... Hab ich eigentlich noch nie gebraucht...

... dotted pairs verwende ich auch nie. Einzig sinnvoll in der Anwendung sind sie IMO nur dann, wenn man auf unbekannte, irgendwie in Listen codierte Daten zugreift, denn da kann man dann (siehe DXF Gruppe 10) unabhängig vom Datentyp immer mit CDR auf das Datum zugreifen.

Mein Code dafür ist deutlich zu umfangreich, um ihn hier wiedergeben zu können. Ich hab' Funktionen XDATA-PUT, XDICTIONARY-PUT und DICTIONARY-PUT und die analogen GET-Funktionen, die allesamt dieselbe Codierung verwenden. Symbole, dotted pairs und lange Strings werden automatisch in Listen mit vorangestelltem Schlüssel gepackt, für die Vektoren mit 1011er Gruppe (die verwende ich häufig, beispielsweise um ein Objektkoordinatensystem zu speichern) muss aber schon zum Encoden ein Schlüssel zur Unterscheidung von 1010er Vektoren mitgegeben werden.

Da ist nichts Exotisches drin.

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