乐筑天下

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

匿名块更改为普通块

[复制链接]

20

主题

151

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
226
发表于 2020-8-2 23:28:00 | 显示全部楼层 |阅读模式
复制代码;发现点问题,当有多个同名的匿名块(普通块转为匿名块后经常遇到)的时候,会改名出错, 重新修改了下,详见附件附件有个5个函数
ab2b  全部匿名块更改为普通块
ab2bs 选择的匿名块更改为普通块
ab2b2 全部匿名块更改为普通块的另一个算法
b2ab   选择的普通块更改为匿名块
b2b     选择的任意块更改为输入的文件名

lcyzlppmuiw.gif

lcyzlppmuiw.gif


论坛现有的不太适合自己,所以根据论坛的改了一个适合自己的
(defun c:brab(/ blks ss m n e nam bnnew)
  (setq BLKs (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))));取得图形的Blocks集合
  (if (setq ss (ssget "_X" '((0 . "INSERT")(2 . "`**"))))
      (progn
       (repeat (setq n (sslength ss))
         (if (setq e (ssname ss (setq n (1- n))))
          (progn
                                         (setq  nam (vla-get-name (vlax-ename->vla-object e)));获取匿名块名字
                                         (setq  bnnew(substr  nam 2));获取匿名块星号后面的字符串
                                         (setq  m 0)
                                         (while (/= (tblsearch  "BLOCK" bnnew) nil)
                                                         (setq  m (1- m))
                                                        (setq  bnnew(strcat  bnnew  (rtos  m 2 2)))
                                         )
            (vla-put-name (vla-item blks nam) bnnew);Blocks中名为nam的Block重命名为bnnew
          )
         )
        )
         (vla-auditinfo (vla-get-activedocument (vlax-get-acad-object)) :vlax-true)
                         )
  )
        (princ)
)

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

20

主题

151

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
226
发表于 2020-8-3 23:43:00 | 显示全部楼层
匿名块我感觉是星号+一个字母开头的都应该是了,从我的三维软件转出来的是 *A开头的,
我也根据自家情况写两个 普通块转为匿名块的(排除部分块更名,如果很多块排除估计用表方便点)
(defun c:b2ab(/ blks ss  n e nam bnnew)
  (setq BLKs (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))));取得图形的Blocks集合
  (if (setq ss (ssget "_X"  '((0 . "INSERT")(2 . "~`**"))))
      (progn
       (repeat (setq n (sslength ss))
         (if (setq e (ssname ss (setq n (1- n))))
          (progn
            (setq  nam (vla-get-name (vlax-ename->vla-object e)));获取普通块名字
            (if (and (/= nam "BTL") (/= nam "mxl") )
                (vla-put-name (vla-item blks nam) "*A");Blocks中名为nam的Block重命名为匿名
            )
            )
          )
        )
     )
  )
        (princ)
)
回复

使用道具 举报

5

主题

129

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
144
发表于 2020-8-3 22:29:00 | 显示全部楼层

给楼主顶个赞,感谢楼主分享@~~~
(defun c:bnm ( / blks a blk i obj ss doc )
  (setq blks (vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object)))))
  (if (setq i -1 ss (ssget "_X" '((0 . "INSERT")(2 . "`*U*"))))
    (while (setq obj (vlax-ename->vla-object(ssname ss (setq i (1+ i)))))
      (setq blk (vla-item blks (vla-get-name obj)))
      (vla-put-name blk (setq a (strcat "BNM-" (rtos (* (getvar "cdate") 1e8)))))
      (vla-auditinfo doc :vlax-true)
      (vla-put-name blk a)
    )
  )
)
回复

使用道具 举报

0

主题

60

帖子

766

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2022-4-18 15:09:00 | 显示全部楼层
不知道为什么其他工具箱集成的这个功能好像没反应。。
回复

使用道具 举报

0

主题

278

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
259
发表于 2020-8-4 16:21:00 | 显示全部楼层
楼主感谢分享啊
回复

使用道具 举报

2

主题

173

帖子

14

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2020-8-4 23:04:00 | 显示全部楼层

楼主感谢分享啊
回复

使用道具 举报

2

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
13
发表于 2020-11-17 15:44:00 | 显示全部楼层
多谢楼主分享
回复

使用道具 举报

7

主题

231

帖子

20

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
250
发表于 2021-1-5 11:37:00 | 显示全部楼层
感谢分享,这个太实用了
回复

使用道具 举报

18

主题

154

帖子

13

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
225
发表于 2022-3-31 02:54:00 | 显示全部楼层
好用学习了~~~~
回复

使用道具 举报

0

主题

14

帖子

9

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-9 20:48:00 | 显示全部楼层
这个可以,方便
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 06:01 , Processed in 0.990221 second(s), 77 queries .

© 2020-2025 乐筑天下

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