Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Variable mit Backslash speichern und wieder einlesen

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
  
Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
Autor Thema:  Variable mit Backslash speichern und wieder einlesen (534 / mal gelesen)
Niggemann
Mitglied



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

Beiträge: 165
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 01. Okt. 2023 16:29    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 zusammen,
ich möchte eine Variable in eine Datei speichern und wieder einlesen, diese mache ich schon
seit fast 30 Jahren so und klappt prima. Jetzt stehe ich vor dem Problem das ich einen
Backslash mit speichern möchte und das klappt leider nicht.
In einer edit_box gebe ich "\X2.01" ein um die Zahl "2.01" unter der Masslinie zu Plazieren.
Beim schließen des Fensters werden die Werte in eine Datei geschrieben.
(setq SUFF_L (get_tile "SUFF_L")) ergibt "\\X2.01" also 2 Backslash ist auch OK und wird dann
auch so weiter im Programm verarbeitet.
Dann schreibe ich mit (write-line (strcat "(setq SUFF_L \"" SUFF_L "\")") EIN) in die Datei.
In der Datei steht dann (setq SUFF_L "\X2.01") mit einem "\"
Beim nächsten Programmaufruf möchte ich gerne den Letzten Wert wieder als Vorgabe haben.
Lade ich diese Datei wieder mit (load MeineDatei.ini) und prüfe ich die Variable "SUFF_L"
steht dort schon der Wert "X2.01", also ist beim laden schon der "\" verschunden,
fülle ich die edit_box mit dem Wert steht dort natürlich nur "X2.01".
Als schnell Lösung könnte ich natürlich beim schreiben in die Datei  ein "\" voran stellen.
(write-line (strcat "(setq SUFF_L \"\\" SUFF_L "\")") EIN)
Was ist aber wenn ich weitere Steuerzeichen mit einem "\" in der edit_box habe?
Oder muß ich den ganzen Text aus der edit_box auf "\" unter suchen und gegeben Falls
alle "\" gegen "\\" austauschen?
Ich habe natürlich die Hilfe rauf und runter durchsucht und etliches ausprobiert aber leider ohne Erfolg.
Hat da jemand einen Tipp für mich?
Gruß
Niggemann

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 01. Okt. 2023 20: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 Niggemann 10 Unities + Antwort hilfreich

Zum einen könntest du, wenn nichts dagegen spricht, (doppel)Backslash einfach gegen Slash tauschen.
Ansonsten deine "Schnelllösung", natürlich aufgebohrt für den Fall das es mehrere Backslashs gibt.

Zum anderen die Frage: Warum überhaupt die SETQ- Anweisung in die Datei schreiben? Die Info warum du das machst, statt einfach nur dem Textwert, die liegt uns nicht vor - daher die Frage.

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

Niggemann
Mitglied



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

Beiträge: 165
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 01. Okt. 2023 21: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

Die Textüberschreibung mag keinen Slash nur einen "\\" die "2.01" sollen ja unter die Maßlinie und dafür muß ich halt den "\\" haben der ja erzeugt wird wenn ich das DCL-Fenster schieße.
Zitat:
Zum anderen die Frage: Warum überhaupt die SETQ- Anweisung in die Datei schreiben? Die Info warum du das machst, statt einfach nur dem Textwert, die liegt uns nicht vor - daher die Frage.

Das habe ich mir vor vielen Jahren angewöhnt um Datanorm Setsätze zu erzeugen, da bei uns Elektrikern z.B. eine Ausschaltung immer die gleichen Bauteile haben, die Artikelnummern beim Großhandel aber für jeden Hersteller anders sind. Z.B. der Schalter von Gira hat die Nr. 1234 und der Schalter von Berkerhat die Nr. 4567 um die Datensätze zu erstellen tausche ich die INI-Datei für die Hersteller einfach aus und kann somit Datensätze mit unterschiedlichen Schalterhersteller erstellen. Das geht sehr schnell und hat sich bewährt.
Als Beispiel für Gira:
(setq WECHSEL      "3031305")
(setq AUS_2POL    "3031307")
(setq KONTROLL    "3031311")
(setq KONTROLL_2P  "3031312")
(setq KREUZ        "3031306")
Als Beispiel für Berker:
(setq WECHSEL      "3019970")
(setq AUS_2POL    "3019966")
(setq KONTROLL    "3019970")
(setq KONTROLL_2P  "3019966")
(setq KREUZ        "3019971")
Darum die setq Anweisung in der Datei.
Gruß
Niggemann

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 01. Okt. 2023 22: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 Nur für Niggemann 10 Unities + Antwort hilfreich

