ReachAndre
2007-03-08, 03:31 PM
Hello all,
Getting tired of using distance command or drawing reference lines to get half distances I wrote the following lisp. This copies something 1/2 the distance you select and uses the same angle (so if your 2nd point was 6" to the right of your 1st point, the object will get copied 3" to the right)
Also included is the move half distance, it works the same way.
(defun c:movehalfdist (/ pt1 pt2 myselset halvedtext disttobehalved halfdist angledeg)
(setq myselset (ssget))
(setq pt1 (getpoint "Pick start point: "))
(command "line" pt1 pause "")
(setq pt2 (getvar "lastpoint"))
(setq disttobehalved (distance pt1 pt2))
(command "erase" (entlast) "")
(setq halfdist (/ disttobehalved 2))
;(alert (strcat (rtos halfdist 2 2) " is half of " (rtos disttobehalved 2 2)))
(setq angledeg (* (angle pt1 pt2) (/ 180 3.14159265)))
;(alert (strcat (rtos angledeg 2 0)))
(setq halvedtext (strcat "@" (rtos halfdist 2 6) "<" (rtos angledeg 2 2)))
(command "move" myselset "" pt1 halvedtext)
(princ))
(defun c:copyhalfdist (/ pt1 pt2 myselset halvedtext disttobehalved halfdist angledeg)
(setq myselset (ssget))
(setq pt1 (getpoint "Pick start point: "))
(command "line" pt1 pause "")
(setq pt2 (getvar "lastpoint"))
(setq disttobehalved (distance pt1 pt2))
(command "erase" (entlast) "")
(setq halfdist (/ disttobehalved 2))
;(alert (strcat (rtos halfdist 2 2) " is half of " (rtos disttobehalved 2 2)))
(setq angledeg (* (angle pt1 pt2) (/ 180 3.14159265)))
;(alert (strcat (rtos angledeg 2 0)))
(setq halvedtext (strcat "@" (rtos halfdist 2 6) "<" (rtos angledeg 2 2)))
(command "copy" myselset "" pt1 halvedtext)
(princ))
(defun c:offsethalfdist (/ pt1 pt2 disttobehalved halfdist)
(setq pt1 (getpoint "Pick start point: "))
(command "line" pt1 pause "")
(setq pt2 (getvar "lastpoint"))
(setq disttobehalved (distance pt1 pt2))
(command "erase" (entlast) "")
(setq halfdist (/ disttobehalved 2))
(command ".offset" halfdist)
(princ))
Always up for learning, if I did somehing ineffeciently or just wrong, let me know.
Thansk all
Getting tired of using distance command or drawing reference lines to get half distances I wrote the following lisp. This copies something 1/2 the distance you select and uses the same angle (so if your 2nd point was 6" to the right of your 1st point, the object will get copied 3" to the right)
Also included is the move half distance, it works the same way.
(defun c:movehalfdist (/ pt1 pt2 myselset halvedtext disttobehalved halfdist angledeg)
(setq myselset (ssget))
(setq pt1 (getpoint "Pick start point: "))
(command "line" pt1 pause "")
(setq pt2 (getvar "lastpoint"))
(setq disttobehalved (distance pt1 pt2))
(command "erase" (entlast) "")
(setq halfdist (/ disttobehalved 2))
;(alert (strcat (rtos halfdist 2 2) " is half of " (rtos disttobehalved 2 2)))
(setq angledeg (* (angle pt1 pt2) (/ 180 3.14159265)))
;(alert (strcat (rtos angledeg 2 0)))
(setq halvedtext (strcat "@" (rtos halfdist 2 6) "<" (rtos angledeg 2 2)))
(command "move" myselset "" pt1 halvedtext)
(princ))
(defun c:copyhalfdist (/ pt1 pt2 myselset halvedtext disttobehalved halfdist angledeg)
(setq myselset (ssget))
(setq pt1 (getpoint "Pick start point: "))
(command "line" pt1 pause "")
(setq pt2 (getvar "lastpoint"))
(setq disttobehalved (distance pt1 pt2))
(command "erase" (entlast) "")
(setq halfdist (/ disttobehalved 2))
;(alert (strcat (rtos halfdist 2 2) " is half of " (rtos disttobehalved 2 2)))
(setq angledeg (* (angle pt1 pt2) (/ 180 3.14159265)))
;(alert (strcat (rtos angledeg 2 0)))
(setq halvedtext (strcat "@" (rtos halfdist 2 6) "<" (rtos angledeg 2 2)))
(command "copy" myselset "" pt1 halvedtext)
(princ))
(defun c:offsethalfdist (/ pt1 pt2 disttobehalved halfdist)
(setq pt1 (getpoint "Pick start point: "))
(command "line" pt1 pause "")
(setq pt2 (getvar "lastpoint"))
(setq disttobehalved (distance pt1 pt2))
(command "erase" (entlast) "")
(setq halfdist (/ disttobehalved 2))
(command ".offset" halfdist)
(princ))
Always up for learning, if I did somehing ineffeciently or just wrong, let me know.
Thansk all