Edit_Box Eintrag in .txt speichern / Lisp
Der-T 22. Jan. 2020, 19:15


DCL.png


K1-dcl.txt


K1-lisp.txt

 
Hallo und guten Tag,

ich als absoluter Beginner brauche mal die Hilfe von Profis.
Leider habe ich nicht viel Erfahrung im programmieren,
also habt bitte Nachsicht.

Folgendes Problem,jedenfalls für mich  :

Ich möchte eine .txt Datei erstellen mit Einträgen aus Edit_Boxen.(siehe DCL.png)
Ist das überhaupt so umsetzbar ? Und wo kommt der Code in die Lisp ? Oder muss das eine extra Datei sein ,wo ich die Daten abrufe und speicher ?

Ich habe schon mit (write-line) experementiert,
aber kläglich gescheitert!

Als Basis : http://ww3.cad.de/foren/ubb/Forum145/HTML/000316.shtml#000001

Die K1 Lisp hab ich mir hier aus dem Forum kopiert
und für meine Zwecke umgeschrieben.
Ist vielleicht nicht ganz "sauber",aber funzt und passt.

Also wenn grade jemand Lust und Zeit hat, mir zu helfen, bedanke ich mich im vorraus

Mfg Der-T

Andreas Kraus 23. Jan. 2020, 16:56

Hallo und willkommen Der-T,
Du brauchst im Code noch:
(action_tile "accept" "(Funktion die die Textdatei macht)(done_dialog)")

In der Funktion die die Textdatei macht sammelst du mit get_tile die Textinhalte der Felder ein und schreibst die in die Datei.

Wenn du mit dieser kurzen Antwort noch nicht weiterkommst machen wir morgen weiter, ich hab nämlich gleich Feierabend 
Tut mir leid aber ich hab eben erst Zeit gehabt hier mal reinzuschauen 
Also bis morgen 

Der-T 24. Jan. 2020, 16:00

Zitat:

(action_tile "accept" "(Funktion die die Textdatei macht)(done_dialog)")

In der Funktion die die Textdatei macht sammelst du mit get_tile die Textinhalte der Felder ein und schreibst die in die Datei.

Wenn du mit dieser kurzen Antwort noch nicht weiterkommst machen wir morgen weiter, ich hab nämlich gleich Feierabendá



Ganz ehrlich...kapier ich nicht

(action_tile "accept" (setq file "c:\Cone.txt")(done_dialog))  

joern bosse 24. Jan. 2020, 16:23

Hallo Der-T,
auch ich bin schon fast im WE, vielleicht hilft Dir ein ganz alter Beitrag von mir:
https://bosse-engineering.com/blog/index.php?listen-speichern-und-loaden

Dort geht es um eine Möglichkeit, wie man benutzerzpezifische Werte in einer LISP-Liste speichern und auch wieder laden kann.

viele Grüße
Jörn

Der-T 24. Jan. 2020, 19:17

Hallo Andi ,Jörn @All
erstmal danke für eure Hilfe.

Ich brech das jetzt hier erstmal ab, weil mir einfach das Basiswissen
fehlt um das alles zu kapieren !
Ich muss mich erstmal durch einige Websites lesen, gibt ja genug...

Ich wünsche euch ein schönes We
Ich melde mich , wenn ich soweit biná 

Gruß Thilo

[Diese Nachricht wurde von Der-T am 25. Jan. 2020 editiert.]

Der-T 29. Jan. 2020, 17:49

Hallo ,

hab mal ein bischen was probiert...


(action_tile "cancel" "(done_dialog)(exit)")
(action_tile "accept" "(setq file C:\Konus.txt)(done_dialog)")


(setq file (open "C:\Konus.txt" "w"))
(setq D1 (atof (get_tile "D1")))
(setq D2 (atof (get_tile "D2")))
(princ (list D1 D2 "Test") file)
(close file)

Die Datei Konus.txt wird erstellt, der Inhalt ist (0.0 0.0 Test)  

Kann mir jemand mal bitte die Fehler aufzeigen ? Danke im vorraus

Mfg Thilo

Andreas Kraus 30. Jan. 2020, 16:58

