; pick 3 texts and align to a block
(vl-load-com)
(defun c:test ( / oldang oldunit oldsnap obj ang ins Tp xscale bname ins)
(setq oldang (getvar 'angdir))
(setq oldunit (getvar 'aunits))
(setq oldsnap (getvar 'osmode))
(setvar 'angdir 0)
(setvar 'aunits 3)
(setvar 'osmode 0)
(setq obj (vlax-ename->vla-object (car (entsel "\nPick Block object"))))
(setq Objname (vla-get-Objectname obj))
(if (/= Objname "AcDbBlockReference") ; check is it a block
(alert "You have not Picked a block\n\nPress ok ")
(progn
(setq ang (vla-get-rotation obj))
(setq ins (vlax-safearray->list (vlax-variant-value(vla-get-insertionpoint
obj))))
(setq xscale (vla-get-XScaleFactor obj))
(setq bname (vla-get-name obj))
(cond
((if (= bname "TERMINAL")(setq len 4.5))) ; as per sample
((if (= bname "xxxx")(setq len 5))) ; other blocks change len value
)
(setq off 6.0)
(setq off1 8.0)
(setq Tp (vlax-ename->vla-object (car (entsel "\nPick text1"))))
(setq pt1 (vlax-3d-point (polar ins (+ ang (/ 0.25)) off1)))
(vla-put-insertionpoint Tp pt1)
(vla-put-rotation Tp ang )
(setq Tp (vlax-ename->vla-object (car (entsel "\nPick text2"))))
(setq pt1 (vlax-3d-point (polar ins (+ ang (/ 0.2)) off1)))
(vla-put-insertionpoint Tp pt1)
(vla-put-rotation Tp ang )
(setq Tp (vlax-ename->vla-object (car (entsel "\nPick text3"))))
(setq pt1 (vlax-3d-point (polar ins ang (* len 1.7))))
(vla-put-insertionpoint Tp pt1)
(vla-put-rotation Tp ang )
(setvar 'angdir oldang)
(setvar 'aunits oldunit)
(setvar 'osmode oldsnap)
)
)
)