| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Ausgabe als txt (717 mal gelesen)
|
Kenny1 Mitglied
Beiträge: 77 Registriert: 29.06.2004
|
erstellt am: 07. Jul. 2005 06:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ein kleine Routine soll folgendes ausgeben : o Alle Kreise die in der Zeichnung enthalten sind, sollen in eine Textdatei geschrieben werden. Das funktioniert soweit, bis auf einen kleinen, großen Schönheitsfehler. Er schreibt mit immer nur den zuletzt gezeichneten Kreis hinein. Ich vermute er überschreibt dies und ich müsste einen Zeilenumbruch einbauen. Gewusst wie... o Ich würde gerne für jeden Kreis eine fortlaufende Nummer generieren wollen. o In einen anderem Falle, habe ich das Problem, das ich zweimal ein Gruppencode (10 ....) habe. Beim Filtern greift er immer auf den ersten zu. Hier müsste ich eine Möglichkeit haben ein Zugriff für den 2. Listenteil beginnend mit (10 ...) haben. Anbei das Programm : defun c:cliste2 ( / inListe AusDatei i ) (setq ss (ssget "X" '((-4 . "<OR") (0 . "circle")(-4 . "OR>"))) ) ;_ end of setq (setq i 0) (while(setq ent(ssname ss i)) (setq data(entget ent)) (setq w1 (car (assoc 10 data))) (setq w2 (cdr (assoc 40 data))) (setq w4 (cdr (assoc 8 data))) (setq inListe (list w1 w2 w3 w4)) (w:list->File "D:\\Cliste.txt" inListe) (setq AusDatei (load "D:\\Cliste.txt")) (setq i (1+ i)) ))
(defun w:list->File (datei WerteListe / f) (setq f (open datei "w")) (princ f) (mapcar '(lambda (W) (princ (if (= 'STR (type W)) (strcat "\"" W "\"") W) f ) (princ " " f) ) WerteListe ) (princ f) (close f) (setq i(1+ i)) )
Gruß Kenny1
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 07. Jul. 2005 07:46 <-- editieren / zitieren --> Unities abgeben: Nur für Kenny1
ne.. so wie du das machst überschreibst du die Datei ständig nutze statt (setq f (open datei "w")) ;_ Datei neu erzeugen und öffnen besser (setq f (open datei "a")) ;_ Datei öffnen zum Daten anhängen ------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
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: 07. Jul. 2005 08:11 <-- editieren / zitieren --> Unities abgeben: Nur für Kenny1
Hallo Kenny, und wenn Du die Datei bei jedem Aufstarten überschreiben möchtest, aber mit allen Werten, dann sammle erstmal die Daten in "inListe" und übergib diese Gesamtliste an die Funktion w:list->File (defun c:cliste2 ( / inListe AusDatei i ) (setq ss (ssget "X" '((-4 . "<OR") (0 . "circle")(-4 . "OR>"))) ) ;_ end of setq (setq i 0) (while(setq ent(ssname ss i)) (setq data(entget ent)) (setq w1 (car (assoc 10 data))) (setq w2 (cdr (assoc 40 data))) (setq w4 (cdr (assoc 8 data))) (setq inListe (if inListe (cons (list w1 w2 w3 w4) inListe) (list(list w1 w2 w3 w4)))) ;(setq AusDatei (load "D:\\Cliste.txt")) (setq i (1+ i)) ) (w:list->File "D:\\Cliste.txt" inListe) )
(defun w:list->File (datei WerteListe / f) (setq f (open datei "w")) (mapcar '(lambda(A) (princ f) (mapcar '(lambda (W) (princ (if (= 'STR (type W)) (strcat "\"" W "\"") W) f ) (princ " " f) ) A ) (write-line "" f) )WerteListe) (close f)
;(setq i(1+ i)) ) ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kenny1 Mitglied
Beiträge: 77 Registriert: 29.06.2004
|
erstellt am: 08. Jul. 2005 06:26 <-- editieren / zitieren --> Unities abgeben:
Hallo, mit dem "a" hat es sich schon mal soweit geändert, das neue Infos angehangen werden. Jetzt habe ich vorerst noch zwei Probleme : Diese Datei soll immer wieder neu gefüllt werden und muß entsprechend geleert werden. Momentan behält er alle Sätze und fügt die neuen an. Wie schaffe ich es, das die Sätze jeweils (w1 - w4) in einer Zeile stehen, dann die nächsten Sätze in der nächsten Zeilen stehen ? Vielen Dank Gruß Kenny1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
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: 08. Jul. 2005 08:11 <-- editieren / zitieren --> Unities abgeben: Nur für Kenny1
|
Kenny1 Mitglied
Beiträge: 77 Registriert: 29.06.2004
|
erstellt am: 14. Jul. 2005 06:07 <-- editieren / zitieren --> Unities abgeben:
|