465 lines
12 KiB
C++
465 lines
12 KiB
C++
// EquipmentEditDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include <DbEquipment.h>
|
|
|
|
#include "EquipmentEditDlg.h"
|
|
#include "SelectBlkDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//***************************************************************************************************
|
|
// 编辑附件
|
|
//***************************************************************************************************
|
|
extern int EditSprinkler(AcDbObjectId id);
|
|
extern int EditHydrant(AcDbObjectId id);
|
|
extern int EditWaterBucket(AcDbObjectId id);
|
|
|
|
int EditEquipment(AcDbObjectId id)
|
|
{
|
|
if(!id)
|
|
return RTERROR;
|
|
if(IsSprinkler(id)){ //如果是喷头
|
|
return EditSprinkler(id);
|
|
}
|
|
if(IsHydrant(id)){
|
|
return EditHydrant(id);
|
|
}
|
|
|
|
//cet 2010.10.26 add 编辑雨水斗
|
|
ads_name name;
|
|
acdbGetAdsName(name, id);
|
|
CString str = ReadXdata(name, _T("WaterBucket"));
|
|
if (str == _T("1"))
|
|
{
|
|
return EditWaterBucket(id);
|
|
}
|
|
|
|
CString csSysBlk;
|
|
double nElevation(0), nScale(1), nRotate(0), nPipeLen(0), nNg(0), nBigQ(0);
|
|
BOOL bIsHidePipe(TRUE), bIsMirrorByX(FALSE), bIsMirrorByY(FALSE);
|
|
OPENOBJ_BEGIN(id, AcDb::kForRead, TDbEquipment, pEquip);
|
|
if(pEquip){
|
|
nScale = pEquip->GetScale();
|
|
nRotate = pEquip->GetAngle();
|
|
nElevation = pEquip->GetLocation().z;
|
|
bIsHidePipe = pEquip->IsHidePipe();
|
|
nPipeLen = pEquip->GetPipeLength();
|
|
bIsMirrorByX = pEquip->IsMirrorByX();
|
|
bIsMirrorByY = pEquip->IsMirrorByY();
|
|
nBigQ = pEquip->GetSpare();
|
|
if(nBigQ < 0.0001)
|
|
nBigQ = 0;
|
|
nNg = pEquip->GetDang();
|
|
csSysBlk = pEquip->GetSysBlock();
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CEquipmentEditDlg dlg;
|
|
|
|
dlg.m_bElevation = TRUE;
|
|
dlg.m_bHidePipe = TRUE;
|
|
dlg.m_bMirror = TRUE;
|
|
dlg.m_bNg = TRUE;
|
|
dlg.m_bPipeLen = TRUE;
|
|
dlg.m_bRotate = TRUE;
|
|
dlg.m_bScale = TRUE;
|
|
dlg.m_bBigQ = TRUE;
|
|
|
|
dlg.m_bIsHide = bIsHidePipe;
|
|
dlg.m_bMirrorX = bIsMirrorByX;
|
|
dlg.m_bMirrorY = bIsMirrorByY;
|
|
dlg.m_nRotate = Radian2Angle(nRotate);
|
|
dlg.m_nElevation = nElevation/1000;
|
|
dlg.m_nPipeLen = nPipeLen;
|
|
dlg.m_nScale = nScale;
|
|
dlg.m_nNg = nNg;
|
|
dlg.m_nQ = nBigQ;
|
|
dlg.m_csSysBlk = csSysBlk;
|
|
if(dlg.DoModal() != IDOK)
|
|
return 1;
|
|
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbEquipment, pEquip);
|
|
if(pEquip){
|
|
XPoint ptTmp = pEquip->GetLocation();
|
|
XPoint ptTmp4 = pEquip->GetInsert();
|
|
if(dlg.m_bElevation){
|
|
ptTmp4.z = dlg.m_nElevation*1000;
|
|
pEquip->SetInsert(ptTmp4);
|
|
|
|
ptTmp.z = dlg.m_nElevation*1000;
|
|
pEquip->SetLocation(ptTmp);
|
|
}
|
|
if(dlg.m_bHidePipe)
|
|
pEquip->SetHidePipe(dlg.m_bIsHide);
|
|
if(dlg.m_bNg)
|
|
pEquip->SetDang(dlg.m_nNg);
|
|
if(dlg.m_bBigQ)
|
|
pEquip->SetSpare(dlg.m_nQ);
|
|
if(dlg.m_bMirror){
|
|
pEquip->MirrorByX(dlg.m_bMirrorX);
|
|
pEquip->MirrorByY(dlg.m_bMirrorY);
|
|
}
|
|
if(dlg.m_bPipeLen)
|
|
pEquip->SetPipeLength(dlg.m_nPipeLen);
|
|
if(dlg.m_bRotate)
|
|
pEquip->SetAngle(dlg.m_nRotate / 180 * PI);
|
|
if(dlg.m_bSysBlk)
|
|
pEquip->SetSysBlock(dlg.m_csSysBlk);
|
|
if(dlg.m_bScale){
|
|
pEquip->SetScale(dlg.m_nScale);
|
|
pEquip->SetYScale(dlg.m_nScale);
|
|
// if(ptTmp != ptTmp4){//如果插入点不是接线点,要调整插入点。 sr remove 2007-11-29 系统消火栓接线点,插入点不是同一点
|
|
// AcDbExtents extents;
|
|
// pEquip->getGeomExtents(extents);
|
|
// AcGePoint3d pMax = extents.maxPoint();
|
|
// AcGePoint3d pMin = extents.minPoint();
|
|
// XPoint ptCen;
|
|
// ptCen[0] = (pMax[0] + pMin[0]) / 2;
|
|
// ptCen[1] = (pMax[1] + pMin[1]) / 2;
|
|
// ptCen[2] = 0;
|
|
// AcGeMatrix3d mat;
|
|
// mat.setToTranslation(AcGeVector3d(ptTmp[0] - ptCen[0], ptTmp[1] - ptCen[1], 0));
|
|
// ptTmp4.TransformBy(mat);
|
|
//
|
|
// pEquip->SetInsert(ptTmp4);
|
|
// }
|
|
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
return 1;
|
|
}
|
|
|
|
//***************************************************************************************************
|
|
// 修改附件
|
|
//***************************************************************************************************
|
|
void EditEquipCmd()
|
|
{
|
|
RBList rbMask(RTDXF0, _T("ATS_EQUIPMENT"), 8, _T("*"), NULL);
|
|
PickSet ss(SS_FREE);
|
|
if(SelectEntities(_T("\n请选择要修改的给水附件或排水附件<退出>"), ss, rbMask) != RTNORM)
|
|
return;
|
|
long len = ss.Length();
|
|
if(len < 1)
|
|
return;
|
|
CString csSysBlk;
|
|
double nElevation(0), nScale(1), nRotate(0), nPipeLen(0), nNg(0), nBigQ(0);
|
|
BOOL bIsHidePipe(TRUE), bIsMirrorByX(FALSE), bIsMirrorByY(FALSE);
|
|
Entity ent = ss[0L];
|
|
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbEquipment, pEquip);
|
|
if(pEquip){
|
|
nScale = pEquip->GetScale();
|
|
nRotate = pEquip->GetAngle();
|
|
nElevation = pEquip->GetLocation().z;
|
|
bIsHidePipe = pEquip->IsHidePipe();
|
|
nPipeLen = pEquip->GetPipeLength();
|
|
bIsMirrorByX = pEquip->IsMirrorByX();
|
|
bIsMirrorByY = pEquip->IsMirrorByY();
|
|
nNg = pEquip->GetDang();
|
|
nBigQ = pEquip->GetSpare();
|
|
if(nBigQ < 0.00001)
|
|
nBigQ = 0;
|
|
csSysBlk = pEquip->GetSysBlock();
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CEquipmentEditDlg dlg;
|
|
dlg.m_bIsHide = bIsHidePipe;
|
|
dlg.m_bMirrorX = bIsMirrorByX;
|
|
dlg.m_bMirrorY = bIsMirrorByY;
|
|
dlg.m_nRotate = Radian2Angle(nRotate);
|
|
dlg.m_nElevation = nElevation/1000;
|
|
dlg.m_nPipeLen = nPipeLen;
|
|
dlg.m_nScale = nScale;
|
|
dlg.m_nNg = nNg;
|
|
dlg.m_nQ = nBigQ;
|
|
dlg.m_csSysBlk = csSysBlk;
|
|
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
for(long i=0;i<len;i++){
|
|
Entity entTmp = ss[i];
|
|
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, TDbEquipment, pEquip);
|
|
if(pEquip){
|
|
if(dlg.m_bElevation){
|
|
XPoint ptTmp4 = pEquip->GetInsert();
|
|
ptTmp4.z = dlg.m_nElevation*1000;
|
|
pEquip->SetInsert(ptTmp4);
|
|
|
|
XPoint ptTmp = pEquip->GetLocation();
|
|
ptTmp.z = dlg.m_nElevation*1000;
|
|
pEquip->SetLocation(ptTmp);
|
|
}
|
|
if(dlg.m_bHidePipe)
|
|
pEquip->SetHidePipe(dlg.m_bIsHide);
|
|
if(dlg.m_bNg)
|
|
pEquip->SetDang(dlg.m_nNg);
|
|
if(dlg.m_bBigQ)
|
|
pEquip->SetSpare(dlg.m_nQ);
|
|
if(dlg.m_bMirror){
|
|
pEquip->MirrorByX(dlg.m_bMirrorX);
|
|
pEquip->MirrorByY(dlg.m_bMirrorY);
|
|
}
|
|
if(dlg.m_bPipeLen)
|
|
pEquip->SetPipeLength(dlg.m_nPipeLen);
|
|
if(dlg.m_bRotate)
|
|
pEquip->SetAngle(dlg.m_nRotate / 180 * PI);
|
|
if(dlg.m_bScale){
|
|
pEquip->SetScale(dlg.m_nScale);
|
|
pEquip->SetYScale(dlg.m_nScale);
|
|
}
|
|
if(dlg.m_bSysBlk)
|
|
pEquip->SetSysBlock(dlg.m_csSysBlk);
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CEquipmentEditDlg dialog
|
|
|
|
|
|
CEquipmentEditDlg::CEquipmentEditDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CEquipmentEditDlg::IDD, pParent), m_spinPipe(50)
|
|
{
|
|
//{{AFX_DATA_INIT(CEquipmentEditDlg)
|
|
m_bElevation = FALSE;
|
|
m_bHidePipe = FALSE;
|
|
m_bIsHide = FALSE;
|
|
m_bMirror = FALSE;
|
|
m_bPipeLen = FALSE;
|
|
m_bRotate = FALSE;
|
|
m_bScale = FALSE;
|
|
m_bMirrorX = FALSE;
|
|
m_bMirrorY = FALSE;
|
|
m_nElevation = 0.0;
|
|
m_nPipeLen = 0.0;
|
|
m_nRotate = 0.0;
|
|
m_nScale = 0.0;
|
|
m_bNg = FALSE;
|
|
m_nNg = 0.0;
|
|
m_bBigQ = FALSE;
|
|
m_nQ = 0.0;
|
|
m_bSysBlk = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CEquipmentEditDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CEquipmentEditDlg)
|
|
DDX_Control(pDX, IDC_SPIN_PIPELEN, m_spinPipe);
|
|
DDX_Check(pDX, IDC_CHECK_ELEVATION2, m_bElevation);
|
|
DDX_Check(pDX, IDC_CHECK_HIDEPIPE, m_bHidePipe);
|
|
DDX_Check(pDX, IDC_CHECK_ISHIDE, m_bIsHide);
|
|
DDX_Check(pDX, IDC_CHECK_MIRROR, m_bMirror);
|
|
DDX_Check(pDX, IDC_CHECK_PIPELEN2, m_bPipeLen);
|
|
DDX_Check(pDX, IDC_CHECK_ROTATE, m_bRotate);
|
|
DDX_Check(pDX, IDC_CHECK_SCALE, m_bScale);
|
|
DDX_Check(pDX, IDC_CHECK_X, m_bMirrorX);
|
|
DDX_Check(pDX, IDC_CHECK_Y, m_bMirrorY);
|
|
DDX_Text(pDX, IDC_EDIT_ELEVATION, m_nElevation);
|
|
DDX_Text(pDX, IDC_EDIT_PIPELEN, m_nPipeLen);
|
|
DDX_Text(pDX, IDC_EDIT_ROTATE, m_nRotate);
|
|
DDX_Text(pDX, IDC_EDIT_SCALE, m_nScale);
|
|
DDX_Check(pDX, IDC_CHECK_NG, m_bNg);
|
|
DDX_Text(pDX, IDC_EDIT_NG, m_nNg);
|
|
DDX_Check(pDX, IDC_CHECK_BIGQ, m_bBigQ);
|
|
DDX_Text(pDX, IDC_EDIT_Q, m_nQ);
|
|
DDX_Check(pDX, IDC_CHECK_SYSBLK, m_bSysBlk);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CEquipmentEditDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CEquipmentEditDlg)
|
|
ON_BN_CLICKED(IDC_CHECK_SCALE, OnCheckScale)
|
|
ON_BN_CLICKED(IDC_CHECK_ROTATE, OnCheckRotate)
|
|
ON_BN_CLICKED(IDC_CHECK_ELEVATION2, OnCheckElevation2)
|
|
ON_BN_CLICKED(IDC_CHECK_PIPELEN2, OnCheckPipelen2)
|
|
ON_BN_CLICKED(IDC_CHECK_HIDEPIPE, OnCheckHidepipe)
|
|
ON_BN_CLICKED(IDC_CHECK_MIRROR, OnCheckMirror)
|
|
ON_BN_CLICKED(IDC_CHECK_NG, OnCheckNg)
|
|
ON_BN_CLICKED(IDC_CHECK_BIGQ, OnCheckBigq)
|
|
ON_BN_CLICKED(IDC_PREVIEW, OnPreview)
|
|
ON_WM_PAINT()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CEquipmentEditDlg message handlers
|
|
|
|
BOOL CEquipmentEditDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
m_spinPipe.SetRange(0, 10000);
|
|
UpdateData(FALSE);
|
|
SetEnable();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckScale()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckRotate()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckElevation2()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckPipelen2()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckHidepipe()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckMirror()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckNg()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnCheckBigq()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CEquipmentEditDlg::SetEnable()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_SCALE);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_ROTATE);
|
|
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_ELEVATION);
|
|
CWnd *pWnd4 = GetDlgItem(IDC_EDIT_PIPELEN);
|
|
CWnd *pWnd5 = GetDlgItem(IDC_SPIN_PIPELEN);
|
|
CWnd *pWnd6 = GetDlgItem(IDC_CHECK_ISHIDE);
|
|
CWnd *pWnd7 = GetDlgItem(IDC_CHECK_Y);
|
|
CWnd *pWnd8 = GetDlgItem(IDC_CHECK_X);
|
|
CWnd *pWnd9 = GetDlgItem(IDC_EDIT_NG);
|
|
CWnd *pWnd10 = GetDlgItem(IDC_EDIT_Q);
|
|
|
|
if(m_bBigQ)
|
|
pWnd10->EnableWindow(TRUE);
|
|
else
|
|
pWnd10->EnableWindow(FALSE);
|
|
|
|
if(m_bNg)
|
|
pWnd9->EnableWindow(TRUE);
|
|
else
|
|
pWnd9->EnableWindow(FALSE);
|
|
|
|
if(m_bElevation)
|
|
pWnd3->EnableWindow(TRUE);
|
|
else
|
|
pWnd3->EnableWindow(FALSE);
|
|
|
|
if(m_bHidePipe)
|
|
pWnd6->EnableWindow(TRUE);
|
|
else
|
|
pWnd6->EnableWindow(FALSE);
|
|
|
|
if(m_bScale)
|
|
pWnd1->EnableWindow(TRUE);
|
|
else
|
|
pWnd1->EnableWindow(FALSE);
|
|
|
|
if(m_bRotate)
|
|
pWnd2->EnableWindow(TRUE);
|
|
else
|
|
pWnd2->EnableWindow(FALSE);
|
|
|
|
if(m_bMirror){
|
|
pWnd7->EnableWindow(TRUE);
|
|
pWnd8->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd7->EnableWindow(FALSE);
|
|
pWnd8->EnableWindow(FALSE);
|
|
}
|
|
|
|
if(m_bPipeLen){
|
|
pWnd4->EnableWindow(TRUE);
|
|
pWnd5->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd4->EnableWindow(FALSE);
|
|
pWnd5->EnableWindow(FALSE);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void CEquipmentEditDlg::OnPreview()
|
|
{
|
|
UpdateData(TRUE);
|
|
if(!m_bSysBlk || m_csSysBlk == _T(""))
|
|
return;
|
|
XString xsTKName, xsRocord;
|
|
SplitSlbName((const TCHAR*)m_csSysBlk, xsTKName, xsRocord);
|
|
|
|
CString csSldName;
|
|
|
|
csSldName.Format(_T("$TWTSYS$%s"), xsRocord);
|
|
CString csType = GetTgBlkTypeInTk(csSldName);
|
|
if(csType.Find(_T("\\")) < 0)
|
|
return;
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CSelectBlkDlg dlg;
|
|
dlg.m_csTkName = _T("TWTSYS");
|
|
dlg.m_csType = csType;
|
|
CWnd *pWnd = GetDlgItem(IDC_PREVIEW);
|
|
CRect rect;
|
|
dlg.m_staticSlide.m_csCurRecord = csSldName;
|
|
pWnd->GetWindowRect(&rect);
|
|
dlg.m_ptBase = rect.TopLeft();
|
|
if(dlg.DoModal() == IDOK){
|
|
CString csRet = dlg.m_staticSlide.m_csCurRecord;
|
|
XString xsTKName, xsRocord, xsTmp;
|
|
SplitSlbName(csRet, xsTKName, xsRocord);
|
|
m_csSysBlk.Format(_T("TWTSYS(%s)"), xsRocord);
|
|
OpenSlide();
|
|
}
|
|
}
|
|
|
|
void CEquipmentEditDlg::OpenSlide()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pImageBox1 = GetDlgItem(IDC_PREVIEW);
|
|
DrawSlide((const TCHAR*)m_csSysBlk, pImageBox1);
|
|
}
|
|
|
|
void CEquipmentEditDlg::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
OpenSlide();
|
|
}
|