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

725 lines
17 KiB
C++

#include "stdafx.h"
#include "TJWTDlg.h"
#include "AecDbEarthWorm.h"
#include "KTCADUtilityEx.h"
#include "AcDbX3dSolid.h"
#include "AecDbX3dGroup.h"
#include "UITools.h"
#include "axlock.h"
#include "AecDbEarthWormFitting.h"
#include "AecDbEwFitting.h"
#ifndef Plumbing_DB
#define Plumbing_DB _T("\\Plumbing.db")
#endif
static const Adesk::UInt16 kColorByBlock = 0;
static const Adesk::UInt16 kRed = 1;
static const Adesk::UInt16 kYellow = 2;
static const Adesk::UInt16 kGreen = 3;
static const Adesk::UInt16 kCyan = 4;
static const Adesk::UInt16 kBlue = 5;
static const Adesk::UInt16 kMagenta = 6;
static const Adesk::UInt16 kWhite = 7;
static const Adesk::UInt16 kColorByLayer = 256;
extern CString IDCreate();
extern AecInterface* SelectLockInf(AcDbObjectId idEW,AecDbX3dGroup*& pGroupAt);
extern AecInterface* SelectLockInf(AcDbObjectId idEW,AecDbObjXDataMap*& pGroupMap);
extern AecInterface* SelectLockInfH(AcDbObjectId idHouse,AecDbObjXDataMap*& pGroupMap);
IMPLEMENT_DYNAMIC(CTJWTDlg, CDialog)
CTJWTDlg::CTJWTDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTJWTDlg::IDD, pParent)
, m_dAngle(90)
, m_sOutDir(_T("0,0,1"))
, m_nPos(0)
, m_sInfDir1(_T(""))
, m_sInfDir2(_T(""))
{
m_vtEnter = AcGeVector3d::kXAxis;
m_vtOutDir = AcGeVector3d::kZAxis;
m_ptStart.set(0,0,0);
m_dRRato = 2.0;
m_nPipeColor = kRed;
m_sCurrSys = _T("");
m_sMertial = _T("");
m_dDn = 0.0;
m_dt = 14;
m_idxRoom = -1;
}
CTJWTDlg::~CTJWTDlg()
{
}
void CTJWTDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_wndListBox);
DDX_Text(pDX, IDC_EDIT1, m_dAngle);
DDX_Text(pDX, IDC_EDIT3, m_dDn);
DDX_Text(pDX, IDC_EDIT4, m_sMertial);
DDX_Text(pDX, IDC_EDIT5, m_sCurrSys);
DDX_Text(pDX, IDC_EDIT6, m_sOutDir);
DDX_Radio(pDX, IDC_RADIO1, m_nPos);
DDX_Text(pDX, IDC_EDIT10, m_sInfDir1);
DDX_Text(pDX, IDC_EDIT34, m_sInfDir2);
}
BEGIN_MESSAGE_MAP(CTJWTDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, &CTJWTDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDOK, &CTJWTDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON2, &CTJWTDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_RADIO1, &CTJWTDlg::OnBnClickedRadio1)
ON_BN_CLICKED(IDC_RADIO2, &CTJWTDlg::OnBnClickedRadio2)
ON_BN_CLICKED(IDC_RADIO3, &CTJWTDlg::OnBnClickedRadio3)
ON_BN_CLICKED(IDC_RADIO4, &CTJWTDlg::OnBnClickedRadio4)
ON_BN_CLICKED(IDC_RADIO12, &CTJWTDlg::OnBnClickedRadio12)
ON_BN_CLICKED(IDC_RADIO13, &CTJWTDlg::OnBnClickedRadio13)
ON_BN_CLICKED(IDC_BUTTON4, &CTJWTDlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON5, &CTJWTDlg::OnBnClickedButton5)
END_MESSAGE_MAP()
BOOL CTJWTDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString path = FilePath::GetSysDir() + Plumbing_DB;
if (!m_dbSQLite.InitADOServer(path))
{
AfxMessageBox(CString(_T("数据库初始化失败,请检查 sys")) + Plumbing_DB + _T("文件是否存在."));
return FALSE;
}
InitElbowCrt();
return TRUE;
}
void CTJWTDlg::SetEWFittingId(AcDbObjectId& id)
{
m_idEWFit = id;
}
void CTJWTDlg::SetXXXHouseID(AcDbObjectId& id)
{
m_idHouse = id;
}
void CTJWTDlg::InitElbowCrt()
{
CString sSQL;
sSQL = _T("select [曲率半径] from AecElbowradius order by [曲率半径]");
bool bSet = false;
CStringArray arVals;
m_dbSQLite.GetSelData(sSQL,arVals);
for (int i = 0;i < arVals.GetSize();i++)
{
m_wndListBox.AddString(arVals.GetAt(i));
if ( fabs( m_dRRato - _ttof(arVals.GetAt(i) ) ) < 1.e-2)
{
m_wndListBox.SetCurSel(i);
bSet = true;
}
}
if (!bSet)
m_wndListBox.SetCurSel(0);
}
void CTJWTDlg::OnBnClickedButton1()
{
UpdateData(TRUE);
EnableWindow(FALSE);
CWnd* pFrame = acedGetAcadFrame();
pFrame->EnableWindow(TRUE);
ShowWindow(SW_HIDE);
pFrame->SetFocus();
ads_point pt;
int nRes = acedGetPoint(NULL,_T("\n选择接口点:"),pt);
if (nRes == RTNORM)
{
AcGePoint3d ptInf = asPnt3d(pt);
//选择管道,弯头等
AcAxDocLock lock;
AecDbEarthWormFitting* pFit = NULL;
if ( Acad::eOk == acdbOpenAcDbEntity((AcDbEntity*&)pFit,m_idEWFit,AcDb::kForRead))
{
AecDbX3dGroup* pGroupNext = NULL;
int nPos = 0;
double dDn = 0.0,dSpace = 0.0;
while( pFit->GetX3dGroup(nPos,pGroupNext) )
{
AcArray<AecInterface> arInfs;
if ( pGroupNext->GetInterface(arInfs) )
{
if ( !pGroupNext->GetSpecialtyData()->GetAt(_T("m_dDn"),dDn) )
{
pGroupNext->GetSpecialtyData()->GetAt(_T("m_dDn2"),dDn);
}
for (int i = 0;i < arInfs.length();i++)
{
dSpace = ptInf.distanceTo(arInfs.at(i).ptPos);
if ( fabs( dSpace - 0.5 * AS_MUNIT(dDn) ) < 1.e-1) //10mm
{
m_ptStart = arInfs.at(i).ptPos;
m_vtEnter = arInfs.at(i).vtDir;
m_vtEnter.negate();
m_dR = arInfs.at(i).dSize1;
//复制pGroup的材料信息和管径
pGroupNext->GetSpecialtyData()->GetAt(_T("m_sCurrSys"),m_sCurrSys);
pGroupNext->GetSpecialtyData()->GetAt(_T("m_sMertial"),m_sMertial);
pGroupNext->GetSpecialtyData()->GetAt(_T("m_idxRoom"),m_idxRoom);
m_dDn = dDn;
pGroupNext->GetSpecialtyData()->GetAt(_T("m_dt"),m_dt);
pGroupNext->GetSpecialtyData()->GetAt(_T("COLOR"),m_nPipeColor);//系统默认KEY COLOR
break;
}
}
}
}
pFit->close();
}
}
pFrame->EnableWindow(FALSE);
ShowWindow(SW_SHOW);
EnableWindow(TRUE);
UpdateData(FALSE);
}
void CTJWTDlg::OnBnClickedButton4()
{
UpdateData();
AecDbObjXDataMap* pGroupNext = NULL;
AecInterface* pInf = SelectLockInf(m_idEWFit,pGroupNext);
double dDn = 0.0,dSpace = 0.0;
if (pInf == NULL)
{
pInf = SelectLockInfH(m_idHouse,pGroupNext);
//查外径
}
if (pInf != NULL)
{
m_ptStart = pInf->ptPos;
m_vtEnter = -pInf->vtDir;
m_vtEnter.negate();
m_dR = pInf->dSize1;
if ( !pGroupNext->GetAt(_T("m_dDn"),dDn) )
{
pGroupNext->GetAt(_T("m_dDn2"),dDn);
}
if (dDn < 1.e-3)
{
pGroupNext->GetAt(PIPE_DN,dDn);
dDn *= 1000.0;
}
//复制pGroup的材料信息和管径
pGroupNext->GetAt(_T("m_idxRoom"),m_idxRoom);
pGroupNext->GetAt(_T("m_sCurrSys"),m_sCurrSys);
if (!pGroupNext->GetAt(_T("m_sMertial"),m_sMertial))
{
pGroupNext->GetAt(PIPE_MATERIAL,m_sMertial);
pGroupNext->GetAt(PIPE_SYS,m_sCurrSys);
}
pGroupNext->GetAt(PIPE_OD,m_dOD);
m_dOD *= 1000.0;
m_dDn = dDn;
if ( !pGroupNext->GetAt(_T("m_dt"),m_dt) )
{
pGroupNext->GetAt(PIPE_THICK,m_dt);
m_dt *= 1000.0;//转为毫米
}
pGroupNext->GetAt(_T("COLOR"),m_nPipeColor);//系统默认KEY COLOR
pInf->vtDir.normalize();
m_sInfDir1.Format(_T("%g,%g,%g"),pInf->vtDir.x,pInf->vtDir.y,pInf->vtDir.z);
UpdateData(FALSE);
}
}
void CTJWTDlg::OnBnClickedButton2()
{
UpdateData(TRUE);
EnableWindow(FALSE);
CWnd* pFrame = acedGetAcadFrame();
pFrame->EnableWindow(TRUE);
ShowWindow(SW_HIDE);
pFrame->SetFocus();
ads_point pt;
int nRes = acedGetPoint(NULL,_T("\n选择接口点:"),pt);
if (nRes == RTNORM)
{
AcGePoint3d ptInf = asPnt3d(pt);
//选择管道,弯头等
AcAxDocLock lock;
AecDbEarthWormFitting* pFit = NULL;
if ( Acad::eOk == acdbOpenAcDbEntity((AcDbEntity*&)pFit,m_idEWFit,AcDb::kForRead))
{
AecDbX3dGroup* pGroupNext = NULL;
int nPos = 0;
double dDn = 0.0,dSpace = 0.0;
while( pFit->GetX3dGroup(nPos,pGroupNext) )
{
AcArray<AecInterface> arInfs;
if ( pGroupNext->GetInterface(arInfs) )
{
if ( !pGroupNext->GetSpecialtyData()->GetAt(_T("m_dDn"),dDn) )
{
pGroupNext->GetSpecialtyData()->GetAt(_T("m_dDn2"),dDn);
}
for (int i = 0;i < arInfs.length();i++)
{
dSpace = ptInf.distanceTo(arInfs.at(i).ptPos);
if ( fabs(dSpace - 0.5 * AS_MUNIT(dDn) ) < 1.e-1) //10mm
{
m_vtOutDir = arInfs.at(i).vtDir;
m_sOutDir.Format(_T("%g,%g,%g"),m_vtOutDir.x,m_vtOutDir.y,m_vtOutDir.z);
pGroupNext->GetSpecialtyData()->GetAt(_T("m_idxRoom"),m_idxRoom);
double dAngle = m_vtOutDir.angleTo(m_vtEnter);
if (dAngle - PI > 1.e-6)
{
dAngle = 2.0 * PI - dAngle;
m_dAngle = dAngle * 180.0 / PI;
}
break;
}
}
}
}
pFit->close();
}
}
pFrame->EnableWindow(FALSE);
ShowWindow(SW_SHOW);
EnableWindow(TRUE);
UpdateData(FALSE);
}
void CTJWTDlg::OnBnClickedButton5()
{
UpdateData();
AecDbObjXDataMap* pGroupNext = NULL;
AecInterface* pInf = SelectLockInf(m_idEWFit,pGroupNext);
if (pInf == NULL)
{
pInf = SelectLockInfH(m_idHouse,pGroupNext);
}
if (pInf != NULL)
{
m_vtOutDir = pInf->vtDir;
m_sOutDir.Format(_T("%g,%g,%g"),m_vtOutDir.x,m_vtOutDir.y,m_vtOutDir.z);
pGroupNext->GetAt(_T("m_idxRoom"),m_idxRoom);
double dAngle = m_vtOutDir.angleTo(m_vtEnter);
if (dAngle - PI > 1.e-6)
{
dAngle = 2.0 * PI - dAngle;
m_dAngle = dAngle * 180.0 / PI;
}
pInf->vtDir.normalize();
m_sInfDir2.Format(_T("%g,%g,%g"),pInf->vtDir.x,pInf->vtDir.y,pInf->vtDir.z);
UpdateData(FALSE);
}
}
void CTJWTDlg::OnBnClickedOk()
{
if (m_dAngle < 10 || m_dAngle > 91)
{
AfxMessageBox(_T("弯头角度太小,必须在 [10,90) 之间!"));
return;
}
int nCurSel = m_wndListBox.GetCurSel();
if (nCurSel < 0)
{
AfxMessageBox(_T("没有选择弯头曲率半径,请选择曲率半径!"));
return;
}
if (m_vtEnter.isParallelTo(m_vtOutDir))
{
AfxMessageBox(_T("弯头的进口方向和出口方向不能平行!请确认方向"));
return;
}
CString sRato;
m_wndListBox.GetText(nCurSel,sRato);
m_dRRato = _ttof(sRato);
OnOK();
}
void CTJWTDlg::OnBnClickedRadio2()
{
OnBnClickedRadio1();
}
void CTJWTDlg::OnBnClickedRadio3()
{
OnBnClickedRadio1();
}
void CTJWTDlg::OnBnClickedRadio4()
{
OnBnClickedRadio1();
}
void CTJWTDlg::OnBnClickedRadio12()
{
OnBnClickedRadio1();
}
void CTJWTDlg::OnBnClickedRadio13()
{
OnBnClickedRadio1();
}
void CTJWTDlg::OnBnClickedRadio1()
{
UpdateData();
switch(m_nPos)
{
case 0://Z+
{
m_vtOutDir = AcGeVector3d::kZAxis;
m_sOutDir = _T("0,0,1");
break;
}
case 1://Z-
{
m_vtOutDir = -AcGeVector3d::kZAxis;
m_sOutDir = _T("0,0,-1");
break;
}
case 2://Y+
{
m_vtOutDir = AcGeVector3d::kYAxis;
m_sOutDir = _T("0,1,0");
break;
}
case 3://Y-
{
m_vtOutDir = -AcGeVector3d::kYAxis;
m_sOutDir = _T("0,-1,0");
break;
}
case 4://X+
{
m_vtOutDir = AcGeVector3d::kXAxis;
m_sOutDir = _T("1,0,0");
break;
}
case 5://X-
{
m_vtOutDir = -AcGeVector3d::kXAxis;
m_sOutDir = _T("-1,0,0");
break;
}
default:
break;
}
m_sInfDir2 = m_sOutDir;
UpdateData(FALSE);
}
int CTJWTDlg::GetX3dSolidRecs( AecDbX3dGroup*& pGroup)
{
m_vtEnter.normalize();
m_vtOutDir.normalize();
if (m_vtEnter.isParallelTo(m_vtOutDir))
{
return 0;
}
if (pGroup != NULL)
{
pGroup->RemoveAll3dSolidRec();
}
else
{
pGroup = new AecDbX3dGroup;
}
AcGePoint3d ptMid;
AcGeVector3d vtMin = m_vtOutDir;
AcGeVector3d vtNom = m_vtOutDir.crossProduct(m_vtEnter);
AcGeVector3d vtToCen = m_vtOutDir.orthoProject(m_vtEnter);
vtToCen.normalize();
double dR = 0.5 * AS_MUNIT( m_dDn ) * m_dRRato;
double dL = dR * tan(0.5 * m_dAngle * PI / 180.0);
AcGePoint3d ptCen = m_ptStart + vtToCen * dR;
AcDbCircle cir;
cir.setRadius(dR);
cir.setCenter(ptCen);
cir.setNormal(vtNom);
AcGeVector3d vt1 = vtToCen;
vt1.negate();
vt1.rotateBy(m_dAngle * PI / 180.0,vtNom);
vt1.normalize();
AcGeVector3d vt2 = vtToCen;
vt2.negate();
vt2.rotateBy(-m_dAngle * PI / 180.0,vtNom);
vt2.normalize();
AcGePoint3d ptGe1 = ptCen + vt1 * dR;
AcGePoint3d ptGe2 = ptCen + vt2 * dR;
vt1 = ptGe1 - m_ptStart;
vt2 = ptGe2 - m_ptStart;
AcGePoint3d ptOut;
if (vt1.dotProduct(m_vtEnter) > 0)
{
ptOut = ptGe1;
}
else
{
ptOut = ptGe2;
}
vt2 = ptOut - ptCen;
vt2.rotateBy(PI / 2.0,vtNom);
if (vt2.dotProduct(m_vtOutDir) > 0)
{
vtMin = vt2;
}
else
{
vtMin = vt2.negate();
}
vtMin.normalize();
AcGeLine3d ln1(m_ptStart,m_vtEnter);
AcGeLine3d ln2(ptOut,vtMin);
ln1.intersectWith(ln2,ptMid);
X3dSolidRec rec;
AcDbX3dSolid*pXSolid = new AcDbX3dSolid;
pXSolid->CreateElbow(ptMid,m_vtEnter,vtMin,m_dAngle * PI / 180.0,0.5 * AS_MUNIT(m_dDn),m_dRRato);
rec.pXSolid = pXSolid;
rec.bType = AcDb::kBoolUnite;
_tcscpy(rec.szLockId,IDCreate());
pGroup->AddX3dSolidRec(rec);
pGroup->SetOrgPoint( m_ptStart );
pGroup->SetAxis(X,AcGeVector3d::kXAxis);
pGroup->SetAxis(Y,AcGeVector3d::kYAxis);
pGroup->SetAxis(Z,AcGeVector3d::kZAxis);
//序列化BIM数据
pGroup->GetSpecialtyData()->SetAt(_T("m_dR"),m_dR);
pGroup->GetSpecialtyData()->SetAt(_T("m_dRRato"),m_dRRato);
pGroup->GetSpecialtyData()->SetAt(_T("m_dAngle"),m_dAngle);
pGroup->GetSpecialtyData()->SetAt(_T("m_vtEnter"),m_vtEnter);
pGroup->GetSpecialtyData()->SetAt(_T("m_vtOutDir"),m_vtOutDir);
pGroup->GetSpecialtyData()->SetAt(_T("m_ptStart"),m_ptStart);
pGroup->GetSpecialtyData()->SetAt(_T("m_nPos"),m_nPos);
pGroup->GetSpecialtyData()->SetAt(_T("m_sCurrSys"),m_sCurrSys);
pGroup->GetSpecialtyData()->SetAt(_T("m_sMertial"),m_sMertial);
pGroup->GetSpecialtyData()->SetAt(_T("m_dDn"),m_dDn);
pGroup->GetSpecialtyData()->SetAt(_T("m_dt"),m_dt);
pGroup->GetSpecialtyData()->SetAt(_T("m_sOutDir"),m_sOutDir);
pGroup->GetSpecialtyData()->SetAt(_T("COLOR"),m_nPipeColor);//系统默认KEY COLOR
pGroup->GetSpecialtyData()->SetAt(_T("m_idxRoom"),m_idxRoom);//系统默认KEY COLOR
return TRUE;
}
int CTJWTDlg::GetFitting(AecDbEwFitting*& pFit)
{
m_vtEnter.normalize();
m_vtOutDir.normalize();
if (m_vtEnter.isParallelTo(m_vtOutDir))
{
return 0;
}
bool bIsModify = false;
if (pFit == NULL)
{
pFit = new AecDbEwFitting;
}
else
{
bIsModify = true;
}
AcGePoint3d ptMid;
AcGeVector3d vtMin = m_vtOutDir;
AcGeVector3d vtNom = m_vtOutDir.crossProduct(m_vtEnter);
AcGeVector3d vtToCen = m_vtOutDir.orthoProject(m_vtEnter);
vtToCen.normalize();
double dR = 0.5 * AS_MUNIT( m_dDn ) * m_dRRato;
double dL = dR * tan(0.5 * m_dAngle * PI / 180.0);
AcGePoint3d ptCen = m_ptStart + vtToCen * dR;
AcDbCircle cir;
cir.setRadius(dR);
cir.setCenter(ptCen);
cir.setNormal(vtNom);
AcGeVector3d vt1 = vtToCen;
vt1.negate();
vt1.rotateBy(m_dAngle * PI / 180.0,vtNom);
vt1.normalize();
AcGeVector3d vt2 = vtToCen;
vt2.negate();
vt2.rotateBy(-m_dAngle * PI / 180.0,vtNom);
vt2.normalize();
AcGePoint3d ptGe1 = ptCen + vt1 * dR;
AcGePoint3d ptGe2 = ptCen + vt2 * dR;
vt1 = ptGe1 - m_ptStart;
vt2 = ptGe2 - m_ptStart;
AcGePoint3d ptOut;
if (vt1.dotProduct(m_vtEnter) > 0)
{
ptOut = ptGe1;
}
else
{
ptOut = ptGe2;
}
vt2 = ptOut - ptCen;
vt2.rotateBy(PI / 2.0,vtNom);
if (vt2.dotProduct(m_vtOutDir) > 0)
{
vtMin = vt2;
}
else
{
vtMin = vt2.negate();
}
vtMin.normalize();
AcGeLine3d ln1(m_ptStart,m_vtEnter);
AcGeLine3d ln2(ptOut,vtMin);
ln1.intersectWith(ln2,ptMid);
AcGeVector3d vtMaj = m_vtEnter;
double dSweepAngle = vtMin.angleTo(vtMaj);
AcGeVector3d vtNorm = vtMaj.crossProduct(vtMin);
pFit->GetSpecialtyData()->SetAt(KEY_RUNTIME,eElbow);
pFit->GetSpecialtyData()->SetAt(PIPE_DN,AS_MUNIT( m_dDn ));
pFit->GetSpecialtyData()->SetAt(PIPE_OD,AS_MUNIT(m_dOD));
pFit->GetSpecialtyData()->SetAt(PIPE_RATIO,m_dRRato);
pFit->GetSpecialtyData()->SetAt(PIPE_THICK,AS_MUNIT(m_dt));//从主管继承
pFit->GetSpecialtyData()->SetAt(KEY_FITSRV,KEY_FITWPIPE);
if (!bIsModify)//不是修改
{
pFit->GetSpecialtyData()->SetAt(PIPE_ELBOWANG,dSweepAngle);
pFit->GetSpecialtyData()->SetAt(KEY_MAJBR,vtMaj);
pFit->GetSpecialtyData()->SetAt(KEY_MINBR,vtMin);
pFit->GetSpecialtyData()->SetAt(KEY_NORMAL,vtNorm);
pFit->GetSpecialtyData()->SetAt(KEY_MID,ptMid);
}
else//是修改角度
{
pFit->GetSpecialtyData()->GetAt(PIPE_ELBOWANG,dSweepAngle);
if (fabs( dSweepAngle * 180.0 / PI - m_dAngle) > 1.e-1 )//不相同
{
//修改 vtMin;
pFit->GetSpecialtyData()->GetAt(KEY_MAJBR,vtMaj);
pFit->GetSpecialtyData()->SetAt(KEY_NORMAL,vtNorm);
vtMin = vtMaj;
vtMin.rotateBy( m_dAngle * PI / 180.0,vtNom);
pFit->GetSpecialtyData()->SetAt(KEY_MINBR,vtMin);
m_vtEnter = vtMaj.negate();
m_vtOutDir = vtMin;
}
}
//序列化BIM数据
pFit->GetSpecialtyData()->SetAt(_T("m_dR"),m_dR);
pFit->GetSpecialtyData()->SetAt(_T("m_dRRato"),m_dRRato);
if (!bIsModify)
{
pFit->GetSpecialtyData()->SetAt(_T("m_dAngle"),m_dAngle);
pFit->GetSpecialtyData()->SetAt(_T("m_vtEnter"),m_vtEnter);
pFit->GetSpecialtyData()->SetAt(_T("m_vtOutDir"),m_vtOutDir);
pFit->GetSpecialtyData()->SetAt(_T("m_ptStart"),m_ptStart);
}
pFit->GetSpecialtyData()->SetAt(_T("m_nPos"),m_nPos);
pFit->GetSpecialtyData()->SetAt(_T("m_sCurrSys"),m_sCurrSys);
pFit->GetSpecialtyData()->SetAt(_T("m_sMertial"),m_sMertial);
pFit->GetSpecialtyData()->SetAt(_T("m_dDn"),m_dDn);
pFit->GetSpecialtyData()->SetAt(_T("m_dt"),m_dt);
pFit->GetSpecialtyData()->SetAt(_T("m_sOutDir"),m_sOutDir);
pFit->GetSpecialtyData()->SetAt(_T("COLOR"),m_nPipeColor);//系统默认KEY COLOR
pFit->GetSpecialtyData()->SetAt(_T("m_idxRoom"),m_idxRoom);//系统默认KEY COLOR
//统一管线接口
pFit->GetSpecialtyData()->SetAt(KEY_2DSTYLE, 1);
pFit->GetSpecialtyData()->SetAt(PIPE_DN, AS_MUNIT(m_dDn));
pFit->GetSpecialtyData()->SetAt(PIPE_THICK, AS_MUNIT(m_dt));
pFit->GetSpecialtyData()->SetAt(PIPE_MATERIAL, m_sMertial);
pFit->GetSpecialtyData()->SetAt(PIPE_SYS, m_sCurrSys);
pFit->GetSpecialtyData()->SetAt(PIPE_RATIO,m_dRRato);
return TRUE;
}