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

262 lines
6.4 KiB
C++

#include "StdAfx.h"
#include "Resource.h"
#include "ArrowDlg.h"
#include "EarThwormDef.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CArrowDlg::CArrowDlg(CWnd* pParent /*=NULL*/)
: CDialog(CArrowDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CArrowDlg)
m_iRadio = 0;
m_dScale = 6;
m_bScale = FALSE;
m_sDwgNo = _T("D01");
m_sPipeNo = _T("P-1001");
//}}AFX_DATA_INIT
}
void CArrowDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CArrowDlg)
DDX_Control(pDX, IDC_SELECTPIPE, m_CtlPipeNo);
DDX_Control(pDX, IDC_EDITSCALE, m_ControlScale);
DDX_Radio(pDX, IDC_ARR_RD1, m_iRadio);
DDX_Text(pDX, IDC_EDITSCALE, m_dScale);
DDX_Check(pDX, IDC_CHECKSCALE, m_bScale);
DDX_Text(pDX, IDC_EDITDWGNO, m_sDwgNo);
DDX_Text(pDX, IDC_EDITPIPENO, m_sPipeNo);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CArrowDlg, CDialog)
//{{AFX_MSG_MAP(CArrowDlg)
ON_BN_CLICKED(IDC_CHECKSCALE, OnCheckscale)
ON_BN_CLICKED(IDC_SELECTPIPE, OnSelectpipe)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CArrowDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_bmpBtn.LoadBitmap(IDB_SELECT);
m_CtlPipeNo.SetBitmap(m_bmpBtn);
m_ControlScale.EnableWindow(FALSE);
m_bmpBtn1.LoadBitmap(IDB_ARROW1);
CButton * pPicture = (CButton *)GetDlgItem(IDC_ARR_RD1);
pPicture->SetBitmap(m_bmpBtn1);
m_bmpBtn2.LoadBitmap(IDB_ARROW2);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD2);
pPicture->SetBitmap(m_bmpBtn2);
m_bmpBtn3.LoadBitmap(IDB_ARROW3);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD3);
pPicture->SetBitmap(m_bmpBtn3);
m_bmpBtn4.LoadBitmap(IDB_ARROW4);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD4);
pPicture->SetBitmap(m_bmpBtn4);
m_bmpBtn5.LoadBitmap(IDB_ARROW5);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD5);
pPicture->SetBitmap(m_bmpBtn5);
m_bmpBtn6.LoadBitmap(IDB_ARROW6);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD6);
pPicture->SetBitmap(m_bmpBtn6);
m_bmpBtn7.LoadBitmap(IDB_ARROW7);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD7);
pPicture->SetBitmap(m_bmpBtn7);
m_bmpBtn8.LoadBitmap(IDB_ARROW8);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD8);
pPicture->SetBitmap(m_bmpBtn8);
m_bmpBtn9.LoadBitmap(IDB_ARROW9);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD9);
pPicture->SetBitmap(m_bmpBtn9);
m_bmpBtn10.LoadBitmap(IDB_ARROW10);
pPicture = (CButton *)GetDlgItem(IDC_ARR_RD10);
pPicture->SetBitmap(m_bmpBtn10);
//获取初始化数据
AecDbObjXDataMap xDataMap;
PIDLineTools::ReSetPID(xDataMap);
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT, xDataMap))
{
acedAlert(_T("\n系统没有初始化!"));
return FALSE;
}
CString sContent = _T("100");
xDataMap.GetAt(DOC_CONSIGN, sContent);
m_dScale = _ttof(sContent);
UpdateData(FALSE);
return TRUE;
}
void CArrowDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
CDialog::OnOK();
}
void CArrowDlg::OnCheckscale()
{
UpdateData(TRUE);
if (m_bScale==FALSE)
{
m_ControlScale.EnableWindow(FALSE);
}
else
{
m_ControlScale.EnableWindow(TRUE);
}
}
void CArrowDlg::OnSelectpipe()
{
CWnd * pWnd = acedGetAcadFrame();
this->EnableWindow(FALSE);
pWnd->EnableWindow(TRUE);
this->ShowWindow(SW_HIDE);
//
//选择实体
AcGePoint3d pt;
ads_name en;
AcDbObjectId idSelected = NULL;
AcDbObjectId idGroup = NULL;
AcDbObjectId idTemp = NULL;
AcDbObjectId idTip = NULL;
AcDbEntity* pEnt =NULL;
CString sContent = _T("");
AecDbObjXDataMap objXData;
int nRes = acedEntSel(_T("\n请选择实体:"),en,asDblArray(pt));
if (nRes == RTNORM)
{
if (Acad::eOk == acdbGetObjectId(idSelected,en))
{
idGroup = GetGroupId(idSelected);
if (idGroup !=AcDbObjectId::kNull)
{
AcDbGroup* pGroup = NULL;
acdbOpenObject(pGroup,idGroup,AcDb::kForRead);
AcDbGroupIterator* pIter = pGroup->newIterator();
for(;!pIter->done();pIter->next())
{
idTemp = pIter->objectId();
if (objXData.Read(idTemp,PIDPIPE_APP))
{
sContent = _T("");
objXData.GetAt(PID_PIPE_LINENO,sContent);
if(sContent != _T(""))
{
idTip = idTemp;
break;
}
}
}
delete pIter;
pGroup->close();
}
else
{
idTip = idSelected;
}
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, idTip, AcDb::kForRead))
{
//管子
if (objXData.Read(pEnt,PIDPIPE_APP))
{
sContent = _T("");
objXData.GetAt(PID_PIPE_LINENO,sContent);
if(sContent != _T(""))
{
m_sPipeNo = sContent;
}
}
pEnt->close();
}
}
}
this->ShowWindow(SW_SHOW);
this->EnableWindow(TRUE);
this->UpdateData(FALSE);
}
AcDbObjectId CArrowDlg::GetGroupId(AcDbObjectId objId)
{
AcDbObjectId persObjId;
AcDbObject *pEnt;
if (Acad::eOk != acdbOpenObject(pEnt, objId, AcDb::kForRead))
{
acutPrintf(_T("\n实体打开失败!"));
return AcDbObjectId::kNull;
}
AcDbDictionary *pGroup;
const AcDbVoidPtrArray *pReactors;
pReactors = pEnt->reactors();
if (pReactors == NULL)
{
acutPrintf(_T("\n该实体未编组!"));
pEnt->close();
return AcDbObjectId::kNull;
}
pEnt->close();
int length = pReactors->length();
void *pSomething;
for (int i = 0; i < length; ++i)
{
pSomething = (AcDbObject*) pReactors->at(i);
if (acdbIsPersistentReactor(pSomething)) {
// Every group reactor is a persistent reactor.
// Is this a reactor from a group?
persObjId = acdbPersistentReactorObjectId(pSomething);
AcDbObject *pReactor;
if (Acad::eOk != acdbOpenObject(pReactor, persObjId, AcDb::kForRead))
{
acutPrintf(_T("\n迭代器打开失败!"));
continue;
}
if (pReactor->isKindOf(AcDbGroup::desc())) {
// This is a group reactor. Get the group name.
AcDbObjectId groupId = pReactor->ownerId();
if (Acad::eOk != acdbOpenObject(pGroup, groupId, AcDb::kForRead))
{
acutPrintf(_T("\n组打开失败!"));
pReactor->close();
continue;
}
LPTSTR groupName;
if (Acad::eOk != (pGroup->nameAt(persObjId, groupName)))
{
acutPrintf(_T("\n获得组名失败!"));
pReactor->close();
pGroup->close();
continue;
}
pGroup->close();
}
pReactor->close();
}
}
return persObjId;
}