Files
envi-code/SourceCode/Code2026/CoreCommand/FxtSettingDlg.cpp
T
2026-09-28 15:28:50 +08:00

134 lines
2.7 KiB
C++

#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<CString> 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<AcDbEntity> 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<AcDbEntity> 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);
}