shakuhachi 发表于 2022-7-6 09:54:09

如何更改cor上的块

我是autocad新手,不懂lisp。
 
这是我的问题。“M-duct”图层是我的默认绘图图层。每次我插入一个块,它显然会在那个层上插入块。我只需要一个lisp例程,将插入的恒温器块放在“M-恒温器”层。该块上的所有实体都位于“M-恒温器”层上。我不需要立即更改正确层上的块。也许在我关闭并保存图形之前运行例程。我厌倦了隔离层,例如恒温器、扩散器、文本等。。把它们放在正确的层上。任何帮助都将不胜感激。非常感谢。

BIGAL 发表于 2022-7-6 10:01:33

这里有几种方法
 
如果块的数量有限,则可以有一个菜单或工具栏,其中包含这些块,菜单后面的命令类似于
^c ^ c-la s M-恒温器插入件M-恒温器
 
我们使用幻灯片菜单系统,按名称或图片再次选择上述命令
 
当前推动的方法是使用工具托盘
 
此外,如果有少量的块,它们可以是命令,比如mt1,它将设置层并插入恒温器块1,这将是一个lisp代码位
(defun c:mt1 ()
(command "layer" "S" "m-thermostat "" "insert" "M-thermostat"))

Grant 发表于 2022-7-6 10:08:44

也许你所需要做的就是在你的恒温器里。dwg以确保所有实体都位于正确的图层上,然后当您将其引入时,它将自动位于该图层上。块不会,但块后面的实体将是。因此,您将能够查看图层,并显示此块。那么希望不需要lisp。
 
如果这不是您想要的,您真的需要在该层中创建/存在,然后插入块-手动或通过lisp。

shakuhachi 发表于 2022-7-6 10:16:22

我不使用选项板或工具栏,它只会减慢我的速度,尤其是当选项板没有对接时,我的autocad会变得很慢。我在绘图中使用了大约800个不同的块,所以将它们放在调色板中不是一个选项。
 
授予
 
我避免爆炸或爆破块,这只会使我的工作文件更大。当我分解图形中的所有块时,文件大小从7mb跳到16mb。所有外部参照我的图形文件的人都想杀了我。

danellis 发表于 2022-7-6 10:23:46

我想你*可以*编写一个lisp,自动选择文件中的所有块,然后对每个块进行处理,获得块的名称和层,然后将块的名称与“查找表”进行比较(说明每个块应该在哪一层),并在必要时更改层。
 
显然不是最容易编写的程序(尤其是因为这是你的第一个lisp-当然比“你好世界”!!)但就像所有的编程一样,它是关于将其简化为小步骤的。当然,你需要800个区块及其图层的列表。
 
dJE
 
我要补充的是,一旦你习惯了,工具托盘比你想象的要快。当然不会比INSERT慢。浏览。。好啊好啊

Lee Mac 发表于 2022-7-6 10:29:17

也许可以从以下几点开始:
 

(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)
)

 
更改顶部的块/层名称以适合。

shakuhachi 发表于 2022-7-6 10:33:06

谢谢李。真管用!但它只更改图层上的一个块(名称)。假设我有6个扩散器/块,这些块中的所有线都在“M-扩散器”层上。我希望所有这些块都放在“m-扩散器”层上。

Lee Mac 发表于 2022-7-6 10:39:29

 
 
 
将块名称更改为“block1,block2,block3”
 
您也可以使用通配符,因此可以使用“block#”或“block*”

shakuhachi 发表于 2022-7-6 10:45:47

好的,非常感谢。你帮了大忙。

Lee Mac 发表于 2022-7-6 10:49:14

 
不客气
页: [1] 2
查看完整版本: 如何更改cor上的块