哇-那是一些旧代码!
这里有一个更新的版本,它在代码的顶部方便地定义了各种参数,并且应该也可以使用动态块:
- (defun c:dwgatt ( / blk idx obj sel str tag )
- (setq blk "TITLEBLOCK" ;; Block name (case-insensitive)
- tag "DWGNAM" ;; Attribute tag (case-insensitive)
- str (vl-filename-base (getvar 'dwgname)) ;; Attribute value
- )
- (if
- (setq sel
- (ssget "_X"
- (list '(0 . "INSERT") '(66 . 1) (cons 2 (strcat "`*U*," blk))
- (if (= 1 (getvar 'cvport))
- (cons 410 (getvar 'ctab))
- '(410 . "Model")
- )
- )
- )
- )
- (repeat (setq idx (sslength sel))
- (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))))
- (if (= (strcase blk) (strcase (vlax-get-property obj (if (vlax-property-available-p obj 'effectivename) 'effectivename 'name))))
- (foreach att (vlax-invoke obj 'getattributes)
- (if (= (strcase tag) (strcase (vla-get-tagstring att)))
- (vla-put-textstring att str)
- )
- )
- )
- )
- (princ (strcat "\nNo "" blk "" blocks found in the current layout."))
- )
- (princ)
- )
- (vl-load-com) (princ)
(以上未经测试)
乐意为DIW效劳! |