neyton 发表于 2015-11-9 13:05:30

ZWCAD选择集错误

我对ZWCAD 2015中的选择集有问题。
它在执行以下操作时总是返回状态错误:

    Public Sub teste()
      For i = 0 To 100
            Dim ss = ED.SelectAll(New SelectionFilter({New TypedValue(DxfCode.Start, "LWPOLYLINE"),
                                                    New TypedValue(DxfCode.LayerName, "quadra")}))
            If ss.StatusPromptStatus.OK Then
                MsgBox(ss.Status.ToString & vbNewLine & "i=" & i)
                Exit Sub
            End If
      Next
    End Sub

在autocad或gstarcad中,运行时无错误(无消息框)。为什么?
**** Hidden Message *****

neyton 发表于 2015-11-9 18:59:06

你需要和他们在一起吗?此外,您的messagebox将只显示是否有错误。只要没有错误,子程序就会结束而不打印任何东西。您可能需要将更改为a =,   。
公共子测试()。
对于i = 0到100 。
Dim ss = ED,select all(New selection filter({ New typed value(DXF code,运算符,“。
新类型值(DxfCode,Start," LWPOLYLINE "),。
新类型值(DxfCode,LayerName," quadra"。
新类型值(DxfCode,运算符," and > ")))。
如果ss,状态提示状态,那好吧。
MsgBox(ssstatus . ToString & VB newline & " I = " & I)。
退出Sub。
结束If。
下一步。
结束Sub。

MexicanCustard 发表于 2015-11-10 07:12:13

嗨,我做了这些更改,但错误仍然存在
调用“teste”命令三次:
第一次运行时,正常
第二次运行时,显示值大于0的消息框
第三次,显示值为0的消息框

neyton 发表于 2015-11-10 07:30:59

为什么要在循环内部选择滤波? 对于循环的每次迭代,结果都是相同的。您可以从现在循环到无穷大,结果将始终与第一次迭代相同。
错误是什么?
它在哪条线上崩溃?

MexicanCustard 发表于 2015-11-10 09:58:17

此代码仅用于显示问题
连续运行三次时,应在不显示任何消息的情况下完成运行,假设“四边形”层中有多段线。创建一些多段线并将图层设置为“四边形”,然后进行测试
但是,要第二次调用命令“teste”,它显示了与过滤器匹配的对象数相比较小的数字
第三次运行同一命令“teste”时,会显示一条带有“i=0”的消息。这意味着,尽管层“quadra”中有多段线,“SelectAll”失败
我有一个程序运行了多次“SelectAll”,但程序运行不正确,因为“SelectAll”在第一次调用后不起作用。

neyton 发表于 2015-11-12 07:43:01

我没有ZWCAD来测试这一点,所以我不得不相信你的话。您可能已经发现了ZWCAD开发团队应该研究的错误。也许你应该向他们展示这些结果<不过,我看不出他们会马上修好它。只要它在第一次迭代中始终有效,该错误就永远不会成为开发人员的问题。我看不出你发布的代码会在生产中使用。

neyton 发表于 2015-11-12 12:25:46

Hi,
现在正在工作:
ZWCAD同时只能有255个选择集,所以当不再需要一个选择集时,开发人员应该调用它的Dispose()方法来释放这个选择集

MexicanCustard 发表于 2015-11-19 17:43:12


neyton 发表于 2015-11-19 17:50:53


ZWCad vs ZWCad Plus
页: [1]
查看完整版本: ZWCAD选择集错误