@Anonymous wrote:
.... all the lines dont intersect the circles radially (i.e. they dont all go through the center point of the circle), thus the amount they would extend is not always equal to the amount the radius was reduced. ....
Well, a routine could also be made to get the User to select all Lines, call up Extend and pick everything [Enter] as boundaries, and for each Line, "pick" it at or near each end. If the Zoom level might be far enough out that having it pick at the ends of a Line might "see" the Circles it's supposed to extend to instead, it could pick at locations that are, for example, a quarter of the Line's length from each end. Does that sound workable?
EDIT: For example [in simplest terms, and very lightly tested]:
(defun C:EAL ; = Extend All Lines
(/ lineSS line len)
(prompt "\nTo EXTEND all selected Lines at both ends,")
(if (setq lineSS (ssget "_:L" '((0 . "LINE"))))
(progn ; then
(command "_.extend" ""); EXTEND with everything as boundaries
(repeat (setq n (sslength lineSS))
(setq
line (ssname lineSS (setq n (1- n)))
len (vlax-curve-getDistAtPoint line (vlax-curve-getEndPoint line))
); setq
(command
(vlax-curve-getPointAtDist line (/ len 4))
(vlax-curve-getPointAtDist line (* len 0.75))
); command
); repeat
(command ""); end Extend command
); progn
); if
); defun
(vl-load-com)
You would need to be aware enough not to select any Line(s) that you don't want Extended at both ends, but it could be made to filter the selection to, for example, a particular Layer if that would narrow it down for you and make selection easier. And any that already meet a Circle will be Extended across it to the other side. It could use error handling, suppression of command-echoing and blips [if you use them], and probably some other things.
FURTHER EDIT: It could also be made to use only Circles as Extend boundaries, either all Circles in the drawing or by a filtered selection [another step for the User, but worth it if there might be other things you don't want Lines Extended to].
Kent Cooper, AIA