TimZilla 发表于 2022-7-5 23:06:05

编辑多个块(颜色)a

假设我有一大堆积木,它们都是不同的颜色。我想让它们都变成一种颜色,而不必进入块编辑器屏幕。
 
一定有办法的。

WtaDude0822 发表于 2022-7-5 23:13:42

用所需的颜色重新定义块。Autocad将询问您是否要更新图形中的当前块定义。

dbroada 发表于 2022-7-5 23:18:38

这确实可以归结为一开始就做对了。如果你真的需要,你应该只在块中定义颜色和层。最好在第0层上创建几何体,并使用“颜色byLayer”或“byBlock”。这样,你所需要做的就是把你的积木放在一个不同的层上,或者给它们分配一个不同的克隆,一切都完成了。

TimZilla 发表于 2022-7-5 23:20:56

 
 
嗯,我必须把其他人的计划放进我的画里。例如HVAC、机械图纸。这些人使用大约20种不同的颜色,所有的东西都是一块。我喜欢把所有其他交易都做成某种颜色,然后锁上。这样,当我绘制管道时,我可以集中注意力。
 
如果每个人都像你说的那样做,那就行了。

dbroada 发表于 2022-7-5 23:25:08

在这种情况下,要回答您最初的问题,我认为编程是唯一的方法。

BIGAL 发表于 2022-7-5 23:31:23

您可以编辑一个块并更改其中的所有内容。这是一个lisp,用于将发现特定线型的每个块中的线型更改为不同的线型。
 
我从这里的论坛上得到了一个叫做block edit的来源

; my line only change
;(defun c:normblocks (/ adoc)
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark adoc)
(vlax-for block (vla-get-blocks adoc)
   (if   (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
   (vlax-for   ent block

(if(= (vla-get-linetype ent ) "solid" )
(progn
(vla-put-linetype ent "Continuous")
(princ (vla-get-name block))
)
);_ end of if

) ;_ end of vlax-for
   ) ;_ end of if
   ) ;_ end of vlax-for
(vla-regen adoc acactiveviewport)
(vla-endundomark adoc)
(princ)

 
完整的代码应易于更改颜色

(defun c:normblocks (/ adoc)
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark adoc)
(vlax-for block (vla-get-blocks adoc)
   (if   (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
   (vlax-for   ent block
; (vla-put-color ent 0)
(vla-put-linetype ent "Bylayer")
(vla-put-lineweight ent aclnwtbyblock)
) ;_ end of vlax-for
   ) ;_ end of if
   ) ;_ end of vlax-for
(vla-regen adoc acactiveviewport)
(vla-endundomark adoc)
(princ)
) ;_ end of defun
(defun c:normblock (/ adoc selset)
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark adoc)
(if (setq selset (ssget "_:S:L" '((0 . "INSERT"))))
   (vlax-for ent (vla-item
         (vla-get-blocks adoc)
         (cdr (assoc 2 (entget (ssname selset 0))))
         ) ;_ end of vla-item
   (vla-put-color ent 0)
   (vla-put-linetype ent "ByBlock")
   (vla-put-lineweight ent aclnwtbyblock)
   ) ;_ end of vlax-for
   ) ;_ end of if
(vla-endundomark adoc)
(princ)
) ;_ end of defun

 
按层查找颜色

(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark adoc)
(vlax-for block (vla-get-blocks adoc)
   (if   (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
   (vlax-for   ent block
(vla-put-color ent 0)
(vla-put-linetype ent "Bylayer")
(vla-put-lineweight ent aclnwtbyblock)
) ;_ end of vlax-for
   ) ;_ end of if
   ) ;_ end of vlax-for
(vla-regen adoc acactiveviewport)
(vla-endundomark adoc)
(princ)

TimZilla 发表于 2022-7-5 23:33:12

这真是太棒了,希望它能起作用。

TimZilla 发表于 2022-7-5 23:40:11

哇,我把所有这些都做成了一个Lisp文件,加载到CAD中。砰!
 
我可以把任何一个方块换成任何我想要的颜色!只需点击它并改变颜色!
 
我不必进入块编辑!
 
只要加载,它就会自动使每个块都完美。
 
这将为我节省很多时间。只是想让你知道你让别人的生活更轻松了。哇,我觉得我现在可以休息更长时间了!咖啡听起来不错

BearDyugin 发表于 2022-7-5 23:44:00

用于规范化当前图形块的另一个程序
标准块。lsp

tasos85 发表于 2022-7-5 23:47:21

你能解释一下如何加载lisp文件吗,我不知道如何使用lisp:(。我有许多块我想更改为相同的颜色,否则无法执行
 
页: [1] 2
查看完整版本: 编辑多个块(颜色)a