Slash, da hatte ich wohl einen Aussetzer, sorry.
Da ich ohnehin von den SETQ weg wollte, habe ich das wohl nicht recht bedacht.

Eine Lösung mit "ordentlicher" schreib-ini, lese-ini Funktion würde das Problem mit dem Backslash nicht umgehen.
Muss halt gemacht werden, oder ich habe Tomaten auf den Augen, was ich gerade nicht ausschließen kann.

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: 970
Registriert: 09.10.2004

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

erstellt am: 02. Okt. 2023 10: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 Nur für Niggemann 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Niggemann:
Als Beispiel für Gira:
(setq WECHSEL      "3031305")
(setq AUS_2POL     "3031307")
(setq KONTROLL     "3031311")
(setq KONTROLL_2P  "3031312")
(setq KREUZ        "3031306")
Als Beispiel für Berker:
(setq WECHSEL      "3019970")
(setq AUS_2POL     "3019966")
(setq KONTROLL     "3019970")
(setq KONTROLL_2P  "3019966")
(setq KREUZ        "3019971")
Darum die setq Anweisung in der Datei.

Das funktioniert aber genau so gut mit Weglassen des 'SETQ wie
(WECHSEL      "3031305")
(AUS_2POL     "3031307")
usw., und noch besser wäre es, diese Daten nur einmal in der DWG zu speichern, und zwar als Assoc-Liste:
((WECHSEL      "3031305")
(AUS_2POL     "3031307")
...
)
Und das kannst Du für den Fall, dass Produkte verschiedene Hersteller in einer einzigen DWG Verwendung finden, noch zu einer Assoc-Liste erweitern, die auch die Hersteller berücksichtigt:

(
(GIRA
(WECHSEL      "3031305")
(AUS_2POL     "3031307")
  ...
)

(BERKER
(WECHSEL      "3019970")
(AUS_2POL     "3031307")
  ...
)
)

