明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1087|回复: 9

VBA 炸开块出错

[复制链接]
发表于 2015-4-17 17:18:31 | 显示全部楼层 |阅读模式
写了一段VBA 代码,在炸开某些块的时候总是出错,是怎么回事

Private Sub LT_XBlock_Click()
  Me.Hide
  ThisDrawing.Activate
  Dim filtertype(0) As Integer
  Dim filterdata(0) As Variant
  Dim explodedObjects As Variant
  filtertype(0) = 0
  filterdata(0) = "INSERT"
  Set sset = ThisDrawing.SelectionSets.Add("SSETS" & CStr(Now()))
  sset.SelectOnScreen filtertype, filterdata
  If sset.Count < 1 Then
    MsgBox "选取对象为空"
    Exit Sub
  End If
  For Each filterent In sset
    filterent.Explode
    filterent.Delete
  Next
End Sub

本帖子中包含更多资源

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

x
发表于 2015-4-17 22:24:12 | 显示全部楼层
我测试一下你的图,没有发现问题呀,用你的代码也没问题、
只是,有几个变量没定义,是全局变量吗?
发表于 2015-4-17 22:32:34 | 显示全部楼层
出错时,最好给出哪行出错,并且,给出出错的代码和内容描述,这样好让大家帮你
 楼主| 发表于 2015-4-27 13:54:38 | 显示全部楼层
zzyong00 发表于 2015-4-17 22:32
出错时,最好给出哪行出错,并且,给出出错的代码和内容描述,这样好让大家帮你

程序弹出:
运行时错误 '-2145386493
输入无效

点评

按f8运行,看哪行出错  发表于 2015-4-27 17:14
发表于 2015-4-29 11:05:04 | 显示全部楼层
You do not have to explode a block in order to manipulate its constituent entities. All block definitions have an Item method that allow you to manipulate the entities within the block without exploding the block definition itself.
块好像不能分解。
http://www.feizhimeng.com
发表于 2015-4-29 14:57:32 | 显示全部楼层
他炸的不是块吧,是块引用
 楼主| 发表于 2015-5-6 11:53:28 | 显示全部楼层
月牙湾 发表于 2015-4-29 11:05
You do not have to explode a block in order to manipulate its constituent entities. All block defini ...

谢谢,我再研究一下
发表于 2015-5-6 18:13:01 | 显示全部楼层
  1. Private Sub LT_XBlock_Click()
  2.   Me.Hide
  3.   ThisDrawing.Activate
  4.   Dim filtertype(0) As Integer
  5.   Dim filterdata(0) As Variant
  6.   Dim explodedObjects As Variant
  7.   Dim sset As AcadSelectionSet, filterent As AcadBlockReference
  8.   filtertype(0) = 0
  9.   filterdata(0) = "INSERT"
  10.   Set sset = ThisDrawing.SelectionSets.Add("SSETS" & CStr(Now()))
  11.   sset.SelectOnScreen filtertype, filterdata
  12.   If sset.Count < 1 Then
  13.     MsgBox "选取对象为空"
  14.     Exit Sub
  15.   End If
  16.   For Each filterent In sset
  17.     filterent.Explode
  18.     filterent.Delete
  19.   Next
  20. End Sub

你的图,你的代码,没问题,只是少变量定义,我在1楼就说过
 楼主| 发表于 2015-6-4 15:55:45 | 显示全部楼层
月牙湾 发表于 2015-4-29 11:05
You do not have to explode a block in order to manipulate its constituent entities. All block defini ...

您好,这段话的意思是:“你不需要为了调整一个块的组成实体而炸开它,所有的块定义都有一则方法允许你块内调整实体,而不用炸开块参照自身”吗?
 楼主| 发表于 2015-6-4 16:21:37 | 显示全部楼层
zzyong00 发表于 2015-5-6 18:13
你的图,你的代码,没问题,只是少变量定义,我在1楼就说过

你好,谢谢你的回答,我现在发现出问题在于这个块的 XYZ插入比例不一样时出错,如果忽略错误,炸开块就没东西了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 12:38 , Processed in 0.187645 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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