我从一个地形模型(Terrain Model)中获取了DTM,代码如下:
auto ts = TerrainSurface::CreateFromElementHandle(eeh); if (!ts.IsValid()) { mdlDialog_dmsgsPrint(L"not a terrain surface"); return; } DTMPtr dtm = ts->GetDTM(); if (!dtm.IsValid()) { mdlDialog_dmsgsPrint(L"invalid dtm"); return; }
现在不知道怎么从DTM中获取Mesh网格、等高线等数据。IDTM.h里有很多抽象接口类,里面提供了一些函数,但不知道如何使用,还望高手予以解答。
BcDTMMeshPtr GetMesh ( bool firstCall, long maxMeshSize, DPoint3dCP fencePtsP, int numFencePts ); IDTM* idtm;BcDTMP bcDTM = idtm->GetBcDTM();BcDTMMeshPtr mesh = bcDTM->GetMesh(.....);
c++ 使用这个获取mesh。
Answer Verified By: 程远 李
我猜就是这样,问题是我找不到BcDTM这个类的定义,难道是我的sdk太旧了???
你可以使用c++/CLI调用Bentley.CifNET.TerrainModel.dll中的CivilDTM.CreatePolyface(DTM)接口进行获取网格。
我没研究过c#和CLI。看来只能联系bentley看能不能拿到地形模型的相关c++ API,实在不行就不用地形模型了。。。
用IDTM中的这个接口可以获取等高线 IDTMContouring* GetDTMContouring ();
获取MESH网格的我再找下。
其实有了等高线就可以利用等高线生成mesh网格。你说的这个函数IDTMContouring* GetDTMContouring ()我搜遍了sdk的include文件夹都找不着。。。。。
是不是我sdk的问题???
//! Gets the contouring interface.//! @return The contouring interface.BENTLEYDTM_EXPORT IDTMContouring* GetDTMContouring ();
有啊,这个函数就在IDTM.h文件中。在IDTM这个类中。
我的IDTM.h里确实没有这个函数。。。
看来确实是sdk的问题,谢谢了