yansike 发表于 2005-6-20 11:40:00

关于VB中炸开块的问题!!

我的程序发下:


Private Sub Command4_Click()                        <BR>                       For Each Ent In AcadDoc.ModelSpace<BR>                                                       If Ent.ObjectName = "AcDbBlockReference" Then<BR>                                                                                       ExpBlock Ent<BR>                                                       End If<BR>                       Next


End Sub


Sub ExpBlock(ByVal Temp1 As AcadBlockReference)<BR>                       Dim i, objs<BR>                       Temp1.Explode       //这里报错!!!<BR>                       .......<BR>End Sub


yansike 发表于 2005-6-20 15:18:00

高手都哪去了?怎么没人会啊?

雪山飞狐_lzh 发表于 2005-6-20 15:28:00

很长时间没用VB了,把代码转到VBA里看看会不会出错,代码好像没什么问题,图形文件可以贴上看看么?

cobalt 发表于 2005-6-20 15:39:00

将ExpBlock中的ByVal变为ByRef试一试?

wyj7485 发表于 2005-6-20 16:49:00

该代码在VBA中运行正常啊!

yansike 发表于 2005-6-21 11:59:00

谢谢大家,我发现是图的原因,自己作个块就没事!!我的目的是把块打散,然后修改打散后的对象的属性,再重新组合成块,大家能提供一个思路吗!我刚这个不久!

雪山飞狐_lzh 发表于 2005-6-21 13:09:00

修改块的属性不用打散,用GetAttributes 方法获取块的属性数组,再修改

yansike 发表于 2005-6-21 15:08:00

我以前也试过GetAttributes ,发现返回的是空,而我打散后在Autocad里查看了该块有37个对象组成的!我现在要把这37个对象的图层全部改掉!!

yansike 发表于 2005-6-21 15:30:00

高手帮忙啊!!这个东西搞了一个星期了,我都要自杀了!

雪山飞狐_lzh 发表于 2005-6-21 20:57:00




修改块引用对应的块定义


使用


for each i in thisdrawing.blocks(objblkref.name)


i.layer=sLayer


next i
页: [1] 2
查看完整版本: 关于VB中炸开块的问题!!