将特定图案填充设置为dimscale
大家早上好。我在我的绘图上有一些不同图案填充的代码,现在我想添加一条线,找到所有“栅格”图案填充,并将其更改为dimscale。有人能帮我吗?提前感谢!!!
(defun c:IB ()
(if (setq ss (ssget "X" '((0 . "HATCH") (2 . "CROSS"))))
(progn
(setq count 0)
(repeat (sslength ss)
(command "-hatchedit" (ssname ss count) "co" "" ".")
(command "-hatchedit" (ssname ss count) "p" "" "32" "")
(setq count (1+ count))
)
)
)
(princ)
) 你好
像这样的?
(defun c:Test ( / scl int sel ent)
(and (setq scl (getvar 'DIMSCALE) int -1 sel (ssget "_X" '((0 . "HATCH")(2 . "GRATE"))))
(while (setq ent (ssname sel (setq int (1+ int))))
(vla-put-PatternScale (vlax-ename->vla-object ent) scl)
)
)
(princ)
) (vl-load-com)
这就像将比例更改为dimscale的梦想。我唯一的问题似乎是它删除了所有出现的图案填充,除了一个lol!知道为什么会这样吗?我们的图纸上通常有多个此类图案填充。
可能比例太大,无法显示模式?
看看这是否突出显示了它们:(sssetfirst nil(ssget“_X”'((0。“hatch”)(2。“grate”)))
该程序根本不会删除任何图案填充对象,但可能DimScale变量太大,正如ronjonp之前所述。 啊!我对第一个代码做了更多的测试,这只会在图案填充的当前比例低于dimscale时更新比例。例如,我有4个格栅图案填充,2个按80缩放,两个按120缩放,我的dimscale是96。它将更改当前缩放为80的两个图案填充的比例,但120的图案填充将消失。此外,如果我只有一个目前缩放为120的格栅舱口,它将不会对它做任何事情。 ronjonp的建议是,立即将代码复制并粘贴到命令行中,然后按Enter键查看填充图案是否存在,并知道对于图案来说比例是否太大。
请更新您的帖子并删除您修改的代码,因为它们不正确。 我很确定我现在工作顺利。非常感谢你的帮助。我对编码非常陌生,所以这对我来说还是一门外语!不过,我真的很感谢你的帮助。随着进一步测试,它现在似乎运行良好。我真的不知道为什么会有一些hatch delete的实例。我想这可能是因为它是无边界关联的,因为我刚刚复制了同一图案填充的几个实例进行测试。 很高兴知道你已经解决了问题,并按需要工作。
页:
[1]