0031456: Visualization - move out Dimensions and Relations from package AIS to PrsDims
[occt.git] / samples / mfc / standard / Common / LengthParamsEdgePage.cpp
index 1fac26f..89c90ce 100644 (file)
@@ -7,8 +7,7 @@
 
 #include <Standard_Macro.hxx>
 #include <AIS_InteractiveContext.hxx>
-#include <AIS_LocalContext.hxx>
-#include <AIS_LengthDimension.hxx>
+#include <PrsDim_LengthDimension.hxx>
 #include <GC_MakePlane.hxx>
 #include <TopExp.hxx>
 
@@ -67,37 +66,40 @@ CButton* CLengthParamsEdgePage::GetButton()
 
 void CLengthParamsEdgePage::OnBnClickedChooseEdgeBtn()
 {
-  myAISContext->LocalContext()->InitSelected();
+  myAISContext->InitSelected();
 
-  if (!myAISContext->LocalContext()->MoreSelected())
+  if (!myAISContext->MoreSelected() ||
+       myAISContext->SelectedShape().ShapeType() != TopAbs_EDGE)
   {
-    AfxMessageBox ( _T("Choose the vertex and press the button again"), MB_ICONINFORMATION | MB_OK);
+    AfxMessageBox ( _T("Choose the edge and press the button again"), MB_ICONINFORMATION | MB_OK);
     return;
   }
 
-  TopoDS_Edge anEdge = TopoDS::Edge(myAISContext->LocalContext()->SelectedShape());
-  myAISContext->LocalContext()->ClearSelected();
+  TopoDS_Shape aSelShape = myAISContext->SelectedShape();
+  const TopoDS_Edge& anEdge = TopoDS::Edge (aSelShape);
+
+  myAISContext->ClearSelected (Standard_False);
   TopoDS_Vertex aFirstVertex, aSecondVertex;
-  TopExp::Vertices (anEdge, aFirstVertex, aSecondVertex);
+  TopExp::Vertices (TopoDS::Edge (anEdge), aFirstVertex, aSecondVertex);
 
-  gp_Pnt aP1=BRep_Tool::Pnt (aFirstVertex);
-  gp_Pnt aP2=BRep_Tool::Pnt (aSecondVertex);
-  gp_Pnt aP3(aP2.X()+10, aP2.Y()+10, aP2.Z()+10);
+  gp_Pnt aP1 = BRep_Tool::Pnt (aFirstVertex);
+  gp_Pnt aP2 = BRep_Tool::Pnt (aSecondVertex);
+  gp_Pnt aP3 (aP2.X() + 10, aP2.Y() + 10, aP2.Z() + 10);
 
   GC_MakePlane aMkPlane (aP1,aP2,aP3);
-  Handle(Geom_Plane) aPlane = aMkPlane.Value ();
+  Handle(Geom_Plane) aPlane = aMkPlane.Value();
 
   CDimensionDlg *aDimDlg = (CDimensionDlg*)(GetParentOwner());
 
-  Handle(AIS_LengthDimension) aLenDim = new AIS_LengthDimension (anEdge, aPlane->Pln());
+  Handle(PrsDim_LengthDimension) aLenDim = new PrsDim_LengthDimension (TopoDS::Edge (anEdge), aPlane->Pln());
   Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect();
   anAspect->MakeArrows3d (Standard_False);
   anAspect->MakeText3d (aDimDlg->GetTextType());
   anAspect->TextAspect()->SetHeight (aDimDlg->GetFontHeight());
   anAspect->MakeTextShaded (aDimDlg->IsText3dShaded());
   anAspect->SetCommonColor (aDimDlg->GetDimensionColor());
-  aLenDim->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
-  if (aLenDim->IsUnitsDisplayed())
+  anAspect->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
+  if (aDimDlg->IsUnitsDisplayed())
   {
     aLenDim->SetDisplayUnits (aDimDlg->GetUnits());
   }
@@ -105,8 +107,6 @@ void CLengthParamsEdgePage::OnBnClickedChooseEdgeBtn()
   aLenDim->SetDimensionAspect (anAspect);
   aLenDim->SetFlyout (aDimDlg->GetFlyout());
 
-  myAISContext->CloseAllContexts();
-  myAISContext->Display (aLenDim);
-  myAISContext->OpenLocalContext();
-  myAISContext->ActivateStandardMode(TopAbs_EDGE);
+  myAISContext->Display (aLenDim, Standard_True);
+  myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
 }