找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2387|回复: 10

[求助] [求助]:如何将图块文件插入后使其为无名块(如何将有名块变为无名块)?

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2003-8-15 13:54:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我有一个图块,将其存为块文件后,当我用insert块插入命令插入后,块名为文件名,但我想使其为无名块,该如何进行哟?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-8-15 15:16:11 | 显示全部楼层

Re: [求助]:如何将图块文件插入后使其为无名块(如何将有名块变为无名块)?

最初由 netbee 发布
[B]我有一个图块,将其存为块文件后,当我用insert块插入命令插入后,块名为文件名,但我想使其为无名块,该如何进行哟? [/B]

  1. (defun c:ttest (/ tt apple_sel apple_nnblk)
  2. (vl-load-com)
  3.   (setq tt t)
  4.    (while tt
  5.      (setvar "errno" 0)
  6.      (setq apple_sel (entsel "\n选择要改为匿名块的图块: ")
  7.            )
  8.      (if (/= (getvar "errno") 7)
  9.       (setq tt nil)
  10.        )
  11.      )
  12. (setq apple_nnblk (vlax-ename->vla-object(car apple_sel)))
  13. (if (= (vla-get-objectname apple_nnblk) "AcDbBlockReference")
  14.   (progn
  15.     (vla-put-name
  16.       (vla-item (vla-get-blocks
  17.                        (vla-get-activedocument (vlax-get-acad-object))
  18.                      )
  19.                 (vla-get-name apple_nnblk)
  20.                 )
  21.         "*U"            
  22.       )  
  23.     )   
  24.   (princ "\n######---选择物体非块---######")
  25.    )
  26.     (princ)
  27.         )             
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-16 01:24:00 | 显示全部楼层
倒过来,无名块改名

  1. (defun c:blkname (/ a blk blks name new)
  2.   (prompt "\n请选择图块")
  3.   (if (and
  4.         (setq a (car (entsel)))
  5.         (setq name (cdr (assoc 2 (entget a))))
  6.         (setq new (getstring "\new-name:"))
  7.         (setq blks (vla-get-blocks (vla-get-activedocument
  8.                         (vlax-get-acad-object)
  9.                                    )
  10.                    )
  11.         )
  12.         (not (tblsearch "block" new))
  13.       )
  14.     (progn
  15.       (setq blk (vla-item blks name))
  16.      (command"undo""group")
  17.       (vla-put-name blk new)
  18.      ; (vla-update blk)
  19.     (command"undo""end")
  20.     )
  21.   )
  22. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-16 10:20:52 | 显示全部楼层
AEO这样改名字好像不能起到真正的改名的作用,双击编辑时候还是提示匿名块,我还没有想出真正用ACTIVEX的方法完全把匿名块变为插入块的方法,现在只知道对块重定义管用,但又不知道控制BLOCK的:转化为块、保留、删除怎么控制?另外程序的vla-update应该是(vla-update obj),应该改为(vla-update (vlax-ename->vla-object a))吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-17 12:49:36 | 显示全部楼层
我机器上很好呀. 双击和ddinsert里都是新的名字.
(vla-update blk),好像可以不要,不过昨天是试的好好的.(我还看着它闪了一下.)
不过上面的blk确实是object。


现在用undo取代.没undo用其他的如"晓东"要出错.
但是自己制造一个随便的错误就不出错了,不知是为什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-18 11:04:12 | 显示全部楼层
Update Method
Updates the object to the drawing screen.
Signature
object.Update  
Object        Application, All Drawing Objects, AttributeRef The object or objects this method applies to.

即Update Method對AcadBlockReference才會有效, 對AcadBlock無效。

;;思路: ACTIVEX的方法
;;1.把匿名块改名称。
;;2.建立一个图块定义,名称及内含对象与修改后的匿名块相同。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-18 14:20:38 | 显示全部楼层
最初由 LUCAS 发布
[B]Update Method
Updates the object to the drawing screen.
Signature
object.Update  
Object        Application, All Drawing Objects, AttributeRef The object or objects this method applies to.

即Update Me... [/B]

LUCAS,你说的是这样么:

  1. (defun c:ttest1 (/ tt apple_sel apple_nnblk inspt)
  2. (vl-load-com)
  3.   (setq tt t)
  4.    (while tt
  5.      (setvar "errno" 0)
  6.      (setq apple_sel (entsel "\n选择要改为匿名块的图块: ")
  7.            )
  8.      (if (/= (getvar "errno") 7)
  9.       (setq tt nil)
  10.        )
  11.      )
  12. (setq apple_nnblk (vlax-ename->vla-object(car apple_sel)))
  13. (if (= (vla-get-objectname apple_nnblk) "AcDbBlockReference")
  14.   (progn

  15. (setq inspt (vlax-safearray->list
  16. (vlax-variant-value(vla-get-InsertionPoint apple_nnblk)
  17.   )
  18. )         
  19.        )
  20. (vla-put-name
  21.       (vla-item (vla-get-blocks
  22.                        (vla-get-activedocument (vlax-get-acad-object))
  23.                      )
  24.                 (vla-get-name apple_nnblk)
  25.                 )
  26.         "0"            
  27.       )  

  28. (command ".block" "0" inspt apple_sel "")
  29. (command ".oops")
  30. )
  31.   (princ "\n######---选择物体非块---######")

  32. )
  33.   (princ)
  34. )


还是无法解决图形中的图块转化后直接存在在块列表中直接可以用REFEDIT进行编辑:(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2003-8-18 14:23:04 | 显示全部楼层
我根据楼上的改成了函数:
不知行不行?

  1. ;;;===========================
  2. ;;将已知图块变为无名块并返回新无名块名*U____
  3. ;;BLK 已知图块名
  4. ;;num 无名块索引名
  5. ;;图中有"test"块时(ReBlock "test") 返回:*U1
  6. ;;图中无"tset"块时(ReBlock "tset") 返回:nil

  7. (defun ReBlock (BLK / BLKDEF  num)
  8.   (if (tblobjname "BLOCK" BLK)
  9.     (progn
  10.       (setq BLKDEF (vla-item
  11.                      (vla-get-blocks
  12.                        (vla-get-activedocument (vlax-get-acad-object))
  13.                      )
  14.                      BLK
  15.                    )
  16.       )
  17.       (vla-put-name BLKDEF "*U")
  18.       (setq
  19.         num (CDR (ASSOC 2 (ENTGET (vlax-vla-object->ename Blkdef))))
  20.       )
  21.       (vlax-release-object BLKDEF)
  22.       num
  23.     )
  24.     (not t)
  25.   )
  26. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-18 17:05:18 | 显示全部楼层
snsj兄:

;;思路: 把匿名块改回正常图块
;;1.取得匿名块内对象集
;;2.把匿名块改名称。
;;3.建立一个正常图块定义
;;4.把1项中对象加入至新建立的图块定义中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-15 09:18:47 | 显示全部楼层
用了你上面的程序,把正常图块变匿名块可以,但反过来就不可以~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-26 13:44:02 | 显示全部楼层
用了你上面的程序,把正常图块变匿名块可以,但反过来就不可以:在特性框里是看到名字变了,但想插入时找不到该名字的块。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 20:57 , Processed in 0.191696 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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