可能部分自动“更新表块”再次具有一个块属性,该属性与表单元ID一起隐藏,并且在插入块时可能会在两者之间读取和更新。唯一真正的问题是当你删除行等它会搞砸标签。我在一个完全不同的布局页面上阅读了一篇文章并更新了一个块,效果很好,所以我知道这是可以做到的。动态链接变得很困难。同样需要删除块和更新表。
最简单的方法就是在这里重新创建表。
- ; dwg index to a table
- ; by Alan H NOV 2013
- (defun AH:dwgindex (/ doc objtable ss1 lay ans ans2 plotabs ss1 tag2 tag3 list1 list2 curlayout colwidth numcolumns numrows INC rowheight )
- (vl-load-com)
- (setq curlayout (getvar "ctab"))
- (if (= curlayout "Model")
- (progn
- (Alert "You need to be in a layout for this option")
- (exit)
- ) ; end progn
- ) ; end if model
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (setq curspace (vla-get-paperspace doc))
- (setq pt1 (vlax-3d-point (getpoint "\nPick point for top left hand of table: ")))
- ; read values from title blocks
- (setq bname "DA1DRTXT")
- (setq tag2 "DRG_NO") ;attribute tag name
- (setq tag3 "WORKS_DESCRIPTION") ;attribute tag name
- (setq ss1 (ssget "x" (list (cons 0 "INSERT") (cons 2 bname))))
- (if (= ss1 nil) ; for tomkinson jobs
- (progn
- (setq bname "C_TITLE")
- (setq ss1 (ssget "x" (list (cons 0 "INSERT") (cons 2 bname))))
- )
- )
- (setq INC (sslength ss1))
- (repeat INC
- (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 (SETQ INC (- INC 1)) )) 'getattributes)
- (if (= tag2 (strcase (vla-get-tagstring att)))
- (progn
- (setq ans (vla-get-textstring att))
- (if (/= ans NIL)
- (setq list1 (cons ans list1))
- ) ; if
- ); end progn
- ) ; end if
- (if (= tag3 (strcase (vla-get-tagstring att)))
- (progn
- (setq ans2 (vla-get-textstring att))
- (if (/= ans2 NIL)
- (setq list2 (cons ans2 list2))
- ) ; end if
- ) ; end progn
- ) ; end if tag3
- ) ; end foreach
- ) ; end repeat
- (setvar 'ctab curlayout)
- (command "Zoom" "E")
- (command "regen")
- (reverse list1)
- ;(reverse list2)
- ; now do table
- (setq numrows (+ 2 (sslength ss1)))
- (setq numcolumns 2)
- (setq rowheight 0.2)
- (setq colwidth 150)
- (setq objtable (vla-addtable curspace pt1 numrows numcolumns rowheight colwidth))
- (vla-settext objtable 0 0 "DRAWING REGISTER")
- (vla-settext objtable 1 0 "DRAWING NUMBER")
- (vla-settext objtable 1 1 "DRAWING TITLE")
- (SETQ X 0)
- (SETQ Y 2)
- (REPEAT (sslength ss1)
- (vla-settext objtable Y 0 (NTH X LIST1))
- (vla-settext objtable Y 1 (NTH X LIST2))
- (vla-setrowheight objtable y 7)
- (SETQ X (+ X 1))
- (SETQ Y (+ Y 1))
- )
- (vla-setcolumnwidth objtable 0 55)
- (vla-setcolumnwidth objtable 1 170)
- (command "_zoom" "e")
- ); end AH defun
- (AH:dwgindex)
- (princ)
|