mikewolf2k 发表于 2005-6-8 21:08:00

关于插入图块的问题

自编的dll文件,采用后期绑定。为了增强兼容性,我插入图块的代码是这样的:


                       If acadapp.Version &lt; 15 Then<BR>                                               Set blockrefobj = acadapp.ActiveDocument.ModelSpace.InsertBlock(InsertionPoint, "block", 1, 1, 0)<BR>                               Else<BR>                                               Set blockrefobj = acadapp.ActiveDocument.ModelSpace.InsertBlock(InsertionPoint, "block", 1, 1, 1, 0)<BR>                       End If


原来这样编的dll文件经acad R14~2005测试过,是通过的。但是最近发现,同样这样编写的dll,在某些机器上(2002)却出现了错误,不能插入,不知何故?<BR>

xxsheng 发表于 2005-6-9 08:57:00

如果原来通过的话,那就是路径问题了,估计出错的机器上面的支持路径里面没有找到含有block名称的文件,,,,,,,,,,,而且上面的条件判断是不是有问题?因为判断以后其实两个语句根本没有什么不同???

今晚打老虎 发表于 2005-6-9 09:48:00

Version 属性是个String型的,我这里你的这几句在2004下就过不去。是不是在R14以前这个属性是数字的?

mikewolf2k 发表于 2005-6-9 21:18:00

首先,插入的图块是图内的块,不存在找不到的问题。两个语句参数数目不同。


以前在14~2005下试过,是可以正确执行的。现在至少在我机器上的2000下可执行,在有些2002下不能执行(也有2002下能执行的)。2000和2002其实是一个版本,代码应该都是一样的。楼上老兄,你2004下不能通过吗?什么症状?如果前面加上on error resumn next呢?string型也可以比较大小,14&lt;15,a&lt;b。

今晚打老虎 发表于 2005-6-10 18:13:00

没有症状,编译不过去。

mikewolf2k 发表于 2005-6-10 19:20:00

编译?在vb中?要引用acad库。肯定可以编译的,我现在就编译出来了(VB5+ACAD2000)

今晚打老虎 发表于 2005-6-13 10:30:00

sorry,我是在vba下试的,类型不匹配。


在vb下我没用2000,用vb6+acad2004在Set blockrefobj = acadapp.ActiveDocument.ModelSpace.InsertBlock(InsertionPoint, "block", 1, 1, 0)<BR>这个地方编译不过去,提示缺少参数。

mikewolf2k 发表于 2005-6-14 19:25:00

先判断acad版本,2000以上(&gt;=15)调用的是else部分 "block",1,1,1,0
页: [1]
查看完整版本: 关于插入图块的问题