如何将复制某层的图元,而且使得所复制的图元的位置与原图元一致
问题的提出:单位现在推行协同设计,就是使用外部参照。我们设备专业只能参照建筑专业的图纸,而无修改所引用的外部参照文件的权限。这样就造成了一个问题,建筑图上的某些图元和我们设备专业的图元重叠,比如房间名称等。未协同设计之前,我们可以自己把它移开,现在不行了。我想有没有办法将房间名称这个图层的图元一模一样的复制,然后另存到一个图层中。冻结建筑图中的房间名称的这个层,就可以使用自己建的那个层。
既然是:我想有没有办法将房间名称这个图层的图元一模一样的复制,然后另存到一个图层中。冻结建筑图中的房间名称的这个层,就可以使用自己建的那个层。
那你在复制前先将自己的这个图层的图元转为另一个图层,再插入,然后冻结建筑图中的房间名称的这个层,不就行了?
我的想法和二楼的一样,可是我自己不知道如何复制那个图层图元,且保存一模一样 tjuzkj 发表于 2011-1-2 19:17 static/image/common/back.gif
我的想法和二楼的一样,可是我自己不知道如何复制那个图层图元,且保存一模一样
选择图元,采取同基点复制 ;;;下面的程序对复制参照中的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 (appendenl (list (cons 8 newla))))
(setq e (entmake enl))
(if e (ssadd (entlast) ss))
)
(if ss (command "move" ss "" '(0 0 0) inspt))
)
2009有这功能 vla-copy ob
页:
[1]