1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-08 14:17:06 +03:00

// all remarks have been done

This commit is contained in:
dpasukhi
2021-10-28 10:49:14 +03:00
parent 82ec704d4e
commit 9bddb75927
2 changed files with 79 additions and 73 deletions

View File

@@ -182,8 +182,10 @@ Standard_Boolean XCAFDoc_Editor::Compact(const TDF_Label& theDoc,
TDF_Label aChild = anIter.Value();
TDF_Label aPart;
TopoDS_Shape aChildShape = aShapeTool->GetShape(aChild); // gets with own*ref location
if (aShapeTool->GetReferredShape(aChild, aPart))
if (!aShapeTool->GetReferredShape(aChild, aPart))
{
continue;
}
if (aChildShape.ShapeType() == TopAbs_COMPOUND && aShapeTool->IsAssembly(aPart))
{
// iterate next level if it needed
@@ -231,8 +233,8 @@ Standard_Boolean XCAFDoc_Editor::Compact(const TDF_Label& theDoc,
aPart.ForgetAllAttributes();
}
}
}
aShapeTool->SetShape(theAssemblyL, aCompound);
aShapeTool->UpdateAssemblies();
return Standard_True;
}

View File

@@ -703,39 +703,30 @@ static Standard_Integer Compact(Draw_Interpretor& di,
{
if (argc < 2)
{
di << "Use: " << argv[0] << " [-info] Doc [{shLabel1 shLabel2 ...}|{shape1 shape2 ...}]" << "\n";
di << "Syntax error: wrong number of arguments" << "\n";
return 1;
}
Standard_Integer anArgcInd = 1;
Standard_Boolean toPrintInfo = Standard_False;
if (argc > 2)
Handle(TDocStd_Document) aDoc;
Handle(XCAFDoc_ShapeTool) aShapeTool;
TDF_LabelSequence aShLabels;
for (Standard_Integer anInd = 1; anInd < argc; anInd++)
{
TCollection_AsciiString aFirstArg(argv[anArgcInd]);
aFirstArg.LowerCase();
if (aFirstArg.IsEqual("-info"))
if (TCollection_AsciiString::IsSameString(argv[anInd], "-info", false))
{
toPrintInfo = Standard_True;
anArgcInd++;
}
}
Handle(TDocStd_Document) aDoc;
DDocStd::GetDocument(argv[anArgcInd], aDoc);
else if (aDoc.IsNull())
{
DDocStd::GetDocument(argv[anInd], aDoc);
if (aDoc.IsNull())
{
di << "Syntax error: " << argv[anArgcInd] << " is not a document" << "\n";
di << "Syntax error: " << argv[anInd] << " is not a document" << "\n";
return 1;
}
if (argc == 2)
{
if (!XCAFDoc_Editor::Compact(aDoc->Main()) && toPrintInfo)
{
di << "The document does not contain any assembly shapes" << "\n";
}
aShapeTool = XCAFDoc_DocumentTool::ShapeTool(aDoc->Main());
}
else
{
Handle(XCAFDoc_ShapeTool) aShapeTool = XCAFDoc_DocumentTool::ShapeTool(aDoc->Main());
for (Standard_Integer anInd = anArgcInd + 1; anInd < argc; anInd++)
{
TDF_Label aLabel;
TDF_Tool::Label(aDoc->GetData(), argv[anInd], aLabel);
@@ -747,11 +738,7 @@ static Standard_Integer Compact(Draw_Interpretor& di,
}
if (!aLabel.IsNull())
{
if (!XCAFDoc_Editor::Compact(aDoc->Main(), aLabel) && toPrintInfo)
{
di << argv[anInd] << " is not assembly" << "\n";
// continue iteration
}
aShLabels.Append(aLabel);
}
else
{
@@ -760,6 +747,23 @@ static Standard_Integer Compact(Draw_Interpretor& di,
}
}
}
if (aShLabels.IsEmpty())
{
if (!XCAFDoc_Editor::Compact(aDoc->Main()) && toPrintInfo)
{
di << "The document does not contain any assembly shapes" << "\n";
}
}
for (TDF_LabelSequence::Iterator anIter(aShLabels); anIter.More(); anIter.Next())
{
const TDF_Label& aLabel = anIter.Value();
if (!XCAFDoc_Editor::Compact(aDoc->Main(), aLabel) && toPrintInfo)
{
TCollection_AsciiString anEntry;
TDF_Tool::Entry(aLabel, anEntry);
di << anEntry << " is not assembly" << "\n";
}
}
return 0;
}