- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Im receiving the above referenced error on a lisp routine, which up until now, I have never experienced. Its a routine to insert doors into a drawing. The routine previously allowed doors to be inserted on any layer named *-wndr. (see attached pic of dialog box generated by the lisp, note the message at the top of the dialog box regarding "*-WNDR" layer) It will now only insert on "0-wndr" layer. If I go in the code and rename "wndr" (toward the bottom of the script) the same error comes up with the new layer name I assign it, essentially looking for the '0". I don't know what changed (I did not make any edits to the routine). Here is the code.
Thank you in advance.
Here is the code:
;===================================================================================;
; Error Handler Function ;
;===================================================================================;
(defun drerr (errormsg) ; If an error (such as CTRL-C) occurs
; while this command is active...
(if (/= errormsg "bad argument type: lselsetp nil")
(alert (strcat "\nError: " errormsg))
(alert "Error: Failure in wall/point selections.")
)
(setvar "osmode" orOSMODE)
(setvar "pickbox" orPICKBOX)
(setvar "aperture" orAPERTURE)
(setvar "cecolor" curCOLOR)
(command "undo" "end")
(princ)
(setq *error* olderr) ; restore old *error* handler
(princ)
)
;===================================================================================;
; Main Program ;
;===================================================================================;
(defun c:dr (/
dcl_id
what_next
)
(setq dcl_id (load_dialog "dr.dcl"))
(new_dialog "dr" dcl_id)
(action_tile "H" "(progn (mode_tile \"OFFCORN\" 0)(setq insert \"h\")(set_tile \"C\" \"0\"))")
(action_tile "C" "(progn (mode_tile \"OFFCORN\" 1)(setq insert \"c\")(set_tile \"H\" \"0\"))")
;(action_tile "OFFCORN" "(if (not (numberp offcorn))(progn(set_tile \"error\" \"Must be a real number > 0.\")(mode_tile \"OFFCORN\" 2)))")
(action_tile "DRSIZE" "(setq drsize (atof (get_tile \"DRSIZE\")))")
;(action_tile "LEAFANGLE" "(setq leafangle (get_tile \"LEAFANGLE\"))")
(action_tile "LEAFANGLE" "(progn (setq leafangle (get_tile \"LEAFANGLE\"))(set_tile \"slider_value\" leafangle))")
(action_tile "pickpoints" "(done_dialog 4)")
(if (null doortype)(progn (set_tile "S" "1")(setq doortype "s")))
(if (null insert)(progn (set_tile "H" "1")(setq insert "h")))
(if (not (null offcorn))(set_tile "OFFCORN" (rtos offcorn))(progn(set_tile "OFFCORN" "6")(setq offcorn 6)))
(if (not (null drsize))(set_tile "DRSIZE" (rtos drsize))(progn(set_tile "DRSIZE" "30")(setq drsize 30)))
;(if (null leafangle)(setq leafangle"45"))
(if (not (null leafangle))(set_tile "LEAFANGLE" leafangle)(setq leafangle"45"))
(set_tile "slider_value" leafangle)
(if (= doortype "d")(set_tile "D" "1")(set_tile "S" "1"))
(if (= insert "c")(progn (set_tile "C" "1")(set_tile "H" "0")(mode_tile "OFFCORN" 1)))
(if (= insert "h")(progn (set_tile "H" "1")(mode_tile "OFFCORN" 0)(set_tile "C" "0")))
(if (and (= insert "h")(null offcorn))(mode_tile "OFFCORN" 2))
(setq what_next (start_dialog))
(cond
((= what_next 4)
(getpnts)
)
((= what_next 0)
(prompt "\nuser cancelled dialog")
)
)
(unload_dialog dcl_id)
)
(defun getpnts (/ StartPt DirPt Ang oppo hypo
wallthickness HP1 HP2 LP1
wall_lay Tsset Tline2 Trm1 Trm2 Cpoint Hpt
ANG2 layprefix door_lay blockname mirror
xscale curCOLOR in_ang l Ang
)
(setq olderr *error* *error* drerr)
(setvar "cmdecho" 0)
(command "undo" "begin")
; save system variables ;
(setq orAPERTURE (getvar "aperture")
orPICKBOX (getvar "pickbox")
orOSMODE (getvar "osmode")
curLAYER (getvar "clayer")
curCOLOR (getvar "cecolor")
)
; get door points and angles ;
(if (= insert "h")
(progn
(setvar "osmode" 33)
(setq StartPt (getpoint "\nPick corner closest to the hinge: "))
(setvar "osmode" 512)
(setq DirPt (getpoint "\nPick a point on wall toward latch: "))
(setq oppo (getpoint "\nPick a point on wall face opposite the hinge/latch:"))
(setq Ang (angle StartPt DirPt)
Ang2 (angle StartPt oppo)
Hypo (distance StartPt oppo)
HP1 (polar StartPt Ang offcorn)
LP1 (polar HP1 Ang drsize)
))
(progn
(setvar "osmode" orOSMODE)
(setq Cpoint (getpoint "\nPick the center point of opening on hinge/latch face of wall:"))
(setvar "osmode" 33)
(setq HPt (getpoint "\nPick a point close to either hinge: "))
(setvar "osmode" 512)
(setq oppo (getpoint "\nPick a point on wall face opposite the hinges:"))
(setq Ang (angle HPt Cpoint)
Ang2 (angle HPt oppo)
Hypo (distance HPt oppo)
HP1 (polar Cpoint (+ Ang pi)(/ drsize 2))
LP1 (polar HP1 Ang drsize)
)
)
)
(if (or(< Ang2 Ang)(and (< Ang (/ pi 2))(> Ang2 (* (/ 3 2) pi))))
(setq perpAng (- Ang (/ pi 2)) mirror 1))
(if (or(> Ang2 Ang)(and(< Ang2 (/ pi 2))(> Ang (* (/ 3 2) pi))))
(setq perpAng (+ Ang (/ pi 2)) mirror (- 0 1)))
(setq wallthickness (* hypo (sin (abs (- Ang Ang2)))))
; create opening points ;
; (setq HP1 (polar StartPt Ang offcorn)
; LP1 (polar HP1 Ang drsize)
;
; )
; draw and trim the opening ;
(setq sswall (ssget oppo))
(setq wall_lay (cdr (assoc 8 (entget (ssname sswall 0)))))
(setvar "clayer" wall_lay)
(setvar "pickbox" 1)
(setvar "aperture" 1)
(command "color" "bylayer")
(command "line" HP1 "per" oppo "")
(setq Tsset (ssget "L"))
(command "line" LP1 "per" oppo "")
(setq Tline2 (entlast))
(ssadd Tline2 Tsset)
(setq Trm1 (polar HP1 Ang (/ drsize 2)))
(setq Trm2 (polar Trm1 perpAng wallthickness))
(command "trim" Tsset "f" "" Trm1 Trm2 "")
; insert the door block ;
(setq layprefix (substr wall_lay 1 1))
(setq door_lay (strcat layprefix "-wndr"))
(setvar "clayer" door_lay)
(command "color" "10")
(if (= doortype "s")
(setq blockname (strcat "dr-" leafangle))
(setq blockname (strcat "2dr-" leafangle))
)
(setq xscale (* mirror drsize))
(if (= mirror -1)
(setq in_ang (+ Ang pi))
(setq in_ang Ang)
)
(setq in_ang (atof (angtos in_ang 0 4)))
(command "-insert" blockname HP1 xscale drsize in_ang)
; release selection set memory ;
(setq Tsset nil
sswall nil
Tline2 nil
)
; reset system variables ;
(setvar "osmode" orOSMODE)
(setvar "pickbox" orPICKBOX)
(setvar "aperture" orAPERTURE)
(setvar "clayer" curlayer)
(setvar "cecolor" curCOLOR)
(command "undo" "end")
(princ)
) ;end defun
Solved! Go to Solution.