diff --git a/samples/mfc/standard/05_ImportExport/src/ColoredShapes.cpp b/samples/mfc/standard/05_ImportExport/src/ColoredShapes.cpp index 4e57f3771c..3118280513 100755 --- a/samples/mfc/standard/05_ImportExport/src/ColoredShapes.cpp +++ b/samples/mfc/standard/05_ImportExport/src/ColoredShapes.cpp @@ -23,6 +23,17 @@ void CColoredShapes::Add(const Quantity_NameOfColor aColor, const TopoDS_Shape& m_colorMap.Bind(aShape, aColor); } +void CColoredShapes::Remove(const TopoDS_Shape& aShape) +{ + m_colorMap.UnBind(aShape); + for ( TopoDS_ListIteratorOfListOfShape iter(m_shapeList); iter.More(); iter.Next() ) { + if(iter.Value() == aShape) { + m_shapeList.Remove(iter); + break; + } + } +} + IMPLEMENT_SERIAL(CColoredShapes, CObject,1); // This schema contains all the Persistent Geometry and Topology diff --git a/samples/mfc/standard/05_ImportExport/src/ColoredShapes.h b/samples/mfc/standard/05_ImportExport/src/ColoredShapes.h index 3e472dac81..a873ee991d 100755 --- a/samples/mfc/standard/05_ImportExport/src/ColoredShapes.h +++ b/samples/mfc/standard/05_ImportExport/src/ColoredShapes.h @@ -14,6 +14,7 @@ class CColoredShapes : public CObject public: CColoredShapes(); void Add(const Quantity_NameOfColor aColor, const TopoDS_Shape& aShape); + void Remove(const TopoDS_Shape& aShape); void Display( Handle(AIS_InteractiveContext)& anAIScontext); diff --git a/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.cpp b/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.cpp index d778427ade..7f50af3e68 100755 --- a/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.cpp +++ b/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.cpp @@ -37,6 +37,9 @@ BEGIN_MESSAGE_MAP(CImportExportDoc, OCC_3dBaseDoc) ON_COMMAND(ID_FILE_EXPORT_STL, OnFileExportStl) ON_COMMAND(ID_BOX, OnBox) ON_COMMAND(ID_Cylinder, OnCylinder) + ON_COMMAND(ID_OBJECT_REMOVE, OnObjectRemove) + ON_COMMAND(ID_OBJECT_ERASE, OnObjectErase) + ON_COMMAND(ID_OBJECT_DISPLAYALL, OnObjectDisplayall) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -283,4 +286,33 @@ void CImportExportDoc::OnCylinder() // document has been modified SetModifiedFlag(TRUE); +} +void CImportExportDoc::OnObjectRemove() + +{ + for(GetAISContext()->InitCurrent();GetAISContext()->MoreCurrent();GetAISContext()->NextCurrent()) { + Handle(AIS_Shape) aShape = Handle(AIS_Shape)::DownCast(GetAISContext()->Current()); + if(!aShape.IsNull()) { + m_pcoloredshapeList->Remove(aShape->Shape()); + } + } + OCC_3dBaseDoc::OnObjectRemove(); +} + +void CImportExportDoc::OnObjectErase() + +{ + for(GetAISContext()->InitCurrent();GetAISContext()->MoreCurrent();GetAISContext()->NextCurrent()) { + Handle(AIS_Shape) aShape = Handle(AIS_Shape)::DownCast(GetAISContext()->Current()); + if(!aShape.IsNull()) { + m_pcoloredshapeList->Remove(aShape->Shape()); + } + } + OCC_3dBaseDoc::OnObjectErase(); +} + +void CImportExportDoc::OnObjectDisplayall() + +{ + OCC_3dBaseDoc::OnObjectDisplayall(); } \ No newline at end of file diff --git a/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.h b/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.h index 05ce79bdf2..151e9f94c4 100755 --- a/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.h +++ b/samples/mfc/standard/05_ImportExport/src/ImportExportDoc.h @@ -46,6 +46,9 @@ protected: afx_msg void OnFileExportStl(); afx_msg void OnBox(); afx_msg void OnCylinder(); + afx_msg void OnObjectRemove(); + afx_msg void OnObjectErase(); + afx_msg void OnObjectDisplayall(); //}}AFX_MSG DECLARE_MESSAGE_MAP() diff --git a/samples/mfc/standard/Common/OCC_3dBaseDoc.cpp b/samples/mfc/standard/Common/OCC_3dBaseDoc.cpp index 711fd28fd0..15f0698958 100755 --- a/samples/mfc/standard/Common/OCC_3dBaseDoc.cpp +++ b/samples/mfc/standard/Common/OCC_3dBaseDoc.cpp @@ -362,7 +362,7 @@ void OCC_3dBaseDoc::OnUpdateObjectTransparency(CCmdUI* pCmdUI) void OCC_3dBaseDoc::OnObjectDisplayall() { - myAISContext->DisplayAll(Standard_True); + myAISContext->DisplayAll(Standard_False); } void OCC_3dBaseDoc::OnUpdateObjectDisplayall(CCmdUI* pCmdUI)