本帖最后由 tigcat 于 2021-7-11 22:01 编辑

都是前辈的程序,拿来组装一下。分享给大家,可能有点用。
  1.           ;图块改名核心程序来自Highflybird
  2.           ;dcl2lsp来自zml84
  3.           ;程序仅作为学习交流使用,感谢各位明经前辈,各著作权归原作者所有,仅进行组装
  4.           ;202107112147修改,感谢各位。

  5. (prompt "在命令行中输入命令: tt4!")
  6. (defun dcl_kk ()
  7.   (setq  dcl_id
  8.    (load_dialog
  9.      (d1dcl)
  10.    )
  11.   )
  12.   (new_dialog "kk" dcl_id)    ;启动dia5a 对话框

  13.   (set_tile "blkname" (cdr (assoc 2 (entget entnam))))
  14.         
  15.   (action_tile "accept" "(ok_kk)(done_dialog 1)")
  16.   (mode_tile "blkname" 2)
  17.   (start_dialog)
  18. )
  19. (defun ok_kk ()
  20.   (setq blkname (get_tile "blkname"))

  21. )


  22. (defun C:tt4 (/ *APP *DOC EntNam NewNam blkname)
  23.   (vl-load-com)
  24.   (setq *APP (vlax-get-acad-object))
  25.   (setq *DOC (vla-get-activeDocument *APP))

  26.   (if (setq EntNam (car (entsel "\n请选择块: ")))
  27.     (if  (dcl_kk)
  28.       (progn
  29.   (setq newnam blkname)
  30.   (change-block-name EntNam NewNam)
  31.       )
  32.       (princ "\n你没有输入新块名!")
  33.     )
  34.     (princ "\n你没有选择实体!")
  35.   )
  36.   (princ)
  37. )
  38. ;;;改块名程序  
  39. (defun change-block-name (EntNam NewNam / obj blocks BlkNam block)
  40.   (setq obj (vlax-ename->vla-object EntNam))
  41.   (setq blocks (vla-get-blocks *DOC))
  42.   (if (= (vla-get-objectname obj) "AcDbBlockReference")
  43.     (if  (tblsearch "block" NewNam)
  44.       (alert "\n和已有块名重复!")
  45.       (progn
  46.   (setq BlkNam (vla-get-name obj))
  47.   (setq block (vla-item blocks BlkNam))
  48.   (vla-put-name block NewNam)
  49.   (if (= (substr BlkNam 1 2) "*U")
  50.     (progn
  51.       (princ "\n这是一个匿名块.")
  52.       (vla-auditinfo *Doc :vlax-true)
  53.       (vla-put-name block NewNam)
  54.     )
  55.   )
  56.   (princ "\n块名已经更改成"")
  57.   (princ NewNam)
  58.   (princ """)
  59.       )
  60.     )
  61.     (princ "\n所选物体不是块!")
  62.   )
  63. )

  64. (defun d1dcl (/ lst_str str file f)
  65.   (setq  lst_str  '("kk:dialog{\t//dia5a为dialog name"
  66.       "label="修改图块名称";//此对话框的总表头"
  67.       ":edit_box{\t//编辑框1"
  68.       "label="输入块的新名称";\t//编辑框提示标签"
  69.       "key="blkname";\t//key值=>DCL对象名称"
  70.       "edit_width=46;\t//编辑框输入区宽度"
  71.       "}"
  72.       ""
  73.       "ok_cancel;\t//确定与取消组合按钮"
  74.       "}\t//退出定义 dia5a"
  75.       ""
  76.      )
  77.   )
  78.   (setq file (vl-filename-mktemp "DclTemp.dcl"))
  79.   (setq f (open file "w"))
  80.   (foreach str lst_str
  81.     (princ "\n" f)
  82.     (princ str f)
  83.   )
  84.   (close f)
  85.   ;;返回
  86.   file
  87. )
  88. (prompt "\n*********<c:tt4>**********")
  89. (princ)





网友答:
26004652 发表于 2025-4-28 18:10
支持楼主好人。太惜不能修改动态块

把52行的(setq BlkNam (vla-get-name obj))改成(setq BlkNam (vla-get-effectivename obj))就支持了

网友答:
kozmosovia 发表于 2025-6-16 16:05
把52行的(setq BlkNam (vla-get-name obj))改成(setq BlkNam (vla-get-effectivename obj))就支持了

好像不支持天正的块命名嘞






    祝愿祖国繁荣昌盛


    网友答: 谢谢分享,下载备用

    网友答: 大师呀,膜拜了。

    网友答: 谢谢楼主分享。

    网友答: 我都是搬运大师程序

    网友答: 谢谢楼主分享, 先收藏

    网友答: 谢谢分享, 学习了

    网友答: 比系统自带的方便多了,自带的还得记住名字

    网友答: 謝謝分享,下載備用

    网友答: 下载备用,谢谢分享
  • 上一篇:水专业系统图三通、变径识别
  • 下一篇:没有了