I've had this for years and I don't remember it acting like this until the last few versions and never had time to fix it. (currently on A2k19)
Still don't...
Can someone take a look at it for me, fix it, and possibly improve if there's a better madness to the method?
SS - sets the stretch distance
SA, SW, SX, and SD stretches that direction the set distance.
It appears there is an error in the error handling.
When I ESC it doesn't set back the snaps. (probably the other variables too)
Right now, the OSMODE is rem'd out
Code:
;;; SpeedStretch.lsp version 1.0
;;; Copyright 01/29/01 by Tod Winn
;;; Fixed bug when no distance originally set. - 08/01/01
(defun |speedstretcherror| (|msg|)
(if (or (= |msg| "Function cancelled")
(= |msg| "quit / exit abort")
)
(princ (strcat "\nError: " |msg|))
)
(setvar "cmdecho" |cmdecho|)
;;; (setvar "osmode" |osmode|)
(setvar "polarmode" |polarmode|)
(setq *error* |olderror|)
(princ)
)
(defun c:ss (/ |cmdecho| |currentdist|)
(setq |cmdecho| (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (= |stretchdist| nil)
(setq |currentdist| 0.0)
(setq |currentdist| |stretchdist|)
)
(setq |stretchdist|
(getreal (strcat "\nSet Distance to Stretch: <"
(rtos |currentdist| 2 8)
">: "
)
)
)
(if (= |stretchdist| nil)
(setq |stretchdist| |currentdist|)
)
(if (= |stretchdist| 0.0)
(progn
(alert
(strcat
"\nStretch Distance currently set to 0.0\nPlease set a valid distance"
)
)
(setq |stretchdist|
(getreal (strcat "\nSet Distance to Stretch: <"
(rtos |currentdist| 2 8)
">: "
)
)
)
)
)
(princ)
)
(defun c:sa (/ |ang| |currentdist|
|cmdecho| |olderror| |osmode| |ent|
|pt1| |pt2| |polarmode|
)
(setq |olderror| *error*)
(setq *error* |speedstretcherror|)
(setq |cmdecho| (getvar "cmdecho"))
(setq |osmode| (getvar "osmode"))
(setq |polarmode| (getvar "polarmode"))
(setvar "cmdecho" 0)
;;; (setvar "osmode" 0)
(setvar "polarmode" 0)
(princ "\nSelect objects to stretch: ")
(setq |pt1| (getpoint "\nSpecify first corner: "))
(initget 33)
(setq |pt2| (getcorner |pt1| "\nSpecify opposite corner: "))
(setq |ang| 180.0)
(if (= |stretchdist| nil)
(progn
(setq |currentdist| 0.0)
(setq |stretchdist|
(getreal (strcat "\nSet Distance to Stretch: <"
(rtos |currentdist| 2 8)
">: "
)
)
)
(if (= |stretchdist| nil)
(setq |stretchdist| |currentdist|)
)
)
)
(if (= |stretchdist| 0.0)
(alert
(strcat
"\nStretch Distance currently set to 0.0\nPlease use 'SS' to set a distance"
)
)
(command ".stretch"
"c"
|pt1|
|pt2|
""
"0,0"
(strcat "@"
(rtos |stretchdist| 2 8)
"<"
(rtos |ang| 2 8)
)
)
)
(setvar "cmdecho" |cmdecho|)
;;; (setvar "osmode" |osmode|)
(setvar "polarmode" |polarmode|)
(setq *error* |olderror|)
(princ)
)
(defun c:sd (/ |ang| |currentdist|
|cmdecho| |olderror| |osmode| |ent|
|pt1| |pt2| |polarmode|
)
(setq |olderror| *error*)
(setq *error* |speedstretcherror|)
(setq |cmdecho| (getvar "cmdecho"))
(setq |osmode| (getvar "osmode"))
(setq |polarmode| (getvar "polarmode"))
(setvar "cmdecho" 0)
;;; (setvar "osmode" 0)
(setvar "polarmode" 0)
(princ "\nSelect objects to stretch: ")
(setq |pt1| (getpoint "\nSpecify first corner: "))
(initget 33)
(setq |pt2| (getcorner |pt1| "\nSpecify opposite corner: "))
(setq |ang| 0.0)
(if (= |stretchdist| nil)
(progn
(setq |currentdist| 0.0)
(setq |stretchdist|
(getreal (strcat "\nSet Distance to Stretch: <"
(rtos |currentdist| 2 8)
">: "
)
)
)
(if (= |stretchdist| nil)
(setq |stretchdist| |currentdist|)
)
)
)
(if (= |stretchdist| 0.0)
(alert
(strcat
"\nStretch Distance currently set to 0.0\nPlease use 'SS' to set a distance"
)
)
(command ".stretch"
"c"
|pt1|
|pt2|
""
"0,0"
(strcat "@"
(rtos |stretchdist| 2 8)
"<"
(rtos |ang| 2 8)
)
)
)
(setvar "cmdecho" |cmdecho|)
;;; (setvar "osmode" |osmode|)
(setvar "polarmode" |polarmode|)
(setq *error* |olderror|)
(princ)
)
(defun c:sw (/ |ang| |currentdist|
|cmdecho| |olderror| |osmode| |ent|
|pt1| |pt2| |polarmode|
)
(setq |olderror| *error*)
(setq *error* |speedstretcherror|)
(setq |cmdecho| (getvar "cmdecho"))
(setq |osmode| (getvar "osmode"))
(setq |polarmode| (getvar "polarmode"))
(setvar "cmdecho" 0)
;;; (setvar "osmode" 0)
(setvar "polarmode" 0)
(princ "\nSelect objects to stretch: ")
(setq |pt1| (getpoint "\nSpecify first corner: "))
(initget 33)
(setq |pt2| (getcorner |pt1| "\nSpecify opposite corner: "))
(setq |ang| 90.0)
(if (= |stretchdist| nil)
(progn
(setq |currentdist| 0.0)
(setq |stretchdist|
(getreal (strcat "\nSet Distance to Stretch: <"
(rtos |currentdist| 2 8)
">: "
)
)
)
(if (= |stretchdist| nil)
(setq |stretchdist| |currentdist|)
)
)
)
(if (= |stretchdist| 0.0)
(alert
(strcat
"\nStretch Distance currently set to 0.0\nPlease use 'SS' to set a distance"
)
)
(command ".stretch"
"c"
|pt1|
|pt2|
""
"0,0"
(strcat "@"
(rtos |stretchdist| 2 8)
"<"
(rtos |ang| 2 8)
)
)
)
(setvar "cmdecho" |cmdecho|)
;;; (setvar "osmode" |osmode|)
(setvar "polarmode" |polarmode|)
(setq *error* |olderror|)
(princ)
)
(defun c:sx (/ |ang| |currentdist|
|cmdecho| |olderror| |osmode| |ent|
|pt1| |pt2| |polarmode|
)
(setq |olderror| *error*)
(setq *error* |speedstretcherror|)
(setq |cmdecho| (getvar "cmdecho"))
(setq |osmode| (getvar "osmode"))
(setq |polarmode| (getvar "polarmode"))
(setvar "cmdecho" 0)
;;; (setvar "osmode" 0)
(setvar "polarmode" 0)
(princ "\nSelect objects to stretch: ")
(setq |pt1| (getpoint "\nSpecify first corner: "))
(initget 33)
(setq |pt2| (getcorner |pt1| "\nSpecify opposite corner: "))
(setq |ang| 270.0)
(if (= |stretchdist| nil)
(progn
(setq |currentdist| 0.0)
(setq |stretchdist|
(getreal (strcat "\nSet Distance to Stretch: <"
(rtos |currentdist| 2 8)
">: "
)
)
)
(if (= |stretchdist| nil)
(setq |stretchdist| |currentdist|)
)
)
)
(if (= |stretchdist| 0.0)
(alert
(strcat
"\nStretch Distance currently set to 0.0\nPlease use 'SS' to set a distance"
)
)
(command ".stretch"
"c"
|pt1|
|pt2|
""
"0,0"
(strcat "@"
(rtos |stretchdist| 2 8)
"<"
(rtos |ang| 2 8)
)
)
)
(setvar "cmdecho" |cmdecho|)
;;; (setvar "osmode" |osmode|)
(setvar "polarmode" |polarmode|)
(setq *error* |olderror|)
(princ)
)
(prompt
"\nSpeedStretch.lsp loaded... \nSD=0, SW=90, SA=180, SX=270 degrees \nSS to set distance"
)