通过ORD的C++ API和.Net的API,调用corridor的GetXSCutPoints()方法。
在第一次执行代码时,方法GetXSCutPoints()返回的bvector<XSCutPoint>有值,但是再一次执行同样的代码时,返回的bvector<XSCutPoint>为空。
第一次执行后,卸载mdl,再重新加载mdl,执行代码,返回的bvector<XSCutPoint>仍然为空。
在第二次执行代码获取不到值得情况下,在ORD中选中corridor对象,随意更改其相关的属性值,如:更改所属的图层,再次执行代码,返回的bvector<XSCutPoint>又有值了,然而,随后再执行代码,又获取不到值
代码如下:
DgnModelP modelP = ISessionMgr::GetActiveDgnModelP(); csConnect = ConsensusConnection::Create(*dgnModel); csModel = ConsensusModel::Create(*dgnModel); GeometricModelPtr geomModel = csModel->GetActiveGeometricModel(); auto corridors = geomModel->GetCorridors(); if (corridors.IsValid()&&corridors->MoveNext()) { corridors->Reset(); while (corridors->MoveNext()) { CorridorPtr corri = corridors->GetCurrent(); bvector<XSCutPoint> points; corri->GetXSCutPoints(2, 40, 40, 2, points); } }
是否还是您的DGN文件的问题?我记得在另外一个帖子中我们的工程师已经分析了是您DGN的问题。请重新创建一个DGN测试一下。
已经拿另一个dgn文件重新测试的
看您在另外一个帖子中已经找到了原因。这两个帖子是一个问题吗?如果是一个问题的话,请今后最好都在一个帖子中提问。谢谢!
不是一个问题,另一个帖子描述的是XSCutPoint值的问题,这个是第二次调用GetXSCutPoints()方法的问题
我没有实际测试,推测问题出在你的MoveNext()上。MoveNext会移动到下个廊道上,你的模型中总共有几个廊道?