@AutoMarcus ,
Here's a start. Nobody really likes formatting tables, but that's probably what you'll have to do to tweak this code and finalize it. Give this a go:
(defun c:TEST ( / tmp layoutName ptCenter ptsLegs len ptTbl acDoc pSpace tbl headers)
(vl-load-com)
(setq layoutName "Layout1") ;<-- this is name of your layout for table
;Initial Check(s)
(cond
((not (eq "Model" (getvar 'CTAB)))
(setq tmp "\nMust be in Model Space to run command.") (prompt tmp) (alert tmp) (exit))
((not (member (strcase layoutName) (mapcar 'strcase (layoutlist))))
(setq tmp (strcat "Layout '" layoutName "' can not be found.")) (prompt tmp) (alert tmp) (exit))
);cond
;Get inputs from user
(initget 1) (setq ptCenter (getpoint "\nSelect CENTER point: "))
(setq tmp 0)
(repeat (setq ptsLegs '() len 4)
(initget 1)
(setq ptsLegs (cons (getpoint (strcat "\nSelect LEG " (itoa (setq tmp (1+ tmp))) " of " (itoa len) ": ")) ptsLegs))
);repeat
(setq ptsLegs (reverse ptsLegs))
;Go to layout and create table
(setvar 'CTAB layoutName)
(initget 1) (setq ptTbl (vlax-3D-point (getpoint "\nSelect Upper-Left for table: ")))
(setq acDoc (vla-get-activedocument (vlax-get-acad-object))
pSpace (vla-get-paperspace acDoc))
(setq tbl (vla-addtable pSpace ptTbl 7 3 0.5 2));row/col/rowHt/colWid
;Add text to table
;---Headers
(vla-settext tbl 0 0 "CRANE POINTS");row/col/string
(setq tmp -1 headers '("POINT NAME" "X COORD" "Y COORD"))
(repeat (setq len (length headers))
(vla-settext tbl 1 (setq tmp (1+ tmp)) (nth tmp headers));row/col/string
);repeat
;---Center
(vla-settext tbl 2 0 "CENTER");row/col/string
(vla-settext tbl 2 1 (rtos (car ptCenter) 2 2));row/col/string --- RTOS determines units/precision
(vla-settext tbl 2 2 (rtos (cadr ptCenter) 2 2));row/col/string --- RTOS determines units/precision
;---Legs
(repeat (setq tmp -1 len (length ptsLegs))
(vla-settext tbl (+ 3 (setq tmp (1+ tmp))) 0 (strcat "LEG " (itoa (1+ tmp))));row/col/string
(vla-settext tbl (+ 3 tmp) 1 (rtos (car (nth tmp ptsLegs)) 2 2));row/col/string --- RTOS determines units/precision
(vla-settext tbl (+ 3 tmp) 2 (rtos (cadr (nth tmp ptsLegs)) 2 2));row/col/string --- RTOS determines units/precision
);repeat
;Finish up
(prompt "\nComplete.")
(princ)
);defun
Also, here is a pretty bare-bones example of setting text height, adjusting alignment, etc.:
https://adndevblog.typepad.com/autocad/2012/04/autolisp-example-create-a-table-using-activex.html
Best,
~DD