Author Topic: qlead routine giving me grief in 2008  (Read 1686 times)

0 Members and 1 Guest are viewing this topic.

KewlToyZ

  • Guest
qlead routine giving me grief in 2008
« on: August 22, 2007, 01:06:12 PM »
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?

Code: [Select]
;; 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
« Last Edit: August 22, 2007, 02:27:49 PM by Maverick® »

KewlToyZ

  • Guest
Re: qlead routine giving me grief in 2008
« Reply #1 on: August 22, 2007, 04:44:05 PM »
The routine seems to be supplying the math value before the setq userpol is found.
This is going to be a long rewrite lol.

KewlToyZ

  • Guest
Re: qlead routine giving me grief in 2008
« Reply #2 on: August 22, 2007, 06:15:43 PM »
It seems removing any reference to retain or reset polarang alleviated the problem.