hi,
check the following. adds to dwg an autocad table based on picked pline data. table style used is default, text size for table data is set in the code, table size is calculated from text size. if you need to change fonts change 'em in table style.
hope that helps.
;**********************************************************************************************************************************************************
; komondormrex, jul 2023
;**********************************************************************************************************************************************************
(defun c:add_pline_data_table (/ entsel_data target_pline target_pline_is_open table_text_size index target_pline_data table_object row_index column_index)
(while (and
(if (vl-catch-all-error-p (setq entsel_data (vl-catch-all-apply 'entsel (list "\nPick land plot polyline: ")))) nil t)
(if entsel_data (setq target_pline (car entsel_data)) t)
(if target_pline
(/= "LWPOLYLINE" (cdr (assoc 0 (entget target_pline))))
t
)
)
)
(if target_pline
(progn
(setq target_pline_is_open (zerop (getpropertyvalue target_pline "closed"))
table_text_size 3.5
index 0
target_pline_data (mapcar '(lambda (vertex_1 vertex_2) (list (setq index (1+ index))
(car vertex_1)
(cadr vertex_1)
(strcat (itoa index)
" - "
(cond
(
target_pline_is_open
(itoa (1+ index))
)
(
t
(if (/= index (vlax-curve-getendparam target_pline))
(itoa (1+ index))
"1"
)
)
)
)
(distance vertex_1 vertex_2)
)
)
(setq target_vertices (mapcar 'cdr (vl-remove-if-not '(lambda (group) (= 10 (car group))) (entget target_pline))))
(if target_pline_is_open
(cdr target_vertices)
(append (cdr target_vertices) (list (car target_vertices)))
)
)
table_object (vla-addtable (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
(vlax-3d-point (getpoint "\nSet table insertion point (Left Upper Corner): "))
(+ 2 (length target_pline_data))
5
(* 2.6 table_text_size)
(* 6 table_text_size)
)
target_pline_data (cons "Vertices coordinates\nof the land plot shown in the project"
(cons (list "Ordely\nvertex\nnumber" "X" "Y" "End\nvertices" "Length")
target_pline_data)
)
row_index -1
)
(mapcar '(lambda (list_member)
(vl-catch-all-apply 'vla-setcolumnwidth list_member)
)
(mapcar '(lambda (list_member)
(cons table_object list_member)
)
(list
(list 0 (* 10 table_text_size)) ;width of column 0 thru 4
(list 1 (* 10 table_text_size))
(list 2 (* 10 table_text_size))
(list 3 (* 8 table_text_size))
(list 4 (* 10 table_text_size))
)
)
)
(foreach row target_pline_data
(if (listp row)
(progn
(setq column_index -1
row_index (1+ row_index)
)
(foreach column row
(vla-settext table_object row_index (setq column_index (1+ column_index)) (nth column_index row))
(vla-setcellalignment table_object row_index column_index acmiddlecenter)
(vla-setcelltextheight table_object row_index column_index table_text_size)
(if (and (< 1 row_index)
(member column_index '(1 2 4))
)
(vla-setcelldatatype table_object row_index column_index acdouble acunitdistance)
)
(if (= 1 row_index) (vla-setrowheight table_object row_index (* 6 table_text_size)))
)
)
(progn
(vla-settext table_object (setq row_index 0) 0 row)
(vla-setcellalignment table_object row_index 0 acmiddlecenter)
(vla-setcelltextheight table_object row_index 0 (* 1.5 table_text_size))
(vla-setrowheight table_object row_index (* 5 (* 1.5 table_text_size)))
)
)
)
)
)
(princ)
)
;**********************************************************************************************************************************************************