I keep running into a problem with my polarang values not returning in 2008.
I keep ending up with the value being set to the math results and not returning to the setq values.
Please point out the obvious flaws if you see them?
;; Draws a three point leader with a horizontal leg.
(defun qlead (arh / old_arh asz blk ml leg p1 p2 p3 ang ang2 dst dst2 angdeg)
(setq ds (getvar "dimscale"))
(setq usersnaps (getvar "osmode")) ; -----------------------Get User Osmode Settings
(setq userlayer (getvar "clayer")) ; -----------------------Get User Layer Settings
;(setq userortho (getvar "orthomode")) ; -----------------------Get User Ortho Settings
(setq userpol (getvar "polarang")) ; -----------------------Get User Polar Angle Settings
(setq userauto (getvar "autosnap")) ; -----------------------Get User Polar Mode Settings
(command "layer" "m" "G-ANNO-TEXT" "l" "CONTINUOUS" "G-ANNO-TEXT" "c" 7 "G-ANNO-TEXT" "LW" 0.25 "G-ANNO-TEXT" "" )
;(setq THESE-STORED-VARS STORED-VARS)
;(lrs "G-ANNO-TEXT")
(if (= arh nil)
(progn
(initget "Arrow Dot Ellipse Loop")
(setq
arh (getkword (strcat "Arrow, Dot, Ellipse, Loop"))
)
)
)
(cond
((= arh "Ellipse")
(setq asz (setvar "dimasz" (/ 0.125 3.0)))
(setq blk "kta_eli")
(command "-insert" (strcat "general/" blk))
(command)
(setvar "osmode" 512)
(command "insert" blk ^c)
)
((= arh "Dot")
(setq asz (setvar "dimasz" (/ 0.125 6.0)))
(setq blk "kta_dot")
(command "-insert" (strcat "general/" blk))
(command)
(setvar "osmode" 0)
(command "insert" blk ^c)
)
((= arh "Arrow")
(setq asz (setvar "dimasz" (/ 1.0 8.0)))
(setvar "osmode" 512)
(setq blk ".")
)
((= arh "Loop")
(setq asz (setvar "dimasz" (/ 1.0 8.0)))
(setvar "osmode" 512)
(setq blk "None")
)
)
(setvar "dimldrblk" blk)
(setvar "dimasz" asz)
(setq ml (* asz 2 1.01))
(setq leg (* ds (/ 1.0 16.0)))
(setq p1 (getpoint "Specify leader start point: "))
(setvar "osmode" 1)
(setq p2 (getpoint p1 "Specify next point: "))
(setvar "osmode" 0)
(setq ang (angle p1 p2))
(setq dst (distance p1 p2))
(if (< dst ml)
(setq p2 (polar p1 ang ml))
)
(command "leader" p1 p2 "" "" "n")
(setq el (entlast))
(if (and (/= ang 0) (/= ang pi))
(progn
(setvar "orthomode" 1)
(setq p3 (getpoint p2 "Specify next point: "))
(setq ang2 (angle p2 p3))
(setq dst2 (distance p2 p3))
(if (< dst2 leg)
(setq p3 (polar p2 ang2 leg))
)
)
(progn
(setq p3 p2)
(setq p2 (polar p3 ang (- leg)))
)
)
(command "erase" el "")
(if (= blk "None")
(progn
(setvar "osmode" 512)
(setvar "orthomode" 1)
(setq angDeg (* ang (/ 180 pi)))
(setvar "snapang" ang)
(setvar "osmode" 0)
(setq p4 (getpoint p1 "Stretch loop to (or ENTER): "))
(if ( /= p4 nil)
(progn
(setq p1 (polar p1 ang (* ds 0.05)))
(setq p4 (polar p4 (+ pi ang) (* ds 0.05)))
(command "ellipse" p1 p4 (* ds 0.025))
)
(progn
(setq p1 (polar p1 ang (* ds 0.0417)))
(setq p4 (polar p1 (+ pi ang) (* ds 0.0834)))
(command "ellipse" p1 p4 (* ds 0.0208))
)
)
)
)
(command "leader" p1 p2 p3 "" "" "n")
(command "osmode" usersnaps) ; -----------------------Return User Osmode Settings
;(command "orthomode" userortho) ; -----------------------Return User Ortho Settings
(command "polarang" userpol) ; -----------------------Return User Polar Angle Settings
(command "autosnap" userauto) ; -----------------------Return User Polar Mode Settings
(command "clayer" userlayer) ; -----------------------Return User Layer Settings
(princ "\n QLead Osnaps & Layer Returned.")
(princ)
)
(defun c:qlead ()
(qlead nil)
)
(defun c:arrowleader ()
(qlead "Arrow")
)
(defun c:dotleader ()
(qlead "Dot")
)
(defun c:loopleader ()
(qlead "Loop")
)
(princ)
<edit> added code tags Mav