运行结果图》》
首先:
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);
}
}
调用函数,点击运行》》
!!!!!!!!!