mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-07 18:30:55 +03:00
189 lines
4.4 KiB
C++
Executable File
189 lines
4.4 KiB
C++
Executable File
// ScaleDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ScaleDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// ScaleDlg dialog
|
|
|
|
|
|
ScaleDlg::ScaleDlg(Handle_V3d_View Current_V3d_View, CViewer3dView* pView, CWnd* pParent /*=NULL*/)
|
|
: CDialog(ScaleDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(ScaleDlg)
|
|
myCurrent_V3d_View = Current_V3d_View;
|
|
myView=pView;
|
|
m_ScaleX = 0;
|
|
m_ScaleY = 0;
|
|
m_ScaleZ = 0;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void ScaleDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(ScaleDlg)
|
|
DDX_Control(pDX, IDC_SLIDER_SCALEX, m_ScaleXSlidCtrl);
|
|
DDX_Control(pDX, IDC_SLIDER_SCALEY, m_ScaleYSlidCtrl);
|
|
DDX_Control(pDX, IDC_SLIDER_SCALEZ, m_ScaleZSlidCtrl);
|
|
DDX_Text(pDX, IDC_EDIT_SCALEX, m_ScaleX);
|
|
DDV_MinMaxInt(pDX, m_ScaleX, 1, 100);
|
|
DDX_Text(pDX, IDC_EDIT_SCALEY, m_ScaleY);
|
|
DDV_MinMaxInt(pDX, m_ScaleY, 1, 100);
|
|
DDX_Text(pDX, IDC_EDIT_SCALEZ, m_ScaleZ);
|
|
DDV_MinMaxInt(pDX, m_ScaleZ, 1, 100);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(ScaleDlg, CDialog)
|
|
//{{AFX_MSG_MAP(ScaleDlg)
|
|
ON_EN_CHANGE(IDC_EDIT_SCALEX, OnChangeEditScaleX)
|
|
ON_EN_CHANGE(IDC_EDIT_SCALEY, OnChangeEditScaleY)
|
|
ON_EN_CHANGE(IDC_EDIT_SCALEZ, OnChangeEditScaleZ)
|
|
ON_WM_HSCROLL()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// ScaleDlg message handlers
|
|
BOOL ScaleDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
int ScaleX = myView->scaleX;
|
|
int ScaleY = myView->scaleY;
|
|
int ScaleZ = myView->scaleZ;
|
|
|
|
m_ScaleX=ScaleX;
|
|
m_ScaleXSlidCtrl.SetRange(0, 100, TRUE);
|
|
m_ScaleXSlidCtrl.SetPos( ScaleX );
|
|
|
|
m_ScaleY=ScaleY;
|
|
m_ScaleYSlidCtrl.SetRange(0, 100, TRUE);
|
|
m_ScaleYSlidCtrl.SetPos( ScaleY );
|
|
|
|
m_ScaleZ=ScaleZ;
|
|
m_ScaleZSlidCtrl.SetRange(0, 100, TRUE);
|
|
m_ScaleZSlidCtrl.SetPos( ScaleZ );
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void ScaleDlg::OnChangeEditScaleX()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ScaleXSlidCtrl.SetPos( m_ScaleX );
|
|
myView->scaleX = m_ScaleX;
|
|
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ );
|
|
myCurrent_V3d_View->Update();
|
|
|
|
TCollection_AsciiString Message("\
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ);\n\
|
|
\n\
|
|
myCurrent_V3d_View->Update();\n\
|
|
");
|
|
|
|
// Update The Result Message Dialog
|
|
myView->GetDocument()->UpdateResultMessageDlg("SetAxialScale",Message);
|
|
}
|
|
|
|
void ScaleDlg::OnChangeEditScaleY()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ScaleYSlidCtrl.SetPos( m_ScaleY );
|
|
myView->scaleY = m_ScaleY;
|
|
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ );
|
|
myCurrent_V3d_View->Update();
|
|
|
|
TCollection_AsciiString Message("\
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ);\n\
|
|
\n\
|
|
myCurrent_V3d_View->Update();\n\
|
|
");
|
|
|
|
// Update The Result Message Dialog
|
|
myView->GetDocument()->UpdateResultMessageDlg("SetAxialScale",Message);
|
|
}
|
|
|
|
void ScaleDlg::OnChangeEditScaleZ()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
m_ScaleZSlidCtrl.SetPos( m_ScaleZ );
|
|
myView->scaleZ = m_ScaleZ;
|
|
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ );
|
|
myCurrent_V3d_View->Update();
|
|
|
|
TCollection_AsciiString Message("\
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ);\n\
|
|
\n\
|
|
myCurrent_V3d_View->Update();\n\
|
|
");
|
|
|
|
// Update The Result Message Dialog
|
|
myView->GetDocument()->UpdateResultMessageDlg("SetAxialScale",Message);
|
|
}
|
|
|
|
void ScaleDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
|
|
{
|
|
m_ScaleX = m_ScaleXSlidCtrl.GetPos();
|
|
m_ScaleY = m_ScaleYSlidCtrl.GetPos();
|
|
m_ScaleZ = m_ScaleZSlidCtrl.GetPos();
|
|
|
|
if(m_ScaleX<=0)
|
|
{
|
|
m_ScaleX=1;
|
|
m_ScaleXSlidCtrl.SetPos( 1 );
|
|
}
|
|
|
|
if(m_ScaleY<=0)
|
|
{
|
|
m_ScaleY=1;
|
|
m_ScaleYSlidCtrl.SetPos( 1 );
|
|
}
|
|
|
|
if(m_ScaleZ<=0)
|
|
{
|
|
m_ScaleZ=1;
|
|
m_ScaleZSlidCtrl.SetPos( 1 );
|
|
}
|
|
|
|
UpdateData(FALSE);
|
|
|
|
myView->scaleX = m_ScaleX;
|
|
myView->scaleY = m_ScaleY;
|
|
myView->scaleZ = m_ScaleZ;
|
|
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ );
|
|
myCurrent_V3d_View->Update();
|
|
|
|
TCollection_AsciiString Message("\
|
|
myCurrent_V3d_View->SetAxialScale( m_ScaleX, m_ScaleY, m_ScaleZ);\n\
|
|
\n\
|
|
myCurrent_V3d_View->Update();\n\
|
|
");
|
|
|
|
// Update The Result Message Dialog
|
|
myView->GetDocument()->UpdateResultMessageDlg("SetAxialScale",Message);
|
|
|
|
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
|
|
}
|
|
|