明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5074|回复: 9

[求助]采用VB对CAD选择集遍历操作时速度超级慢?

[复制链接]
发表于 2006-12-20 16:36:00 | 显示全部楼层 |阅读模式

我采用VB对CAD选择集遍历操作,但时速度超级慢。

而在VBA下面直接操作速度很快。

同样的操作,为啥速度差这么多呢?

vb中主要相关代码如下:

    Set SSet = AcadDoc.SelectionSets.Add("Example")
    Dim FilterType(0 To 3) As Integer
    Dim FilterData(0 To 3) As Variant
    FilterType(0) = -4
    FilterData(0) = "<or" 
    FilterType(1) = 0
    FilterData(1) = "LINE"
    FilterType(2) = 0
    FilterData(2) = "LWPOLYLINE"
    FilterType(3) = -4
    FilterData(3) = "or>"  

    SSet.Select acSelectionSetAll, , , FilterType, FilterData 

For Each element In SSet
If (SSet.Item(j).Length <= 200) And (SSet.Item(j).Length >=170) Then

      ''''这里是随便处理语句
   End If
Next

在vba中相同的代码(AcadDoc改成ThisDrawing)

当SSET选择集被筛选出来的结果数量达到几百个时,VB中速度慢得让人难以忍受,而VBA中速度相当快。

各位大侠,帮我分析一下,是不是我的思路不对?难道在VB中处理选择集本来就很慢?

真是郁闷啊!!!

发表于 2006-12-20 17:07:00 | 显示全部楼层
把VB代码封装成DLL
 楼主| 发表于 2006-12-20 17:57:00 | 显示全部楼层

封装成dll就能快吗?   封装成dll后在哪里调用?  在VBA中?   我就是不想使用VBA才在VB中编的。

发表于 2006-12-21 12:51:00 | 显示全部楼层
请教一下怎么封装
 楼主| 发表于 2006-12-21 17:02:00 | 显示全部楼层

还有一点:是不是封装成dll一定能提高速度?

发表于 2006-12-21 21:37:00 | 显示全部楼层
VBA是与AutoCAD在同一进程中运行,而VB与AutoCAD则非同一进程运行,速度肯定会比VBA中慢。
 楼主| 发表于 2006-12-22 10:47:00 | 显示全部楼层

感谢上面兄弟的回答,我现在的想法是干脆使用VBA,或者直接用VB去控制CAD加载并运行VBA宏算了。

这样简单的多。毕竟我以前的程序就是在VBA下开发的,本来想转移到vb中去,看来难度挺大。

当然我不知道还有没有更好的办法?比如采用其他语言实现?

发表于 2006-12-22 10:58:00 | 显示全部楼层
C#的ARX开发,速度最快
 楼主| 发表于 2006-12-22 13:33:00 | 显示全部楼层

我试试看看ARX,需要现学一把ARX。唉,命苦阿。从LISP到VBA到VB到ARX都要学一遍,试一遍,真的很无奈阿。

发表于 2006-12-25 12:48:00 | 显示全部楼层
用VLisp有什么解决不了的问题,而要转到VBA\ARX?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 03:33 , Processed in 0.174120 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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