www.pudn.com > SurfWareNew06.3.5(LYW).rar > ExtrudeCurveDlg.cpp


// ExtrudeCurveDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "surfware.h" 
#include "ExtrudeCurveDlg.h" 
#include "SurfNurbsCurve.h" 
#include "Point.h" 
#include "SurfWareDoc.h" 
#include "SurfNurbsVolume.h" 
#include "SurfNurbsSurface.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CExtrudeCurveDlg dialog 
 
 
CExtrudeCurveDlg::CExtrudeCurveDlg(CSurfWareDoc* pDoc,int mode,CWnd* pParent /*=NULL*/) 
	: CDialog(CExtrudeCurveDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CExtrudeCurveDlg) 
	m_fX = 0.0f; 
	m_fY = 0.0f; 
	m_fZ = 0.0f; 
	m_fAmount = 0.0f; 
	m_pDoc=pDoc; 
	m_Mode=mode; 
	//}}AFX_DATA_INIT 
} 
 
 
void CExtrudeCurveDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CExtrudeCurveDlg) 
	DDX_Text(pDX, IDC_X, m_fX); 
	DDX_Text(pDX, IDC_Y, m_fY); 
	DDX_Text(pDX, IDC_Z, m_fZ); 
	DDX_Text(pDX, IDC_AMOUNT, m_fAmount); 
	DDV_MinMaxFloat(pDX, m_fAmount, 0.f, 1.e+007f); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CExtrudeCurveDlg, CDialog) 
	//{{AFX_MSG_MAP(CExtrudeCurveDlg) 
	ON_BN_CLICKED(ID_PREVIEW, OnPreview) 
	ON_WM_DESTROY() 
	ON_EN_CHANGE(IDC_AMOUNT, OnChangeAmount) 
	ON_EN_CHANGE(IDC_X, OnChangeX) 
	ON_EN_CHANGE(IDC_Y, OnChangeY) 
	ON_EN_CHANGE(IDC_Z, OnChangeZ) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CExtrudeCurveDlg message handlers 
 
void CExtrudeCurveDlg::OnPreview()  
{ 
	Point* pt=new Point(m_fX,m_fY,m_fZ); 
	CSurfNurbsCurve* cv; 
	CSurfNurbsSurface* sf; 
 
	if (m_Mode==0) { 
		cv=m_pDoc->m_CurrentSelCurve.GetElement(0); 
		m_pDoc->m_TempSurface.GetHead()->ExtrudeCurve(cv,pt,m_fAmount); 
	}else{ 
		sf=m_pDoc->m_CurrentSelSurface.GetElement(0); 
		m_pDoc->m_TempVolume.GetHead()->ExtrudeSurface(sf,pt,m_fAmount); 
	} 
 
	m_pDoc->UpdateAllViews(NULL); 
	delete pt; 
} 
 
BOOL CExtrudeCurveDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	CSurfNurbsSurface* tempSF; 
	CSurfNurbsVolume* tempVOL; 
	 
	if (m_Mode==0) { 
		tempSF=new CSurfNurbsSurface; 
		tempSF->SetColor(RGB(255,0,0)); 
		m_pDoc->m_TempSurface.AddTail(tempSF); 
	}else{ 
		tempVOL=new CSurfNurbsVolume; 
		tempVOL->SetColor(RGB(255,0,0)); 
		m_pDoc->m_TempVolume.AddTail(tempVOL); 
	} 
 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
void CExtrudeCurveDlg::OnDestroy()  
{	 
	CDialog::OnDestroy(); 
	if (m_Mode==0) 
		m_pDoc->m_TempSurface.DelAllObject();	 
	else 
		m_pDoc->m_TempVolume.DelAllObject(); 
} 
 
void CExtrudeCurveDlg::OnChangeAmount()  
{ 
	UpdateData();	 
} 
 
void CExtrudeCurveDlg::OnChangeX()  
{ 
	UpdateData();	 
} 
 
void CExtrudeCurveDlg::OnChangeY()  
{ 
	UpdateData();	 
} 
 
void CExtrudeCurveDlg::OnChangeZ()  
{ 
	UpdateData();	 
}