60bf98ae |
1 | // ParamsFacesPage.cpp : implementation file |
2 | // |
3 | |
4 | #include "stdafx.h" |
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> |
11 | |
12 | // CParamsFacesPage dialog |
13 | |
14 | IMPLEMENT_DYNAMIC(CParamsFacesPage, CDialog) |
15 | |
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) |
22 | { |
23 | } |
24 | |
25 | CParamsFacesPage::~CParamsFacesPage() |
26 | { |
27 | } |
28 | |
29 | void CParamsFacesPage::DoDataExchange(CDataExchange* pDX) |
30 | { |
31 | CDialog::DoDataExchange(pDX); |
32 | } |
33 | |
34 | |
35 | BEGIN_MESSAGE_MAP(CParamsFacesPage, CDialog) |
36 | ON_BN_CLICKED(IDC_FacesBtn1, &CParamsFacesPage::OnBnClickedFacesbtn1) |
37 | ON_BN_CLICKED(IDC_FacesBtn2, &CParamsFacesPage::OnBnClickedFacesbtn2) |
38 | END_MESSAGE_MAP() |
39 | |
40 | |
41 | // CParamsFacesPage message handlers |
42 | |
43 | void CParamsFacesPage::OnBnClickedFacesbtn1() |
44 | { |
45 | // Check if face is selected |
46 | myAISContext->LocalContext()->InitSelected(); |
71c089e9 |
47 | if (!myAISContext->LocalContext()->MoreSelected() || |
48 | myAISContext->SelectedShape().ShapeType() != TopAbs_FACE) |
60bf98ae |
49 | { |
50 | AfxMessageBox(_T("Choose the face and press the button again"), |
51 | MB_ICONINFORMATION | MB_OK); |
52 | return; |
53 | } |
54 | |
016e5959 |
55 | myFirstFace = TopoDS::Face (myAISContext->SelectedShape()); |
47162471 |
56 | |
60bf98ae |
57 | myAISContext->LocalContext()->ClearSelected(); |
58 | } |
59 | |
60 | void CParamsFacesPage::OnBnClickedFacesbtn2() |
61 | { |
62 | // Check if face is selected |
63 | myAISContext->LocalContext()->InitSelected(); |
71c089e9 |
64 | if (!myAISContext->LocalContext()->MoreSelected() || |
65 | myAISContext->SelectedShape().ShapeType() != TopAbs_FACE) |
60bf98ae |
66 | { |
67 | AfxMessageBox(_T("Choose the face and press the button again"), |
68 | MB_ICONINFORMATION | MB_OK); |
69 | return; |
70 | } |
71 | |
016e5959 |
72 | mySecondFace = TopoDS::Face (myAISContext->SelectedShape()); |
73 | |
60bf98ae |
74 | myAISContext->LocalContext()->ClearSelected(); |
75 | |
76 | CDimensionDlg *aDimDlg = (CDimensionDlg*)(GetParentOwner()); |
77 | |
78 | myAISContext->CloseAllContexts(); |
79 | |
80 | Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect(); |
81 | anAspect->MakeArrows3d (Standard_False); |
82 | anAspect->MakeText3d (aDimDlg->GetTextType()); |
83 | anAspect->TextAspect()->SetHeight (aDimDlg->GetFontHeight()); |
84 | anAspect->MakeTextShaded (aDimDlg->IsText3dShaded()); |
85 | anAspect->SetCommonColor (aDimDlg->GetDimensionColor()); |
47162471 |
86 | anAspect->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed()); |
60bf98ae |
87 | if (myIsAngleDimension) |
88 | { |
89 | // Build an angle dimension between two non-parallel edges |
90 | Handle(AIS_AngleDimension) anAngleDim = new AIS_AngleDimension (myFirstFace, mySecondFace); |
91 | anAngleDim->SetDimensionAspect (anAspect); |
47162471 |
92 | |
60bf98ae |
93 | if (aDimDlg->IsUnitsDisplayed()) |
94 | { |
95 | anAngleDim->SetDisplayUnits (aDimDlg->GetUnits ()); |
96 | if ((anAngleDim->GetDisplayUnits().IsEqual (TCollection_AsciiString ("deg")))) |
97 | { |
98 | anAngleDim->DimensionAspect()->MakeUnitsDisplayed (Standard_False); |
99 | } |
100 | else |
101 | { |
102 | anAngleDim->SetDisplaySpecialSymbol (AIS_DSS_No); |
103 | } |
104 | } |
105 | |
106 | anAngleDim->SetFlyout (aDimDlg->GetFlyout()); |
107 | myAISContext->Display (anAngleDim); |
108 | } |
109 | else |
110 | { |
111 | Handle(AIS_LengthDimension) aLenDim = new AIS_LengthDimension (myFirstFace, mySecondFace); |
112 | aLenDim->SetDimensionAspect (anAspect); |
47162471 |
113 | |
60bf98ae |
114 | if (aLenDim->DimensionAspect()->IsUnitsDisplayed()) |
115 | { |
116 | aLenDim->SetFlyout (aDimDlg->GetFlyout()); |
117 | aLenDim->SetDisplayUnits (aDimDlg->GetUnits()); |
118 | } |
119 | |
120 | myAISContext->Display (aLenDim); |
121 | } |
122 | |
123 | myAISContext->OpenLocalContext(); |
124 | myAISContext->ActivateStandardMode (TopAbs_FACE); |
125 | } |