ord里面怎么在3维视图里面获取alignment,或者在三维视图里面通过二维设置生成的三维元素获取alignment,
,
我看到资源管理器里面有alignment的列表,那个需要怎么获取
可否提供一下您的这个DGN文件?
通过
GeometricModel geomModel = sdkCon.GetActiveGeometricModel();
foreach (Alignment al in geomModel.Alignments) 遍历。
首先是概念,alignment相当于一个容器,它包含了路线的平面线形、纵断面线形、空间三维线(在三维Model中)以及其它如速度表、桩号、断链等信息。所以在二维、三维模型中都有alignment所包含的信息。
获取所有alignment列表的代码如下,这样在当前模型中,资源管理器中的所有alignment都会被获取到:
ConsensusConnection sdkCon = new ConsensusConnection(Bentley.MstnPlatformNET.Session.Instance.GetActiveDgnModelRef());
GeometricModel gm = sdkCon.GetActiveGeometricModel();
if (gm == null)
{
return false;
}
List<Alignment> algs = gm.Alignments.ToList();
第一个 我切到3d模型就遍历不到alignment,切到2d模型就能遍历到,用的是sdk例子提供的代码,跟你们说的方法是一样的。
您切换3D模型,然后用下面代码应该能获取:
Bentley.DgnPlatformNET.DgnFile dgnFile = Session.Instance.GetActiveDgnFile(); foreach (ModelIndex modelIndex in dgnFile.GetModelIndexCollection()) { StatusInt status3D; DgnModel dgnModel3d = dgnFile.LoadRootModelById(out status3D, modelIndex.Id); string name = dgnModel3d.ModelName; if (name == "Default") { Bentley.CifNET.SDK.ConsensusConnection m_con = new Bentley.CifNET.SDK.ConsensusConnection(dgnModel3d); Bentley.CifNET.GeometryModel.SDK.GeometricModel sdkGeomModel = m_con.GetActiveGeometricModel(); if (sdkGeomModel == null) { return false; } List<Alignment> algs = sdkGeomModel.Alignments.ToList(); } }
Answer Verified By: Zhong Ling 钟凌