找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1005|回复: 11

[求助]:块引用的删除问题

[复制链接]
发表于 2002-10-17 11:06:29 | 显示全部楼层 |阅读模式

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

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

×
删除块前,应先删除块的引用,怎样查找块的引用?
我只能找到块,可不知它在那被引用!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-10-25 15:55:22 | 显示全部楼层
以下是我写的一个函数。   

  1.   [FONT=courier new]
  2. '检查块引用是否存在
  3. '输入:Name-块名
  4. '输出:BlockRefExist,TRUE时存在块引用
  5. Public Function BlockRefExist(ByVal Name As String) As Boolean
  6.     BlockRefExist = False
  7.     Dim EntObj As AcadEntity
  8.    
  9.     On Error GoTo ErrTrap
  10.     If Name = "" Then Exit Function
  11.     For Each EntObj In ThisDrawing.ModelSpace
  12.        If StrComp(EntObj.ObjectName, "AcDbBlockReference", vbTextCompare) = 0 Then
  13.           If StrComp(EntObj.Name, Name, vbTextCompare) = 0 Then
  14.              BlockRefExist = True
  15.              Exit For
  16.           End If
  17.        End If
  18.     Next
  19.     Set EntObj = Nothing
  20.     Exit Function
  21.    
  22. ErrTrap:
  23.     If Not (EntObj Is Nothing) Then Set EntObj = Nothing
  24.     On Error GoTo 0
  25. End Function
  26.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-17 11:29:37 | 显示全部楼层

Re: [求助]:块引用的删除问题

最初由 indal 发布
[B]删除块前,应先删除块的引用,怎样查找块的引用?
我只能找到块,可不知它在那被引用! [/B]


你应该遍历当前空间所有对象,查找INSERT,判断是否引用了测试的块。

因为块可以嵌套定义,所以除了当前空间遍历外,还应该遍历所有的块表记录(其他BLOCK),查看其他BLOCK里面是否引用了测试的块。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-17 11:45:46 | 显示全部楼层
查找INSERT
不太理解
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-17 11:49:42 | 显示全部楼层
最初由 indal 发布
[B]查找INSERT
不太理解 [/B]


单独的BLOCK定义不能显示,只有被AcDbBlockReference 对象(DXF名为INSERT)引用添加到模型空间或者图纸空间中才能显示。

AcDbBlockReference 就是我们用ACAD的INSERT命令插入到图中后的块实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-17 11:57:18 | 显示全部楼层
明白
多谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-17 12:02:29 | 显示全部楼层
最初由 indal 发布
[B]明白
多谢! [/B]


代码写好后,贴论坛来吧,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-19 18:12:16 | 显示全部楼层

剑不如人

XD,sorry! 试着写,可实在水平有限--剑不如人!呵呵!
AcDbBlockReference 对象(DXF名为INSERT),请问块名为"myblock"的块引用,其DXF组码是什么?

当前空间遍历--怎样判断它是块引用而不是一个圆呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-19 18:17:28 | 显示全部楼层

Re: 剑不如人

最初由 indal 发布
[B]XD,sorry! 试着写,可实在水平有限--剑不如人!呵呵!
AcDbBlockReference 对象(DXF名为INSERT),请问块名为"myblock"的块引用,其DXF组码是什么?

当前空间遍历--怎样判断它是块引用而不是一个圆呢? [/B]


实体类型的组码是0,看下面:


  1. [FONT=courier new]
  2. (entget (entlast))
  3. ((-1 . <图元名: 40187030>) [color=blue](0 . "INSERT") [/color](330 . <图元名: 40171cf8>) (5 . "86")
  4. (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
  5. "AcDbBlockReference") (2 . "a") (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 .
  6. 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))[/FONT]
复制代码


如果是园的话,看下面:


  1. [FONT=courier new]
  2. 命令: (entget (entlast))
  3. ((-1 . <图元名: 40187008>) [color=blue](0 . "CIRCLE") [/color](330 . <图元名: 40171cf8>) (5 . "81")
  4. (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbCircle")
  5. (10 279.074 147.572 0.0) (40 . 11.4003) (210 0.0 0.0 1.0))
  6. [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-19 21:06:23 | 显示全部楼层
VARIANT vtfiltertype,vtfilterdata;
        vtfiltertype.vt=VT_I2;
        vtfiltertype.iVal=0;
        vtfilterdata.vt=VT_BSTR;
        vtfilterdata.bstrVal=_bstr_t("INSERT");
        m_acadselection.SelectOnScreen(vtfiltertype,vtfilterdata);

出错,无效参数FilterType在SelectionOnScreen
long,short,float,double,ushort,ulong,int,uint都试了,就是了错
这是为什么呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-19 21:13:53 | 显示全部楼层
const VARIANT& FilterType  是什么数据类型呢?
在VBA帮助中是这样的:
FilterType
Integer; input-only; optional
A DXF group code specifying the type of filter to use.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2020-6-24 13:13:28 | 显示全部楼层
efan2000 发表于 2002-10-25 15:55
以下是我写的一个函数。

收藏一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 00:16 , Processed in 0.442011 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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