Hallo Der-T,
ich hab zwar nur einen Programmschnipsel hier aber ich denke du versuchst Werte aus dem Dialogfeld zu lesen nachdem der Dialog schon geschlossen ist.
DAS GEHT NICHTá 

Mach das mal so:

Code:
(defun end_dialog (wert)
á (setq D1 (atof (get_tile "D1")))
á (setq D2 (atof (get_tile "D2")))
á (done_dialog wert)
)

(if (< (setq dcl_id (load_dialog "K1")) 0)
á (progn
á á (alert "DCL - Datei nicht gefunden")
á á (exit)
á )
)
(if (not (new_dialog "K1" dcl_id))
á (exit)
)
(setq breite (dimx_tile "bild")
á á á hoeheá (dimy_tile "bild")
)
(action_tile "accept" "(end_dialog '1)")
(action_tile "cancel" "(end_dialog '0)")

(action_tile "Bt" "(setq Bt (atof $Value))")

(action_tile "D1" "(setq D1 (atof $Value))")
(action_tile "D2" "(setq D2 (atof $Value))")
(action_tile "H" "(setq H (atof $Value))")
(action_tile "S" "(setq S (atof $Value))")
(action_tile "Z" "(setq Z (atof $Value))")

(mode_tile "Bt" 2)
(set_tile "D1" "")
(set_tile "D2" "")
(set_tile "H" "")
(set_tile "S" "")
(set_tile "Z" "")

(start_image "bild")
(slide_image -135 10 675 235 "K1")
(end_image)
(setq aktion (start_dialog))
(unload_dialog dcl_id)

(if (= aktion 1)
á (progn
á á (setq file (open "C:\\Konus.txt" "w"))
á á (princ (list D1 D2 "Test") file)
á á (close file)
á )
á (exit)
)


Jetzt verstehst du vielleicht auch warum ich geschrieben habe

Zitat:
Du brauchst im Code noch:
(action_tile "accept" "(Funktion die die Textdatei macht)(done_dialog)")

Das ist im Prinzip das.
Also wenn du auf OK drückst muss erst mal alles was du brauchst aus dem Dialogfeld gelesen werden und erst dann kannst du das Ding schließen.

EDIT: noch einen Backslash bei (setq file (open "C:\\Konus.txt" "w")) ergänzt

Der-T 31. Jan. 2020, 15:20

Moin,

Dank Andi's Hilfe hab ich es geschafft !
Besten Dank...

Funktioniert so wie ich es wollte.

Allerdings hab ich noch ein kleines Problem,
wie bekomme ich die Datei mit dem Wert aus "Bt" (Bauteil) umbenannt ?

Ist -> (setq file (open "C:\\Konus.txt" "w"))
Soll -> (setq file (open "C:\\[Wert aus "Bt"].txt" "w"))

Wünsche allen ein schönes WE

Mfg


joern bosse 31. Jan. 2020, 15:29

Hallo Der-T,
mit der Funktion vl-file-rename können Dateien umbenannt werden:

http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-188B957C-4CDF-41C7-99BE-8080FA587F74

Der-T 31. Jan. 2020, 16:22

Ja,

vl-file-rename hab ich eben auch gefunden.
Aber heute nicht mehr, hab jetzt WE.

Dein LINK hatte ich mir die Tage mal angeschaut, aber das war für mich ne Nummer zu hoch. Soweit bin ich noch nicht.

Schönes WE

Mfg Thilo

Der-T 03. Feb. 2020, 15:58

Hallo ,
Programm läuft 

(setq file (open "C:\\Abwicklungen/Konus.txt" "a" ))
(princ (list Bt ",ěD1 ="D1 ",ěD2 ="D2 ",Höhe ="H ",Wandstärke ="S ",Reib.Zug. ="Z ) file)
(princ "\n"  file)
(setq file (close file))

So sieht die Konus.txt  aus:
(F00123 ,ěD1 = 1164.0 ,ěD2 = 466.0 ,Höhe = 765.0 ,Wandstärke = -30.0 ,Reib.Zug. = 30.0)

Alles Top, Danke an die Helfer ...

Mfg Thilo