The routine works below...just wondering if their is a better way to achieve the same results...but ending up with an array object.
(defun ARCH:MIDPOINT (w z)
(list (/ (+ (car w) (car z)) 2) (/ (+ (cadr w) (cadr z)) 2)))
(defun C:HOOK (/ sset pt1 pt2 mid obj leng scf last)
;;(ARCH:F_S-VAR)
;;(setvar "arraytype" 0)
(setvar "cmdecho" 0)
(setvar "osmode" 111)
(setq obj (car (entsel"\* Select Line for Hook...")))
(setq pt1 (cdr (assoc 10 (cdr (entget obj)))) pt2 (cdr (assoc 11 (cdr (entget obj)))))
(setq mid (ARCH:MIDPOINT pt1 pt2))
(setvar "osmode" 0)
(setq leng (vla-get-length (vlax-ename->vla-object obj)))
(setq course (atoi (rtos (/ leng 24) 2 0)))
(setvar "snapmode" 0)
(setvar "orthomode" 1)
(setvar "cmdecho" 1)
(setq scf (getvar "dimscale"))
(command "insert" (strcat ARCH#CUSF "Builders Plan Service/Syms/Arch_blks/" "PN-HOOK") "ps" scf mid scf "" pause)
(setq last (entlast))
;;(command ".copy" (entlast) "" "m" pt1 "array" course "12")
(cond
((>= (angle pt1 pt2) 1.5708)
(command ".array" last "" "r" "" course "12")
(command ".array" last "" "r" "" course "-12")
)
((<= (angle pt1 pt2) 3.14159)
(command ".array" last "" "r" course "" "12")
(command ".array" last "" "r" course "" "-12")
)
)
;;(command "mirror" (ssget) "" mid (polar mid (arch:dtr 90) 12) "")
(setvar "cmdecho" 1)
;;(ARCH:F_R-VAR)
(princ))