This could definitely be improved upon...but I think it does what you want:
(defun c:alignlandings (/ ss al alxpt el lp)
(if (and (setq ss (ssget '((0 . "MULTILEADER"))))
(setq al (car (entsel "\nSelect leader to align to: ")))
(setq alxpt (cdr (assoc 10 (entget al))))
)
(foreach ml (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(setq el (entget ml)
lp (cdr (assoc 10 el))
cp1 (polar lp 5.497 0.1)
cp2 (polar lp 2.356 0.1)
)
(command ".stretch" "box" cp1 cp2 "" lp alxpt)
)
)
(princ)
)
I think that will work, I'm not that familar with the mapcar and entsel commands, could you possibly explain what each part of the program is doing so I can learn from it and use this in the future?
here is my understanding:
select all the multileaders you wish to align
select the multileader you want to align to (entsel selects a single object, provides the object itself, and the selection point which is not necessary, hence the reason for the car)
grabs the point location information from the end of the tail
I'm guessing the foreach cycles through the selection set looking at each item
lp gets the current value of the end of the tail
cp1 and cp2 are your selection windows for the stretch command
and the stretch command, selects the objects, stretching the objects from lp to alxpt.
correct?
are there any limitations that you are aware of?