You can try this, have 2 choices a new table or add to an existing table it will add table rows as you pick.
It can be very much automated but this is a start and the free version. Need your dwg to check table. I would consider the drawing shapes can do much faster.
You must save the multi radio buttons.lsp to your lisp support path or it will not be found that's the dcl.

; Make a table of shapes based on bounding box.
; By Alan H march 2020 info@alanh.com.au
(defun c:dimtab ( / dolabel dotext enddimtab AH:maketable objtable obj1 obj2 tsr len ht)
(defun enddimtab ()
(alert "Object is not a pline, please join and do again")
(exit)
)
; now do table
(defun AH:maketable ( / pt1 numrows numcolumns rowheight colwidth )
(setvar 'ctab "Model")
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq curspace (vla-get-modelspace doc))
(setq pt1 (vlax-3d-point (getpoint "\nPick point for top left hand of table: ")))
(setq numrows 3)
(setq numcolumns 3)
(setq rowheight 0.3)
(setq colwidth 1.8)
(setq objtable (vla-addtable curspace pt1 numrows numcolumns rowheight colwidth))
(vla-settext objtable 0 0 "Dimension table")
(vla-settext objtable 1 0 "Number")
(vla-settext objtable 1 1 "Width")
(vla-settext objtable 1 2 "Length")
(setq objtable (vlax-ename->vla-object (entlast)))
) ; defun
(defun AH:addlinet ( / rowcnt rowhgt)
(setq rowcnt (vla-get-rows objtable))
(setq rowhgt (vla-getRowHeight objtable 2))
(vla-InsertRows objTable rowcnt rowhgt 1)
(vla-settext objtable (- rowcnt 1) 0 tsr)
(vla-settext objtable (- rowcnt 1) 1 len)
(vla-settext objtable (- rowcnt 1) 2 ht)
)
(if (not AH:Butts)(load "Multi Radio buttons.lsp"))
(if (= but nil)(setq but 1))
(setq ans (ah:butts but "h" '("Table " "Make New " "Use existing ")))
(if (= but 1)
(AH:maketable)
(setq objtable (vlax-ename->vla-object (car (entsel "pick existing table"))))
)
(while (setq ent (entsel "Pick text "))
(setq obj1 (vlax-ename->vla-object (car ent)))
(setq tsr (vlax-get Obj1 'Textstring))
(setq obj2 (vlax-ename->vla-object (car (entsel "Pick pline object "))))
(if (= (vla-get-objectname obj2) "AcDbPolyline")
(progn
(vla-GetBoundingBox obj2 'minpoint 'maxpoint)
(setq pointmin (vlax-safearray->list minpoint))
(setq pointmax (vlax-safearray->list maxpoint))
(setq len (rtos (abs (- (car pointmin)(car pointmax))) 2 3))
(setq Ht (rtos (abs (- (cadr pointmin)(cadr pointmax))) 2 3))
(AH:addlinet)
)
(enddimtab)
)
)