明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1038|回复: 9

如何重新定义块或者删除块

[复制链接]
发表于 2016-10-23 21:05 | 显示全部楼层 |阅读模式
刚用VB开发CAD,刚学会创建块
Dim block1 As AcadBlock
''''block1.Delete
Set block1 = ThisDrawing.Blocks.Add(pnt, "耳座1")
ThisDrawing.CopyObjects obj, block1
For i = 0 To 6
obj(i).Delete
Next i
Set oj = ThisDrawing.ModelSpace.InsertBlock(pnt, "耳座1", 1, 1, 1, 0)

问题是第一次运行能成功,可是图中已经存在这个块名后,程序再次运行,这块中的内容越来越多,如何重新定义此块,还是用这个名字。下次运行可能obj中的元素变化了
发表于 2016-10-23 22:14 | 显示全部楼层
块在图形中没参照,可以删掉,如果有,不能删掉
如果想重定义块,就是正常的修改块就行了
 楼主| 发表于 2016-10-24 14:07 | 显示全部楼层
如何判断图中存不存在某个块
If Not ThisDrawing.Blocks(耳座1) Is Nothing Then
Call remove_block("耳座1")
ThisDrawing.Blocks("耳座1").Delete
End If
Set block1 = ThisDrawing.Blocks.Add(pnt, "耳座1")

If Not ThisDrawing.Blocks(耳座1) Is Nothing Then 这句话有什么毛病?首次打开图形图中无块的时候就块出错,要加on error语句,图中有块就不出错了,为什么
发表于 2016-10-24 21:39 | 显示全部楼层
你没弄明白块和块参照
 楼主| 发表于 2016-10-24 22:10 | 显示全部楼层
块和块参照应该明白了,有参照提示无法删除,所以我才建了个删除原先块的子程序,call remove以上代码在运行一次只要图中存在块就正常了,
关键是首次运行时因为图中不存在块,所以在执行ThisDrawing.Blocks("耳座1").Delete出错,非要on error resume next才能正常运行。

我的意思是If Not ThisDrawing.Blocks(耳座1) Is Nothing Then这句代码错了。不知用empty 还是null等..
发表于 2016-10-24 22:57 来自手机 | 显示全部楼层
set blk = thisdrawing.blocks("xx") 不用判断是否存在 在这里捕捉错误就行了 不存在就添加 存在就清除块定义中的实体
发表于 2016-10-30 19:53 | 显示全部楼层
没有调试,
  1. Function GetBlock(ByVal name As String) As AcadBlock
  2. On Error Resume Next
  3.     ThisDrawing.Blocks(name).Delete
  4.     If Err Then
  5.         Err.Clear
  6.         Dim pt(0 To 2) As Double
  7.         Set GetBlock = ThisDrawing.Blocks.Add(pt, name)
  8.     Else
  9.         Set GetBlock = ThisDrawing.Blocks(name)
  10.         For Each obj In GetBlock
  11.             obj.Delete
  12.         Exit For
  13.     End If
  14. End Function
 楼主| 发表于 2016-10-30 22:49 来自手机 | 显示全部楼层
谢谢飞狐兄弟,这个问题我早已经解决了,我的本意是有没有一个指令来判断是否存在块,我上面用了多句话
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 13:05 , Processed in 0.337244 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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