410 lines
10 KiB
C++
410 lines
10 KiB
C++
#include "stdafx.h"
|
|
#include "IsoSysDlg.h"
|
|
#include "PipelineTools.h"
|
|
#include "AecDbEwPipeBase.h"
|
|
#include "AecDbHvacDuct.h"
|
|
#include "AecDbEwFitting.h"
|
|
#include "AecDbHvacFitting.h"
|
|
#include "KTCadUtility.h"
|
|
#include "CoreTools.h"
|
|
#include "verifynumberstring.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CIsoSysDlg, CDialog)
|
|
|
|
CIsoSysDlg::CIsoSysDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CIsoSysDlg::IDD, pParent)
|
|
, m_bCheckAllSys(FALSE)
|
|
, m_nAngle(FALSE)
|
|
, m_b2DFlag(TRUE)
|
|
, m_bEqu(TRUE)
|
|
, m_bPipeDim(TRUE)
|
|
, m_bPipeDim2(FALSE)
|
|
, m_bFitDim(TRUE)
|
|
, m_dPipeW(0.15)
|
|
, m_dDotWD(0.15)
|
|
, m_sCurrSys(_T(""))
|
|
, m_bElbowLine(TRUE)
|
|
, m_bWeldDot(FALSE)
|
|
, m_bDNDim(FALSE)
|
|
, m_bDimIndex(FALSE)
|
|
, m_nView(FALSE)
|
|
, m_bDimTxtNotISO(TRUE)
|
|
, m_bDimPipeEl(TRUE)
|
|
, m_dRefEl(0.0)
|
|
, m_b45NoIso(TRUE)
|
|
, m_bODxtDim(TRUE)
|
|
, m_bVlvISOV(FALSE)
|
|
, m_bFitFGHide(0)
|
|
, m_bElStyle(0)
|
|
, m_dWFact(0.75)
|
|
, m_dGastGap(2)
|
|
{
|
|
m_pDb = NULL;
|
|
m_bLockSys = FALSE;
|
|
m_bStandISO = FALSE;
|
|
m_dTxtH = 2.0;
|
|
m_sScale = _T("1:100");
|
|
m_bOnePipeLine = FALSE;
|
|
m_bPipeHanger = FALSE;
|
|
|
|
GET_CACHE(CIsoSysDlg, %d%d%d%d%d%d%d%f%f%s%d%d%f%d%d%d%d%f%d%d%d%d%d%f%s%f%d%d%f, &m_bCheckAllSys, &m_nAngle, &m_b2DFlag,
|
|
&m_bEqu,&m_bPipeDim,&m_bPipeDim2,&m_bFitDim,&m_dPipeW,&m_dDotWD,&m_sCurrSys,
|
|
&m_bElbowLine,&m_bWeldDot,&m_bDNDim,&m_bDimIndex,&m_nView,&m_bDimTxtNotISO,
|
|
&m_bDimPipeEl,&m_dRefEl,&m_b45NoIso,&m_bODxtDim,&m_bVlvISOV,&m_bFitFGHide,&m_bElStyle, &m_dTxtH, &m_sScale,&m_dWFact,&m_bOnePipeLine,&m_bPipeHanger,&m_dGastGap);
|
|
if (m_b45NoIso)
|
|
m_nAngle = 2;
|
|
}
|
|
|
|
CIsoSysDlg::~CIsoSysDlg()
|
|
{
|
|
SET_CACHE(CIsoSysDlg, %d%d%d%d%d%d%d%f%f%s%d%d%f%d%d%d%d%f%d%d%d%d%d%f%s%f%d%d%f, m_bCheckAllSys, m_nAngle, m_b2DFlag,
|
|
m_bEqu, m_bPipeDim, m_bPipeDim2, m_bFitDim, m_dPipeW, m_dDotWD, m_sCurrSys,
|
|
m_bElbowLine, m_bWeldDot, m_bDNDim, m_bDimIndex, m_nView, m_bDimTxtNotISO,
|
|
m_bDimPipeEl, m_dRefEl, m_b45NoIso, m_bODxtDim, m_bVlvISOV, m_bFitFGHide, m_bElStyle, m_dTxtH, m_sScale, m_dWFact, m_bOnePipeLine, m_bPipeHanger,m_dGastGap);
|
|
}
|
|
|
|
void CIsoSysDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_COMBOSYSLAY, m_wndComboSys);
|
|
DDX_Check(pDX, IDC_CHECKALLSYS, m_bCheckAllSys);
|
|
DDX_Check(pDX, IDC_CHECK1,m_bWeldDot);
|
|
DDX_Radio(pDX, IDC_RADIO30, m_nAngle);
|
|
DDX_Check(pDX, IDC_CHECK2DFLG, m_b2DFlag);
|
|
DDX_Check(pDX, IDC_CHEEQU, m_bEqu);
|
|
DDX_Check(pDX, IDC_CHECKPIPEDIM, m_bPipeDim);
|
|
DDX_Check(pDX, IDC_CHECKPIPEDIM2, m_bPipeDim2);
|
|
DDX_Check(pDX, IDC_CHECKFITDIM, m_bFitDim);
|
|
DDX_Check(pDX, IDC_CHECKFITDIM2,m_bElbowLine);
|
|
DDX_Check(pDX, IDC_CHECK2,m_bDNDim);
|
|
DDX_Check(pDX, IDC_CHECK3,m_bDimTxtNotISO);
|
|
DDX_Check(pDX, IDC_CHECK4, m_bDimPipeEl);
|
|
DDX_Check(pDX, IDC_CHECK5, m_bODxtDim);
|
|
DDX_Check(pDX, IDC_CHECKSUM, m_bDimIndex);
|
|
DDX_Check(pDX, IDC_CHECKVLVV, m_bVlvISOV);
|
|
DDX_Check(pDX, IDC_CHEFITFHIDE, m_bFitFGHide);
|
|
DDX_Text(pDX, IDC_EDIT1, m_dRefEl);
|
|
DDX_Text(pDX, IDC_EDIT2, m_dTxtH);
|
|
|
|
DDX_Text(pDX, IDC_EDIT3, m_dGastGap);
|
|
|
|
DDX_Text(pDX, IDC_EDITPIPEW, m_dPipeW);
|
|
DDX_Text(pDX, IDC_EDITDOWD, m_dDotWD);
|
|
DDX_CBString(pDX, IDC_COMBOSYSLAY, m_sCurrSys);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nView);
|
|
DDX_Radio(pDX, IDC_RADIO5, m_bElStyle);
|
|
DDX_Control(pDX, IDC_RADIO5, m_wndBTEL1);
|
|
DDX_Control(pDX, IDC_RADIO6, m_wndBTEL2);
|
|
DDX_CBString(pDX, IDC_COMBOSCALE, m_sScale);
|
|
DDX_Text(pDX, IDC_EDITTEXTWFACT, m_dWFact);
|
|
DDX_Check(pDX, IDC_CHECK6, m_bOnePipeLine);
|
|
DDX_Check(pDX, IDC_CHECK7, m_bPipeHanger);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CIsoSysDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CIsoSysDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_BUTTON1,&CIsoSysDlg::OnBnClickedButton1)
|
|
ON_BN_CLICKED(IDC_CHECK2, &CIsoSysDlg::OnBnClickedCheck2)
|
|
ON_BN_CLICKED(IDC_CHECK5, &CIsoSysDlg::OnBnClickedCheck5)
|
|
ON_BN_CLICKED(IDC_BUTTON2, &CIsoSysDlg::OnBnClickedButton2)
|
|
ON_BN_CLICKED(IDC_CHECKPIPEDIM2, &CIsoSysDlg::OnBnClickedCheckPDim2)
|
|
ON_BN_CLICKED(IDC_CHECKPIPEDIM, &CIsoSysDlg::OnBnClickedCheckPDim)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CIsoSysDlg::SetDbServer(CUIISQLiteServer* pDb)
|
|
{
|
|
m_pDb = pDb;
|
|
}
|
|
|
|
void CIsoSysDlg::GetISOContext(AecEqui::ISOContex& isoConx)
|
|
{
|
|
/*
|
|
typedef struct ISOContex
|
|
{
|
|
TCHAR szSystem[65]; //系统
|
|
BOOL bAllSys;
|
|
BOOL bEqu; //设备参与iso
|
|
double dAngle; //iso x角度
|
|
short nVal2D; //阀门二维符号
|
|
short nPipeDim; //管线标注
|
|
short nPipeDim2; //管线在线标注
|
|
short nFitDim; //管件标注
|
|
double dPlotPipeW; //管线打印线宽
|
|
double dPlotDotD; //焊点打印直径
|
|
}ISOCONTEX;
|
|
*/
|
|
|
|
_tcscpy(isoConx.szSystem,m_sCurrSys);
|
|
isoConx.idSys = m_idCurSys;
|
|
isoConx.bAllSys = m_bCheckAllSys;
|
|
isoConx.bEqu = m_bEqu;
|
|
isoConx.dAngle = m_nAngle ? PI / 4.0 : PI / 6.0;
|
|
isoConx.nVal2D = m_b2DFlag;
|
|
isoConx.nPipeDim = m_bPipeDim;
|
|
isoConx.nPipeDim2 = m_bPipeDim2;
|
|
isoConx.nFitDim = m_bFitDim;
|
|
isoConx.dPlotPipeW = m_dPipeW;
|
|
isoConx.dPlotDotD = m_dDotWD;
|
|
isoConx.nType = m_nView;
|
|
isoConx.bElbowLine = m_bElbowLine;
|
|
isoConx.bWeldDot = m_bWeldDot;
|
|
isoConx.nDimIndex = m_bDimIndex;
|
|
isoConx.bDNDim = m_bDNDim;
|
|
isoConx.bDimTxtIso = !m_bDimTxtNotISO;
|
|
isoConx.dRefEl = m_dRefEl;
|
|
isoConx.bDimPipeEl = m_bDimPipeEl;
|
|
isoConx.b45NoIso = m_b45NoIso;
|
|
isoConx.bVlvISOV = m_bVlvISOV;
|
|
}
|
|
|
|
BOOL CIsoSysDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
//显示当前图层系统
|
|
CString sSQL,sStd(CoreTools::getCurrentPipeSysTblName());
|
|
//sSQL = _T("select tablename from wpipecfg where currstd=1");
|
|
//m_pDb->GetSelData(sSQL,sStd);
|
|
|
|
sSQL.Format(_T("select distinct system from %s"),sStd);
|
|
CStringArray arSyses;
|
|
m_pDb->GetSelData(sSQL,arSyses);
|
|
|
|
for (int i = 0;i < arSyses.GetSize();i++)
|
|
{
|
|
m_wndComboSys.AddString(arSyses.GetAt(i));
|
|
}
|
|
|
|
m_wndComboSys.AddString(_T("新风"));
|
|
m_wndComboSys.AddString(_T("除尘"));
|
|
m_wndComboSys.AddString(_T("回风"));
|
|
m_wndComboSys.AddString(_T("加压送风"));
|
|
m_wndComboSys.AddString(_T("排风"));
|
|
m_wndComboSys.AddString(_T("送风"));
|
|
m_wndComboSys.AddString(_T("排烟"));
|
|
m_wndComboSys.AddString(_T("通风"));
|
|
|
|
if (m_bLockSys)
|
|
{
|
|
int nCur = m_wndComboSys.FindString(0,m_sCurrSys);
|
|
if (nCur != -1)
|
|
{
|
|
m_wndComboSys.SetCurSel(nCur);
|
|
}
|
|
m_wndComboSys.EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_CHECKALLSYS)->EnableWindow(FALSE);
|
|
}
|
|
else
|
|
{
|
|
if (arSyses.GetSize() > 0)
|
|
{
|
|
m_wndComboSys.SetCurSel(0);
|
|
m_wndComboSys.GetLBText(0,m_sCurrSys);
|
|
}
|
|
}
|
|
|
|
if (m_bStandISO)
|
|
{
|
|
GetDlgItem(IDC_STATIC_ANG)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_STATIC_ANG)->ShowWindow(SW_HIDE);
|
|
|
|
GetDlgItem(IDC_RADIO30)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO30)->ShowWindow(SW_HIDE);
|
|
|
|
GetDlgItem(IDC_RADIO45)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO45)->ShowWindow(SW_HIDE);
|
|
}
|
|
|
|
m_bmpEl1.LoadBitmap(IDB_BMPEL1);
|
|
m_wndBTEL1.SetBitmap(m_bmpEl1);
|
|
|
|
m_bmpEl2.LoadBitmap(IDB_BMPEL2);
|
|
m_wndBTEL2.SetBitmap(m_bmpEl2);
|
|
|
|
|
|
UpdateData(FALSE);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CIsoSysDlg::OnBnClickedButton1()
|
|
{
|
|
UpdateData();
|
|
|
|
//切换界面的当前活动
|
|
acedGetAcadFrame()->EnableWindow(TRUE);
|
|
ShowWindow(SW_HIDE);
|
|
acedGetAcadFrame()->SetFocus();
|
|
|
|
CString sSys;
|
|
|
|
ads_name ent;
|
|
struct resbuf* pRb = acutBuildList(RTDXF0, _T("AEC_EWPIPE,AEC_DBDUCT,AEC_DBEWFIT,AEC_DBHVACFIT"), 0);
|
|
int nRes = CKTCadUtility::SelectEntity(_T("\n请选择管线管件提取系统:"), ent, pRb);
|
|
acutRelRb(pRb);
|
|
if (nRes == RTNORM)
|
|
{
|
|
AcDbObjectId id;
|
|
acdbGetObjectId(id,ent);
|
|
|
|
AcDbEntity* pEnt = NULL;
|
|
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
|
|
{
|
|
AecDbEwPipeBase* pPipe = AecDbEwPipeBase::cast(pEnt);
|
|
if (pPipe != NULL)
|
|
{
|
|
pPipe->GetSpecialtyData(AcDb::kForRead)->GetAt(PIPE_SYS,sSys);
|
|
}
|
|
|
|
AecDbEwFitting* pEwFit = AecDbEwFitting::cast(pEnt);
|
|
if (pEwFit != NULL)
|
|
{
|
|
pEwFit->GetSpecialtyData(AcDb::kForRead)->GetAt(PIPE_SYS,sSys);
|
|
}
|
|
|
|
AecDbHvacDuct* pDuct = AecDbHvacDuct::cast(pEnt);
|
|
if (pDuct != NULL)
|
|
{
|
|
pDuct->GetSpecialtyData(AcDb::kForRead)->GetAt(PIPE_SYS,sSys);
|
|
}
|
|
|
|
AecDbHvacFitting* pHFit = AecDbHvacFitting::cast(pEnt);
|
|
if (pHFit != NULL)
|
|
{
|
|
pHFit->GetSpecialtyData(AcDb::kForRead)->GetAt(PIPE_SYS,sSys);
|
|
}
|
|
pEnt->close();
|
|
}
|
|
m_idPipeHit = id;
|
|
}
|
|
|
|
if (m_wndComboSys.FindString(0,sSys) == -1)
|
|
{
|
|
nRes = m_wndComboSys.AddString(sSys);
|
|
m_wndComboSys.SetCurSel(nRes);
|
|
}
|
|
m_sCurrSys = sSys;
|
|
|
|
UpdateData(FALSE);
|
|
ShowWindow(SW_SHOW);
|
|
SetFocus();
|
|
acedGetAcadFrame()->EnableWindow(FALSE);
|
|
EnableWindow(TRUE);
|
|
}
|
|
|
|
extern void PL_CSSZ();
|
|
void CIsoSysDlg::OnBnClickedButton2()
|
|
{
|
|
PL_CSSZ();
|
|
}
|
|
|
|
void CIsoSysDlg::OnBnClickedCheck2()
|
|
{
|
|
UpdateData();
|
|
if (m_bDNDim)
|
|
{
|
|
m_bODxtDim = FALSE;
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CIsoSysDlg::OnBnClickedCheck5()
|
|
{
|
|
UpdateData();
|
|
if (m_bODxtDim)
|
|
{
|
|
m_bDNDim = FALSE;
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CIsoSysDlg::OnBnClickedCheckPDim2()
|
|
{
|
|
UpdateData();
|
|
m_bDimPipeEl = m_bPipeDim2;
|
|
//if (m_bPipeDim2)
|
|
//{
|
|
// m_bDNDim = FALSE;
|
|
//}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CIsoSysDlg::OnBnClickedCheckPDim()
|
|
{
|
|
UpdateData();
|
|
//if (m_bPipeDim)
|
|
//{
|
|
// m_bDNDim = FALSE;
|
|
//}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CIsoSysDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_dDotWD < -1.e-10 || m_dPipeW < -1.e-10)
|
|
{
|
|
AfxMessageBox(_T("打印线宽和焊点直径必须大于0!"));
|
|
return;
|
|
}
|
|
|
|
m_idCurSys = PipelineTools::getSysLayer(m_pDb,m_sCurrSys);
|
|
|
|
if (m_dTxtH < 0.2)
|
|
{
|
|
AfxMessageBox(_T("请检查标注字高是否合适!"));
|
|
return;
|
|
}
|
|
|
|
if (m_dWFact < 0.1)
|
|
{
|
|
AfxMessageBox(_T("请检查文字宽度系数是否合适!"));
|
|
return;
|
|
}
|
|
|
|
m_b45NoIso = FALSE;
|
|
if (m_nAngle == 2)
|
|
{
|
|
m_b45NoIso = TRUE;
|
|
}
|
|
|
|
//1.验证比例是否合法
|
|
int nIndex = m_sScale.Find(KT_COLON_CHAR, 0); //':'
|
|
if (nIndex != -1 && nIndex < m_sScale.GetLength())
|
|
{
|
|
|
|
int nLeft = _ttoi(m_sScale.Mid(0, nIndex));
|
|
if (nLeft != 1)
|
|
{
|
|
AfxMessageBox(_T("“出图比例”中,“:”号前数字必须为“1”。"));
|
|
return;
|
|
}
|
|
|
|
if (!VNST(m_sScale.Mid(nIndex + 1)))
|
|
{
|
|
AfxMessageBox(_T("“出图比例”中,“:”号后必须为数字。"));
|
|
return;
|
|
}
|
|
double dRight = _ttof(m_sScale.Mid(nIndex + 1));
|
|
if (dRight <= 0)
|
|
{
|
|
AfxMessageBox(_T("“出图比例”中,“:”号后数字必须大于“0”。"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
OnOK();
|
|
}
|
|
|
|
double CIsoSysDlg::GetPrntScale() const
|
|
{
|
|
double dScale = 100.0;
|
|
int nIndex = m_sScale.Find(':', 0);
|
|
if (nIndex != -1)
|
|
{
|
|
dScale = _ttof(m_sScale.Mid(nIndex + 1)) / _ttof(m_sScale.Mid(0, nIndex));
|
|
}
|
|
return dScale;
|
|
} |