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

381 lines
9.8 KiB
C++

#include "stdafx.h"
#include "LinkHydrantDlg.h"
#include "DbEquipment.h"
#include "AcDbObjectPtr.h"
#include "globalFunc.h"
#include "TRegProperty.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNAMIC(CLinkHydrantDlg, CDialog)
CLinkHydrantDlg::CLinkHydrantDlg(int iType, CWnd* pParent /*=NULL*/)
: CDialog(CLinkHydrantDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLinkHydrantDlg)
m_nType = iType;
m_bChangeMode = false;
m_nHydrantLinkType_VPipe = 0;
m_dEle2Pipe1_VPipe = 0.8;
m_dEle2Pipe2_VPipe = 1.1;
m_dDnPipe_VPipe = 65;
m_dDnVPipe_VPipe = 100;
m_nHydrantLinkType_Pipe = 0;
m_nPipeLinkType_Pipe = 0;
m_dDistPipe2Hy_Pipe = 0.5;
m_dDnVPipe_Pipe = 100;
m_nVPipePos_Pipe = 0;
m_dEle2Pipe1_Pipe = 0.8;
m_dEle2Pipe2_Pipe = 1.1;
m_dDn2Pipe_Pipe = 65;
m_dElePipe_Pipe = 2.8;
m_dDnPipe_Pipe = 100;
m_bIsVisible = TRUE;
//}}AFX_DATA_INIT
}
void CLinkHydrantDlg::GetDlgDataFromReg()
{
TRegProperty regProp(_T("SoftWare\\SHANGHUASOFT\\2023"), _T("SHS-WTConfig"));
regProp.SetTopRootKey(HKEY_CURRENT_USER);
regProp.GetValue(_T("HydrantLinkType_VPipe"), m_nHydrantLinkType_VPipe);
regProp.GetValue(_T("Ele2Pipe1_VPipe"), m_dEle2Pipe1_VPipe);
regProp.GetValue(_T("Ele2Pipe2_VPipe"), m_dEle2Pipe2_VPipe);
regProp.GetValue(_T("DnPipe_VPipe"), m_dDnPipe_VPipe);
regProp.GetValue(_T("DnVPipe_VPipe"), m_dDnVPipe_VPipe);
regProp.GetValue(_T("HydrantLinkType_Pipe"), m_nHydrantLinkType_Pipe);
regProp.GetValue(_T("PipeLinkType_Pipe"), m_nPipeLinkType_Pipe);
regProp.GetValue(_T("DistPipe2Hy_Pipe"), m_dDistPipe2Hy_Pipe);
regProp.GetValue(_T("DnVPipe_Pipe"), m_dDnVPipe_Pipe);
regProp.GetValue(_T("VPipePos_Pipe"), m_nVPipePos_Pipe);
regProp.GetValue(_T("Ele2Pipe1_Pipe"), m_dEle2Pipe1_Pipe);
regProp.GetValue(_T("Ele2Pipe2_Pipe"), m_dEle2Pipe2_Pipe);
regProp.GetValue(_T("Dn2Pipe_Pipe"), m_dDn2Pipe_Pipe);
regProp.GetValue(_T("ElePipe_Pipe"), m_dElePipe_Pipe);
regProp.GetValue(_T("DnPipe_Pipe"), m_dDnPipe_Pipe);
}
void CLinkHydrantDlg::UpdataDlgData()
{
m_dlgLinkVPipe.UpdateData(TRUE);
m_nHydrantLinkType_VPipe = m_dlgLinkVPipe.m_nHydrantLinkType;
if (m_nHydrantLinkType_VPipe == 0)
{
m_dlgLinkVPipe.m_dEle2Pipe1 = m_dlgLinkVPipe.m_dEle;
}
else
{
m_dlgLinkVPipe.m_dEle2Pipe2 = m_dlgLinkVPipe.m_dEle;
}
m_dEle2Pipe1_VPipe = m_dlgLinkVPipe.m_dEle2Pipe1;
m_dEle2Pipe2_VPipe = m_dlgLinkVPipe.m_dEle2Pipe2;
m_dDnPipe_VPipe = m_dlgLinkVPipe.m_dDnPipe;
m_dDnVPipe_VPipe = m_dlgLinkVPipe.m_dDnVPipe;
m_dlgLinkPipe.UpdateData(TRUE);
m_nHydrantLinkType_Pipe = m_dlgLinkPipe.m_nHydrantLinkType;
if (m_nHydrantLinkType_Pipe == 0)
{
m_dlgLinkPipe.m_dEle2Pipe1 = m_dlgLinkPipe.m_dEle;
}
else
{
m_dlgLinkPipe.m_dEle2Pipe2 = m_dlgLinkPipe.m_dEle;
}
m_nPipeLinkType_Pipe = m_dlgLinkPipe.m_nPipeLinkType;
m_dEle2Pipe1_Pipe = m_dlgLinkPipe.m_dEle2Pipe1;
m_dEle2Pipe2_Pipe = m_dlgLinkPipe.m_dEle2Pipe2;
m_dDistPipe2Hy_Pipe = m_dlgLinkPipe.m_dDistPipe2Hy;
m_dDnVPipe_Pipe = m_dlgLinkPipe.m_dDnVPipe;
m_nVPipePos_Pipe = m_dlgLinkPipe.m_nVPipePos;
m_dDn2Pipe_Pipe = m_dlgLinkPipe.m_dDn2Pipe;
m_dElePipe_Pipe = m_dlgLinkPipe.m_dElePipe;
m_dDnPipe_Pipe = m_dlgLinkPipe.m_dDnPipe;
}
void CLinkHydrantDlg::SetRegDataFromDlg()
{
UpdataDlgData();
TRegProperty regProp(_T("SoftWare\\SHANGHUASOFT\\2023"), _T("SHS-WTConfig"));
regProp.SetTopRootKey(HKEY_CURRENT_USER);
regProp.SetValue(_T("HydrantLinkType_VPipe"), m_nHydrantLinkType_VPipe);
regProp.SetValue(_T("Ele2Pipe1_VPipe"), m_dEle2Pipe1_VPipe);
regProp.SetValue(_T("Ele2Pipe2_VPipe"), m_dEle2Pipe2_VPipe);
regProp.SetValue(_T("DnPipe_VPipe"), m_dDnPipe_VPipe);
regProp.SetValue(_T("DnVPipe_VPipe"), m_dDnVPipe_VPipe);
regProp.SetValue(_T("HydrantLinkType_Pipe"), m_nHydrantLinkType_Pipe);
regProp.SetValue(_T("PipeLinkType_Pipe"), m_nPipeLinkType_Pipe);
regProp.SetValue(_T("DistPipe2Hy_Pipe"), m_dDistPipe2Hy_Pipe);
regProp.SetValue(_T("DnVPipe_Pipe"), m_dDnVPipe_Pipe);
regProp.SetValue(_T("VPipePos_Pipe"), m_nVPipePos_Pipe);
regProp.SetValue(_T("Ele2Pipe1_Pipe"), m_dEle2Pipe1_Pipe);
regProp.SetValue(_T("Ele2Pipe2_Pipe"), m_dEle2Pipe2_Pipe);
regProp.SetValue(_T("Dn2Pipe_Pipe"), m_dDn2Pipe_Pipe);
regProp.SetValue(_T("ElePipe_Pipe"), m_dElePipe_Pipe);
regProp.SetValue(_T("DnPipe_Pipe"), m_dDnPipe_Pipe);
}
void CLinkHydrantDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLinkHydrantDlg)
DDX_Control(pDX, IDC_TAB_LINK_TYPE, m_wndTabLinkType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLinkHydrantDlg, CDialog)
//{{AFX_MSG_MAP(CLinkHydrantDlg)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_LINK_TYPE, OnSelchangeTabLinkType)
ON_WM_CLOSE()
ON_WM_TIMER()
ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CLinkHydrantDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndTabLinkType.InsertItem(0, _T("立消连接"));
m_wndTabLinkType.InsertItem(1, _T("干消连接"));
GetDlgDataFromReg();
m_wndTabLinkType.SetCurSel(m_nType);
if (m_nType == 0)
{
m_dlgLinkVPipe.ShowWindow(SW_SHOW);
}
else
{
m_dlgLinkPipe.ShowWindow(SW_SHOW);
}
m_dlgLinkVPipe.m_nHydrantLinkType = m_nHydrantLinkType_VPipe;
m_dlgLinkVPipe.m_dEle2Pipe1 = m_dEle2Pipe1_VPipe;
m_dlgLinkVPipe.m_dEle2Pipe2 = m_dEle2Pipe2_VPipe;
m_dlgLinkVPipe.m_dDnPipe = m_dDnPipe_VPipe;
m_dlgLinkVPipe.m_dDnVPipe = m_dDnVPipe_VPipe;
m_dlgLinkPipe.m_nHydrantLinkType = m_nHydrantLinkType_Pipe;
m_dlgLinkPipe.m_dEle2Pipe1 = m_dEle2Pipe1_Pipe;
m_dlgLinkPipe.m_dEle2Pipe2 = m_dEle2Pipe2_Pipe;
m_dlgLinkPipe.m_dDnPipe = m_dDnPipe_Pipe;
m_dlgLinkPipe.m_dDnVPipe = m_dDnVPipe_Pipe;
m_dlgLinkPipe.m_nPipeLinkType = m_nPipeLinkType_Pipe;
m_dlgLinkPipe.m_dDistPipe2Hy = m_dDistPipe2Hy_Pipe;
m_dlgLinkPipe.m_nVPipePos = m_nVPipePos_Pipe;
m_dlgLinkPipe.m_dDn2Pipe = m_dDn2Pipe_Pipe;
m_dlgLinkPipe.m_dElePipe = m_dElePipe_Pipe;
m_dlgLinkVPipe.Create(IDD_LINK_HYDRANT_VPIPE, &m_wndTabLinkType);
m_dlgLinkPipe.Create(IDD_LINK_HYDRANT_PIPE, &m_wndTabLinkType);
CRect rect;
m_wndTabLinkType.GetClientRect(&rect);
rect.right += 20;
m_wndTabLinkType.MoveWindow(&rect);
m_dlgLinkPipe.GetClientRect(&rect);
rect.left += 7;
rect.top += 25;
rect.right += 7;
rect.bottom += 25;
m_dlgLinkPipe.MoveWindow(&rect);
m_dlgLinkVPipe.GetClientRect (&rect);
rect.left += 7;
rect.top += 25;
rect.right += 7;
rect.bottom += 25;
m_dlgLinkVPipe.MoveWindow(&rect);
UpdateData(FALSE);
ModifyWndRect();
#if (ADS == 15)
SetTimer(1, 2000, NULL);
#else
SetTimer(1, 200, NULL);
#endif
return TRUE;
}
void CLinkHydrantDlg::OnTimer(UINT_PTR nIDEvent)
{
UpdateData();
ShowEq(m_bIsVisible);
m_bIsVisible = !m_bIsVisible;
CDialog::OnTimer(nIDEvent);
}
BOOL CLinkHydrantDlg::DestroyWindow()
{
EndHydrantBlink();
return CDialog::DestroyWindow();
}
void CLinkHydrantDlg::OnClose()
{
CDialog::OnClose();
acedPostCommand(_T("\33\33"));
}
LONG_PTR CLinkHydrantDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR)
{
POINT pt;
::GetCursorPos(&pt);
CRect rect;
GetWindowRect(&rect);
if (!(rect.PtInRect(pt)))
{
return FALSE;
}
return TRUE;
}
void CLinkHydrantDlg::EndHydrantBlink()
{
KillTimer(1);
ShowEq(TRUE);
}
void CLinkHydrantDlg::ShowEq(BOOL bShow)
{
for (long l = 0; l < m_ssSet.Length(); l++)
{
Entity entEq = m_ssSet[l];
AcApDocument* pDoc = acDocManager->curDocument();
acDocManager->lockDocument(pDoc, AcAp::kWrite);
OPENOBJ_BEGIN(entEq, AcDb::kForRead, CDbEquipment, pEquip);
if(pEquip != NULL && pEquip->upgradeOpen() == Acad::eOk)
{
if (bShow)
{
pEquip->setVisibility(AcDb::kVisible);
}
else
{
pEquip->setVisibility(AcDb::kInvisible);
}
}
OPENOBJ_END();
acedUpdateDisplay();
actrTransactionManager->flushGraphics();
acDocManager->unlockDocument(pDoc);
}
}
double CLinkHydrantDlg::GetElev()
{
if (m_nType == 0)
{
return m_dlgLinkVPipe.m_dEle;
}
else
{
return m_dlgLinkPipe.m_dEle;
}
}
void CLinkHydrantDlg::SetUnLinkedEq(PickSet &ss)
{
m_ssSet = ss;
}
void CLinkHydrantDlg::OnSelchangeTabLinkType(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE);
m_nType = m_wndTabLinkType.GetCurSel();
ModifyWndRect();
m_bChangeMode = true;
*pResult = 0;
GlobalFunc::PostCommand(_T(" "), false);
acedGetAcadDwgView()->SetFocus();
}
void CLinkHydrantDlg::ModifyWndRect()
{
static CRect rectPipe, rectVPipe;
if (rectPipe.IsRectEmpty())
{
m_dlgLinkPipe.GetWindowRect(&rectPipe);
m_dlgLinkVPipe.GetWindowRect(&rectVPipe);
}
switch(m_wndTabLinkType.GetCurSel())
{
case 0:
{
m_dlgLinkVPipe.ShowWindow(SW_SHOW);
m_dlgLinkPipe.ShowWindow(SW_HIDE);
// 调整对话框大小,以适应属性页
CRect rect;
GetClientRect(&rect);
double dW1 = 0.0, dW2 = 0.0, dH1 = 0.0, dH2 = 0.0;
dW1 = rectVPipe.Width();
dW2 = rect.Width();
dH1 = rectVPipe.Height();
dH2 = rect.Height();
GetWindowRect(&rect);
rect.right += dW1 - dW2 + 25;
rect.bottom += dH1 - dH2 + 40;
MoveWindow(&rect);
// 调整tab大小
m_wndTabLinkType.GetClientRect(&rect);
dW1 = rectVPipe.Width();
dW2 = rect.Width();
dH1 = rectVPipe.Height();
dH2 = rect.Height();
rect.left += 5;
rect.top += 5;
rect.right += dW1 - dW2 + 20;
rect.bottom += dH1 - dH2 + 35;
m_wndTabLinkType.MoveWindow(&rect);
break;
}
case 1:
{
m_dlgLinkPipe.ShowWindow(SW_SHOW);
m_dlgLinkVPipe.ShowWindow(SW_HIDE);
// 调整对话框大小,以适应属性页
CRect rect;
GetClientRect(&rect);
double dW1 = 0.0, dW2 = 0.0, dH1 = 0.0, dH2 = 0.0;
dW1 = rectPipe.Width();
dW2 = rect.Width();
dH1 = rectPipe.Height();
dH2 = rect.Height();
GetWindowRect(&rect);
rect.right += dW1 - dW2 + 23;
rect.bottom += dH1 - dH2 + 40;
MoveWindow(&rect);
// 调整tab大小
m_wndTabLinkType.GetClientRect(&rect);
dW1 = rectPipe.Width();
dW2 = rect.Width();
dH1 = rectPipe.Height();
dH2 = rect.Height();
rect.left += 5;
rect.top += 5;
rect.right += dW1 - dW2 + 18;
rect.bottom += dH1 - dH2 + 35;
m_wndTabLinkType.MoveWindow(&rect);
break;
}
}
}