我会走另一条路,从布局选项卡详细信息中创建目录,你可以去每个布局阅读标题栏等,并创建一个详细信息列表,放入表格或作为文本列。
这可能有助于你开始
- ; change the 410 to layout name
- ;;-------------------=={ Parse Numbers }==--------------------;;
- ;; ;;
- ;; Parses a list of numerical values from a supplied string. ;;
- ;;------------------------------------------------------------;;
- ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;;
- ;;------------------------------------------------------------;;
- ;; Arguments: ;;
- ;; s - String to process ;;
- ;;------------------------------------------------------------;;
- ;; Returns: List of numerical values found in string. ;;
- ;;------------------------------------------------------------;;
- (defun LM:ParseNumbers ( s )
- (
- (lambda ( l )
- (read
- (strcat "("
- (vl-list->string
- (mapcar
- (function
- (lambda ( a b c )
- (if
- (or
- (< 47 b 58)
- (and (= 45 b) (< 47 c 58) (not (< 47 a 58)))
- (and (= 46 b) (< 47 a 58) (< 47 c 58))
- )
- b 32
- )
- )
- )
- (cons nil l) l (append (cdr l) (list nil))
- )
- )
- ")"
- )
- )
- )
- (vl-string->list s)
- )
- )
- ;(defun ah:sheetupdate1 (ss1 lay plotabs tabname dwgname)
- (defun ah:sheetupdate1 ()
- (setq doc (vla-get-activedocument (vlax-get-acad-object)))
- (vlax-for lay (vla-get-Layouts doc)
- (setq plotabs (cons (vla-get-name lay) plotabs))
- )
- (setq title "Please enter dwg number")
- (ah:getval title)
- (setq dwgname item)
-
- (setq newstr4 (getstring "\nPlease enter version for all sheets <Cr> no change "))
- (princ "0")
- (setq len (length plotabs))
- (setq x 0)
- (setq bname "DA1DRTXT")
- (repeat len
- (setq tabname (nth x plotabs))
- (if (/= tabname "Model")
- (progn
- (setvar "ctab" tabname)
- (setq ss1 (ssget "x" (list (cons 0 "INSERT") (cons 2 bname)(cons 410 tabname))))
- (setq dwgnum (Lm:parsenumbers tabname))
- (setq sheetnum (car dwgnum))
- (setq oldtag1 "SHT_NO") ;attribute tag name
- (setq newstr1 (rtos sheetnum 2 0))
- (setq oldtag2 "DRG_NO") ;attribute tag name
- (setq oldtag3 "PROJ_NO") ;attribute tag name
- (setq newstr3 dwgname)
- (setq oldtag4 "REV_NO") ;attribute tag name
- ; if less than 10
- (if (< (car dwgnum) 10.0)
- (setq newstr2 (strcat dwgname "-D0" (rtos sheetnum 2 0)))
- (setq newstr2 (strcat dwgname "-D" (rtos sheetnum 2 0)))
- )
- (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 0 )) 'getattributes)
- (if (= oldtag1 (strcase (vla-get-tagstring att)))
- (vla-put-textstring att newstr1)
- ) ; end if
- (if (= oldtag2 (strcase (vla-get-tagstring att)))
- (vla-put-textstring att newstr2)
- ) ; end if
- (if (= oldtag3 (strcase (vla-get-tagstring att)))
- (vla-put-textstring att newstr3)
- ) ; end if
- (if (and (/= version nil) (= oldtag4 (strcase (vla-get-tagstring att))) )
- (vla-put-textstring att newstr4)
- ) ; end if
- ) ; end foreach
- ) ; end progn
- ) ; end if
- (setq x (+ x 1))
- ) ; end repeat
- (setq ss1 nil)
- ) ; end defun ah
- (ah:sheetupdate1)
- (princ)
|