Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Direct Modeling
  Zeile in Textdatei einfügen aus LISP-Makro heraus

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

Anzeige:

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

Dieser Beitrag ist erfolgreich in das Forum PTC Creo Elements/Programmierung verschoben worden.

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 Creo
Autor Thema:  Zeile in Textdatei einfügen aus LISP-Makro heraus (1002 / mal gelesen)
Seele
Mitglied
Konstrukteur


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

Beiträge: 364
Registriert: 11.06.2003

Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM
NVidia Quadro RTX A4000
Win10-64Bit
Elements/Direct v20.5.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 23. Feb. 2016 07: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

Frage vom LISP-Anfänger an LISP-Experten, ...

wie ist es möglich in LISP eine Textdatei zu öffnen,
Zeile für Zeile auszuwerten und dann hinter gefundener Zeile
eine zusätzliche neue Zeile einzufügen und diese dabei in eine
neue Datei zu schreiben? 

In einer DOS-Batch-Datei bewerkstellige ich es funktionierender Weise so :

@echo off & setlocal
set "Neuzeile=NeuenTextEinfügen;"
set "Nach=TextinZeile;"
set "Datei=%1"
set "DateiTmp=%1.x_t
for /f "delims=" %%i in (%Datei%) do (
    >>"%DateiTmp%" echo %%i
    echo %%i|findstr /b "%Nach%">nul && >>"%DateiTmp%" echo %Neuzeile%
)

Mein Problem, ich kenne mich mit der Syntax von SolidDesigner-LISP noch viel zu wenig aus.

Vielleicht kann mir einer von Euch helfen, wie es hier gemacht werden kann.

Ich denke man muss hier nicht unbedingt den Umweg über eine Batch-Datei machen?

Alternativ stellt sich mir die Frage, wie kann ich in LISP eine Batch-Datei aufrufen und dabei auch noch einen Parameter mit der zu ändernden Datei übergeben?
Dies sollte jedoch der zweite Ansatz sein, falls es mit dem ersten überhaupt nicht geht.

Danke im Vorraus

Gruß Wolfgang

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2143
Registriert: 12.12.2000

Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf
HP ZBook 17 G4, Windows 10 Pro 64

erstellt am: 23. Feb. 2016 08: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 Nur für Seele 10 Unities + Antwort hilfreich

Als Denkanstoss hilft vielleicht das: lisppart.lsp

------------------
meine LISP-Makros sind auf osd.cad.de Disclaimer
Grüße aus Wien

Walter

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 23. Feb. 2016 08: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 Seele 10 Unities + Antwort hilfreich

Du kannst Dich aus dem reichen Fundus von Tutorials und Doku zu Common Lisp bedienen. Zum Beispiel wird hier beschrieben, wie man in Common Lisp eine Datei Zeile für Zeile einliest:

http://cl-cookbook.sourceforge.net/files.html#line

Auf dieser Basis kannst Du Dir Deinen Code bauen. Grobentwurf (ohne jedweden Test):

Code:

(in-package :de.clausbrod)

(defun copy-file(infile outfile)
  (with-open-file (outstream outfile :direction :output)
    (with-open-file (instream infile)
      (do ((line (read-line instream nil)
                (read-line instream nil)))
          ((null line))
        (write-line line outstream)))))


Der obige Code kopiert eine Datei unverändert, und das Zeile für Zeile. In Deinem Fall musst Du noch entsprechende Logik einbauen, um auf Kenner in der Eingabedatei zu reagieren und dann etwas anderes zu tun, als nur zu kopieren.


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 23. Feb. 2016 editiert.]

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 23. Feb. 2016 09: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 Seele 10 Unities + Antwort hilfreich

Diese Variante liest sich wahrscheinlich etwas leichter:

Code:

(defun copy-file2(infile outfile)
  (with-open-file (outstream outfile :direction :output)
    (with-open-file (instream infile)
      (loop for line = (read-line instream nil)
        while line do
          (write-line line outstream)))))

Na gut, und wenn wir eh schon soweit sind:


Code:

(defun copy-file-with-replacement(infile outfile marker replacement)
  (with-open-file (outstream outfile :direction :output)
    (with-open-file (instream infile)
      (loop for line = (read-line instream nil)
        while line do
          (if (search marker line)
            (write-line replacement outstream)
           (write-line line outstream))))))

Beispielaufruf:

Code:

  (copy-file-with-replacement #P"foo.txt" #P"modified-foo.txt" "Java" "Lisp")

Weiterhin komplett ungetestet.

PS: An den Moderator: Vielleicht sollten wir das ins Programmierforum verschieben?

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 23. Feb. 2016 editiert.]

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 364
Registriert: 11.06.2003

Intel(R) Xeon(R) W-2245 CPU @ 3,90 GHz, 64GB RAM
NVidia Quadro RTX A4000
Win10-64Bit
Elements/Direct v20.5.1.0
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 24. Feb. 2016 07: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

Vielen Dank an Walter und Claus für die schnellen Antworten.

Ich habe es gestern Abend ausprobiert und es hat funktioniert, ....

Mit jedem LISP-Makro bekommt man mehr Erfahrung und vielleicht wird es ja noch mit dem LISPeln, ... 

Danke, Danke, Danke, ...

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2143
Registriert: 12.12.2000

Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf
HP ZBook 17 G4, Windows 10 Pro 64

erstellt am: 24. Feb. 2016 07: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 Seele 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von clausb:
PS: An den Moderator: Vielleicht sollten wir das ins Programmierforum verschieben?
[/i]

Soeben erledigt 

------------------
meine LISP-Makros sind auf osd.cad.de Disclaimer
Grüße aus Wien

Walter

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


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

Administrative Optionen: Beitrag öffnen | Archivieren/Bewegen | Beitrag melden!

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

(c)2023 CAD.de | Impressum | Datenschutz