import3dgn2datasetdlg.cpp

来自「用VC+SuperMap开发的校园GIS系统」· C++ 代码 · 共 243 行

CPP
243
字号
// Import3Dgn2DatasetDlg.cpp : implementation file
//

#include "stdafx.h"
#include "CampusGis.h"
#include "Import3Dgn2DatasetDlg.h"
#include "Import3Dgn1DatasetDlg.h"
#include "sodatasources.h"
#include "sodatasource.h"
#include "sodatapump.h"
#include "soimportparams.h"
#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CImport3Dgn2DatasetDlg dialog


CImport3Dgn2DatasetDlg::CImport3Dgn2DatasetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CImport3Dgn2DatasetDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CImport3Dgn2DatasetDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CImport3Dgn2DatasetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CImport3Dgn2DatasetDlg)
	DDX_Control(pDX, IDOK, m_Ok);
	DDX_Control(pDX, IDC_BTNREMOVEALL, m_btnRemoveAll);
	DDX_Control(pDX, IDC_BTNREMOVE, m_btnRemove);
	DDX_Control(pDX, IDC_BTNADDALL, m_btnAddAll);
	DDX_Control(pDX, IDC_BTNADD, m_btnAdd);
	DDX_Control(pDX, IDC_LSTSOURCELAYER, m_lstSourceLayer);
	DDX_Control(pDX, IDC_LSTAIMLAYER, m_lstAimLayer);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CImport3Dgn2DatasetDlg, CDialog)
	//{{AFX_MSG_MAP(CImport3Dgn2DatasetDlg)
	ON_BN_CLICKED(IDC_BACK, OnBack)
	ON_BN_CLICKED(IDC_BTNADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_BTNADDALL, OnBtnAddAll)
	ON_BN_CLICKED(IDC_BTNREMOVE, OnBtnRemove)
	ON_BN_CLICKED(IDC_BTNREMOVEALL, OnBtnRemoveAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImport3Dgn2DatasetDlg message handlers

BOOL CImport3Dgn2DatasetDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//初始化
	CString str;
	for(int i=0;i<=10;i++)
	{
		str.Empty();
		str.Format("%d",i);
		m_lstSourceLayer.AddString(str);
	}
	m_lstSourceLayer.SetCurSel(0);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CImport3Dgn2DatasetDlg::OnBack() 
{
	//上一步
	CImport3Dgn1DatasetDlg *dlg=(CImport3Dgn1DatasetDlg *)GetParent();
	dlg->ShowWindow(SW_SHOW);
	DestroyWindow();
}

void CImport3Dgn2DatasetDlg::OnCancel() 
{
	//取消
	CImport3Dgn1DatasetDlg *dlg=(CImport3Dgn1DatasetDlg *)GetParent();
	dlg->Close();
	DestroyWindow();
}

void CImport3Dgn2DatasetDlg::OnBtnAdd() 
{
	//添加
	CString strSourceLayer;
	int index=m_lstSourceLayer.GetCurSel();
	if(index < 0)
		return;
	m_lstSourceLayer.GetText(index,strSourceLayer);
	m_lstAimLayer.AddString(strSourceLayer);
	m_lstSourceLayer.DeleteString(index);
	m_lstAimLayer.SetCurSel(0);
	if(m_lstSourceLayer.GetCount())
		m_lstSourceLayer.SetCurSel(0);
	else
	{
		m_btnAdd.EnableWindow(FALSE);
		m_btnAddAll.EnableWindow(FALSE);
	}
	m_Ok.EnableWindow();
	m_btnRemove.EnableWindow();
	m_btnRemoveAll.EnableWindow();
}

void CImport3Dgn2DatasetDlg::OnBtnAddAll() 
{
	//全部添加
	int i;
	CString strLayerText;

	for(i=0;i<m_lstSourceLayer.GetCount();i++)
	{
		m_lstSourceLayer.SetCurSel(i);
		m_lstSourceLayer.GetText(i,strLayerText);
		m_lstAimLayer.AddString(strLayerText);
	}
	m_lstAimLayer.SetCurSel(0);
	m_lstSourceLayer.ResetContent();
	m_btnRemove.EnableWindow();
	m_btnRemoveAll.EnableWindow();
	m_Ok.EnableWindow();
	m_btnAdd.EnableWindow(FALSE);
	m_btnAddAll.EnableWindow(FALSE);
}

void CImport3Dgn2DatasetDlg::OnBtnRemove() 
{
	//移除
	CString strAimLayer;
	int index;
	
	index=m_lstAimLayer.GetCurSel();
	if(index < 0)
		return;
	m_lstAimLayer.GetText(index,strAimLayer);
	m_lstSourceLayer.AddString(strAimLayer);
	m_lstAimLayer.DeleteString(index);
	m_lstSourceLayer.SetCurSel(0);
	if(!m_lstAimLayer.GetCount())
	{
		m_Ok.EnableWindow(FALSE);
		m_btnRemove.EnableWindow(FALSE);
		m_btnRemove.EnableWindow(FALSE);
	}
	else
		m_lstAimLayer.SetCurSel(0);
	m_btnAdd.EnableWindow();
	m_btnAddAll.EnableWindow();
}

void CImport3Dgn2DatasetDlg::OnBtnRemoveAll() 
{
	//全部移除
	int i;
	CString str;
	m_lstSourceLayer.ResetContent();
	for(i=0;i<=63;i++)
	{
		str.Empty();
		str.Format("%d",i);
		m_lstSourceLayer.AddString(str);
	}
	m_lstSourceLayer.SetCurSel(0);
	m_lstAimLayer.ResetContent();
	m_Ok.EnableWindow(FALSE);
	m_btnRemove.EnableWindow(FALSE);
	m_btnRemoveAll.EnableWindow(FALSE);
	m_btnAdd.EnableWindow();
	m_btnAddAll.EnableWindow();
}

void CImport3Dgn2DatasetDlg::OnOK() 
{
	//确定
	CsoDataSource objDs;
	CsoDataPump objDp;
	
	objDs=GetMainFramePointer()->m_SuperWorkspace.GetDatasources().GetItem(COleVariant(m_strDatasourceName));
	if(!objDs)
	{
		AfxMessageBox("数据源"+m_strDatasourceName+"内部错误!");
		return;
	}
	objDp=objDs.GetDataPump();
	if(!objDp)
	{
		AfxMessageBox("DataPump内部错误!");
		return;
	}
	objDp.GetDataImportParams().SetFileName(m_strPathName);
	objDp.GetDataImportParams().SetFileType(16/*scfDGN*/);
	objDp.GetDataImportParams().SetShowProgress(m_bShowProgress);
	objDp.GetDataImportParams().SetImportAsCompressedDatset(m_bCompressed);
	objDp.GetDataImportParams().SetIgnoreStyle(m_bIgnoreStyle);
	GetMainFramePointer()->m_SuperWorkspace.SetDgnColorMappingTable(m_strColorFileName);
	GetMainFramePointer()->m_SuperWorkspace.SetStyleMappingTable(m_strStyleFileName);
	objDp.GetDataImportParams().SetImportAsCADDataset(m_bCADDataset);
	if(m_bCADDataset)
		objDp.GetDataImportParams().SetDatasetCAD(m_strCADLayerName);
	if(m_bLineDataset)
		objDp.GetDataImportParams().SetDatasetLine(m_strLineLayerName);
	if(m_bPointDataset)
		objDp.GetDataImportParams().SetDatasetPoint(m_strPointLayerName);
	if(m_bRegionDataset)
		objDp.GetDataImportParams().SetDatasetRegion(m_strRegionLayerName);
	if(m_bTextDataset)
		objDp.GetDataImportParams().SetDatasetText(m_strTextLayerName);
	objDp.GetDataImportParams().SetDgnUnitsSelected(m_iUnitIndex);

	BOOL bResult;
	bResult=objDp.Import();
	if(bResult)
	{
		GetMainFramePointer()->GetManager()->Refresh();
		AfxMessageBox("转入成功!");
	}
	else
		AfxMessageBox("转入失败!");
	objDs.ReleaseDispatch();
	objDp.ReleaseDispatch();
	OnCancel();
	CDialog::OnOK();
}

CMainFrame* CImport3Dgn2DatasetDlg::GetMainFramePointer()
{
	CMainFrame *pFrame=(CMainFrame *)::AfxGetMainWnd();
	return pFrame;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?