| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Zeichnungsnummern und Datei schreiben und letzte wieder lesen (1237 mal gelesen)
|
berndhock Mitglied Holztechniker
Beiträge: 35 Registriert: 07.03.2003 AutoCAD2004 und 2005 3,20 gigahertz Intel Pentium 4 1022 Megabytes Installed Memory Matrox Parhelia 128MB
|
erstellt am: 26. Jan. 2005 09:07 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hasse es Listen über Zeichnungsnummern zu schreiben und würde das gerne von Lisp erledigen lassen. Dazu benötige ich eine Funktion die es mir ermöglicht Zeichnungsnummern (z.B. CAD05-001) untereinander in eine ASCII Datei zu schreiben. Dann eine Funktion die mir die letzte Zeile (letzte Zeichnungsnummer wieder ausgibt. Die Datei sollte dann so aussehen: CAD05-0001 CAD05-0002 CAD05-0003 usw. Hat jemand sowas schon mal gemacht oder kann mir verraten wie ich das hinkriege. Mit open und write hab ich schon ein bischen experimentiert. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 26. Jan. 2005 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für berndhock
|
berndhock Mitglied Holztechniker
Beiträge: 35 Registriert: 07.03.2003 AutoCAD2004 und 2005 3,20 gigahertz Intel Pentium 4 1022 Megabytes Installed Memory Matrox Parhelia 128MB
|
erstellt am: 26. Jan. 2005 09:24 <-- editieren / zitieren --> Unities abgeben:
Hier war ich schon bin aber nicht so richtig draus schlau geworden. Hab auch den einen oder anderen Code ausprobiert. Hab es nicht geschaft das mir die Einträge untereinande stehen und deshalb auch nicht dass mir die letzte Zeile ausgegeben wird. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 26. Jan. 2005 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für berndhock
|
berndhock Mitglied Holztechniker
Beiträge: 35 Registriert: 07.03.2003 AutoCAD2004 und 2005 3,20 gigahertz Intel Pentium 4 1022 Megabytes Installed Memory Matrox Parhelia 128MB
|
erstellt am: 26. Jan. 2005 10:34 <-- editieren / zitieren --> Unities abgeben:
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 27. Jan. 2005 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für berndhock
Hi Berndhock, habe mal eine Lösung für Dein Problem geschrieben. Du benötigst außer dem hier von mir veröffentlichen Code noch das doslib von Robert McNeel (Free!). Ich verwende aus diesem Pool von Funktionen ein Dialogfeld. doslib-Download unter: http://www.mcneel.com/doslib.htm Was Du über das verwenden von Lisp-Code wissen mußt, findest Du hier: http://ww3.cad.de/foren/ubb/Forum54/HTML/007058.shtml Hier der Lisp-Code für Dich:
Code:
;;; Nachfolgend festverdrahtet der Dateiname in dem die Liste fortgeführt wird... (setq cad:de:filename "c:\\ZEICHNUNGSNUMMERN.TXT")(defun C:ZNR () (EDIT-NR-LST cad:de:filename) (princ) ) (defun EDIT-NR-LST (FILENAME / CAD:DE:SYM) (if (= (DOSLIB-LOADER) "err") (alert (strcat "\nKonnte \"doslib*.arx\" nicht finden.\nFunktionen nicht ausführbar." "\nDownload der \"doslib*.arx\" von \"www.mcneel.com\"" "\nKopiere bitte danach die \"DOS_LIB\" Daten in den Acad-Suchpfad." ) ;_ end of strcat ) ;_ end of alert (progn (if (= (load FILENAME "err") "err") (setq CAD:DE:SYM '("")) ) (if (setq CAD:DE:SYM (dos_editlist "Zeichnungsnummern fortführen" "Bearbeiten Sie die Liste" CAD:DE:SYM ) ) (if (setq FILENAME (LIST>FILE 'CAD:DE:SYM FILENAME)) (princ (strcat "\nOK, Liste in Datei: \"" FILENAME "\" geschrieben." ) ) (princ (strcat "\nFehler: In Datei: \"" FILENAME "\" konnte nicht geschrieben werden." ) ) ) (princ "\nListe unverändert.") ) ) ) ) ;| Funktion schreibt eine oder mehrere Listen in eine Datei Argumente: SYMLIST = Symbol oder Liste von Symbolen z.B. (setq sym1 '(1 2 3)) -> (LIST>FILE 'Sym1 "c:\\test.txt") oder (setq sym1 '(1 2 3) sym2 "Haseldasel") -> (LIST>FILE '(Sym1 sym2) "c:\\test.txt")
FILENAME = STRING für Name der Datei in die geschrieben werden soll -> c:\\temp\\test.txt Bitte hierbei beachten: Lisp konforme Verwendung von Pfaden Entweder ZWEI Backslashes für jeden Backslash der Pfadangabe (bei UNC Pfaden also z.B.: "\\\\SERVERNAME\\FREIGABENAME") oder für jeden Backslash EIN Slash verwenden (z.B. "//SERVERNAME/FREIGABENAME") |; (defun LIST>FILE (SYMLIST FILENAME / FH RETVAL) (if (setq FH (open FILENAME "w")) (progn (foreach SYM (if (listp SYMLIST) SYMLIST (list SYMLIST) ) (princ "(setq " FH) (princ SYM FH) (foreach ITEM (list (cons 'quote (list (eval SYM)))) (prin1 ITEM FH) ) (princ ")" FH) ) (close FH) (setq RETVAL FILENAME) ) ) RETVAL ) ;;; Allgemeiner Dos-Lib-Loader ;;; Return Values: ;;; "err" wenn beim laden des arx-Moduls ein Fehler unterlief oder aber die Acad-Version inkompatibel ist. ;;; Pfad und Dateiname der DosLib Version die geladen werden konnte. ;;; Funktion führt ein "exit" aus, wenn AutoCAD Version nicht ab R2000 ! (defun DOSLIB-LOADER (/ RETVAL DOSLIBNAME) (cond ((< (atoi (substr (getvar "acadver") 1 2)) 15 ) ;_ Version ist kleiner 2000, NICHT unterstützt!! (alert (strcat "! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! !" "\n\nSie verwenden eine AutoCAD-Version < R2000 !" "\nDie Mindestvoraussetzung für den Einsatz dieser Funktion ist AutoCAD 2000 !" "\n\nBitte setzen Sie sich mit Ihrem CAD-Admin in Verbindung." "\n\n! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! ! FEHLER ! ! !") ;_ ende von strcat ) ;_ ende von alert (setq RETVAL "err") ) ((< (atoi (substr (getvar "acadver") 1 2)) 16) ;_ Lauffähigkeit unter R2000 bis 2004 gewährleisten (setq DOSLIBNAME "doslib2k.arx") (if (not (member DOSLIBNAME (arx))) ;_ Wenn kleiner 16 ist's unter 2004 (setq RETVAL (arxload (MS:FIND-FILE DOSLIBNAME) "err")) (setq RETVAL (MS:FIND-FILE DOSLIBNAME)) ) ;_ ende von if ) ((= (atoi (substr (getvar "acadver") 1 2)) 16) (setq DOSLIBNAME "doslib2004.arx") (if (not (member DOSLIBNAME (arx))) ;_ Wenn größer 15 ist's 2004 (setq RETVAL (arxload (MS:FIND-FILE DOSLIBNAME) "err")) (setq RETVAL (MS:FIND-FILE DOSLIBNAME)) ) ;_ end of if ) ;_ ende von if ) ;_ ende von cond RETVAL ) ;_ ende von defun
(defun MS:FIND-FILE (FILENAME / RETVAL) (if (not (setq RETVAL (findfile FILENAME))) ;_ nicht zu finden? (if MS:ACADINSTALL ;_ wenn global Install-Variable... (setq RETVAL (findfile (strcat MS:ACADINSTALL FILENAME))) ;_ versuch die Datei im Standard-Pfad zu finden ) ;_ ende von if ) ;_ ende von if RETVAL ) ;_ ende von defun
(princ)
Viel Spaß damit :-) ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 27. Jan. 2005 editiert.]
[Diese Nachricht wurde von marc.scherer am 27. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |