Hi @pbejse ,
Thank you for the below code I appreciated the instruction you have provided.
Is it possible to make the text order depend on the direction of how you will select the texts instead of just Top to Bottom and Left to right only. Thank you in advance.
Please refer to attached Cad file for your reference.
(defun c:TablethisTextThingy ( / _DXF _isValidSelection _firstColumnText _SecondColumnText
FCT_lay SCT_lay basepoint collectedData i pl ppts
dist_XY sym data SupportDrawingTable row a)
(defun _DXF (el m ) (cdr (assoc m (entget el))))
(defun _isValidSelection (msg m / e)
(if (and
(setq e (car (entsel (strcat "\nSelect" msg "reference " m ))))
(eq (Cdr (assoc 0 (entget e))) m)
)
(list e (_DXF e 8))
)
)
(if
(and
(setq _firstColumnText (_isValidSelection " First column " "TEXT"))
(setq _SecondColumnText (_isValidSelection " Second column " "TEXT"))
(setq filteredLW (ssget (list '(0 . "TEXT")'(-4 . "<OR")
(cons 8 (Strcat (Cadr _firstColumnText) "," (cadr _SecondColumnText)))
'(-4 . "OR>")
))
)
(setq basepoint (getpoint "\nPick point for Table:"))
)
(progn
(setq ppts (mapcar '(lambda (p) (_DXF (Car p) 10))
(list _firstColumnText _SecondColumnText)))
(setq dist_XY (mapcar 'abs (mapcar '- (Car ppts)(cadr ppts))))
(setq sym (if (< (car dist_XY)(cadr dist_XY))
(list < Caar)(list > cadar)))
(repeat (setq i (sslength filteredLW))
(setq pl (ssname filteredLW (setq i (1- i))))
(setq data (list (_DXF pl 8)(_DXF pl 10)(_DXF pl 1)))
(if (eq (Car data) (cadr _firstColumnText))
(setq FCT_lay (cons (Cdr data) FCT_lay))
(setq SCT_lay (cons (Cdr data) SCT_lay))
)
)
(if (and FCT_lay
SCT_lay
(= (length FCT_lay) (length SCT_lay))
(setq SortedData
(mapcar
'(lambda (l)
(mapcar
'cadr
(vl-sort
l
'(lambda (a b)
((Car sym) ((Cadr sym) a) ((Cadr sym) b))
)
)
)
)
(list FCT_lay SCT_lay)
)
)
(setq collectedData
(mapcar 'list
(Car SortedData)
(Cadr SortedData)
)
)
)
(progn
(setq SupportDrawingTable
(vlax-invoke (vlax-get (vla-get-ActiveLayout (vla-get-ActiveDocument
(vlax-get-acad-object))) 'Block)
'Addtable basepoint
2 2 0.1 0.8 )
)
(vla-put-regeneratetablesuppressed SupportDrawingTable :vlax-true)
(mapcar '(lambda (y)
(vla-settext SupportDrawingTable 1 (car y) (cadr y))
(vla-setcelltextheight SupportDrawingTable 1 (car y) 0.08)
)
'((0 "Text 1")(1 "Text 2")))
(vla-SetRowHeight SupportDrawingTable 1 0.19)
(foreach col '((0 0.85)(1 0.85))
(vla-SetColumnWidth SupportDrawingTable (Car col)(cadr col))
)
(vla-InsertRowsAndInherit SupportDrawingTable 2 1 (setq i (length collectedData)))
(setq row 1)
(while (setq a (car collectedData))
(vla-settext SupportDrawingTable (setq row (1+ row)) 0 (car a))
(vla-settext SupportDrawingTable row 1 (cadr a))
(setq collectedData (cdr collectedData))
)
(vla-put-regeneratetablesuppressed SupportDrawingTable :vlax-false)
(vla-DeleteRows SupportDrawingTable 0 1)
)
)
)
)
(princ)
)