158 lines
3.1 KiB
C++
158 lines
3.1 KiB
C++
#include "StdAfx.h"
|
|
#include "DxqmDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
CDxqmDlg::CDxqmDlg(CWnd* pParent /*=NULL*/)
|
|
: CAdUiDialog(CDxqmDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDxqmDlg)
|
|
m_sDistX = _T("20");
|
|
m_sDistY = _T("20");
|
|
m_sScale = _T("5.0");
|
|
m_sDxf = _T("");
|
|
m_sLayer = _T("");
|
|
//}}AFX_DATA_INIT
|
|
m_nQmType=1;
|
|
m_pRb = NULL;
|
|
}
|
|
|
|
void CDxqmDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CAdUiDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDxqmDlg)
|
|
DDX_Text(pDX, IDC_DISTX, m_sDistX);
|
|
DDX_Text(pDX, IDC_DISTY, m_sDistY);
|
|
DDX_Text(pDX, IDC_SCALE, m_sScale);
|
|
DDX_Text(pDX, IDC_DISTX2,m_sDxf);
|
|
DDX_Text(pDX, IDC_SCALE2,m_sLayer);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CDxqmDlg, CAdUiDialog)
|
|
//{{AFX_MSG_MAP(CDxqmDlg)
|
|
ON_BN_CLICKED(IDC_RADWGQM, OnRadwgqm)
|
|
ON_BN_CLICKED(IDC_RADSJQM, OnRadsjqm)
|
|
ON_BN_CLICKED(IDC_BUTTON1, OnAdd)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CDxqmDlg::OnInitDialog()
|
|
{
|
|
CAdUiDialog::OnInitDialog();
|
|
|
|
CenterWindow();
|
|
GetDlgData();
|
|
SetQmType();
|
|
UpdateData(FALSE);
|
|
return TRUE;
|
|
}
|
|
void CDxqmDlg::SetDlgData()
|
|
{
|
|
CString sFormat;
|
|
SetDialogData(_T("横距"),m_sDistX);
|
|
SetDialogData(_T("纵距"),m_sDistY);
|
|
SetDialogData(_T("比例"),m_sScale);
|
|
sFormat.Format(_T("%d"),m_nQmType);
|
|
SetDialogData(_T("类型"),sFormat);
|
|
}
|
|
void CDxqmDlg::GetDlgData()
|
|
{
|
|
CString sFormat;
|
|
if(GetDialogData(_T("横距"),sFormat))
|
|
m_sDistX=sFormat;
|
|
if(GetDialogData(_T("纵距"),sFormat))
|
|
m_sDistY=sFormat;
|
|
if(GetDialogData(_T("比例"),sFormat))
|
|
m_sScale=sFormat;
|
|
if(GetDialogData(_T("类型"),sFormat))
|
|
m_nQmType=_ttoi(sFormat);
|
|
}
|
|
|
|
void CDxqmDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
SetDlgData();
|
|
|
|
if (m_sLayer.IsEmpty() || m_sDxf.IsEmpty())
|
|
{
|
|
AfxMessageBox(_T("请选择表示地形高程的实体!"));
|
|
return;
|
|
}
|
|
|
|
CAdUiDialog::OnOK();
|
|
}
|
|
void CDxqmDlg::SetQmType()
|
|
{
|
|
if(m_nQmType==0) //网格曲面
|
|
{
|
|
((CButton*)GetDlgItem(IDC_RADWGQM))->SetCheck(1);
|
|
((CButton*)GetDlgItem(IDC_RADSJQM))->SetCheck(0);
|
|
GetDlgItem(IDC_DISTX)->EnableWindow(TRUE);
|
|
GetDlgItem(IDC_DISTY)->EnableWindow(TRUE);
|
|
}
|
|
else
|
|
{
|
|
((CButton*)GetDlgItem(IDC_RADWGQM))->SetCheck(0);
|
|
((CButton*)GetDlgItem(IDC_RADSJQM))->SetCheck(1);
|
|
GetDlgItem(IDC_DISTX)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_DISTY)->EnableWindow(FALSE);
|
|
}
|
|
}
|
|
|
|
void CDxqmDlg::OnRadwgqm()
|
|
{
|
|
UpdateData(TRUE);
|
|
m_nQmType=0;
|
|
SetQmType();
|
|
}
|
|
|
|
void CDxqmDlg::OnRadsjqm()
|
|
{
|
|
UpdateData(TRUE);
|
|
m_nQmType=1;
|
|
SetQmType();
|
|
}
|
|
|
|
void CDxqmDlg::GetXYZ(AcGePoint3d& pt) const
|
|
{
|
|
pt.x = _ttof(m_sDistY);
|
|
pt.y = _ttof(m_sDistX);
|
|
pt.z = _ttof(m_sScale);
|
|
}
|
|
|
|
struct resbuf* CDxqmDlg::GetFilter() const
|
|
{
|
|
struct resbuf* pRb = acutBuildList(RTDXF0, (LPCTSTR)m_sDxf,8,(LPCTSTR)m_sLayer,0);
|
|
return pRb;
|
|
}
|
|
|
|
void CDxqmDlg::OnAdd()
|
|
{
|
|
UpdateData();
|
|
|
|
BeginEditorCommand();
|
|
|
|
ads_name ent;
|
|
ads_point pt;
|
|
int nRes = acedEntSel(_T("\n请选择地形高程实体:"),ent,pt);
|
|
if (nRes == RTNORM)
|
|
{
|
|
AcDbObjectId id;
|
|
acdbGetObjectId(id,ent);
|
|
|
|
AcDbEntity* pEnt = NULL;
|
|
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
|
|
{
|
|
m_sDxf = pEnt->isA()->dxfName();
|
|
m_sLayer = pEnt->layer();
|
|
pEnt->close();
|
|
}
|
|
}
|
|
CompleteEditorCommand();
|
|
UpdateData(FALSE);
|
|
} |