;;;下面的程序对复制参照中的text图元有效! - ;测试 (tt (car (entsel)) "01注记" "newLay")
- ;参数 en 块参照引用 la 块参照引用中要复制文本的图层,层名不含块参照名 NewLa 复制后新建图层
- (defun tt (en la newla / DBXDOC enl blkrefname inspt blockref obj objlst enlst e n ss)
- (setq enl (entget en)
- blkrefname (cdr (assoc 2 enl))
- inspt (cdr (assoc 10 enl))
- n 0
- ss (ssadd)
- )
- (command "layer" "m" newla "")
- (setq blockref (vla-item (vla-get-blocks(vla-get-ActiveDocument (vlax-get-acad-object))) blkrefname))
- (vlax-for obj blockref
- ;;;判断块引用中是否为 la 图层中的文本
- (if (and (= (strcase (vla-get-layer obj)) (strcase (strcat blkrefname "|" la)))
- (= "AcDbText" (vla-get-ObjectName obj))
- )
- (progn
- (setq objlst (cons obj objlst))
-
- )
- )
- )
- (if objlst (setq enlst1 (mapcar 'vlax-vla-object->ename objlst)))
- (foreach en enlst1
- (setq enl (entget en))
- (setq enl (vl-remove-if '(lambda (x) (or (= 5 (car x)) (= -1 (car x)) (= 330 (car x)) (= 8 (car x)))) enl))
- (setq enl (append enl (list (cons 8 newla))))
- (setq e (entmake enl))
- (if e (ssadd (entlast) ss))
- )
- (if ss (command "move" ss "" '(0 0 0) inspt))
- )
|