明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1953|回复: 5

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

[复制链接]
发表于 2003-6-2 16:57 | 显示全部楼层 |阅读模式
我在编写刀具cad的过程中,将刀具主视图、左视图、廓形图定义为块,然后在块中添加尺寸标注,但在使用insert 插入块以后,生成的图形中不显示块中的尺寸标注,但在插入点却有一个数值为零的尺寸显示,试着用explode方法打散后,可以正确显示图形及尺寸标注。问题按同样的方法(使用EXplode)最后在添加廓形图块的时候,图样中多了一个块参照(插入点处有零尺寸显示),只有在程序执行绘图完毕后,手工才能删除!

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

有谁遇到过同样的问题吗?请斑竹和大家不吝赐教!!!!
发表于 2003-6-2 20:07 | 显示全部楼层

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

http://www.mjtd.com/a2/list.asp?id=279
 楼主| 发表于 2003-6-4 08:43 | 显示全部楼层

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

按照链接中所述方法,可以解决在块中添加尺寸的问题。但如果尺寸较多的话,会比较麻烦。经实验发现,包含尺寸的块在插入以后,显示不正确的问题,基本可以用如下方法解决:
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
仅供参考。
发表于 2003-6-5 19:54 | 显示全部楼层

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

发表于 2003-6-5 20:48 | 显示全部楼层

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

housm兄:在插入块的时候只执行了一次,而出现多余的块参照,我估计是你的块在插入前有一个定义块的过程。可以在该过程中加入一个判断语句:如果块集合中已经有了需要的块,就跳过块定义的过程,直接引用已有的块。
 楼主| 发表于 2003-6-28 14:15 | 显示全部楼层

谢谢!

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

本版积分规则

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

GMT+8, 2024-6-29 12:51 , Processed in 0.151635 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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