Hallo wertes Forum,
ich habe ein kleines Problem. Und zwar muss ich aus einer alten Daten mit verschiedenen Schraffuren, das Muster wiederherstellen. sollte ja eigentlich mit getpat.lsp gehen - allerdings kommt beim Aufruf immer einer Fehlermeldung: Fehlerhafter argumenwert: positiv 0
Hat jemand eine Idee wie ich die LSP modifizieren muss/ kann oder gibt es etwas "neueres"?
Chris
Inhalt der Lsp:
;|
GETPAT.LSP (c) 2001 Tee Square Graphics
Version 1.01b - 1/22/2002
This routine may be used to extract hatch pattern data
from existing drawings when the .pat file containing
the original information is not available.
After loading the file in the usual manner, type the
command GETPAT at the AutoCAD Command: prompt, select
any (non-SOLID) hatch object, and the pattern information
will be written to a .pat file having the same name as
the pattern (e.g., pattern information for the hatch
pattern WOODS will be written to WOODS.PAT.
Ver. 1.01b includes two small fixex to eliminate "Bad
Argument" LISP errors when run with certain installations
of AutoCAD 2000+.
|;
(defun C:GETPAT (/ cmde hat elst rotn hnam temp xofs yofs what
temp outf flin angl tmp1 tmp2 xvec yvec)
(setq cmde (getvar "cmdecho"))
(setvar "cmdecho" 0)
(while (not (setq hat (entsel "\nSelect hatch: "))))
(setq elst (entget (car hat)))
(if (= (cdr (assoc 0 elst)) "HATCH")
(progn
(setq rotn (* 180 (/ (cdr (assoc 52 elst)) pi))
hnam (cdr (assoc 2 elst))
hscl (cdr (assoc 41 elst))
)
;; The following nine lines may optionally be omitted.
;; Their purpose is to create a temporary "clone" of the
;; selected hatch with a 0 deg. rotation angle, in case
;; the hatch object specified a rotation angle. If these
;; lines are omitted, the current rotation of the selected
;; hatch will become the "0" deg. rotation for the extracted
;; pattern definition.
(if (not (zerop rotn))
(progn
(setq temp elst)
(entmake temp)
(command "_.rotate" (entlast) "" (cdr (assoc 10 temp))(- rotn))
(setq elst (entget (entlast)))
(entdel (entlast))
)
)
;; End of optional code.
(setq xofs (cdr (assoc 43 elst))
yofs (cdr (assoc 44 elst))
elst (member (assoc 53 elst) elst)
)
(setq outf (strcat hnam ".pat"))
(if (findfile outf)
(progn
(initget "Overwrite Append")
(setq what (getkword (strcat "\n" outf " already exists; Overwrite/Append? ")))
)
)
(setq outf (open outf (if (= what "Append") "a" "w"))
flin (strcat "*" hnam)
)
(foreach x elst
(cond
((= (car x) 53)
(write-line flin outf)
(setq angl (cdr x)
flin (trim (angtos angl 0 7))
)
)
((= (car x) 43)
(setq flin (strcat flin ", " (trim (rtos (/ (- (cdr x) xofs) hscl) 2 7))))
)
((= (car x) 44)
(setq flin (strcat flin "," (trim (rtos (/ (- (cdr x) yofs) hscl) 2 7))))
)
((= (car x) 45)
(setq tmp1 (cdr x))
)
((= (car x) 46)
(setq tmp2 (cdr x)
xvec (/ (+ (* tmp1 (cos angl))(* tmp2 (sin angl))) hscl)
yvec (/ (- (* tmp2 (cos angl))(* tmp1 (sin angl))) hscl)
flin (strcat flin ", " (trim (rtos xvec 2 7)) "," (trim (rtos yvec 2 7)))
)
)
((= (car x) 49)
(setq flin (strcat flin ", " (trim (rtos (/ (cdr x) hscl) 2 7))))
)
((= (car x) 98)
(write-line flin outf)
)
(T nil)
)
)
(write-line "" outf)
(close outf)
(alert (strcat hnam " pattern definition written to " hnam ".PAT"))
)
(alert "Selected object not a HATCH.")
)
(setvar "cmdecho" cmde)
(princ)
)
(defun trim (x / n)
(setq n (strlen x))
(while (= (substr x n 1) "0")
(setq n (1- n)
x (substr x 1 n)
)
)
(if (= (substr x n 1) ".")
(setq x (substr x 1 (1- n)))
)
x
)
(alert
(strcat "GETPAT.LSP (c) 2003 Tee Square Graphics\n"
" Type GETPAT to start"
)
)
(princ)
------------------
www.Gestalten-mit-AutoCAD.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP