OpenCASCADE(OCC)读取STEP模型文件到XDE中

运行结果图》》

OpenCASCADE(OCC)读取STEP模型文件到XDE中_第1张图片

首先:

XDE使用TDocStd_Documents作为起点。XDE的一般用途是:

检查现有文档是否适合XDE;
获取应用程序和初始化文件;

初始化文档以适合XDE;

添加、设置和查找数据;

查询和管理形状;

将属性附加到形状。
XDE使用的Document通常以TDocStd_Document开头。

前期检查:

在处理形状、属性和其他类型的信息之前,要确定现有文档是否实际上是为与XDE一起使用而构建的。
就是要确定现有的TDocStd_Document是否适合XDE:

Handle(TDocStd_Document) doc;
if ( XCAFDoc_DocumentTool::IsXCAFDocument (doc) ) 
{ 
    //进行下面的操作

} 

如果文档适用于XDE,可以直接执行上述操作。但是,如果一个Document不是或者不完全是为XDE构建的,则必须对其进行初始化。

具体初始化如下:

//创建文档
	Handle(TDocStd_Document) doc;
	XCAFApp_Application::GetApplication()->NewDocument("MDTV-XCAF", doc);

下面进行STEP文件的完整读取:

void COCCmfcMDIDoc::ReadSTEP()
{
	
	//创建文档
	Handle(TDocStd_Document) doc;
	XCAFApp_Application::GetApplication()->NewDocument("MDTV-XCAF", doc);

	//装载文件(.step)
	STEPCAFControl_Reader myReader;
	myReader.ReadFile("hezi.STEP");
	myReader.SetColorMode(true);
	myReader.SetNameMode(true);
	myReader.SetLayerMode(true);

	myReader.Transfer(doc);

	TDF_Label mainLabel = doc->Main();
	//要从XDE结构获取被视为程序集的节点,可以使用节点的Label(shape)
	Handle(XCAFDoc_ShapeTool) myShapeTool = XCAFDoc_DocumentTool::ShapeTool(mainLabel);
	//查询、编辑或初始化文档以处理XCAF的颜色(OCCT不再使用此方法渲染模型)
	Handle(XCAFDoc_ColorTool) myColors = XCAFDoc_DocumentTool::ColorTool(mainLabel);
	TDF_LabelSequence FreeShape;
	myShapeTool->GetFreeShapes(FreeShape);//使用GetFreeShapes解决装配体和组件显示错乱问题
	//myShapeTool->GetShapes(FreeShape);  //获取装配体和组件对应名称(不适用)
	int Roots = FreeShape.Length();
	for (int index = 1; index <= Roots; index++)
	{
		TDF_Label label = FreeShape.Value(index);

		// 用XCAFPrs_AISObject 来显示
		Handle(XCAFPrs_AISObject) displayedShape = new XCAFPrs_AISObject(label);
		myAISContext->Display(displayedShape, true);

	}
}

调用函数,点击运行》》

OpenCASCADE(OCC)读取STEP模型文件到XDE中_第2张图片

!!!!!!!!!

你可能感兴趣的:(OpenCASCADE,mfc,c++,1024程序员节)