获取创建Dgn文件的产品名称


我们知道Mstn是一个纯画图平台,在Mstn的基础上Bentley公司为各个行业或者专业开发了各种各样的垂直软件产品。例如面对交通行业推出了OpenRoads DesingerORD),面对建筑行业推出了OpenBuildings DesignerOBD)等等。在项目设计过程中,有时候我们会在Mstn中直接打开这些基于Mstn的软件所创建dgn文件,而且还有获取创建这些dgn文件的产品名称,那么该如何获取这个名称呢?我们可以从文件的属性中获取到,具体方法如下图所示:

可以看到不仅可以查看到产品的名称,产品的版本号也可以查看到。那么在程序中该如何获取这些信息呢?Mstn中,在元素属性对话框中看到的属性基本上都可以通过EC方式获取到,所以我们完全可以通过EC编程接口去获取到这个属性,具体实现方法请参考如下代码:

ECQueryPtr            ecQuery = ECQuery::CreateQuery(L"DgnFileSchema", L"DgnFileProperties");
	ecQuery->SetSelectProperties(true);
	FindInstancesScopePtr scope = FindInstancesScope::CreateScope(*ISessionMgr::GetActiveDgnFile(), FindInstancesScopeOption(DgnECHostType::File));
	for (DgnECInstancePtr instance : DgnECManager::GetManager().FindInstances(*scope, *ecQuery))
	{
		ECValue val;
		instance->GetValue(val, L"AuthoringProductName");
		mdlDialog_dmsgsPrint(val.GetString());
		instance->GetValue(val, L"Editor");
		mdlDialog_dmsgsPrint(val.GetString());
	}