不按命令缩放
如何使用(命令“scale”等)缩放不带的块?提前感谢 我目前正在尝试选择多个块,并尝试按当前的DIMSCALE缩放每个块。为了使它们保持在原来的位置,我希望每一个都以它们的插入点为基点进行缩放。我看到了李的Lisp程序,并试图修改它来完成我的任务。这就是我所拥有的,但我犯了一个错误。(defun c:wscale (/ i ss ent eLst)
(setq wgScale (getvar "DIMSCALE"))
(if (setq i -1 ;if this = T
ss (ssget "_:L"))
(while ;Then do this
(setq ent
(ssname ss
(setq i (1+ i))))
(setq eLst (entget ent))
(setq ePT (assoc 10 eLst))
(vl-cmdf "_.scale" ent "" ePT wgScale)
)
);end if
(princ))
我得到这个错误 看起来我所缺少的只是一个“cdr”
(defun c:wscale (/ i ss ent eLst)
(setq wgScale (getvar "DIMSCALE"))
(if (setq i -1 ;if this = T
ss (ssget "_:L"))
(while ;Then do this
(setq ent
(ssname ss
(setq i (1+ i))))
(setq eLst (entget ent))
(setq ePT (cdr (assoc 10 eLst)))
(vl-cmdf "_.scale" ent "" ePT wgScale)
)
);end if
(princ))
我想(assoc…)将返回x,y,z,但它返回(10 x,y,z),这使命令行失败。
我将为这个问题添加第二部分。我想键入命令,让LISP选择图形中的所有块,其块名包含单词“PART”。
与此同时,我正在四处寻找答案。我想我必须过滤(0。“INSERT”)和(2。”*part“)不要认为我可以在那里使用星号,但你可以看到我的逻辑。 我知道这是我自己和我之间的对话,但我想可能有人在读这篇文章
无论如何,我注意到在块的DXF代码中有x、y和z比例因子。我想我会尝试更改这些值,而不是使用命令行。 我不确定您到底想做什么,但您可以使用快速选择来选择所有块类型,然后修改属性x、y、z比例吗?
格伦 例子:
(defun c:wscale(/ i ss ent eLst scl)
(and (zerop (setq scl (getvar "DIMSCALE")))
(setq scl 1.0))
(if (setq i-1 ss (ssget "_:L" '((0 . "INSERT"))))
(while (setq ent (ssname ss (setq i (1+ i))))
(setq eLst (entget ent))
(mapcar
(function
(lambda (x)
(setq eLst (subst (cons x scl)
(assoc x eLst) eLst)))) '(41 42 43))
(entmod eLst)))
(princ))
页:
[1]