修改动态块XYZ比例
修改X、Y和Z比例因子。有一个动态块,可以通过“属性”对话框修改XYZ比例因子!
但我使用lisp修改xyz比例因子,存在一个问题。
谢谢你的帮助!心存感激
xyscl。lsp 因此,文本是一个动态块,您希望通过将其缩放到X=2.0、Y=2.0和Z=1.0来重新定位它?
是的,使用lisp,文本比例不变。
图纸1.dwg 我无法在您的属性块上尝试代码,因为名称是用未知语言写入我的系统的,所以无论如何,请尝试并告诉我。
(defun c:Test (/ u x y z s sn i e l v ls ent o nx)
;; Tharwat 02. March. 2014 ;;
(setq u (entlast))
(if (and (setq x (getdist "\n Specify New scale factor for < X > :"))
(setq y (getdist "\n Specify New scale factor for < Y > :"))
(setq z (getdist "\n Specify New scale factor for < Z > :"))
(progn (princ "\n Select Attributed Blocks to rescale ")
(setq s (ssget "_:L" '((0 . "INSERT") (66 . 1))))
)
)
(repeat (setq i (sslength s))
(setq e (entget (setq sn (ssname s (setq i (1- i)))))
v nil
l (cdr (assoc 8 e))
v (mapcar '(lambda (a) (cons (vla-get-tagstring a) (vla-get-textstring a)))
(vlax-invoke (setq o (vlax-ename->vla-object sn)) 'getattributes)
)
)
(command "_.-insert" (vla-get-effectivename o) "_none" (cdr (assoc 10 e)) "xyz" x y z "0")
(if (not (eq u (setq ls (entlast))))
(progn (entmod (subst (cons 8 l) (assoc 8 (entget ls)) (entget ls)))
(setq nx ls)
(while (and (setq nx (entnext nx)) (/= (cdr (assoc 0 (entget nx))) "SEQEND"))
(if (eq (cdr (assoc 0 (setq ent (entget nx)))) "ATTRIB")
(foreach j v
(if (eq (car j) (cdr (assoc 2 ent)))
(entmod (subst (cons 1 (cdr j)) (assoc 1 ent) ent))
)
)
)
)
(entdel sn)
)
)
)
)
(princ)
)
(vl-load-com)
Tharwat,非常感谢!很好!但不支持正常块。
不客气。
使用普通块要容易得多。。。
(defun c:Test (/ u x y z s sn i e l ls ent nx)
;; Tharwat 02. March. 2014 ;;
(setq u (entlast))
(if (and (setq x (getdist "\n Specify New scale factor for < X > :"))
(setq y (getdist "\n Specify New scale factor for < Y > :"))
(setq z (getdist "\n Specify New scale factor for < Z > :"))
(progn (princ "\n Select Blocks to rescale ")
(setq s (ssget "_:L" '((0 . "INSERT"))))
)
)
(repeat (setq i (sslength s))
(setq e (entget (setq sn (ssname s (setq i (1- i)))))
l (cdr (assoc 8 e))
)
(command "_.-insert"
(vla-get-effectivename (vlax-ename->vla-object sn))
"_none"
(cdr (assoc 10 e))
"xyz"
x
y
z
"0"
)
(if (/= u (setq ls (entlast)))
(progn
(entmod (subst (cons 8 l) (assoc 8 (entget ls)) (entget ls))
)
(entdel sn)
)
)
)
)
(princ)
)
(vl-load-com)
现在,可以支持正常块。但动态块有问题。更改动态块后。缺少动态块的文本
此外,只需输入一次刻度值。不需要输入3次。
第一个lisp也用于属性块和动力学,第二个lisp用于普通块。
非常感谢。塔尔瓦特。
没有别的办法了。
xyscl。lsp可以更改正常块。
页:
[1]