Can anyone modify this lisp so that when it creates the leader, it will join all elements (arrow, lines, etc.) also if the text would come out as Mtext that would be great. Obviously I have very little lisp experience, and if I touch this I'm sure it will stop working
thanks in advance leader.lsp:
(DEFUN C:le
(setvar "cmdecho" 0)
(setvar "attdia" 1)
(setq L (getvar "clayer"))
(setq O (getvar "osmode"))
(setq R (getvar "orthomode"))
(setq s (getvar "dimscale"))
(setq number (fix s))
(setvar "orthomode" 0)
(setvar "osmode" 0)
(setvar "cecolor" "1")
(setq LName (strcat "a-anno-note-" (itoa number)))
(if (tblsearch "LAYER" LName)
(command "layer" "s" LName "")
(command "layer" "m" LName "c" "3" LName "")
)
(setq pt1 (getpoint "Pick ARROW location...")) (terpri) (setq pt2 (getpoint pt1 "Pick END of LEADER line . . . \n")) (setq ang1 (angle pt1 pt2) ang3 (angle '(0.0 0.0) '(0.1 0.0)) ang4 (angle '(0.1 0.0) '(0.0 0.0)) ) (setq D(* 0.125 s) E(* 0.1875 s) F(* 0.0625 s) G(* 0.15625 s) H(+ PI ang1) pt3 (polar pt1 ang1 D) pt4 (polar pt2 ang3 E) pt5 (polar pt4 ang3 G) ) ;----- CALCULATE SIZE OF ARROWHEAD (setq dist1 (* 0.126688 (getvar "dimscale")) dist2 (/ dist1 3) ) (command ".solid" pt1 (strcat "@" (rtos dist1 2 3) "<" (rtos (+ ang1 0.1651) 2 3) "r") (strcat "@" (rtos dist2 2 3) "<" (rtos (- ang1 1.5708) 2 3) "r") "" "" ) (if (> (car PT1) (car PT2))(setq DR "MR")) (if (> (car PT2) (car PT1))(setq DR "ML")) (if (= DR "ML") (setq PT4 (list (+ (car PT2) G) (cadr PT2)))) (if (= DR "MR") (setq PT4 (list (- (car PT2) G) (cadr PT2)))) (if (= DR "ML") (setq PT5 (polar PT4 ang3 F))) (if (= DR "MR") (setq PT5 (polar PT4 ang4 F))) (command "line" PT3 PT2 PT4 "") (setvar "cecolor" "bylayer") (command "dtext" DR PT5 "0") (setvar "clayer" L) (setvar "osmode" O) (setvar "orthomode" R) (princ) )
;;;END LEADER LISP
(DEFUN C:le
(setvar "cmdecho" 0)
(setvar "attdia" 1)
(setq L (getvar "clayer"))
(setq O (getvar "osmode"))
(setq R (getvar "orthomode"))
(setq s (getvar "dimscale"))
(setq number (fix s))
(setvar "orthomode" 0)
(setvar "osmode" 0)
(setvar "cecolor" "1")
(setq LName (strcat "a-anno-note-" (itoa number)))
(if (tblsearch "LAYER" LName)
(command "layer" "s" LName "")
(command "layer" "m" LName "c" "3" LName "")
)
(setq pt1 (getpoint "Pick ARROW location...")) (terpri) (setq pt2 (getpoint pt1 "Pick END of LEADER line . . . \n")) (setq ang1 (angle pt1 pt2) ang3 (angle '(0.0 0.0) '(0.1 0.0)) ang4 (angle '(0.1 0.0) '(0.0 0.0)) ) (setq D(* 0.125 s) E(* 0.1875 s) F(* 0.0625 s) G(* 0.15625 s) H(+ PI ang1) pt3 (polar pt1 ang1 D) pt4 (polar pt2 ang3 E) pt5 (polar pt4 ang3 G) ) ;----- CALCULATE SIZE OF ARROWHEAD (setq dist1 (* 0.126688 (getvar "dimscale")) dist2 (/ dist1 3) ) (command ".solid" pt1 (strcat "@" (rtos dist1 2 3) "<" (rtos (+ ang1 0.1651) 2 3) "r") (strcat "@" (rtos dist2 2 3) "<" (rtos (- ang1 1.5708) 2 3) "r") "" "" ) (if (> (car PT1) (car PT2))(setq DR "MR")) (if (> (car PT2) (car PT1))(setq DR "ML")) (if (= DR "ML") (setq PT4 (list (+ (car PT2) G) (cadr PT2)))) (if (= DR "MR") (setq PT4 (list (- (car PT2) G) (cadr PT2)))) (if (= DR "ML") (setq PT5 (polar PT4 ang3 F))) (if (= DR "MR") (setq PT5 (polar PT4 ang4 F))) (command "line" PT3 PT2 PT4 "") (setvar "cecolor" "bylayer") (command "dtext" DR PT5 "0") (setvar "clayer" L) (setvar "osmode" O) (setvar "orthomode" R) (princ) )
;;;END LEADER LISP