housm 发表于 2003-6-2 16:57:00

[求助]关于vba中插入块后出现的问题??

我在编写刀具cad的过程中,将刀具主视图、左视图、廓形图定义为块,然后在块中添加尺寸标注,但在使用insert 插入块以后,生成的图形中不显示块中的尺寸标注,但在插入点却有一个数值为零的尺寸显示,试着用explode方法打散后,可以正确显示图形及尺寸标注。问题按同样的方法(使用EXplode)最后在添加廓形图块的时候,图样中多了一个块参照(插入点处有零尺寸显示),只有在程序执行绘图完毕后,手工才能删除!

在插入块的时候我只执行了一次,为何会出现多余的块参照?如何在程序中解决这问题?可能是何原因导致?

有谁遇到过同样的问题吗?请斑竹和大家不吝赐教!!!!

mccad 发表于 2003-6-2 20:07:00

请参见二次开发栏目中的文章

http://www.mjtd.com/a2/list.asp?id=279

housm 发表于 2003-6-4 08:43:00

谢过斑竹。我的解决方法是这样的……

按照链接中所述方法,可以解决在块中添加尺寸的问题。但如果尺寸较多的话,会比较麻烦。经实验发现,包含尺寸的块在插入以后,显示不正确的问题,基本可以用如下方法解决:
Set blkRef0bj = ThisDrawing.ModelSpace.InsertBlock(insertpt, blockname, xscale, yscale, 1#, rotAngle)
      Dim explode_objs As Variant
      explode_objs = blkRef0bj.Explode
      blkRefObj.Delete
'对于块中有块的情况,可这样解决
      For Each explode_objs In ThisDrawing.ModelSpace
            If TypeOf explode_objs Is AcadBlockReference Then
               'explode_objs.Explode
                  explode_objs.Delete
            End If
            If TypeOf explode_objs Is AcadBlock Then
               'explode_objs.Explode
                  explode_objs.Delete
            End If
      Next
仅供参考。

mccad 发表于 2003-6-5 19:54:00

这种方法不太好吧,把标注对象都给分解开了

arej 发表于 2003-6-5 20:48:00

Re:关于vba中插入块后出现的问题

housm兄:在插入块的时候只执行了一次,而出现多余的块参照,我估计是你的块在插入前有一个定义块的过程。可以在该过程中加入一个判断语句:如果块集合中已经有了需要的块,就跳过块定义的过程,直接引用已有的块。

housm 发表于 2003-6-28 14:15:00

谢谢!

页: [1]
查看完整版本: [求助]关于vba中插入块后出现的问题??