Rogue 发表于 2008-6-19 06:45:05

失败的布尔运算

这是一个非常简单的项目-取一些已经加工过的矩形实体,在同一位置重新创建原始矩形实体,然后做布尔减法,结果只给了我加工。某种程度上,加工过的实体是“负数”
代码循环通过这些实体的整个组件,实际上以这种方式显示了整个产品。它工作完美-95%的时间。当它完美工作时,组件中的每个实体都会返回,只显示加工。但是局部地,它失败了,并且集合中的每一个实体都返回为矩形板-布尔减法运算在乘积中的每个实体上都失败了
当它失效时,它总是在同一个产品上失效,并且在同一产品的每个零件上失效。当它起作用时,它总是作用于产品中的每一个零件。它能工作的产品似乎总是能工作的。它不能工作的产品总是不能工作的。除了偶尔,每隔几天,以前失败的产品现在能工作
我花了2天的时间整理了一些东西,在这里发布-我把图纸整理成了2个组件,其中一个可用,另一个不可用-然后开始删除代码中的模块,等等,让你们更容易理解。我确保,在我这样做的同时,一个组件仍然失败,一个仍然有效-直到今天早上。现在,这两个程序集都可以在精简代码和原始代码中工作。在原始图形中,原始代码在相同的实体组合上仍然失败。(我无法在原始图形上运行经过裁剪的代码,但我认为这不是问题。)
WTF?这快把我逼疯了!布尔减法过程中是否存在可能导致失败的情况?减法运算没有返回码?不管它值多少钱,下面是我使用的过程:
1)循环遍历实体集合,并将每个实体添加到集合中。(工作成功)
2)获取集合并执行copyobjects。(我不想修改原始实体)(工作成功)
3)循环复制的对象并存储句柄。(工作成功)
4)然后,对于每个单独复制的对象,执行以下操作:
4a)在同一位置创建另一个实体(工作成功)<br>4b)对新的矩形实体和加工实体的副本执行减法运算。(有时会失败)
4c)将复制的实体放入blockref(即使矩形板出现故障也能正常工作)
4d)启动一个新文档,从源文件到目标文件执行copyobject(始终正常工作)
4e)从源文件中删除原始blockref(始终正常运行)
,关于我甚至可以*开始*查看的地方,找到这个bug有什么想法吗
**** Hidden Message *****

Jeff_M 发表于 2008-6-19 11:08:48

没有代码或样本绘图,我唯一能想到的是删除任何你可能使用过的错误恢复下一行。让它出错,这应该会指出问题所在。

Rogue 发表于 2008-6-23 05:58:34

更新:
我已经缩小了一点;似乎复制对象comand,当运行并且从集合中复制大量对象时,将成功返回一个复制对象数组,但似乎每个复制对象在返回数组中的位置不一定与父集合在同一位置;即,如果我复制一个名为Solid1、Solid2... Solid49、Solid50的50个实体集合,返回的集合可能具有以Solid2、Solid3... Solid50、Solid1开头的复制实体。
为什么这种行为有时会发生,我不确定;现在,我正在使用不使用复制对象命令和使用单个object.copy方法的解决方法。
页: [1]
查看完整版本: 失败的布尔运算