Nachtrag, weil nicht jeder das weiß:
Falls Du das dann überhaupt noch brauchst, kannst Du alle Deine Variablen für einen Hersteller (beispielsweise (setq hersteller 'BERKER)) dann aus dieser Assoc-Liste mit einer einzigen Anweisung setzen, beispielsweise
(mapcar 'SETQ (cdr (assoc hersteller datenliste)))

[Diese Nachricht wurde von archtools am 02. Okt. 2023 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: 1766
Registriert: 11.10.2004

Window 11
ACAD 2021
CIVIL 2021
BricsCAD ab V14
11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
32.0GB RAM
NVIDIA GeForce MX450<P>

erstellt am: 02. Okt. 2023 11: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 Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
ich habe einganz ähnliches Problem, DCL-Dateien als Textdatei zu schreiben, dan nutze ich folgende Funktion:

Code:

;;;Backslash hinzufügen
(defun Text2Dcl:Slash (string / A)
  (vl-list->string
    (cons 34(reverse(cons 34(reverse
    (apply 'append (mapcar '(lambda(A)
                              (if (member A '(92 34))
                                (list 92 A)
                                (list A)))
  (vl-string->list string)))))))
))


Bei Backslashes und Anführungszeichen werden automatisch Backslashe hinzugefügt.

In Deinem Fall könntest Du das wie folgt nutzen:
(strcat "(setq SUFF_L "(Text2Dcl:Slash "\\X2.01")")")

In der Befehlszeile kannst Du das wie folgt testen:

Befehl: (strcat "(setq SUFF_L "(Text2Dcl:Slash "\\X2.01")")")
"(setq SUFF_L \"\\\\X2.01\")"

Befehl: (eval(read(strcat "(setq SUFF_L "(Text2Dcl:Slash "\\X2.01")")")))
"\\X2.01"

Befehl: !Suff_l
"\\X2.01"

Vielleicht hilft es ja, ich finde das mit den Sonderzeichen immer ziemlich furchtbar.

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

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

das Flächenstempel_Tool

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

Meldin
Mitglied



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

Beiträge: 398
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 02. Okt. 2023 14:00    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 Niggemann 10 Unities + Antwort hilfreich

Hallo

Also wenn
(setq SUFF_L (get_tile "SUFF_L"))

das ergibt "\\X2.01"

dann so scheiben
(write-line (vl-prin1-to-string SUFF_L) EIN)

In der Datei steht dann das
"\\X2.01"

und lesen
(setq SUFF_L (read-line EIN))

ergibt wieder
"\\X2.01"


hoffe ich hatte jetzt keinen Denkfehler und habe die frage richtig verstanden.

------------------
Gruß Wolfgang

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: 1766
Registriert: 11.10.2004

Window 11
ACAD 2021
CIVIL 2021
BricsCAD ab V14
11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
32.0GB RAM
NVIDIA GeForce MX450<P>

erstellt am: 02. Okt. 2023 14:26    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 Niggemann 10 Unities + Antwort hilfreich

Hallo Wolfgang,
da hatte ich gar nicht dran gedacht, vl-prin1-to-string ist bestimmt die bessere Wahl als meine selbstgestrickte Funktion.

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

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

das Flächenstempel_Tool

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

Niggemann
Mitglied



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

Beiträge: 165
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 02. Okt. 2023 20: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

Problem gelöst Abendteuerlich aber es geht
Speichern:
(write-line (strcat "SUFF_L " (vl-prin1-to-string SUFF_L)) EIN)
Ergebnis: "SUFF_L \"\\\\X\\\\C1;2.10\""
Lesen in einer while, da ich noch mehr Variablen in der INI-Datei hab
(while
    (setq Z (read-line AUS))
    (if (vl-string-search "SUFF_L" Z) (setq SUFF_L (read (strcat (vl-string-trim "SUFF_L" Z)))))
  )
Ergebnis: "\\X\\C1;2.10"
In der edit_box steht dann: "\X\C1;2.10"
und weil es so schön funktioniert hab ich den Masstext unter der Bemassungslinie in rot
ausgegeben, etwas Spass mus ja sein.
Warum ich wieder auf setq gegangen bin ist ganz einfach beim aufrufen des DCL-Fenster 

mache ich diese Abfrage:
(if (not SUFF_L) (set_tile "SUFF_L" (setq SUFF_L "\\X2.01"))(set_tile "SUFF_L" SUFF_L))
Ist die INI-Datei beschädigt oder fehlt wird ein Standart Wert gesetzt ansonsten der Wert aus
der INI-Datei, beim schliessen des Fensters wird dann die INI-Datei neu erstellt und steht beim
nächsten Aufruf wieder zur Verfügung.
Wer eine schöner Lösung dafür hat, ich bin für alles offen.
Mit den Sonderzeichen bin ich auch der Meinung einfach furchtbar.

Gruß
Niggemann

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

Meldin
Mitglied



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

Beiträge: 398
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 03. Okt. 2023 09:06    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 Niggemann 10 Unities + Antwort hilfreich

nochmal dazu.
obwohl du deine Lösung hast.
Deine ini Struktur erschließt sich mir nicht ganz warum schreibst du nicht alles untereinander Vari. Name darunter der Wert. Oder gleich als dottet pair oder gar als XML-Datei.
das nur am Rande.

------------------
Gruß Wolfgang

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 03. Okt. 2023 10:25    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 Niggemann 10 Unities + Antwort hilfreich

Dieser erste Gedanke klingt gut, aber beim zweiten <ob hier zutreffend oder nicht>
Schreib mal dotted pairs, bedenke TEXT UND ZAHL Werte, und ggf auch so ein Text: "012345"
Schon hast du dasselbe Thema.

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

Meldin
Mitglied



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

Beiträge: 398
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 03. Okt. 2023 11:00    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 Niggemann 10 Unities + Antwort hilfreich

So !

(setq SUFF_L "\\X2.01")
(setq SUFF_L "012343")
(setq SUFF_L(read(vl-prin1-to-string(vl-list* 'SUFF_L SUFF_L))))

Editiert
so muss es dann mit set sein

(setq SUFF_L "\\X2.01")
(setq SUFF_L "012343")
(setq temp(read(vl-prin1-to-string(vl-list* 'SUFF_L SUFF_L))))
(set (car temp)(cdr temp)))
------------------
Gruß Wolfgang   

[Diese Nachricht wurde von Meldin am 03. Okt. 2023 editiert.]

[Diese Nachricht wurde von Meldin am 03. Okt. 2023 editiert.]

[Diese Nachricht wurde von Meldin am 03. Okt. 2023 editiert.]

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

Niggemann
Mitglied



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

Beiträge: 165
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 03. Okt. 2023 14:37    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 Wolfgang,
meine INI-Datei sieht so aus:
;Datei nicht edetieren sie gehöhrt zu BBM.LSP
N_KOMMA_L "2"
PRAE_L ""
SUFF_L "\\X\\C1;2.10"
N_KOMMA_W "2"
PRAE_W ""
SUFF_W ""
N_KOMMA_D "2"
PRAE_D ""
SUFF_D ""
HOEHE "0.8"
Bitte bedenke das ich Handwerker bin und es so am besten nach vollziehen und lesen kann wenn ich später mal in die Datei rein schaue so hab ich alles in einer Zeile und brauche auch nur eine Zeile bearbeiten.

Noch ein Hinweis zu "read", read kann ab ACAD2004 nur noch 4000 Zeichen lesen vor ACAD2004 waren es wohl mehr. Lt. Readme von ACAD2004

Gruß
Niggemann

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

Meldin
Mitglied



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

Beiträge: 398
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 03. Okt. 2023 14: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 Niggemann 10 Unities + Antwort hilfreich

Und mit meinem Vorschlag würde sie so aussehen.
Macht doch kaum einen Unterschied
(N_KOMMA_L . "2")
(PRAE_L . "")
(SUFF_L . "\\X\\C1;2.10")
(N_KOMMA_W . "2")
(PRAE_W . "")
(SUFF_W . "")
(N_KOMMA_D . "2")
(PRAE_D . "")
(SUFF_D . "")
(HOEHE . "0.8")

------------------
Gruß Wolfgang 

[Diese Nachricht wurde von Meldin am 03. Okt. 2023 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: 970
Registriert: 09.10.2004

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

erstellt am: 03. Okt. 2023 14: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 Niggemann 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Meldin:
Und mit meinem Vorschlag würde sie so aussehen.
Macht doch kaum einen Unterschied
(N_KOMMA_L . "2")
(PRAE_L . "")

Ich verwende praktisch nie Dotted Pairs für meine Datenhaltung. Sinn macht das doch sowieso nur dann, wenn man wie in den DXF-Daten der Entities auch Listen als Daten haben will, und sich dafür den Overhead eigener Listen sparen will. Man kann sowohl auf (8 . "MYLAYER") als auch auf (10 1 2 3) gleichermaßen mit CDR zugreifen, und kriegt im einen Fall den Layernamen, im anderen die Liste eines 3D-Punkts zurück. Man kann aber genau so gut (8 "MYLAYER") und (10 (1 2 3)) verwenden, und jeweils mit CADR auf die Werte zugreifen. (10 (1 2 3)) ist bzgl der internen Datenhaltung halt nicht ganz so sparsam wie (10 1 2 3).

Das Ganze hat mit dem Aufbau von Listen in Lisp zu tun. Eine Liste besteht intern immer aus einem Pointer auf das erste Listenelement und einem Pointer auf den ganzen Rest. Jede Liste wird intern immer als Dotted Pair (car . cdr) gespeichert.

Der Vorteil der Dotted Pairs war früher mal, als man den Arbeitsspeicher eines Rechners in kByte gemessen hat, einigermaßen relevant. Heute nicht mehr. Heute ist es mir wichtiger, die Datenhaltung leicht nachvollziehbar zu gestalten.

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

Meldin
Mitglied



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

Beiträge: 398
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 03. Okt. 2023 15: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 Niggemann 10 Unities + Antwort hilfreich

Ja, genau darum ging es, eine Strucktur da wie von Niggemann beschriebe er diese auch als Klartext lesen will, ob der Punkt dazwischen jetzt den unterschied macht, glaube ich auch nicht. Viel wichtiger von dem String gehampel weg zu einer Liste. 

------------------
Gruß Wolfgang

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

Niggemann
Mitglied



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

Beiträge: 165
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 03. Okt. 2023 16:19    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 Wolfgang,
du hast recht der Unterschied macht nichts aus.
Ich verstehe aber nicht die Vor- und Nachteile der beiden Varianten am Ende habe ich doch eh 9 Variablen in der DWG.

Gruß
Niggemann

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

Meldin
Mitglied



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

Beiträge: 398
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 03. Okt. 2023 16: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 Niggemann 10 Unities + Antwort hilfreich

Du kannst sofort deine Daten aus einer Liste in eine variable legen ohne das due mit so einem Konstrukt
Zitat:
(while
  (setq Z (read-line AUS))
  (if (vl-string-search "SUFF_L" Z)
    (setq SUFF_L (read (strcat (vl-string-trim "SUFF_L" Z))))
  )
)
anfängst danach zu suchen, was meines Erachtens viel störanfälliger ist.

------------------
Gruß Wolfgang

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

Niggemann
Mitglied



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

Beiträge: 165
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 03. Okt. 2023 17: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

Ok das leuchtet mir ein

Gruß
Niggemann

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)2024 CAD.de | Impressum | Datenschutz