代码如下
API文档中的接口如下
但是获取到corridor对象后,通过GetXSCutPoint()返回的bvector<XSCutPoint>为空,请问是哪里出问题了啊?
传入参数的单位试过“米”和“uor * 米”。
第一个参数是里程,请检查一下里程是否正确,另外这里的单位是米。
里程是正确的,2m。
您好,我跟我这边同事讨论了下这个问题,想咨询下您代码中的 corri 这个对象是如何获取的呢?能否把代码附加上,最好是把您测试该问题的整个工程代码附加上,这样我们更容易定位排查。
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); } }
您好,我这边也写了个测试程序,对您上传的test.dgn文件用测试代码通过Corridor::GetXSCutPoints()也获取不到横截面数据,但是换成自己创建的dgn文件(里面包含Corridor)是可以通过Corridor::GetXSCutPoints()获取横截面数据的。您上方的代码是正确的,test.dgn文件中创建的Corridor存在问题,也跟踪了您创建的test.dgn文件,定位分析后:是test.dgn中创建的Corridor找不到相关的Alignment。代码分析如下图:
非常感谢您的解答,但是ORD自带Dynamic Sections功能,能查看到横截面特征点。是必须由corridor能找到相关的alignment,才能通过GetXSCutPoints()获取横截面数据吗?
不是“必须由corridor能找到相关的alignment”,上图获取corridor的alignment对象是用来告诉您,您的测试dgn中由corridor获取的alignment是空值,证明您的dgn文件数据有误。