|
用C#开发了从一张图上读每一根polyline2d和相连接的blockrefrense的,就是读取一根管道上的流程:管子-阀门-管子-阀门。。。。。。,不往图上写任何东西。
现在的问题是:如果图纸上有blockrefrense,dll执行第1次,第2次都正常,第3次cad异常退出,在VS中跟踪不到错误。
如果单独执行一次dll后退出cad,也报异常退出。
但是图上如果没有blockrefrense,没有问题。
主要函数为
public Entity GetNextObj(Entity currentobj)
{ PromptSelectionResult rs = Unit.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遍都没有发现问题,求高手答疑。个人怀疑是romptSelectionResult 循环调用引起,但是这种用法应该很正常啊。
|
|