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

失败的布尔运算

It#039;这是一个非常简单的项目-取一些已经进行了一些加工的矩形实体,在相同的位置重新创建原始矩形实体,然后执行布尔减法,其结果仅给出加工结果;“负”;在某种程度上是机械加工的固体
代码在这些实体的整个集合中循环,实际上以这种方式显示了整个产品。它可以完美地工作——95%的时间。当它完美工作时,组件中的每一个实体都只显示加工。但从局部来看,它失败了,集合中的每一个实体都返回为矩形板-布尔减法运算在乘积中的每个实体上都失败了
当它失效时,它总是在同一个产品上失效,并且在同一产品的每个零件上失效。当它起作用时,它总是作用于产品的每一个部分。它能工作的产品似乎总是能工作。它不能工作的产品总是不能工作。除了偶尔,每隔几天,以前失败的产品现在可以工作
我检查了每个实体的起源,原始的和新的克隆。相对于彼此。它们似乎是精确的,或者至少精确到小数点后6位。我会认为,即使稍微偏离,也会给我一个减法结果,显示整个脸的0.001,等等……但事实并非如此。例程失败后,我可以手动返回并成功执行减法操作
在过去的两天里,我把一些东西删减到了这里——我把图纸删减到两个程序集,其中一个可行,另一个不可行——然后开始删除代码中的模块,等等,让你们更容易理解。我确信,当我这样做的时候,一个集会仍然失败,一个仍然有效——直到今天早上。现在;这两个程序集都可以在经过裁剪的代码和原始代码中工作。在原始图形中,原始代码在相同的实体组合上仍然失败。(我无法在原始图形上运行经过裁剪的代码,但我认为这不是问题所在。)
WTF?这让我快疯了!布尔减法过程中是否存在可能导致失败的因素?减法运算没有返回码?不管它有什么价值,这里是我使用的过程:
1)循环通过实体的集合,并将每个实体添加到一个集合中。(成功运行)
2)获取集合并执行copyobjects。(我不想修改原始实体);(工作成功)
3)循环复制的对象并存储句柄&nbsp (工作成功)
4)然后,对于每个复制的对象,执行以下操作: 4a)在同一位置创建另一个实体 (成功运行) 4b)对新的矩形实体和加工实体的副本进行减法运算。(有时失败) 4c)将复制的实体放入blockref中(即使在矩形板发生故障的情况下也有效)
 4d)启动一个新文档,并从源到目标执行copyobject,文档(始终有效) 4e)从源文档中删除原始blockref(始终有效)
我甚至可以从哪里开始查找,以找到这个bug
谢谢,伙计们

大学女生 发表于 2008-6-19 11:08:48

如果没有代码或示例绘图,我唯一能想到的就是删除任何错误,然后继续下一行。让它出错,这应该会让你找到问题所在。

人过三十 发表于 2008-6-23 05:58:34

更新:I'我把范围缩小了一点;copyobjects comand在运行并从集合复制大量对象时,似乎将成功返回复制对象的数组,但似乎返回的数组中每个复制对象的位置不一定与父集合位于同一位置;也就是说,如果我复制一个名为Solid1,Solid2…Solid49,Solid50的50个实体的集合,返回的集合可能具有以Solid2,Solid3…Solid50,Solid1开头的复制实体。因此,我试图对错误的复制部分执行一个细分操作
为什么这种行为有时会发生,我不确定;目前,我使用的解决方法是不使用copyobjects命令,而是使用单个对象。复制方法
页: [1]
查看完整版本: 失败的布尔运算