;Dieses Lisp-Programm ruft jede Zeichnung im Arbeitsverzeichnis auf, ;zoomt sie auf Grenzen, zeichnet ein Symbol am Einfügepunkt, ;schreibt den Zeichnungsnamen in die Zeichnung und macht dann ein DIA. ;Es erstellt eine Liste mit den erzeugten Dias und generiert damit ein Icon-Menü. ;Danach wird eine Diabibliothek erzeugt.Der Benutzer muß nur noch ;die Diabibliothek in das Supportverzeichniss von AutoCAD kopieren und das ;Icon-Menü in sein Menü einfügen. ;Startvoraussetzungen: - die gewünschten Zeichnungen sind im Arbeitsverzeichniss ; - Slidelib.exe ist im Arbeitsverzeichniss ; - (load"Makeicon.lsp") in AutoCAD ; - folgen der Befehlszeilenanweisungen ; - kopieren der erzeugten Diabibliothek in Supportverzeichniss ; - einfügen des erzeugten Icon-Menüs in beliebiges Menü ; (Zeichnungspfad eingeben!) ;***********VARIABLES USED IN THE MAIN PROGRAM*********** ; NSL - Number of slides per group ; F1 - File pointer to directory listing ; F2 - File pointer to temporary MNU file ; F3 - File pointer to list of slide files ; F4 - File pointer to script file ; DNM - Drawing names to include in icon menus ; NAM - Current drawing file name ; MNU - New menu file to be created ; SLB - New slide library file name ; I - Counter ; LIN - Line of text from input file ; FIL - DWG file name ; PTMIN - Minimum extents of drawing ; PTMAX - Maximum extents of drawing ; DST - Distance between extents of drawing ; RD - Radius of insertion point circle ; TXTSIZ - Size of text ; (defun SPCUT (FIL I) (while (= (substr FIL I 1) " ") (setq I (1- I)) ) (substr FIL 1 I) ) (apply '(lambda (/ NSL F1 F2 F3 F4 NAM MNU SLB DNM LIN I FIL PTMIN PTMAX DST RD TXTSIZ) (setvar "CMDECHO" 0) (initget 1 "4 9 16 38") (setq NSL (1- (atoi (getkword "Anzahl der Menü-Iconfenster (4, 9, 16 or 38): ")))) (setq NAM (strcase (getvar "DWGNAME")) MNU (strcase (getstring (strcat "Name der zu erzeugenden Menüdadei <" NAM ">: "))) MNU (cond ((= MNU "") (strcat NAM ".MNU")) (t (strcat MNU ".MNU"))) F2 (open MNU "w") SLB (strcase (getstring (strcat "Name der zu erzeugenden Diabibliothek <" NAM ">: "))) SLB (cond ((= SLB "") NAM) (t SLB)) F3 (open "$TMP$.LST" "w") DNM (getstring "zu verwendende Zeichnungen(*.dwg's) <*>: ") DNM (cond ((= DNM "") "*") (t DNM)) LIN (strcat "dir " DNM ".DWG >$TMP$") I 0) (command "shell" LIN) (setq F1 (open "$TMP$" "r")) (while (setq LIN (read-line F1)) (if (= (substr LIN 10 3) "DWG") (progn (if (= (rem I NSL) 0.0) (progn (write-line (strcat "**" SLB (itoa (1+ (fix (/ I NSL))))) F2) (write-line "[Symbol auswählen]" F2) )) (setq FIL (spcut (substr LIN 1 8) 8) I (1+ I)) (grtext -2 (strcat "Bearbeitete Dateien # " (itoa I) "." " " "Markus G.")) (command "_color" "bylayer" "_insert" (strcat "*" FIL) "0,0" "1" "0" "zoom" "g") (setq PTMIN (getvar "EXTMIN") PTMAX (getvar "EXTMAX") DST (distance PTMIN PTMAX) RD (/ DST 30.0)) (command "_color" "gelb" "_circle" "0,0" RD "_line" (polar (list 0 0) 0 RD) (polar (list 0 0) PI RD) "" "_line" (polar (list 0 0) (* 0.5 PI) RD) (polar (list 0 0) (* 1.5 PI) RD) "" ) (setq TXTSIZ (cond ((= NSL 3) (/ DST 15.0)) ((= NSL 8) (/ DST 10.0)) (t (/ DST 7.0)))) (command "_text" "m" (list (/ (+ (car PTMIN) (car PTMAX)) 2.0) (- (cadr PTMIN) TXTSIZ)) TXTSIZ "0" FIL) (command "zoom" "g") (setq PTMIN (getvar "EXTMIN") PTMAX (getvar "EXTMAX") DST (distance PTMIN PTMAX)) (command "zoom" "m" (polar PTMIN (angle PTMIN PTMAX) (/ DST 2.0)) DST) (command "_mslide" FIL "_erase" "_cross" PTMIN PTMAX "") (command "_color" "bylayer") (write-line (strcat "[" SLB "(" FIL ")]^C^C" "_insert" " " (chr 34)"!!Pfad"(chr 34)"/" FIL ".dwg" ";" ) F2) (write-line FIL F3) ;---ADD AN EXIT OPTION TO THE MENU FILE IF NEEDED--- (if (= (rem I NSL) 0.0) (write-line "[ Exit]^c^c\n" F2)) )) ) (if (= I 0) (princ (strcat "\n \nNo " (strcase DNM) ".DWG" " files found.")) (progn (if (/= (rem I NSL) 0.0) (write-line "[ Exit]^c^c" F2)) (write-line "" F2) (write-line "***POP9" F2) (write-line "[Symbole]" F2) (setq I (1+ (fix (/ (1- I) NSL)))) (repeat I (progn (write-line (strcat "[" SLB " " (itoa I) "]^C^C$I=" SLB (itoa I) " $I=*") F2) (setq I (1- I)) )) (write-line "Achtung: Richtigen Pfad für die *.dwg's eingeben!" F2) (write-line "Diesen Menüdateiteil kopieren und in die zu verwendende Menüdatei einfügen!" F2) (setq F4 (open "$TMP$.SCR" "w")) (write-line (strcat "shell slidelib " SLB " <$TMP$.LST") F4) (write-line "del $TMP$.*" F1) (close F4) (command "script" "$TMP$") )) (close F1) (close F2) (close F3) (princ) ) '() ; Finishing lambda )