用C#开发了从一张图上读每一根polyline2d和相连接的blockrefrense的工具,就是读取一根管道上的流程:管子-阀门-管子-阀门。。。。。。,不往图上写任何东西。 现在的问题是:如果图纸上有blockrefrense,dll执行第1次,第2次都正常,第3次cad异常退出,在VS中跟踪不到错误。 如果单独执行一次dll后退出cad,也报异常退出。 但是图上如果没有blockrefrense,没有问题。 主要函数为 public Entity GetNextObj(Entity currentobj) { PromptSelectionResult rs = AutoCADUnit.GetSelection(spt1, spt2); ObjectId[] ids = rs.Value.GetObjectIds(); foreach (ObjectId objid in ids) { Entity ent=Tools.GetEntity(objid); //第三次出错,跟踪的时候到这里,返回第一个objectid正常,之后马上异常退出 if ISBlock(ent) { PromptSelectionResult rs2=.... } else if ISLine(ent) { PromptSelectionResult rs2=.... } Transaction,LockDocument都没有问题。开发环境是VS2005+CAD2007,在其他机器的CAD2010中测试过,也是报错。 不知道问题到底在哪儿,翻来覆去测试了N遍都没有发现问题,求高手答疑。个人怀疑是:PromptSelectionResult 循环调用引起,但是这种用法应该很正常啊。 |