这是可以做到的,但有几个局限性
基本引擎可能看起来像这样
- (defun c:att-snag (/ sn sd sp an ad sl ss i tn td tp
- a10 a11 n10 n11)
- (while (not sn)
- (and (princ "\nSelect 1 SOURCE Insert...")
- (setq ss (ssget '((0 . "INSERT")(66 . 1))))
- (= (sslength ss) 1)
- (setq sn (ssname ss 0)
- sd (entget sn)
- sp (cdr (assoc 10 sd))
- an (entnext sn)
- ad (entget an))))
- (while (= "ATTRIB" (cdr (assoc 0 ad)))
- (setq sl (cons ad sl)
- an (entnext an)
- ad (entget an)))
- (and (princ "\nSelect TARGET Inserts...")
- (setq ss (ssget '((0 . "INSERT")(66 . 0))))
- (setq i 0)
- (while (setq tn (ssname ss i))
- (setq td (entget tn)
- tp (cdr (assoc 10 td)))
- (setq td (append td (list (cons 66 1))))
- (entmake td)
- (foreach a (reverse sl)
- (setq a10 (mapcar '- (cdr (assoc 10 a)) sp))
- (setq n10 (mapcar '+ tp a10))
- (setq a11 (mapcar '- (cdr (assoc 11 a)) sp))
- (setq n11 (mapcar '+ tp a11))
- (setq a (subst (cons 10 n10) (assoc 10 a) a))
- (setq a (subst (cons 11 n11) (assoc 11 a) a))
- (entmake a))
- (entmake (list (cons 0 "SEQEND")(cons 8 "0")))
- (entdel tn)
- (redraw (entlast))
- (setq i (1+ i))))
- (prin1))
这只是将源属性添加到目标插入中
它不会:
[列表] 重新定义目标块定义处理源插入旋转、缩放和OCS删除属性值(复制源属性值)保留属性提示
它可以:
[列表]匹配从源插入点到属性的属性偏移
我相信你可能还需要处理一些其他的怪癖。
-大卫
|