So, is it possible to read it in Mesh and export it in Step? If so, please tell me how
Code :
myXdeDoc = new TDocStd_Document("MDTV-XCAF");
STEPCAFControl_Reader reader;
reader.ReadFile(toAsciiString(fileName).ToCString());
reader.SetMatMode(true);
if (reader.Transfer(myXdeDoc)) {
std::cout << "Translate successful\n";
}
else {
std::cout << "Translate failed\n";
}
Handle(XCAFDoc_ShapeTool) aShapeTool = XCAFDoc_DocumentTool::ShapeTool(myXdeDoc->Main());
NCollection_IndexedDataMap<TCollection_AsciiString, Handle(TDataStd_NamedData)> aNameDataMap; // Container to keep label's entry and its metadata
for (TDF_ChildIterator anIter(aShapeTool->Label(), Standard_True); anIter.More(); anIter.Next())
{
const TDF_Label& aLabel = anIter.Value();
TCollection_AsciiString anEntry;
TDF_Tool::Entry(aLabel, anEntry);
Handle(TDataStd_NamedData) aNamedData = aShapeTool->GetNamedProperties(aLabel);
if (!aNamedData.IsNull())
{
aNameDataMap.Add(anEntry, aNamedData);
}
Handle(XCAFPrs_AISObject) aPrs = new XCAFPrs_AISObject(aLabel);
myAISContext()->Display(aPrs, AIS_WireFrame, 1, false);
}
myView()->FitAll(0.01, false);
03Commenter-1
In your case after Display model automatically meshed. But you can mesh manually:
// Usually STP file going with BRep (geometry)
Handle(XCAFDoc_ShapeTool) aShapeTool = XCAFDoc_DocumentTool::ShapeTool(aDoc.Main());
TopoDS_Shape aShape = aShapeTool->GetOneShape();
// Setting up meshing parameters
IMeshTools_Parameters aMeshParameters;
aMeshParameters.InParallel = true;
aMeshParameters.Deflection = 0.01;
// .. other parameters
BRepMesh_IncrementalMesh aMesher (aShape, aMeshParameters);
aMesher.Perform();
Export is the same as import.
TCollection_AsciiString anOutStep = "as1-oc-214-mat.stp";
STEPCAFControl_Writer aStepWriter;
if (!aStepWriter.Perform(aDoc, anOutStep))
{
// Do something
}
Best regardsm Commenter-1.
04Author
Thank you for your reply.
have a good day
05Commenter-2
Here you may also find another introduction article with code sample displaying XCAF shape.