257 lines
8.6 KiB
Common Lisp
257 lines
8.6 KiB
Common Lisp
;;; ------------------- TOOLS.LSP -------------------
|
|
;;;
|
|
;;; Einsatz: AutoCAD / Genius allgemein
|
|
;;; Funktion: diverse
|
|
;;;
|
|
;;;
|
|
;;; (C) GROB-WERKE Mindelheim, Lisiecki Ch.
|
|
;;; Version V1.3
|
|
;;; Stand 23:20 21.03.97
|
|
;;; -------------------------------------------------
|
|
|
|
(defun c:TOOLS (/ action)
|
|
(setq action 0)
|
|
(setq scmde (getvar "CMDECHO"))
|
|
(setvar "CMDECHO" 0)
|
|
(d_menue)
|
|
(cond
|
|
((= action 1) (c:blkanzahl))
|
|
((= action 2) (c:blkentf))
|
|
((= action 7) (c:blkscale))
|
|
((= action 3) (c:bereinig2))
|
|
((= action 4) (c:endd))
|
|
((= action 5) (c:txtboxed))
|
|
((= action 6) (c:makepart))
|
|
(T (prompt "\nKeine Funktion ausgewählt"))
|
|
)
|
|
(setvar "CMDECHO" scmde)
|
|
(princ)
|
|
)
|
|
; -------------------------------------------------
|
|
(defun d_menue ()
|
|
(setq dcl_id (load_dialog "c:/tab11/lsp/tools.dcl")) ;Supportpfad
|
|
(if (not (new_dialog "tools" dcl_id)) (exit))
|
|
(action_tile "b_blkscale" "(setq action 7) (done_dialog)")
|
|
(action_tile "b_blkanzahl" "(setq action 1) (done_dialog)")
|
|
(action_tile "b_blkentf" "(setq action 2) (done_dialog)")
|
|
(action_tile "b_bereinig2" "(setq action 3) (done_dialog)")
|
|
(action_tile "b_finish" "(setq action 4) (done_dialog)")
|
|
(action_tile "b_txtboxed" "(setq action 5) (done_dialog)")
|
|
(action_tile "b_makepart" "(setq action 6) (done_dialog)")
|
|
(action_tile "cancel" "(done_dialog)")
|
|
(action_tile "accept" "(done_dialog)")
|
|
(start_dialog)
|
|
(unload_dialog dcl_id)
|
|
|
|
)
|
|
|
|
;;; -------------------------------------------------
|
|
;;; -------------------------------------------------
|
|
(defun C:BLKANZAHL (/ BNAM SS)
|
|
(princ "Anzahl der eingefügten Blöcke")
|
|
(setq BNAM(getstring"\nBlockname:")
|
|
SS(ssget "X" (list(cons 2 BNAM))))
|
|
(if(null SS)
|
|
(prompt(strcat"\nKeine Einfügungen von " (chr 34)BNAM(chr 34)))
|
|
(prompt(strcat"\nEs gibt insgesamt " (itoa(sslength SS))
|
|
" Einfügungen von " (chr 34) BNAM(chr 34)))
|
|
)
|
|
(princ)
|
|
)
|
|
; -------------------------------------------------
|
|
(defun C:BLKENTF (/ BNAM SS)
|
|
(princ "Löschen aller Einfügungen eines Blocks")
|
|
(setq BNAM(getstring"\nBlockname:")
|
|
SS(ssget "X" (list(cons 2 BNAM))))
|
|
(if(null SS)
|
|
(prompt(strcat"\nKeine Einfügungen von " (chr 34)BNAM(chr 34)))
|
|
(prompt(strcat"\nSoll der Block " (chr 34) BNAM(chr 34)
|
|
" " (itoa(sslength SS)) "-mal gelöscht werden?"))
|
|
)
|
|
(setq qjn (getstring " <j>/n ") )
|
|
(if (or (= qjn "j") (= qjn "")) (command "_.erase" "_previous" ""))
|
|
(princ)
|
|
)
|
|
; -------------------------------------------------
|
|
(defun C:BLKSCALE ()
|
|
(initget "Koord Oberfl")
|
|
(setq what (getkword "\nWelche Elemente skalieren <Koord.>/Oberfl. "))
|
|
(prompt "\nElemente zum Skalieren auswählen ")
|
|
(cond
|
|
((= what "Oberfl")
|
|
(setq ss1 (ssget '((0 . "INSERT")(-4 . "<or")(2 . "GEFROU4")(2 . "GEFROU5")(2 . "GEFROG4")(2 . "GEFROG5")(-4 . "or>") ) ))
|
|
(if (not ss1) (princ "\nKeine Elemente ausgewählt")
|
|
(progn
|
|
(setq scale (getreal "\nSkalierung eingeben: "))
|
|
(setq len (sslength ss1))
|
|
(setq index 0)
|
|
(repeat len
|
|
(setq e_dat (entget (ssname ss1 index)))
|
|
(command "_.SCALE" (ssadd (ssname ss1 index)) "" (fld 10) (rtos (/ scale (fld 41)) ))
|
|
(setq index (1+ index))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(T
|
|
(setq ss1 (ssget '((0 . "INSERT")(2 . "GENORD")) ))
|
|
(if (not ss1) (princ "\nKeine Elemente ausgewählt")
|
|
(progn
|
|
(setq scale (getreal "\nSkalierung eingeben: "))
|
|
(setq len (sslength ss1))
|
|
(setq index 0)
|
|
(repeat len
|
|
(setq e_dat (entget (ssname ss1 index)))
|
|
(setq e_dat (subst (cons 41 scale) (assoc 41 e_dat) e_dat))
|
|
(setq e_dat (subst (cons 42 scale) (assoc 42 e_dat) e_dat))
|
|
(setq e_dat (subst (cons 43 scale) (assoc 43 e_dat) e_dat))
|
|
(entmod e_dat)
|
|
(setq index (1+ index))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;;; -------------------------------------------------
|
|
;;; -------------------------------------------------
|
|
(defun C:BEREINIG2 (/ done)
|
|
(setq done T)
|
|
(command "_.purge" "_a" )
|
|
(while (= (getvar "CMDNAMES") "PURGE")
|
|
(command "_y" )
|
|
(setq done nil)
|
|
)
|
|
(if (not done) (C:BEREINIG2))
|
|
(princ)
|
|
)
|
|
; -------------------------------------------------
|
|
(defun C:ENDD ( / ss1 set_rev more e1 e2 e_dat)
|
|
(command "_.LAYER" "_OFF" "9,9N,VIEW"
|
|
"_F" "9,9N,VIEW" "")
|
|
(command "_.LAYER" "_ON" "0,1,2,3,3A,4,4A,5,6,7,7A,8,0N,1N,2N,3N,3AN,4N,4AN,5N,6N,7N,7AN,8N"
|
|
"_T" "0,1,2,3,3A,4,4A,5,6,7,7A,8,0N,1N,2N,3N,3AN,4N,4AN,5N,6N,7N,7AN,8N" "")
|
|
(command "_.LAYER" "_S" "0" "")
|
|
(setq ss1 (ssget "X" '((8 . "KLIN"))))
|
|
(if ss1
|
|
(command "_.ERASE" ss1 "")
|
|
)
|
|
(C:BEREINIG2)
|
|
(setvar "TILEMODE" 1)
|
|
(command "_.ZOOM" "_E")
|
|
(command "_.ZOOM" "0.8x")
|
|
(setvar "TILEMODE" 0)
|
|
(initget "Nein Ja")
|
|
(setq set_rev (getkword "Revisionsstand erhöhen? <N>/J :"))
|
|
(setq e1 (entnext))
|
|
(while (setq e1 (entnext e1))
|
|
(setq e_dat (entget e1))
|
|
(if (and (= (fld 0) "INSERT") (= (fld 66) 1))
|
|
(progn
|
|
(setq e2 e1
|
|
e1 (entnext e1)
|
|
more T)
|
|
(while more
|
|
(setq e_dat (entget e1))
|
|
(cond
|
|
((= (fld 0) "ATTRIB") (fillatt) (setq e1 (entnext e1)))
|
|
((= (fld 0) "SEQEND") (setq more nil))
|
|
(T (setq e1 (entnext e1)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
; (entupd e2) ; nicht nötig, da REGEN nachfolgend ausgefuehrt wird
|
|
(command "_.ZOOM" "_E")
|
|
(command "_.QSAVE")
|
|
)
|
|
(defun fillatt (/ cdate)
|
|
(setq cdate (rtos (getvar "CDATE") 2 6)
|
|
cdate (strcat (substr cdate 7 2) "." (substr cdate 5 2) "." (substr cdate 3 2)))
|
|
(setq attag (fld 2))
|
|
(cond
|
|
((= attag "GEN-TITLE-NAME{5}") (f_attmod (getvar "LOGINNAME")))
|
|
((= attag "GEN-TITLE-DWG{30}") (f_attmod (getvar "DWGNAME")))
|
|
((= attag "GEN-TITLE-PLOT{2.94}") (f_attmod cdate))
|
|
((and (= attag "R") (= set_rev "Ja")) (f_attmod (itoa (+ 1 (atoi (fld 1)))) ) )
|
|
)
|
|
)
|
|
(defun f_attmod (att)
|
|
(setq e_dat (subst (cons 1 att) (assoc 1 e_dat) e_dat))
|
|
(entmod e_dat)
|
|
)
|
|
(defun fld (num)
|
|
(cdr (assoc num e_dat))
|
|
)
|
|
|
|
; -------------------------------------------------
|
|
; -------------------------------------------------
|
|
(defun C:TXTBOXED (/ center string above below right left)
|
|
(princ)
|
|
(setq THGT (getvar "TEXTSIZE"))
|
|
(prompt "\nZeichnet einen Rahmen um eine Zeichenkette")
|
|
(setq center (getpoint "\nMittelpunkt des Rahmens"))
|
|
(setq THGT (getdist (strcat "\nTexthöhe <" (rtos THGT) ">:")))
|
|
(if (= thgt nil) (setq thgt (getvar "textsize")))
|
|
(setq string (getstring T "\nText eingeben : "))
|
|
(setq lgth (strlen string)
|
|
ontop (+ (cadr center) (* 0.9 THGT))
|
|
under (- (cadr center) (* 0.9 THGT))
|
|
right (+ (car center) (* 0.5 (* THGT lgth)))
|
|
left (- (car center) (* 0.5 (* THGT lgth))))
|
|
(command "_.PLINE" (list left under) "_W" "0" "0"
|
|
(list right under) (list right ontop) (list left ontop) "_C")
|
|
(command "_.TEXT" "_M" center THGT "0" string
|
|
)
|
|
(princ)
|
|
)
|
|
|
|
;;; -------------------------------------------------
|
|
;;; -------------------------------------------------
|
|
(defun C:MAKEPART ( ;|/ fname lname file count path|;)
|
|
(setvar "cmdecho" 0)
|
|
(setq base "5000,5000,0")
|
|
(setq path (getstring "\nPfad für DXF-Dateien, Format: d:\\TEMP\\ <akt.>: "))
|
|
(command "sh" (strcat "dir " path "*.dxf /b > c:\\temp.$$$" ))
|
|
(setq file (open "C:\\temp.$$$" "r"))
|
|
(if file
|
|
(progn
|
|
(while (setq lname (read-line file))
|
|
(if (not (member (substr lname 1 1) '("" " " ".")))
|
|
(progn
|
|
(setq count 1)
|
|
(while (/= (substr lname count 1) ".")
|
|
(setq count (1+ count))
|
|
)
|
|
(setq lname (substr lname 1 (1- count)))
|
|
(prompt (strcat "\nWorking...\t" path lname ".dxf"))
|
|
(command "_.erase" (ssget "X")) ; evtl "" hinzu
|
|
(command "_.dxfin" (strcat path lname))
|
|
; evtl. Mach Layer PART
|
|
(command "eigändr" (ssget "X") "" "LA" "PART" "")
|
|
(command "_.zoom" "_e")
|
|
(command "_.mslide" (strcat path lname) )
|
|
(command "_.wblock" (strcat path lname) "" base "alle" "")
|
|
;(command "shell" (strcat "del " (strcat path dxfname) ".dxf"))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(close file)
|
|
;(command "sh" "del temp.$$$")
|
|
(setvar "cmdecho" 1)
|
|
(prompt "\n Alle Dateien im angegebenen Pfad bearbeitet.")
|
|
(princ)
|
|
)
|
|
|
|
;;; -------------------------------------------------
|
|
;;; -------------------------------------------------
|
|
(princ)
|
|
(prompt "\n---------------------------------------------")
|
|
(prompt "\nTOOLS geladen ... by Lisiecki Ch.")
|
|
(prompt "\nZeichnung abschliessen auch mit ENDD moeglich")
|
|
(princ)
|