乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 10

[编程交流] 如何更改cor上的块

[复制链接]

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

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

使用道具 举报

3

主题

61

帖子

58

银币

初来乍到

Rank: 1

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

使用道具 举报

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

0

主题

61

帖子

62

银币

限制会员

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:29:17 | 显示全部楼层
也许可以从以下几点开始:
 
  1. [color=RED]([/color][color=BLUE]defun[/color] c:test [color=RED]([/color] [color=BLUE]/[/color] block layer ss i [color=RED])[/color]
  2. [color=#990099];; Example by Lee Mac 2011  -  www.lee-mac.com[/color]
  3. [color=RED]([/color][color=BLUE]setq[/color] block [color=#a52a2a]"test"[/color]   [color=#990099];; Block Name[/color]
  4.        layer [color=#a52a2a]"layer"[/color]  [color=#990099];; Layer Name (will be created if non-existent)[/color]
  5. [color=RED])[/color]
  6. [color=RED]([/color][color=BLUE]if[/color]
  7.    [color=RED]([/color][color=BLUE]setq[/color] ss
  8.      [color=RED]([/color][color=BLUE]ssget[/color] [color=#a52a2a]"_X"[/color]
  9.        [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"INSERT"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]2[/color] block[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]8[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"~"[/color] layer[color=RED])))[/color]
  10.      [color=RED])[/color]
  11.    [color=RED])[/color]
  12.    [color=RED]([/color][color=BLUE]repeat[/color] [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]sslength[/color] ss[color=RED]))[/color]
  13.      [color=RED]([/color]
  14.        [color=RED]([/color][color=BLUE]lambda[/color] [color=RED]([/color] elist [color=RED])[/color]
  15.          [color=RED]([/color][color=BLUE]entupd[/color]
  16.            [color=RED]([/color][color=BLUE]cdr[/color]
  17.              [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]-1[/color]
  18.                [color=RED]([/color][color=BLUE]entmod[/color]
  19.                  [color=RED]([/color][color=BLUE]subst[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]8[/color] layer[color=RED])[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]8[/color] elist[color=RED])[/color] elist[color=RED])[/color]
  20.                [color=RED])[/color]
  21.              [color=RED])[/color]
  22.            [color=RED])[/color]
  23.          [color=RED])[/color]
  24.        [color=RED])[/color]
  25.        [color=RED]([/color][color=BLUE]entget[/color] [color=RED]([/color][color=BLUE]ssname[/color] ss [color=RED]([/color][color=BLUE]setq[/color] i [color=RED]([/color][color=BLUE]1-[/color] i[color=RED]))))[/color]
  26.      [color=RED])[/color]
  27.    [color=RED])[/color]
  28. [color=RED])[/color]
  29. [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color]
  30. [color=RED])[/color]

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

使用道具 举报

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 10:33:06 | 显示全部楼层
谢谢李。真管用!但它只更改图层上的一个块(名称)。假设我有6个扩散器/块,这些块中的所有线都在“M-扩散器”层上。我希望所有这些块都放在“m-扩散器”层上。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:39:29 | 显示全部楼层
 
 
 
将块名称更改为“block1,block2,block3”
 
您也可以使用通配符,因此可以使用“block#”或“block*”
回复

使用道具 举报

11

主题

36

帖子

25

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 10:45:47 | 显示全部楼层
好的,非常感谢。你帮了大忙。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:49:14 | 显示全部楼层
 
不客气
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 00:38 , Processed in 0.418108 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表