#include "stdafx.h" #include "FxtSettingDlg.h" #include "EarThwormDef.h" #include "uiiado.h" #include "CoreTools.h" #include "KTCadUtility.h" #include "AecDbCurveBase.h" #include "AecDbEntityBase.h" CSettingFXT::CSettingFXT(CWnd* pParent /*=NULL*/) : CDialog(CSettingFXT::IDD, pParent) , m_sFXT(_T("无设置")) { } void CSettingFXT::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO, m_cmbFXT); DDX_Text(pDX, IDC_COMBO, m_sFXT); } BEGIN_MESSAGE_MAP(CSettingFXT, CDialog) ON_BN_CLICKED(IDOK, &CSettingFXT::OnBnClickedOk) END_MESSAGE_MAP() BOOL CSettingFXT::OnInitDialog() { CDialog::OnInitDialog(); std::vector ar; CoreTools::getAllSubSystems(ar); m_cmbFXT.ResetContent(); m_cmbFXT.AddString(m_sFXT); for (size_t i(0); i < ar.size(); ++i) m_cmbFXT.AddString(ar[i]); m_cmbFXT.SetCurSel(0); UpdateData(FALSE); return TRUE; } void CSettingFXT::OnBnClickedOk() { if (!UpdateData(TRUE)) return; OnOK(); } void CSettingFXT::settingFXT() { CAcModuleResourceOverride myResources; resbuf *pRb = acutBuildList(RTDXF0, _T("AEC_DBWEQUIPMENT,AEC_DBXEQUIPMENT"), 0); ads_name ss, ent; int nRes = CKTCadUtility::SelectEntities(_T("\n选择设备:"), ss, pRb); acutRelRb(pRb); if (nRes != RTNORM) return; AcDbObjectId id; Adesk::Int32 lLen(0L); acedSSLength(ss, &lLen); if (lLen <= 0) return; CString sCurrent(_T("*多种*")), sOld(_T("")), sNew(_T("")); for (long i = 0; i < lLen; ++i) { if (acedSSName(ss, i, ent) != RTNORM) continue; if (acdbGetObjectId(id, ent) != Acad::eOk) continue; AcDbObjectPointer ent(id, AcDb::kForWrite); if (ent.openStatus() != Acad::eOk) continue; sNew.Empty(); AecDbCurveBase *pCrvBase = AecDbCurveBase::cast(ent.object()); if (pCrvBase) { pCrvBase->GetAt(PIPE_SYS, sNew); } AecDbEntityBase *pEntBase = AecDbEntityBase::cast(ent.object()); if (pEntBase) { pEntBase->GetAt(PIPE_SYS, sNew); } if (sNew.IsEmpty()) sNew = _T("无设置"); // 第一个 if (i == 0) { sOld = sNew; } if (sOld != sNew) { sCurrent = _T("*多种*"); break; } else sCurrent = sNew; } CSettingFXT dlg; dlg.m_sFXT = sCurrent; if (dlg.DoModal() != IDOK) return; for (long i = 0; i < lLen; ++i) { if (acedSSName(ss, i, ent) != RTNORM) continue; if (acdbGetObjectId(id, ent) != Acad::eOk) continue; AcDbObjectPointer ent(id, AcDb::kForWrite); if (ent.openStatus() != Acad::eOk) continue; AecDbCurveBase *pCrvBase = AecDbCurveBase::cast(ent.object()); if (pCrvBase) { pCrvBase->SetAt(PIPE_SYS, dlg.m_sFXT); continue; } AecDbEntityBase *pEntBase = AecDbEntityBase::cast(ent.object()); if (pEntBase) { pEntBase->SetAt(PIPE_SYS, dlg.m_sFXT); continue; } } acedSSFree(ss); }