1 // ParamsFacesPage.cpp : implementation file
5 #include "ParamsFacesPage.h"
6 #include "DimensionDlg.h"
7 #include <AIS_InteractiveContext.hxx>
8 #include <AIS_LocalContext.hxx>
9 #include <AIS_LengthDimension.hxx>
10 #include <AIS_AngleDimension.hxx>
12 // CParamsFacesPage dialog
14 IMPLEMENT_DYNAMIC(CParamsFacesPage, CDialog)
16 CParamsFacesPage::CParamsFacesPage (Handle(AIS_InteractiveContext) theAISContext,
17 bool isAngleDimension /*= false*/,
18 CWnd* pParent /*=NULL*/)
19 : CDialog(CParamsFacesPage::IDD, pParent),
20 myAISContext (theAISContext),
21 myIsAngleDimension (isAngleDimension)
25 CParamsFacesPage::~CParamsFacesPage()
29 void CParamsFacesPage::DoDataExchange(CDataExchange* pDX)
31 CDialog::DoDataExchange(pDX);
35 BEGIN_MESSAGE_MAP(CParamsFacesPage, CDialog)
36 ON_BN_CLICKED(IDC_FacesBtn1, &CParamsFacesPage::OnBnClickedFacesbtn1)
37 ON_BN_CLICKED(IDC_FacesBtn2, &CParamsFacesPage::OnBnClickedFacesbtn2)
41 // CParamsFacesPage message handlers
43 void CParamsFacesPage::OnBnClickedFacesbtn1()
45 // Check if face is selected
46 myAISContext->LocalContext()->InitSelected();
47 if (!myAISContext->LocalContext()->MoreSelected())
49 AfxMessageBox(_T("Choose the face and press the button again"),
50 MB_ICONINFORMATION | MB_OK);
54 myFirstFace = TopoDS::Face (myAISContext->LocalContext()->SelectedShape());
55 myAISContext->LocalContext()->ClearSelected();
58 void CParamsFacesPage::OnBnClickedFacesbtn2()
60 // Check if face is selected
61 myAISContext->LocalContext()->InitSelected();
62 if (!myAISContext->LocalContext()->MoreSelected())
64 AfxMessageBox(_T("Choose the face and press the button again"),
65 MB_ICONINFORMATION | MB_OK);
69 mySecondFace = TopoDS::Face (myAISContext->LocalContext()->SelectedShape());
70 myAISContext->LocalContext()->ClearSelected();
72 CDimensionDlg *aDimDlg = (CDimensionDlg*)(GetParentOwner());
74 myAISContext->CloseAllContexts();
76 Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect();
77 anAspect->MakeArrows3d (Standard_False);
78 anAspect->MakeText3d (aDimDlg->GetTextType());
79 anAspect->TextAspect()->SetHeight (aDimDlg->GetFontHeight());
80 anAspect->MakeTextShaded (aDimDlg->IsText3dShaded());
81 anAspect->SetCommonColor (aDimDlg->GetDimensionColor());
82 if (myIsAngleDimension)
84 // Build an angle dimension between two non-parallel edges
85 Handle(AIS_AngleDimension) anAngleDim = new AIS_AngleDimension (myFirstFace, mySecondFace);
86 anAngleDim->SetDimensionAspect (anAspect);
87 anAngleDim->DimensionAspect()->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
88 if (aDimDlg->IsUnitsDisplayed())
90 anAngleDim->SetDisplayUnits (aDimDlg->GetUnits ());
91 if ((anAngleDim->GetDisplayUnits().IsEqual (TCollection_AsciiString ("deg"))))
93 anAngleDim->DimensionAspect()->MakeUnitsDisplayed (Standard_False);
97 anAngleDim->SetDisplaySpecialSymbol (AIS_DSS_No);
101 anAngleDim->SetFlyout (aDimDlg->GetFlyout());
102 myAISContext->Display (anAngleDim);
106 Handle(AIS_LengthDimension) aLenDim = new AIS_LengthDimension (myFirstFace, mySecondFace);
107 aLenDim->SetDimensionAspect (anAspect);
108 aLenDim->DimensionAspect()->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
109 if (aLenDim->DimensionAspect()->IsUnitsDisplayed())
111 aLenDim->SetFlyout (aDimDlg->GetFlyout());
112 aLenDim->SetDisplayUnits (aDimDlg->GetUnits());
115 myAISContext->Display (aLenDim);
118 myAISContext->OpenLocalContext();
119 myAISContext->ActivateStandardMode (TopAbs_FACE);