7.2 快速入门


        请参考 CIM 开发包中的示例新建自己的开发项目,您也可以直接在示例程序中添加自己的代码。模板的例子位于 examples/CIMExamples/CIMExample 项目的 CIMExampleTemplateUseCase.cpp 中。

        下面的例子演示了创建模板的基本流程。这里以创建一个矩形为例。

  1. 创建模板库
  2. 创建目录
  3. 创建模板对象
  4. 添加点坐标
  5. 创建组件
  6. 转换成曲线
  7. 添加到模型

        

8.	auto uor = ISessionMgr::GetActiveDgnModelP()->GetModelInfo().GetUorPerMeter();  
9.	  
10.	auto library = CIM::CIMTemplate::ITemplateLibrary::Create();  
11.	auto category = library->AddCategory(L"UseCase");  
12.	auto t = category->AddTemplate(L"rectangle");  
13.	  
14.	auto P0 = t->AddPoint(-1 * uor, -1 * uor);  
15.	auto P1 = t->AddPoint(-1 * uor, 1 * uor);  
16.	auto P2 = t->AddPoint(1 * uor, 1 * uor);  
17.	auto P3 = t->AddPoint(1 * uor, -1 * uor);  
18.	  
19.	auto component = t->AddComponent();  
20.	component->AddLine(P0->GetName().GetWCharCP(), P1->GetName().GetWCharCP());  
21.	component->AddLine(P1->GetName().GetWCharCP(), P2->GetName().GetWCharCP());  
22.	component->AddLine(P2->GetName().GetWCharCP(), P3->GetName().GetWCharCP());  
23.	component->AddLine(P3->GetName().GetWCharCP(), P0->GetName().GetWCharCP());  
24.	  
25.	auto curve = t->ToCurveVector();  
26.	  
27.	EditElementHandle eeh;  
28.	  
29.	if (BentleyStatus::SUCCESS != DraftingElementSchema::ToElement(eeh, *curve, nullptr, true, *ISessionMgr::GetActiveDgnModelP()))  
30.	{  
31.	    return;  
32.	}  
33.	  
34.	eeh.AddToModel();  
  

        其中 ,第1、2、3步创建了模板的存储对象,并指明了模板在模板库中的相对位置。第4步创建了描述模板的顶点坐标。第5步描述了模板的连接方式,本例中定义了4条首尾相连的线段。第6,7步将模板转换成曲线并添加到模型中。