明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4078|回复: 13

对象重命名的奇怪的问题!!!

    [复制链接]
发表于 2007-10-24 13:19 | 显示全部楼层 |阅读模式

已知bn是当前文档中的一个匿名块的块名(比如:“*U112”),nn是新块名(比如:“NewBlock”)

通过以下的代码执行,

   (vla-put-name (vla-item (vla-get-blocks
                              (vla-get-activedocument (vlax-get-acad-object))
                            )
                            bn
                  )
                  nn
    )

完成后,想用 refedit 命令编辑,选择时却提示不能编辑匿名块,我用PROPERTIES命令查看,重命名已经成功,用entget查看块名也没错。

entmod的方法也是如此!!郁闷。。。

更奇怪的是我用block命令另外定义其他图元为 :“NewBlock”却不会提示块名存在,查看一下,一个文件中竟然有重名的两个不同的块。。。

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-10-25 08:09 | 显示全部楼层
一點也不奇怪,在r2006以上修復一下即可
 楼主| 发表于 2007-10-25 09:00 | 显示全部楼层
我用的是2006,用2008打开也是一样,请问版主怎么修复?
发表于 2007-10-25 12:14 | 显示全部楼层
本帖最后由 作者 于 2007-10-25 12:26:12 编辑

http://www.xdcad.net/forum/showthread.php?s=&threadid=519029&perpage=15&display=&pagenumber=1

已知bn是当前文档中的一个匿名块的块名(比如:“*U112”),nn是新块名(比如:“NewBlock”)

通过以下的代码执行,

   (vla-put-name (vla-item (vla-get-blocks
                              (vla-get-activedocument (vlax-get-acad-object))
                            )
                            bn
                  )
                  nn
    )

完成后

修復一下即可


 楼主| 发表于 2007-10-25 13:33 | 显示全部楼层
懂了,其实就是 vla-auditinfo 啊,谢谢!送花!!
发表于 2007-10-25 14:07 | 显示全部楼层
  1. ;;Or you can use copyobjects method
  2. ;;Or you can use copyobjects method
  3. (defun C:AN2N (/ obj bkn)
  4.   (setq obj (vlax-ename->vla-object (car (entsel "\nSelect an anonymous block: "))))
  5.   (setq bkn (getstring "\nEnter new name: "))
  6.   (Anon2Namedblock obj bkn)
  7. )
  8. ;;;
  9. (defun Anon2Namedblock
  10.        (anonblkref bname / doc blks objs idx namedblkdef anonblkde)
  11.   (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  12.   (setq blks (vla-get-blocks doc))
  13.   (setq anonblkdef (vla-item blks (vla-get-name anonblkref)))
  14.   (setq namedblkdef (vla-add blks (vlax-3d-point '(0 0 0)) bname))
  15.   (setq objs (vlax-make-safearray
  16.         vlax-vbobject
  17.         (cons 0 (1- (vla-get-count anonblkdef)))
  18.       )
  19.   )
  20.   (setq idx 0)
  21.   (vlax-for obj anonblkdef
  22.     (vlax-safearray-put-element objs idx obj)
  23.     (setq idx (1+ idx))
  24.   )
  25.   (vla-copyobjects doc objs namedblkdef)
  26.   (vla-put-origin namedblkdef (vla-get-origin anonblkdef))
  27.   (vla-put-name anonblkref bname)
  28. )
 楼主| 发表于 2007-10-26 09:12 | 显示全部楼层
alin 版主的程序虽然不是本帖所要的,却让我学到其他的方面的知识!!受益匪浅!
发表于 2007-10-26 12:19 | 显示全部楼层
本帖最后由 作者 于 2007-10-26 12:21:45 编辑

注意了,对于2006及其以上版本,无名块和普通块之间已经可以用如下方法转化了。

....

;   ConvertToAnonymousBlock ()
;   ConvertToStaticBlock (1)

....

发表于 2007-10-26 12:23 | 显示全部楼层
注意:alin版主程序只改單一圖塊參考,不是改圖塊定義
发表于 2007-10-26 20:43 | 显示全部楼层
龙龙仔发表于2007-10-26 12:23:00注意:alin版主程序只改單一圖塊參考,不是改圖塊定義

呵呵,的确只是再做了一个一模一样的有名块把点选的无名块参照替换了。但如果继续把图档内所有该无名块参照都替换掉了,再把该无名块定义删除,结果是一样的。还是你的办法高明。

highflybir: 我简单试了一下ConvertToStaticBlock,好像结果块定义的原点移位了。 是不是还要变换?

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

本版积分规则

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

GMT+8, 2024-5-21 11:10 , Processed in 0.247165 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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