好的,试一试,让我知道。
注意:无论块名是什么,这个程序都会根据标记名收集字符串。
- (defun c:Test (/ u app l ss i lst s)
- ;;====================================;;
- ;; Tharwat - 12.Apr.2016 ;;
- ;; Gathering attributes' text strings ;;
- ;; into a text as a filed object ;;
- ;; separated by a comma. ;;
- ;; ;;
- ;;====================================;;
- (if (setq u (vla-get-Utility
- (vla-get-ActiveDocument (vlax-get-acad-object))
- )
- app (vlax-method-applicable-p u 'GetObjectIdString)
- l ""
- ss (ssget '((0 . "INSERT") (66 . 1))))
- (repeat (setq i (sslength ss))
- (mapcar '(lambda (x)
- (if (eq (vla-get-tagstring x) "Pozitia")
- (setq lst (cons x lst))
- )
- )
- (vlax-invoke
- (vlax-ename->vla-object (ssname ss (setq i (1- i))))
- 'getattributes))
- )
- )
- (if lst
- (if (< 1 (length lst))
- (foreach x (reverse lst)
- (setq
- l (strcat "%<\\AcObjProp Object(%<\\_ObjId "
- (if app
- (vla-GetObjectIdString u x :vlax-false)
- (itoa (vla-get-ObjectId x)))
- ">%).TextString>%"
- ","
- l))
- )
- (setq l
- (strcat "%<\\AcObjProp Object(%<\\_ObjId "
- (if app
- (vla-GetObjectIdString u (car lst) :vlax-false)
- (itoa (vla-get-ObjectId (car lst))))
- ">%).TextString>%"))
- )
- )
- (if (and l
- (/= l "")
- (setq s (car (entsel "\nSelect text to add fields :")))
- (wcmatch (cdr (assoc 0 (entget s))) "*TEXT")
- )
- (vla-put-textstring
- (vlax-ename->vla-object s)
- (vl-string-trim "," l))
- )
- (princ)
- )(vl-load-com)
|