Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/09/2026 in all areas

  1. Works with BricsCAD. I know you have to wrap points in AutoCAD sometimes with (vlax-3d-point pt2) not sure about entmake tho.
    1 point
  2. Almost there its a table fixed a couple of bugs and done. Tested on a dwg with 500 layers a little slow takes a few seconds. ; https://www.cadtutor.net/forum/topic/99017-layer-table-lines-and-text/ ; Make a lgend of layers in dwg. ; Bt AlanH March 2026 (defun c:mktablay ( / colwidth doc lay lcol ldesc lname lst numrows objtable oldsnap pt pt1 pt2 rowheight) (defun CreateTableStyle ( / dicts dictobj key class custobj dwglays ) (setq dicts (vla-get-Dictionaries (vla-get-ActiveDocument(vlax-get-acad-object)))) (setq dictObj (vla-Item dicts "acad_tablestyle")) (vlax-for dname dictobj (if (= (vla-get-name dname) "DWGLAYERS" ) ; does it exist (princ "Found DWGLAYERS") (setq dwglays "No") ) ) (if (= dwglays "No") (progn (setq key "DWGLAYERS" class "AcDbTableStyle") (setq custObj (vla-AddObject dictObj key class)) (vla-put-Name custObj "DWGLAYERS") (vla-put-Description custObj "Dwg Index custom table style") (vla-put-BitFlags custObj 1) (vla-put-FlowDirection custObj acTableTopToBottom) (vla-put-HorzCellMargin custObj txtht ) (vla-put-VertCellMargin custObj txtht ) (vla-SetAlignment custObj (+ acDataRow acHeaderRow acTitleRow) acMiddleCenter) (vla-SetTextHeight custObj acDataRow txtht) (vla-SetTextHeight custObj acHeaderRow (* txtht 1.2)) (vla-SetTextHeight custObj acTitleRow (* txtht 1.5)) (vla-SetTextStyle custObj (+ acDataRow acHeaderRow acTitleRow) "Standard") ) ) (princ) ) (setq oldsnap (getvar 'osmode)) (setvar 'osmode 0) (setq txtht 1.5) (CreateTableStyle) (setvar 'ctablestyle "DWGLAYERS") (setq lays (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) (setq lst '()) (vlax-for lay lays (setq lname (vlax-get lay 'name)) (setq lcol (vlax-get lay 'color)) (setq ldesc (vlax-get lay 'description)) (setq lst (cons (list lcol lname ldesc) lst)) ) (setq lst (vl-sort lst '(lambda (x y) (< (cadr x)(cadr y))))) (setq pt (vlax-3d-point (getpoint "\npick a point for table "))) (setq doc (vla-get-activedocument (vlax-get-acad-object) )) (if (= (vla-get-activespace doc) 0) (setq curspc (vla-get-paperspace doc)) (setq curspc (vla-get-modelspace doc)) ) (setq numrows 3) (setq numcolumns 3) (setq rowht 5) (setq colwidth 50) (setq objtable (vla-addtable curspc pt numrows numcolumns rowht colwidth)) (vla-settext objtable 0 0 "Layer Details") (vla-settext objtable 1 0 "Color Numb. & Linetype") (vla-settext objtable 1 1 "Layer Name") (vla-settext objtable 1 2 "Layer description") (setq objtable (vlax-ename->vla-object (entlast))) (setq rowht (vla-getrowheight objtable 1)) (vla-put-regeneratetablesuppressed objtable :vlax-true) (setq row 2) (foreach lay lst (princ (cadr lay)) (vla-settext objtable row 0 (strcat (rtos (car lay) 2 0) " ")) (vla-setcellalignment objtable row 0 acMiddleRight) (vla-settext objtable row 1 (cadr lay)) (if (= (caddr lay) "") (setq desc (cadr lay)) (setq desc (caddr lay)) ) (vla-settext objtable row 2 desc) (setq pts (vlax-safearray->list (vlax-variant-value (VLA-GETCELLEXTENTS objtable row 0 :vlax-false)))) (setq pt1 (list (nth 0 pts)(nth 1 pts) 0.0)) (setq pt2 (list (nth 6 pts)(nth 7 pts) 0.0)) (setq vdist (/ (- (cadr pt1) (cadr pt2)) 2.0)) (setq pt1 (mapcar '+ pt1 (list 5.0 (- vdist) 0.0))) (setq pt2 (list (nth 3 pts)(nth 4 pts) 0.0)) (setq pt2 (mapcar '+ pt2 (list (- 7.0) (- vdist) 0.0))) (entmake (list (cons 0 "LINE") (cons 10 pt1) (cons 11 pt2) (cons 8 (cadr lay)))) (vla-insertrows objtable (setq row (1+ row)) rowht 1) ) (vla-put-regeneratetablesuppressed objtable :vlax-false) (setvar 'osmode oldsnap) (princ) ) (c:mktablay)
    1 point
×
×
  • Create New...