资源下载

当前位置:首页>资源下载

【源码分享】CAD中匿名块转普通块,普通转匿名块,一键实现匿名块与普通块互转

时间:2026-08-19   访问量:1046
之前分享过普通块、插入块、动态块、增强属性块。特殊的有匿名块、外部参照裁剪匿名块的相关知识,一般情况下修改一个图块的块名,使用rename命令即可。但存在的问题是,若dwg中有很多个图块时,不方便查找到对应的图块,另外就是无法将匿名块转为普通块。

图片

图片

如上图所示,这是一个块名为“555”的普通块,点击壹加工具箱中的”匿名有名互转“,然后选择该图块,就会将这个普通块转成”*U3“这样的的匿名块。

图片

再点一次”匿名有名互转“按钮,输入新的块名,即可将匿名块转为有名块。

图片

以上就是壹加工具箱中的匿名有名互转功能。如果只是临时使用一下,可以使用下面的lsp源码来实现

(defun C:YJ (/ *APP *DOC EntNam NewNam)
    (princ "\n输入YJ命令修改块名。壹加工具箱")
    (vl-load-com)
    (setq *APP (vlax-get-acad-object))
    (setq *DOC (vla-get-activeDocument *APP))
    (if (setq EntNam (car (entsel "\n请选择块: ")))
      (if (setq NewNam (getstring "\n请输入新块名<字符规范,不要重名>: "))
        (change-block-name EntNam NewNam)
        (princ "\n你没有输入新块名!")
      )
      (princ "\n你没有选择物体!") 
    )
    (princ)
)
;;;改块名程序  
(defun change-block-name (EntNam NewNam / obj blocks BlkNam block)
    (setq obj (vlax-ename->vla-object EntNam))
    (setq blocks (vla-get-blocks *DOC)) 
    (if (=(vla-get-objectname obj) "AcDbBlockReference")
      (if (tblsearch "block" NewNam)
        (princ "\n和已有块名重复!")
        (progn  
          (setq BlkNam (vla-get-name obj))
          (setq block  (vla-item blocks BlkNam))
          (vla-put-name block NewNam)
          (if (= (substr BlkNam 1 2) "*U")
            (progn   
              (princ "\n这是一个匿名块.")
              (vla-auditinfo *Doc :vlax-true)
              (vla-put-name block NewNam)
            )
          )
          (princ "\n块名已经更改成\"")
          (princ NewNam)
          (princ "\"")
        )
      )
      (princ "\n所选物体不是块!")
    )
)


上一篇:VS2017下解决:无法解析的外部符号___vsnprintf

下一篇:没有了!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部