leizi_y 发表于 2006-12-20 16:36:00

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

我采用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) = ""
    SSet.Select acSelectionSetAll, , , FilterType, FilterData
For Each element In SSet
If (SSet.Item(j).Length =170) Then
      ''''这里是随便处理语句
   End If
Next
在vba中相同的代码(AcadDoc改成ThisDrawing)
当SSET选择集被筛选出来的结果数量达到几百个时,VB中速度慢得让人难以忍受,而VBA中速度相当快。
各位大侠,帮我分析一下,是不是我的思路不对?难道在VB中处理选择集本来就很慢?
真是郁闷啊!!!

zhang007 发表于 2006-12-20 17:07:00

把VB代码封装成DLL

leizi_y 发表于 2006-12-20 17:57:00

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

xianglongg 发表于 2006-12-21 12:51:00

请教一下怎么封装

leizi_y 发表于 2006-12-21 17:02:00

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

mccad 发表于 2006-12-21 21:37:00

VBA是与AutoCAD在同一进程中运行,而VB与AutoCAD则非同一进程运行,速度肯定会比VBA中慢。

leizi_y 发表于 2006-12-22 10:47:00

感谢上面兄弟的回答,我现在的想法是干脆使用VBA,或者直接用VB去控制CAD加载并运行VBA宏算了。
这样简单的多。毕竟我以前的程序就是在VBA下开发的,本来想转移到vb中去,看来难度挺大。
当然我不知道还有没有更好的办法?比如采用其他语言实现?

mccad 发表于 2006-12-22 10:58:00

C#的ARX开发,速度最快

leizi_y 发表于 2006-12-22 13:33:00

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

hhc 发表于 2006-12-25 12:48:00

用VLisp有什么解决不了的问题,而要转到VBA\ARX?
页: [1]
查看完整版本: [求助]采用VB对CAD选择集遍历操作时速度超级慢?