(defun FIT (/ SP EP ANG UANG DANG LANG RAD P1 P2 P3 P4 OSM LAY)
(setq SP (getpoint "\nEnter START of FIT: ")
EP (getpoint sp "\nEnter END of FIT: ")
ANG (angle sp ep)
UANG (+ ang (/ pi 2))
DANG (+ ang (* pi 1.5))
LANG (+ ang pi)
RAD (/ od 2)
P1 (polar sp uang rad)
P2 (polar ep uang rad)
P3 (polar sp dang rad)
P4 (polar ep dang rad)
)
(setvar "cmdecho" 0)
(setq osm (getvar "osmode")
lay (getvar "clayer")
)
(setvar "osmode" 0)
(command "line" p1 p2 "" "line" p3 p4 "")
(setvar "osmode" osm)
(setvar "cmdecho" 1)
(princ)
)
(defun c:test ()
(setq
OD (getdist "\nEnter OD: ")
)
(fit)
)
但我现在意识到这对我现在所做的不起作用。对不起,谢谢你的帮助。 我真的没有时间仔细看一下,但你可以把它改成这样:
(defun c:FIT (/ *error vlst ovar sp ep ang uang
dang lang rad p1 p2 p3 p4)
(defun *error* (msg)
(if ovar (mapcar 'setvar vlst ovar))
(if (not (member msg '("Function cancelled" "quit / exit abort")))
(princ (strcat "\n<< Error: " msg " >>"))
(princ "\n<<-- Cancelled -->>"))
(princ))
(setq vlst '("CMDECHO" "OSMODE")
ovar (mapcar 'getvar vlst))
(mapcar 'setvar vlst '(0 0))
(or fit:dia (setq fit:dia 0.0))
(or (and (or OD ID) (setq fit:dia (if OD OD ID)))
(or (not (setq tmp (getdist (strcat "\nEnter Diameter <" (rtos fit:dia) "> : "))))
(setq fit:dia tmp)))
(setq SP (getpoint "\nEnter START of FIT: ")
EP (getpoint sp "\nEnter END of FIT: ")
ANG (angle sp ep)
UANG (+ ang (/ pi 2))
DANG (+ ang (* pi 1.5))
LANG (+ ang pi)
RAD (/ fit:dia 2)
P1 (polar sp uang rad)
P2 (polar ep uang rad)
P3 (polar sp dang rad)
P4 (polar ep dang rad))
(command "line" p1 p2 "" "line" p3 p4 "")
(mapcar 'setvar vlst ovar)
(princ))
(defun c:test (/ OD ID)
(if (setq OD (getdist "\nEnter OD: "))
(c:fit))
(princ))
页:
1
[2]