明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5650|回复: 8

[求助]如何快速创建有名块呀?

[复制链接]
发表于 2009-6-17 20:17:00 | 显示全部楼层 |阅读模式

如何快速创建有名块呀?能不能把下面两个合成一个

(defun C:za (/ E)
  (mc-make-unname-block (ssget))
  (princ)
)

(defun mc-make-unname-block(ss / count entlist ent blk)
 

  (entmake '((0 . "BLOCK")
   (2 . "*u")
     (70 . 1)
     (10 0 0 0)
     ))
  (setq count 0)
  (repeat (sslength ss)
    (setq entlist(entget(setq ent(ssname ss  count))))
    (setq count (1+ count))
    (entmake entlist)
    )
  (setq count 0)
  (repeat(sslength ss)
    (setq ent(ssname ss count))
    (setq count (1+ count))
    (entdel ent)
    )
  (setq blk(entmake '((0 . "ENDBLK"))))
  (if (princ blk)
  (entmake (list (cons 0  "INSERT")
     (cons 2 blk)
     (cons 10 '(0 0 0))
     ))
    )
  blk
  )


 
(defun C:ccc (/ *APP *DOC EntNam NewNam) 
    (vl-load-com) 

    (setq *APP (vlax-get-acad-object)) 
    (setq *DOC (vla-get-activeDocument *APP)) 
    (if (setq EntNam (car (entsel "\n请选择块: "))) 
       (if (null (tblobjname "block" (setq NewNam (rtos (txt-rnd)))))
        (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所选物体不是块!") 
    ) 


  (defun txt-rnd ()         ; 随机名字

  (* (rem (getvar "cputicks") 213) 100)
)

发表于 2009-6-17 22:26:00 | 显示全部楼层
  1. (defun c:tt ()
  2. (setvar "CMDECHO" 0)
  3. (if (and (princ "\n选择建块图元 :")
  4.           (setq ss (ssget))
  5.           (setq pt (getpoint "\n图块插入点 :"))
  6.           (setq bnm (getstring "\n块名 :")))
  7.   (command "-block" bnm pt ss)
  8. )
  9. (setvar "CMDECHO" 1)
  10. (princ)
  11. )
发表于 2009-6-17 22:45:00 | 显示全部楼层
用二楼的代码,创建完了块,但是块本身不显示,不知道为什么啊?
发表于 2009-6-17 23:07:00 | 显示全部楼层
此程序使用选定的对象、插入基准点与提供的名称来定义图块,然后从图面中删除选定的对象。在运行 BLOCK 命令之后,立即输入 OOPS 可以还原删除的对象。
发表于 2009-6-17 23:10:00 | 显示全部楼层

那怎么做成块后让块不消失呢?

 楼主| 发表于 2009-6-18 00:17:00 | 显示全部楼层

怎么做才能不消失呀只是转换为块呀,或者消失了,怎样插入比较简单,刚学不是很明白,能不能说明白上点

(defun c:tt ()
 (setvar "CMDECHO" 0)
 (if (and (princ "\n选择建块图元 :")
          (setq ss (ssget))
         (setq pt (list 0 0))
          (setq bnm  (rtos (txt-rnd))))
  (command "-block" bnm pt ss)
 )
 (setvar "CMDECHO" 1)

 (princ)
)

 (defun txt-rnd ()         ; 随机名字

  (* (rem (getvar "cputicks") 213) 100)
)

发表于 2009-6-18 01:09:00 | 显示全部楼层
如我所说-block制作成图块后,图形会删除~
只要在插入图快就行了~
修改如下~
  1. (defun    c:tt    ()
  2.   (setvar    "CMDECHO"    0)
  3.   (if    (and    (princ    "\n选择建块图元 :")
  4.            (setq ss (ssget))
  5.            (setq pt (getpoint    "\n图块插入点 :"))
  6.            (setq bnm (getstring    "\n块名 :")))
  7.    (command    "-block" bnm pt ss "" "-insert" bnm pt "" "" "")
  8.   )
  9.   (setvar    "CMDECHO"    1)
  10.   (princ)
  11. )
 楼主| 发表于 2009-6-18 07:05:00 | 显示全部楼层

多谢高手高招,终于拔开青天见月明了 ,这 个问题困扰我三天了,在百度左搜右搜,都 是些做无名块的,但无名块不能直接编辑,还得转有名块,相当于直接做有名块的麻烦。再次感谢高手,我还有个想法:

我们一般一个产品投影出来至少三个视图,视图与视图之间都会有个不太小的距离,能不能框选所有视图 ,自动判断这个比较模糊的距离(好像这个判断,比较麻烦,不知道能不能成立)

然后添加至选择集1,2,3~~~,用循环函数比如其它语言的 IF GOTO for do loop, 批量创建块,

块名随机名,插入点0点关系也不会很大为了代码简单。一个框选搞掂一切,期待高手出招吧

发表于 2013-12-20 00:06:07 | 显示全部楼层
最近想写个属性块,偷师来了。谢谢各位前辈。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 01:17 , Processed in 0.184235 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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