如何更改cor上的块
我是autocad新手,不懂lisp。这是我的问题。“M-duct”图层是我的默认绘图图层。每次我插入一个块,它显然会在那个层上插入块。我只需要一个lisp例程,将插入的恒温器块放在“M-恒温器”层。该块上的所有实体都位于“M-恒温器”层上。我不需要立即更改正确层上的块。也许在我关闭并保存图形之前运行例程。我厌倦了隔离层,例如恒温器、扩散器、文本等。。把它们放在正确的层上。任何帮助都将不胜感激。非常感谢。 这里有几种方法
如果块的数量有限,则可以有一个菜单或工具栏,其中包含这些块,菜单后面的命令类似于
^c ^ c-la s M-恒温器插入件M-恒温器
我们使用幻灯片菜单系统,按名称或图片再次选择上述命令
当前推动的方法是使用工具托盘
此外,如果有少量的块,它们可以是命令,比如mt1,它将设置层并插入恒温器块1,这将是一个lisp代码位
(defun c:mt1 ()
(command "layer" "S" "m-thermostat "" "insert" "M-thermostat")) 也许你所需要做的就是在你的恒温器里。dwg以确保所有实体都位于正确的图层上,然后当您将其引入时,它将自动位于该图层上。块不会,但块后面的实体将是。因此,您将能够查看图层,并显示此块。那么希望不需要lisp。
如果这不是您想要的,您真的需要在该层中创建/存在,然后插入块-手动或通过lisp。 我不使用选项板或工具栏,它只会减慢我的速度,尤其是当选项板没有对接时,我的autocad会变得很慢。我在绘图中使用了大约800个不同的块,所以将它们放在调色板中不是一个选项。
授予
我避免爆炸或爆破块,这只会使我的工作文件更大。当我分解图形中的所有块时,文件大小从7mb跳到16mb。所有外部参照我的图形文件的人都想杀了我。 我想你*可以*编写一个lisp,自动选择文件中的所有块,然后对每个块进行处理,获得块的名称和层,然后将块的名称与“查找表”进行比较(说明每个块应该在哪一层),并在必要时更改层。
显然不是最容易编写的程序(尤其是因为这是你的第一个lisp-当然比“你好世界”!!)但就像所有的编程一样,它是关于将其简化为小步骤的。当然,你需要800个区块及其图层的列表。
dJE
我要补充的是,一旦你习惯了,工具托盘比你想象的要快。当然不会比INSERT慢。浏览。。好啊好啊 也许可以从以下几点开始:
(defun c:test ( / block layer ss i )
;; Example by Lee Mac 2011-www.lee-mac.com
(setq block "test" ;; Block Name
layer "layer";; Layer Name (will be created if non-existent)
)
(if
(setq ss
(ssget "_X"
(list (cons 0 "INSERT") (cons 2 block) (cons 8 (strcat "~" layer)))
)
)
(repeat (setq i (sslength ss))
(
(lambda ( elist )
(entupd
(cdr
(assoc -1
(entmod
(subst (cons 8 layer) (assoc 8 elist) elist)
)
)
)
)
)
(entget (ssname ss (setq i (1- i))))
)
)
)
(princ)
)
更改顶部的块/层名称以适合。 谢谢李。真管用!但它只更改图层上的一个块(名称)。假设我有6个扩散器/块,这些块中的所有线都在“M-扩散器”层上。我希望所有这些块都放在“m-扩散器”层上。
将块名称更改为“block1,block2,block3”
您也可以使用通配符,因此可以使用“block#”或“block*” 好的,非常感谢。你帮了大忙。
不客气
页:
[1]
2