明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: G〆h

[源码] 图块重命名(支持天正图块、动态块)

    [复制链接]
发表于 2019-1-4 19:12 | 显示全部楼层
G〆h 发表于 2019-1-3 15:09
只要是同一块,改的话一起变啊!你的意思是让当前块变成独立块,其它块名不变吗?

对,是的
发表于 2019-1-5 12:03 | 显示全部楼层
有需要的就是好东西,先下载备着。
发表于 2019-1-18 00:14 | 显示全部楼层
本帖最后由 KO你 于 2019-2-18 16:06 编辑

能把图层重命名像楼主的改块名一样编一个吗
获取图层原名,对话框模式,再改图层名


快捷键  de  图层重命名
(defun C:de ()
  (princ "\n功能:快速更改图层名。")
  (setvar "cmdecho" 0)
  (initget "D S")
  (if (not (setq kw
                  (getkword
                    "\n选择方式:[更改当前图层名(D)/更改所选图元所在图层的名称(S)]<S>"
                  )
           )
      )
    (setq kw "S")
  )
  (if (= kw "D")
    (setq laynam (getvar "CLAYER"))        ;获取当前图层
    (progn
      (setq ent           (entsel "\n请选择需要修改图层名的图元对象:")
            entnam (car ent)
            entdat (entget entnam)
      )
      (setq laynam (cdr (assoc 8 entdat))) ;获取所选图元的图层名
    )
  )
  (setq        newlaynam
         (getstring (strcat "\n请输入新的图层名:"))
  )                                        ;输入新的图层名
  (if (and (not (tblsearch "LAYER" newlaynam)) (/= laynam "0"))
                                        ;若新图层名与图档中的图层名未重名,且对象图层不是0图层时;那么执行更改图层名
    (command "rename" "la" laynam newlaynam)
    (progn (princ "\n所选当前层可能为0图层或者图层名与已有的图层名相重复,程序无效。\n")
           (exit)
    )
  )
  (princ))
发表于 2019-1-18 09:31 | 显示全部楼层
本帖最后由 mokson 于 2020-8-24 16:45 编辑

正好需要,谢谢。

 楼主| 发表于 2019-2-4 13:58 | 显示全部楼层
KO你 发表于 2019-1-18 00:14
能把图层重命名像楼主的改块名一样编一个吗
获取图层原名,对话框模式,再改图层名

改进些程序,更快捷点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2019-2-5 20:28 | 显示全部楼层
;;==============改名复制=================
(defun c:BC (/ E EL OBJ NAME BLOCKS DOC BLKDEFSRC OBJS BLKDEF orign)  (if (and (setq e (car (entsel "\n选择图块:")))
           (setq el (entget e))
           (= "INSERT" (cdr (assoc 0 el)))
           (setq obj (vlax-ename->vla-object e))
           (setq name (getstring "\n新块名称:"))
           (/= "" name)
      )
    (progn (setq blocks           (vla-get-blocks
                             (setq
                               doc (vla-get-ActiveDocument (vlax-get-acad-object))
                             )
                           )
                 blkdefSrc (vla-item blocks (cdr (assoc 2 el)))
                 orign (vla-get-Origin blkdefSrc)
           )
           (vlax-for o blkdefSrc (setq objs (cons o objs)))
           (if (VL-CATCH-ALL-ERROR-P
                 (setq
                   blkdef (VL-CATCH-ALL-APPLY 'vla-item (list blocks name))
                 )
               )
             (setq blkdef (vla-add blocks orign name))
             (vlax-for o blkdef (vla-delete o))
           )
           (vla-CopyObjects
             doc
             (vlax-safearray-fill
               (vlax-make-safearray
                 vlax-vbObject
                 (cons 0 (1- (length objs)))
               )
               objs
             )
             blkdef
           )
           (vla-InsertBlock
             (vla-get-ModelSpace doc)
             (vla-get-InsertionPoint obj)
             name
             (vla-get-XScaleFactor obj)
             (vla-get-YScaleFactor obj)
             (vla-get-ZScaleFactor obj)
             (vla-get-Rotation obj)
           )
           (vla-delete obj)
    )
  )
  (princ)
)

;先放上块的改名复制,等有时间再改成对话框的方式
发表于 2019-2-12 14:01 | 显示全部楼层
先收藏起来~~
发表于 2019-2-13 12:31 | 显示全部楼层
G〆h 发表于 2019-2-4 13:58
改进些程序,更快捷点

谢谢楼主,正是我需要的效果
发表于 2019-2-13 13:11 | 显示全部楼层
快捷键  cd  改图层颜色
(defun c:cd()
(setvar "cmdecho" 0)
(setq lay(cdr (assoc 8 (entget (car (entsel "\n 请选取要修改颜色的图层对象:"))))))
;(setq ss (ssget))
;(if ss (progn
(setq colour (getstring "\n请输入颜色号<1-255>:"))
(command "-layer" "c" colour lay ""))
(setvar "cmdecho" 1)
(princ)

请求大师修编一个像获取修改块名和图层名的对话框模式修改图层的颜色和替代颜色

示意图地址http://bbs.mjtd.com/thread-178999-1-1.html
发表于 2019-6-20 10:49 | 显示全部楼层
可以增加选项,改单块或全部同名块吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 08:56 , Processed in 0.241213 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表