#include "stdafx.h" #include "OdaCommon.h" #include "ExportToColladaDlg.h" #include "OdaLayerPropManagerDlg.h" #include "DbSymbolTable.h" #include "DbUCSTableRecord.h" BEGIN_MESSAGE_MAP(CExportToColladaDlg, CDialog) ON_BN_CLICKED(IDC_BROWSE, OnBrowse) ON_BN_CLICKED(IDC_CHECK_DEVIATION, OnCheckDeviation) END_MESSAGE_MAP() CExportToColladaDlg::CExportToColladaDlg(OdDbDatabase* pDb, CWnd* pParent) : CDialog(CExportToColladaDlg::IDD, pParent), m_strFileName(_T("")), m_bUseDblPrecision(false), m_bExportWires(false), m_bUseCommonDeviation(false), m_dCommonDeviation(10.0), m_bUseInstances(true), m_bIncludeXRefs(true), m_pDb(pDb) { } CExportToColladaDlg::~CExportToColladaDlg() { } void CExportToColladaDlg::GetUCS(OdGeMatrix3d& matr) { if (m_ucsId.isNull()) return; OdDbUCSTableRecordPtr pUCS = m_ucsId.openObject(); OdGePoint3d origin = pUCS->origin(); OdGeVector3d xAxis = pUCS->xAxis(); OdGeVector3d yAxis = pUCS->yAxis(); OdGeVector3d zAxis = xAxis.crossProduct(yAxis).normalize(); matr.setCoordSystem(origin, xAxis, yAxis, zAxis); matr.invert(); } void CExportToColladaDlg::InitializeUCSList() { OdDbSymbolTablePtr pTable = m_pDb->getUCSTableId().safeOpenObject(); OdDbSymbolTableIteratorPtr pIter; int nComboIdx(0); for (pIter = pTable->newIterator(); !pIter->done(); pIter->step()) { OdDbUCSTableRecordPtr pUCS = pIter->getRecordId().openObject(); m_comboUCS.InsertString(nComboIdx, pUCS->getName()); m_comboUCS.SetItemData(nComboIdx, (DWORD_PTR)(pUCS->id())); } } BOOL CExportToColladaDlg::OnInitDialog() { if (!CDialog::OnInitDialog()) return FALSE; GetDlgItem(IDC_EDIT_DEVIATION)->EnableWindow(FALSE); CheckDlgButton(IDC_CHECK_INST, BST_CHECKED); CheckDlgButton(IDC_CHECK_XREFS, BST_CHECKED); InitializeUCSList(); return TRUE; } void CExportToColladaDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT_FILE, m_strFileName); DDX_Control(pDX, IDC_COMBO_UCS, m_comboUCS); m_bUseDblPrecision = IsDlgButtonChecked(IDC_CHECK_PRECISION) == BST_CHECKED; m_bExportWires = IsDlgButtonChecked(IDC_CHECK_WIRES) == BST_CHECKED; m_bUseCommonDeviation = IsDlgButtonChecked(IDC_CHECK_DEVIATION) == BST_CHECKED; m_bUseInstances = IsDlgButtonChecked(IDC_CHECK_INST) == BST_CHECKED; m_bIncludeXRefs = IsDlgButtonChecked(IDC_CHECK_XREFS) == BST_CHECKED; DDX_Text(pDX, IDC_EDIT_DEVIATION, m_dCommonDeviation); if (pDX->m_bSaveAndValidate) { int nCurSel = m_comboUCS.GetCurSel(); if (nCurSel != CB_ERR) m_ucsId = (OdDbStub*)m_comboUCS.GetItemData(nCurSel); } } void CExportToColladaDlg::OnBrowse() { m_bUseCommonDeviation = IsDlgButtonChecked(IDC_CHECK_DEVIATION) == BST_CHECKED; CString strFilter = _T("Collada File(*.dae)|*.dae||"); CFileDialog dlgFileSave(FALSE, _T("dae"), NULL, OFN_HIDEREADONLY | OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT, strFilter, this); dlgFileSave.m_ofn.lpstrTitle = _T("Export To Collada"); if (dlgFileSave.DoModal() != IDOK) return; m_strFileName = dlgFileSave.GetPathName(); if (m_strFileName.Find('.') == -1) m_strFileName += ".dae"; UpdateData(FALSE); } void CExportToColladaDlg::OnCheckDeviation() { GetDlgItem(IDC_EDIT_DEVIATION)->EnableWindow(IsDlgButtonChecked(IDC_CHECK_DEVIATION) == BST_CHECKED); }