#include "StdAfx.h" #include "doublemulstairdlg.h" CString CDoubleMulStairDlg::m_strSpaceWidth=_T("5000"); CString CDoubleMulStairDlg::m_strSideStairWidth=_T("1200"); CString CDoubleMulStairDlg::m_strMidStairWidth=_T("2400"); CString CDoubleMulStairDlg::m_strRailDistToSide=_T("0"); CString CDoubleMulStairDlg::m_strRailHeight=_T("900"); CString CDoubleMulStairDlg::m_strRailWidth=_T("60"); CString CDoubleMulStairDlg::m_strStepWidth=_T("270"); int CDoubleMulStairDlg::m_iStepNum1=10; int CDoubleMulStairDlg::m_iStepNum2=10; int CDoubleMulStairDlg::m_iStepNum3=10; int CDoubleMulStairDlg::m_iSelectFloor=1;//选择楼层 int CDoubleMulStairDlg::m_iStepAlign=0;//踏步取齐 BOOL CDoubleMulStairDlg::m_bLeftBeam=FALSE; BOOL CDoubleMulStairDlg::m_bRightBeam=FALSE; BOOL CDoubleMulStairDlg::m_bUpPostion=TRUE;//上楼方法 CString CDoubleMulStairDlg::m_strRailOutDis=_T("60");//扶手伸出距离 CString CDoubleMulStairDlg::m_strSideRailDist=_T("60");//中扶手伸出 BOOL CDoubleMulStairDlg::m_bAutoRail=FALSE; BOOL CDoubleMulStairDlg::m_bHasOutRail=FALSE; CString CDoubleMulStairDlg::m_strSlabWidth=_T("1400");//平台宽度; CString CDoubleMulStairDlg::m_strSlabLength=_T("1200"); CString CDoubleMulStairDlg::m_strSlabLengthM=_T("1200"); CString CDoubleMulStairDlg::m_strSlabWidthM=_T("2700"); CString CDoubleMulStairDlg::m_strStairWidth2=_T("1200");//第二梯段宽 int CDoubleMulStairDlg::m_iSectStepNum=5; BOOL CDoubleMulStairDlg::m_bHasArrow=TRUE;//标注 BOOL CDoubleMulStairDlg::m_bInsideRail=TRUE;//内侧栏杆 BOOL CDoubleMulStairDlg::m_bHasInsideHandRail=TRUE;//有内侧扶手 //保留结果 int CDoubleMulStairDlg::m_isaveStepNum=30; CString CDoubleMulStairDlg::m_strsaveStepHeight=_T("150"); CString CDoubleMulStairDlg::m_strsaveStairHeight=_T("4500"); IMPLEMENT_DYNAMIC(CDoubleMulStairDlg,CBaseStairDlg) CDoubleMulStairDlg::CDoubleMulStairDlg(CWnd*pParent/* =NULL */):CBaseStairDlg(CDoubleMulStairDlg::IDD,pParent),m_group1(0) { m_nStepNum=m_iStepNum1+m_iStepNum2+m_iStepNum3; m_strStairHeight=Dist2Str(m_nStepNum*::_tstof(m_strStepHeight)); m_iSlab=0;//休息平台 m_bGroupStatus=FALSE;//组合窗的状态 Exchange(m_nStepNum,m_isaveStepNum); Exchange(m_strStepHeight,m_strsaveStepHeight); Exchange(m_strStairHeight,m_strsaveStairHeight); //初始话 m_bEdit=FALSE;//处于非编辑状态 m_pBakObj=NULL;//为空状态 } CDoubleMulStairDlg::CDoubleMulStairDlg(UINT idd,CWnd*pParent/*=NULL*/):CBaseStairDlg(idd,pParent),m_group1(0) { m_nStepNum=m_iStepNum1+m_iStepNum2+m_iStepNum3; m_strStairHeight=Dist2Str(m_nStepNum*::_tstof(m_strStepHeight)); m_iSlab=0;//休息平台 m_bGroupStatus=FALSE;//组合窗的状态 Exchange(m_nStepNum,m_isaveStepNum); Exchange(m_strStepHeight,m_strsaveStepHeight); Exchange(m_strStairHeight,m_strsaveStairHeight); //初始话 m_bEdit=FALSE;//处于非编辑状态 m_pBakObj=NULL;//为空状态 } CDoubleMulStairDlg::~CDoubleMulStairDlg() { Exchange(m_nStepNum,m_isaveStepNum); Exchange(m_strStepHeight,m_strsaveStepHeight); Exchange(m_strStairHeight,m_strsaveStairHeight); if (m_bEdit) delete m_pBakObj;//这个地方是不是有问题 } BOOL CDoubleMulStairDlg::OnInitDialog() { CBaseStairDlg::OnInitDialog(); stepNum1.SetRange(2,10000); stepNum2.SetRange(2,10000); stepNum3.SetRange(2,10000); m_ctrlSectStepNum.SetRange(1,m_nStepNum); AddTip(IDC_NEED3D); AddTip(IDC_NEED2D); AddTip(IDC_STAIR_HEIGHT_STATIC,_T("楼梯高度始终等于所有踏步的高度总和,改变楼梯高度将使踏步数变化,同时可能微调踏步高度")); AddTip(IDC_STEP_NUM_STATIC,_T("改变踏步数将使踏步高度反向变化")); AddTip(IDC_STEP_HEIGHT_STATIC,_T("输入一个大概的近似踏步高度,系统将自动设置正确值;改变踏步高度将引起踏步数反向变化")); UpdateSel(); UpdateImage(); return TRUE; } BEGIN_MESSAGE_MAP(CDoubleMulStairDlg,CBaseStairDlg) //消息映射过程 ON_EN_CHANGE(IDC_SPACE_WIDTH,OnChangeSpaceWidth) ON_EN_CHANGE(IDC_RAIL_HEIGHT,OnChangeRailHeight) ON_EN_CHANGE(IDC_RAIL_WIDTH,OnChangeRailWidth) ON_EN_CHANGE(IDC_SIDESTAIR_WIDTH,OnChangeSideStairWidth) ON_EN_CHANGE(IDC_MIDSTAIR_WIDTH,OnChangeMidStairWidth) ON_EN_CHANGE(IDC_STEP_HEIGHT,OnChangeStepHeight) ON_EN_CHANGE(IDC_STEP_WIDTH,OnChangeStepWidth) ON_EN_CHANGE(IDC_STEP_NUM1,OnChangeStepNum1) ON_EN_CHANGE(IDC_STEP_NUM2,OnChangeStepNum2) ON_EN_CHANGE(IDC_STEP_NUM3,OnChangeStepNum3)//三跑 ON_EN_CHANGE(IDC_RAIL_DISTTOSIDE,OnChangeRailDistToSide) ON_EN_CHANGE(IDC_FLATFORM_WIDTH,OnChangeSlabWidth) ON_EN_CHANGE(IDC_STEP_NUM,OnChangeStepNum) ON_EN_CHANGE(IDC_POU_NUM,OnChangeSectStepNum)//剖切 ON_EN_CHANGE(IDC_RAIL_OUTDIST,OnChangeRailOutDist)//扶手伸出 ON_EN_CHANGE(IDC_EDIT_MIDRAILDIST,OnChangeSideRailDist)//边扶手伸出 ON_CBN_EDITCHANGE(IDC_STAIR_HEIGHTCOMBOX,OnChangeStairHeight) ON_CBN_SELCHANGE(IDC_STAIR_HEIGHTCOMBOX,OnSelChangeStairHeight) ON_CBN_KILLFOCUS(IDC_STAIR_HEIGHTCOMBOX,OnKFStairHeight) ON_EN_CHANGE(IDC_STAIR2_WIDTH,OnChangeStairWidth2)//第二梯段宽 //休息平台 ON_EN_CHANGE(IDC_SLAB1_LENGTH,OnChangeSlabLength) ON_EN_CHANGE(IDC_SLABM_WIDTH,OnChangeSlabWidthM) ON_EN_CHANGE(IDC_SLABM_LENGTH,OnChangeSlabLengthM) ON_EN_KILLFOCUS(IDC_STAIR_HEIGHT,OnENKillFocus) ON_EN_KILLFOCUS(IDC_STEP_NUM,OnKFStepNum) ON_EN_KILLFOCUS(IDC_STEP_HEIGHT,OnStepHeightKillFocus) ON_EN_KILLFOCUS(IDC_SPACE_WIDTH,OnKFSpaceWidth) ON_EN_KILLFOCUS(IDC_RAIL_HEIGHT,OnKFRailHeight) ON_EN_KILLFOCUS(IDC_RAIL_WIDTH,OnKFRailWidth) ON_EN_KILLFOCUS(IDC_SIDESTAIR_WIDTH,OnKFSideStairWidth) ON_EN_KILLFOCUS(IDC_MIDSTAIR_WIDTH,OnKFMidStairWidth) ON_EN_KILLFOCUS(IDC_STEP_WIDTH,OnKFStepWidth) ON_EN_KILLFOCUS(IDC_STEP_NUM1,OnKFStepNum1) ON_EN_KILLFOCUS(IDC_STEP_NUM2,OnKFStepNum2) ON_EN_KILLFOCUS(IDC_STEP_NUM3,OnKFStepNum3)//三跑 ON_EN_KILLFOCUS(IDC_RAIL_DISTTOSIDE,OnKFRailDistToSide) ON_EN_KILLFOCUS(IDC_FLATFORM_WIDTH,OnKFSlabWidth) ON_EN_KILLFOCUS(IDC_POU_NUM,OnKFSectStepNum)//剖切 ON_EN_KILLFOCUS(IDC_RAIL_OUTDIST,OnKFRailOutDist)//扶手伸出 ON_EN_KILLFOCUS(IDC_EDIT_MIDRAILDIST,OnKFSideRailDist)//边扶手伸出 ON_EN_KILLFOCUS(IDC_SLAB1_LENGTH,OnKFSlabLength) ON_EN_KILLFOCUS(IDC_SLABM_WIDTH,OnKFSlabWidthM) ON_EN_KILLFOCUS(IDC_SLABM_LENGTH,OnKFSlabLengthM) ON_EN_KILLFOCUS(IDC_STAIR2_WIDTH,OnKFStairWidth2)//二跑梯段宽 //休息平台 ON_BN_CLICKED(IDC_RECT_PLATFORM,UpdateSel) ON_BN_CLICKED(IDC_ARC_PLATFORM,UpdateSel) ON_BN_CLICKED(IDC_NO_PLATFORM,UpdateSel) //左右边梁 ON_BN_CLICKED(IDC_LEFT_BEAM,UpdateSel) ON_BN_CLICKED(IDC_RIGHT_BEAM,UpdateSel) //楼层设置 ON_BN_CLICKED(IDC_RADIO_FIRST,UpdateSel) ON_BN_CLICKED(IDC_RADIO_MID,UpdateSel) ON_BN_CLICKED(IDC_RADIO_TOP,UpdateSel) //踏步取齐 ON_BN_CLICKED(IDC_ALIGN_SLAB,UpdateSel) ON_BN_CLICKED(IDC_ALIGN_FLOOR,UpdateSel) ON_BN_CLICKED(IDC_ALIGN_MID,UpdateSel) //上楼位置 ON_BN_CLICKED(IDC_SIDE_UP,UpdateSel) ON_BN_CLICKED(IDC_MID_UP,UpdateSel) ON_BN_CLICKED(IDC_SET_ARROW,UpdateSel)//标注 //梯段宽按钮的处理 ON_BN_CLICKED(IDC_BN_STAIRWIDTH,OnClickStairWidth) ON_BN_CLICKED(IDC_BN_SIDESTAIRWIDTH,OnClickSideStairWidth) ON_BN_CLICKED(IDC_BN_MIDSTAIRWIDTH,OnClickMidStairWidth) ON_BN_CLICKED(IDC_BUTTON_STAIR2,OnClickStairWidth2)//第二梯段宽 //作为坡道 ON_BN_CLICKED(IDC_AS_ASCENT,UpdateSel) ON_BN_CLICKED(IDC_HAS_SLANT,UpdateSel) ON_BN_CLICKED(IDC_ON_GROUND,UpdateSel) //扶手处理 ON_BN_CLICKED(IDC_AUTORAIL,UpdateSel) ON_BN_CLICKED(IDC_HAS_OUTRAIL,UpdateSel) ON_BN_CLICKED(IDC_INSIDERAIL,UpdateSel) ON_BN_CLICKED(IDC_CHECK_HASINSIDERAIL,UpdateSel)//内侧扶手 ON_WM_CLOSE() END_MESSAGE_MAP() void CDoubleMulStairDlg::DoDataExchange(CDataExchange* pDX) { //变量映射 CBaseStairDlg::DoDataExchange(pDX); DDX_Text(pDX,IDC_SIDESTAIR_WIDTH,m_strSideStairWidth); DDX_Text(pDX,IDC_MIDSTAIR_WIDTH,m_strMidStairWidth); DDX_Text(pDX,IDC_SPACE_WIDTH,m_strSpaceWidth); DDX_Text(pDX,IDC_STEP_NUM1,m_iStepNum1); DDX_Text(pDX,IDC_STEP_NUM2,m_iStepNum2); DDX_Text(pDX,IDC_STEP_NUM3,m_iStepNum3);//三跑 DDX_Text(pDX,IDC_STEP_WIDTH,m_strStepWidth); DDX_Text(pDX,IDC_POU_NUM,m_iSectStepNum); DDX_CBString(pDX,IDC_STAIR_HEIGHTCOMBOX,m_strStairHeight); DDX_Text(pDX,IDC_STAIR2_WIDTH,m_strStairWidth2); //扶手处理 DDX_Text(pDX,IDC_RAIL_HEIGHT,m_strRailHeight); DDX_Text(pDX,IDC_RAIL_WIDTH,m_strRailWidth); DDX_Text(pDX,IDC_RAIL_DISTTOSIDE,m_strRailDistToSide); DDX_Check(pDX,IDC_AUTORAIL,m_bAutoRail); DDX_Text(pDX,IDC_RAIL_OUTDIST,m_strRailOutDis);//扶手伸出 DDX_Text(pDX,IDC_EDIT_MIDRAILDIST,m_strSideRailDist);//中扶手伸出 DDX_Check(pDX,IDC_HAS_OUTRAIL,m_bHasOutRail); DDX_Check(pDX,IDC_INSIDERAIL,m_bInsideRail); DDX_Check(pDX,IDC_CHECK_HASINSIDERAIL,m_bHasInsideHandRail);//内侧扶手 //踏步取齐 DDX_Radio(pDX,IDC_ALIGN_SLAB,m_iStepAlign); //楼层映射 DDX_Radio(pDX,IDC_RADIO_FIRST,m_iSelectFloor); //左右边梁 DDX_Check(pDX,IDC_LEFT_BEAM,m_bLeftBeam); DDX_Check(pDX,IDC_RIGHT_BEAM,m_bRightBeam); //上楼位置 DDX_Radio(pDX,IDC_MID_UP,m_bUpPostion); DDX_Check(pDX,IDC_SET_ARROW,m_bHasArrow); //组合窗 DDX_Control(pDX,IDC_GROUP1,m_group1); DDX_GroupStatus(pDX,IDC_GROUP1,m_bGroupStatus); //休息平台 DDX_Radio(pDX,IDC_RECT_PLATFORM,m_iSlab); DDX_Text(pDX,IDC_FLATFORM_WIDTH,m_strSlabWidth); DDX_Text(pDX,IDC_SLAB1_LENGTH,m_strSlabLength); DDX_Text(pDX,IDC_SLABM_WIDTH,m_strSlabWidthM); DDX_Text(pDX,IDC_SLABM_LENGTH,m_strSlabLengthM); DDX_Control(pDX,IDC_STEP_NUM1_SPIN,stepNum1); DDX_Control(pDX,IDC_STEP_NUM2_SPIN,stepNum2); DDX_Control(pDX,IDC_STEP_NUM3_SPIN,stepNum3);//三跑 DDX_Control(pDX,IDC_SECTSTEP_SPIN,m_ctrlSectStepNum); DDX_Control(pDX,IDC_STAIR_HEIGHTCOMBOX,m_ctrlStairHeight); } AcDbEntity* CDoubleMulStairDlg::NewObject() { TDbDoubleMulStair *pEnt; if (m_pBakObj==NULL) { pEnt=new TDbDoubleMulStair; pEnt->setLayer(InitLayer(LAY_STAIR)); pEnt->SetLayerHand3d(InitLayer(LAY_HANDRAIL)); pEnt->SetLayerRail3d(InitLayer(LAY_RAIL)); pEnt->SetLayerText(InitLayer(LAY_TEXT)); pEnt->SetTextStyle(InitTextStyle(TS_DIM)); pEnt->SetLayerArrow(InitLayer(LAY_OTHER_DIM)); //add by xlc on 090205 解决用户坐标系下预览文字倾斜的问题 pEnt->SetLayoutRotation(0); return pEnt; } else { return (AcDbEntity*)(m_pBakObj->clone()); } } void CDoubleMulStairDlg::UpdateSel() { CBaseStairDlg::UpdateSel(); UpdateData(TRUE); if (((CButton*)this->GetDlgItem(IDC_RECT_PLATFORM))->GetCheck()) { m_iSlab=0; this->GetDlgItem(IDC_FLATFORM_WIDTH)->EnableWindow(TRUE); } else if (((CButton*)this->GetDlgItem(IDC_ARC_PLATFORM))->GetCheck()) { m_iSlab=1; this->GetDlgItem(IDC_FLATFORM_WIDTH)->EnableWindow(TRUE); } else { this->GetDlgItem(IDC_FLATFORM_WIDTH)->EnableWindow(FALSE); } //楼层设置 if (((CButton*)this->GetDlgItem(IDC_RADIO_FIRST))->GetCheck()) m_iSelectFloor=0; else if (((CButton*)this->GetDlgItem(IDC_RADIO_MID))->GetCheck()) m_iSelectFloor=1; else m_iSelectFloor=2; //踏步取齐 if (((CButton*)this->GetDlgItem(IDC_ALIGN_SLAB))->GetCheck()) m_iStepAlign=0; else if (((CButton*)this->GetDlgItem(IDC_ALIGN_MID))->GetCheck()) m_iStepAlign=1; else m_iStepAlign=2; //以下对2D or 3D的显示 if (m_bNeed2D && m_bNeed3D) m_iViewCtrl=0; else if (!m_bNeed2D && m_bNeed3D) m_iViewCtrl=2; else if (m_bNeed2D && !m_bNeed3D) m_iViewCtrl=1; else m_iViewCtrl=0; // 修改描述:各种楼梯对话框中的“标注上楼方向”一项 // 应在“需要2D”一项勾选后才变成可选择状态。(2097) // 修改人,修改时间:Zyu modify on 100325 GetDlgItem(IDC_SET_ARROW)->EnableWindow(m_bNeed2D); //扶手栏杆关系 this->GetDlgItem(IDC_AUTORAIL)->EnableWindow(m_bHasOutRail); //this->GetDlgItem(IDC_INSIDERAIL)->EnableWindow(m_bHasInsideHandRail);//内侧扶手 UpdateData(FALSE); UpdateImage(); return; } bool CDoubleMulStairDlg::UpdateEdit(UINT ctrlID,bool bReportError/* =false */) {//这个函数有些问题 CWnd *pImageBox=GetDlgItem(IDC_PREVIEW); if (!pImageBox) return false; if (GetSafeHwnd()==NULL) return false; CEdit *pEdit=(CEdit*)GetDlgItem(ctrlID); if (pEdit==NULL) return false; static bool bUpdating=false; if (bUpdating) return false; bUpdating=true; CDataExchange dxOut(this,false); CString temp; pEdit->GetWindowText(temp); switch(ctrlID) { case IDC_STAIR_HEIGHTCOMBOX: { if (_tstof(temp)>=4*_tstof(m_strStepHeight)-_DIST_SNAP && ::_tstof(temp)<=10000) {//最少当前四踏步高 m_strStairHeight=temp; m_nStepNum=(int)(_tstof(m_strStairHeight)/_tstof(m_strStepHeight)+0.5); m_strStepHeight.Format(_T("%.2f"),(_tstof(m_strStairHeight)/m_nStepNum)); DDX_Text(&dxOut,IDC_STEP_HEIGHT,m_strStepHeight); DDX_Text(&dxOut,IDC_STAIR_HEIGHT,m_strStairHeight); DDX_Text(&dxOut,IDC_STEP_NUM,m_nStepNum); stepNum1.SetRange(2,m_nStepNum-2); DDX_Text(&dxOut,IDC_STEP_NUM1,m_iStepNum1=m_nStepNum/3); DDX_Text(&dxOut,IDC_STEP_NUM2,m_iStepNum2=m_nStepNum/3); DDX_Text(&dxOut,IDC_STEP_NUM3,m_iStepNum3=m_nStepNum-m_iStepNum1-m_iStepNum2); DDX_Text(&dxOut,IDC_STEP_NUM,m_nStepNum); /*m_strStepHeight.Format(_T("%.2f"),::_tstof(m_strStairHeight)/(m_iStepNum1+m_iStepNum2+m_iStepNum3)); DDX_Text(&dxOut,IDC_STEP_HEIGHT,m_strStepHeight);*/ } else { if (bReportError) { ::AfxMessageBox(_T("楼梯高度不正确")); this->GetDlgItem(IDC_STAIR_HEIGHTCOMBOX)->SetFocus(); m_strStairHeight.Format(_T("%.2f"),_tstof(m_strStepHeight)*(m_iStepNum1+m_iStepNum2+m_iStepNum3)); DDX_Text(&dxOut,IDC_STAIR_HEIGHTCOMBOX,m_strStairHeight); } bUpdating=false; return false; } } break; case IDC_SPACE_WIDTH: { if (::_tstof(temp)<_DIST_SNAP) { bUpdating=false; return false; } m_strSpaceWidth=temp; DDX_Text(&dxOut,IDC_SPACE_WIDTH,m_strSpaceWidth); } break; case IDC_STEP_NUM: { stepNumSpin.SetRange(6,10000); if (_ttoi(temp)>5) { m_nStepNum=_ttoi(temp); stepNum1.SetRange(2,m_nStepNum-2); m_iStepNum1=m_nStepNum/3; m_iStepNum2=m_nStepNum/3; m_iStepNum3=m_nStepNum-m_iStepNum1-m_iStepNum2; if (m_iStepNum1<2 || m_iStepNum2<2 || m_iStepNum3<2) { bUpdating=FALSE; return false; } if (m_iSectStepNum>m_nStepNum) { m_iSectStepNum=m_nStepNum/2 +1; DDX_Text(&dxOut,IDC_POU_NUM,m_iSectStepNum); } DDX_Text(&dxOut,IDC_STEP_NUM1,m_iStepNum1); DDX_Text(&dxOut,IDC_STEP_NUM2,m_iStepNum2); DDX_Text(&dxOut,IDC_STEP_NUM3,m_iStepNum3); DDX_Text(&dxOut,IDC_STEP_NUM,m_nStepNum); m_strStepHeight.Format(_T("%.2f"),_tstof(m_strStairHeight)/m_nStepNum); DDX_Text(&dxOut,IDC_STEP_HEIGHT,m_strStepHeight); m_ctrlSectStepNum.SetRange(1,m_nStepNum); UpdateImage(); } else { if (bReportError) { AfxMessageBox(_T("总踏步数至少为6!")); DDX_Text(&dxOut,IDC_STEP_NUM,m_nStepNum); pEdit->SetFocus(); pEdit->SetSel(0,-1); } bUpdating=false; return false; } } break; case IDC_STEP_NUM1: { stepNum1.SetRange(2,m_nStepNum-4); if (_ttoi(temp)>1&&_ttoi(temp)SetFocus(); pEdit->SetSel(0,-1); } bUpdating=false; return false; } } break; case IDC_STEP_NUM2: { stepNum2.SetRange(2,m_nStepNum-4); if (_ttoi(temp)>1&&_ttoi(temp)SetFocus(); pEdit->SetSel(0,-1); } bUpdating=false; return false; } } break; case IDC_STEP_NUM3: {//二跑步数 stepNum3.SetRange(2,m_nStepNum-4); if (::_ttoi(temp)<2 || ::_ttoi(temp)>m_nStepNum-4) { if (bReportError) { if (_ttoi(temp)<2) AfxMessageBox(_T("二跑踏步数太少!")); else AfxMessageBox(_T("二跑踏步数太多!,请重新输入或先增大总踏步数。")); pEdit->SetFocus(); } if (::_ttoi(temp)>=m_nStepNum-5) { DDX_Text(&dxOut,IDC_STEP_NUM3,m_iStepNum3); } bUpdating=false; return false; } m_iStepNum3=::_ttoi(temp); m_iStepNum1=(m_nStepNum-m_iStepNum3)/2; m_iStepNum2=m_nStepNum-m_iStepNum1-m_iStepNum3; if (m_iStepNum1<2 || m_iStepNum2<2 || m_iStepNum3<2) { bUpdating=FALSE; return false; } DDX_Text(&dxOut,IDC_STEP_NUM1,m_iStepNum1); DDX_Text(&dxOut,IDC_STEP_NUM2,m_iStepNum2); DDX_Text(&dxOut,IDC_STEP_NUM3,m_iStepNum3); } break; case IDC_POU_NUM: {//剖切 if (::_ttoi(temp)<1||::_ttoi(temp)>m_nStepNum) { bUpdating=false; if (bReportError) { AfxMessageBox(_T("剖切步数不正确!")); pEdit->SetFocus(); } return false; } m_ctrlSectStepNum.SetRange(2,m_nStepNum); m_iSectStepNum=::_ttoi(temp); DDX_Text(&dxOut,IDC_POU_NUM,m_iSectStepNum); } break; case IDC_STEP_WIDTH: { if (::_tstof(temp)>_DIST_SNAP && temp!=_T("")) { m_strStepWidth=temp; DDX_Text(&dxOut,IDC_STEP_WIDTH,m_strStepWidth); } else { if (bReportError) { ::AfxMessageBox(_T("踏步宽度不正确")); this->GetDlgItem(IDC_STEP_WIDTH)->SetFocus(); DDX_Text(&dxOut,IDC_STEP_WIDTH,m_strStepWidth); } bUpdating=false; return false; } } break; case IDC_STEP_HEIGHT: { int num(1); if (fabs(_tstof(temp))>_DIST_SNAP) { num=(int)(_tstof(m_strStairHeight)/_tstof(temp)+0.5); } if (num>5) { //CBaseStairDlg::UpdateEdit(ctrlID,bReportError); m_nStepNum = num; DDX_Text(&dxOut,IDC_STEP_NUM,m_nStepNum); m_strStepHeight.Format(_T("%.2f"),_tstof(m_strStairHeight)/m_nStepNum); DDX_Text(&dxOut,IDC_STEP_HEIGHT,m_strStepHeight); stepNum1.SetRange(2,m_nStepNum-2); stepNum2.SetRange(2,m_nStepNum-2); DDX_Text(&dxOut,IDC_STEP_NUM1,m_iStepNum1=m_nStepNum/3); DDX_Text(&dxOut,IDC_STEP_NUM2,m_iStepNum2=m_nStepNum/3); DDX_Text(&dxOut,IDC_STEP_NUM3,m_iStepNum3=m_nStepNum-m_iStepNum1-m_iStepNum2); UpdateImage(); } else { if (bReportError) { AfxMessageBox(_T("新踏步高度将造成踏步数小于6,请重新输入或先增大梯段高度!")); DDX_Text(&dxOut,IDC_STEP_HEIGHT,m_strStepHeight); pEdit->SetFocus(); pEdit->SetSel(0,-1); } bUpdating=false; return false; } } break; case IDC_RAIL_DISTTOSIDE: { if (::_tstof(temp)<-(::_tstof(m_strRailWidth)*1.5)) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("扶手距边距离不正确")); this->GetDlgItem(IDC_RAIL_DISTTOSIDE)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_DISTTOSIDE,m_strRailDistToSide); } return false; } m_strRailDistToSide=temp; DDX_Text(&dxOut,IDC_RAIL_DISTTOSIDE,m_strRailDistToSide); } break; case IDC_RAIL_OUTDIST: { if (::_tstof(temp)<-_tstof(m_strStepWidth)*(m_iStepNum2-1)*0.5) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("中梯扶手伸出距离不正确")); this->GetDlgItem(IDC_RAIL_OUTDIST)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_OUTDIST,m_strRailOutDis); } return false; } m_strRailOutDis=temp; DDX_Text(&dxOut,IDC_RAIL_OUTDIST,m_strRailOutDis); } break; case IDC_EDIT_MIDRAILDIST: {//边扶手伸出 if (::_tstof(temp)<-_tstof(m_strStepWidth)*(m_iStepNum1-1)*0.5) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("边梯扶手伸出距离不正确")); this->GetDlgItem(IDC_EDIT_MIDRAILDIST)->SetFocus(); DDX_Text(&dxOut,IDC_EDIT_MIDRAILDIST,m_strSideRailDist); } return false; } m_strSideRailDist=temp; DDX_Text(&dxOut,IDC_EDIT_MIDRAILDIST,m_strSideRailDist); } break; case IDC_RAIL_WIDTH: { if (::_tstof(temp)<_DIST_SNAP) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("扶手宽度不正确")); this->GetDlgItem(IDC_RAIL_WIDTH)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_WIDTH,m_strRailWidth); } return false; } m_strRailWidth=temp; DDX_Text(&dxOut,IDC_RAIL_WIDTH,m_strRailWidth); } break; case IDC_RAIL_HEIGHT: { if (::_tstof(temp)<_DIST_SNAP) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("扶手高度不正确")); this->GetDlgItem(IDC_RAIL_HEIGHT)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_HEIGHT,m_strRailHeight); } return false; } m_strRailHeight=temp; DDX_Text(&dxOut,IDC_RAIL_HEIGHT,m_strRailHeight); } break; case IDC_MIDSTAIR_WIDTH: {//中间梯段宽 if (::_tstof(temp)<_DIST_SNAP) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("中梯梯段宽不正确")); this->GetDlgItem(IDC_RAIL_HEIGHT)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_HEIGHT,m_strMidStairWidth); } return false; } m_strMidStairWidth=temp; DDX_Text(&dxOut,IDC_MIDSTAIR_WIDTH,m_strMidStairWidth); if (::_tstof(temp)>::_tstof(m_strSlabWidthM)) { m_strSlabWidthM=Dist2Str(::_tstof(temp)+_DIST_SNAP); DDX_Text(&dxOut,IDC_SLABM_WIDTH,m_strSlabWidthM); } } break; case IDC_SIDESTAIR_WIDTH: {//边梯宽 if (::_tstof(temp)<_DIST_SNAP) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("边梯梯段宽不正确")); this->GetDlgItem(IDC_RAIL_HEIGHT)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_HEIGHT,m_strSideStairWidth); } return false; } m_strSideStairWidth=temp; DDX_Text(&dxOut,IDC_SIDESTAIR_WIDTH,m_strSideStairWidth); if (::_tstof(temp)>::_tstof(m_strSlabWidth)) { m_strSlabWidth=Dist2Str(::_tstof(temp)+_DIST_SNAP); DDX_Text(&dxOut,IDC_FLATFORM_WIDTH,m_strSlabWidth); } } break; case IDC_STAIR2_WIDTH: {//第二梯段宽 if (::_tstof(temp)<_DIST_SNAP) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("二跑梯段宽不正确")); this->GetDlgItem(IDC_RAIL_HEIGHT)->SetFocus(); DDX_Text(&dxOut,IDC_RAIL_HEIGHT,m_strStairWidth2); } return false; } m_strStairWidth2=temp; DDX_Text(&dxOut,IDC_STAIR2_WIDTH,m_strStairWidth2); if (::_tstof(temp)>::_tstof(m_strSlabLengthM)) { m_strSlabLengthM=Dist2Str(::_tstof(temp)+_DIST_SNAP); DDX_Text(&dxOut,IDC_SLABM_LENGTH,m_strSlabLengthM); } if (::_tstof(temp)>::_tstof(m_strSlabLength)) { m_strSlabLength=Dist2Str(::_tstof(temp)+_DIST_SNAP); DDX_Text(&dxOut,IDC_SLAB1_LENGTH,m_strSlabLength); } } break; case IDC_FLATFORM_WIDTH: { if (::_tstof(temp)<_tstof(m_strSideStairWidth)) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("边平台宽不正确")); this->GetDlgItem(IDC_SLABM_WIDTH)->SetFocus(); DDX_Text(&dxOut,IDC_SLABM_WIDTH,m_strSlabWidthM); } return false; } m_strSlabWidth=temp; DDX_Text(&dxOut,IDC_FLATFORM_WIDTH,m_strSlabWidth); } break; case IDC_SLAB_LENGTH: {//边台长 if (::_tstof(temp)<_tstof(m_strStairWidth2)) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("边平台长不正确")); this->GetDlgItem(IDC_SLABM_LENGTH)->SetFocus(); DDX_Text(&dxOut,IDC_SLABM_LENGTH,m_strSlabLengthM); } return false; } m_strSlabLength=temp; DDX_Text(&dxOut,IDC_SLAB_LENGTH,m_strSlabLength); } break; case IDC_SLABM_WIDTH: {//中台宽 if (::_tstof(temp)<_tstof(m_strMidStairWidth)) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("中间平台宽不正确")); this->GetDlgItem(IDC_SLABM_WIDTH)->SetFocus(); DDX_Text(&dxOut,IDC_SLABM_WIDTH,m_strSlabWidthM); } return false; } m_strSlabWidthM=temp; DDX_Text(&dxOut,IDC_SLABM_WIDTH,m_strSlabWidthM); } break; case IDC_SLABM_LENGTH: {//中台长 if (::_tstof(temp)<_tstof(m_strStairWidth2)) { bUpdating=false; if (bReportError) { ::AfxMessageBox(_T("中间平台长不正确")); this->GetDlgItem(IDC_SLABM_LENGTH)->SetFocus(); DDX_Text(&dxOut,IDC_SLABM_LENGTH,m_strSlabLengthM); } return false; } m_strSlabLengthM=temp; DDX_Text(&dxOut,IDC_SLABM_LENGTH,m_strSlabLengthM); } break; default: break; } bUpdating=FALSE; UpdateImage(); return false; } void CDoubleMulStairDlg::Obj2Dlg(const AcDbEntity *pStep) { TDbDoubleMulStair *pStair=TDbDoubleMulStair::cast(pStep); // [8/14/2008 nsh] //-------------------------------- m_bEdit=TRUE; m_pBakObj=(TDbDoubleMulStair*)(pStair->clone());//专递值 //-------------------------------- VERIFY(pStair); m_strStairHeight=Dist2Str(pStair->GetStairHeight()); m_strSideStairWidth=Dist2Str(pStair->GetStairWidth()); m_strMidStairWidth=Dist2Str(pStair->GetMStairWidth()); //m_strSpaceWidth.Format(_T("%.2f"),pStair->GetSpaceWidth()); m_strStepHeight.Format(_T("%.2f"),pStair->GetStepHeight()); m_strStepWidth=Dist2Str(pStair->GetStepWidth()); m_iStepNum1=pStair->GetStepNum1(); m_iStepNum2=pStair->GetStepNum2(); m_iStepNum3=pStair->GetStepNum3(); m_nStepNum=m_iStepNum2+m_iStepNum1+m_iStepNum3; m_strRailHeight=Dist2Str(pStair->GetRailHeight()); m_strRailWidth=Dist2Str(pStair->GetRailWidth()); m_strRailDistToSide=Dist2Str(pStair->GetRailDistToSide()); m_iStepAlign=pStair->GetAlignment(); m_iSelectFloor=pStair->GetStairFlag(); m_bAsAscent=pStair->IsAscent(); m_bHasSlant=pStair->HasSlant(); m_iViewCtrl=pStair->GetViewCtrl(); m_bOnGround=pStair->IsOnGround(); if (pStair->IsArcPlatform()) m_iSlab=1; else if (!pStair->IsArcPlatform()) m_iSlab=0; m_strSlabWidth=(m_iSlab==0 || m_iSlab==1)? Dist2Str(pStair->GetSlabSize()) : Dist2Str(0.0); m_bAutoRail=pStair->IsAutoOutRail(); m_bHasOutRail=pStair->IsOutRail(); //m_bLeftBeam=pStair->HasSideBeam(0); //m_bRightBeam=pStair->HasSideBeam(1); m_bLeftBeam=pStair->IsInSideBeam(); m_bRightBeam=pStair->IsOutSideBeam(); m_strSlabWidth=Dist2Str(pStair->GetSlabWidth()); m_strSlabLength=Dist2Str(pStair->GetSlabSize()); m_strSlabWidthM=Dist2Str(pStair->GetSlabWidthM()); m_strSlabLengthM=Dist2Str(pStair->GetSlabSizeM()); m_strRailOutDis=Dist2Str(pStair->GetRailDist()); m_strSideRailDist=Dist2Str(pStair->GetRailDistSide()); //modify by xlc on 090210 //m_bInsideRail=pStair->IsAutoOutRail(); m_bInsideRail=pStair->IsAutoRail(); m_strStairWidth2=Dist2Str(pStair->GetStairWidth2()); return; } void CDoubleMulStairDlg::Dlg2Obj(AcDbEntity *pStep) { TDbDoubleMulStair *pStair=TDbDoubleMulStair::cast(pStep); VERIFY(pStair); pStair->SetSpaceWidth(::_tstof(m_strSpaceWidth)); pStair->SetStairWidth(::_tstof(m_strSideStairWidth)); pStair->SetStairWidth2(::_tstof(m_strStairWidth2)); pStair->SetMStairWidth(::_tstof(m_strMidStairWidth)); pStair->SetStepNum1(m_iStepNum1); pStair->SetStepNum2(m_iStepNum2); pStair->SetStepNum3(m_iStepNum3); pStair->SetArrow(m_bHasArrow); pStair->SetStepWidth(::_tstof(m_strStepWidth)); pStair->SetStepHeight(::_tstof(m_strStepHeight)); pStair->SetRailHeight(::_tstof(m_strRailHeight)); pStair->SetRailWidth(::_tstof(m_strRailWidth)); pStair->SetRailDistToSide(::_tstof(m_strRailDistToSide)); pStair->SetRailDist(::_tstof(m_strRailOutDis)); pStair->SetSectStepNum(m_iSectStepNum); pStair->SetAlignment(m_iStepAlign);//踏步取齐的功能,暂时设定为0 pStair->SetStairFlag(m_iSelectFloor); /*pStair->SetSideBeam(0,m_bLeftBeam); pStair->SetSideBeam(1,m_bRightBeam);*/ pStair->SetInSideBeam(m_bLeftBeam); pStair->SetOutSideBeam(m_bRightBeam); pStair->SetStartSide(m_bUpPostion); pStair->SetAscent(m_bAsAscent);//作为坡道 pStair->SetSlant(m_bHasSlant); pStair->SetOnGround(m_bOnGround); pStair->SetViewCtrl(m_iViewCtrl); //pStair->SetSlabSize((m_iSlab==0 || m_iSlab==1)? _tstof(m_strSlabLength) : 0.0); pStair->SetSlabSize(::_tstof(m_strSlabLength)); if (m_iSlab==1) pStair->SetArcPlatform(TRUE); else pStair->SetArcPlatform(FALSE); pStair->SetAutoOutRail(m_bAutoRail); pStair->SetOutRail(m_bHasOutRail); // [4/24/2008 nsh] pStair->SetSlabSizeM(::_tstof(m_strSlabLengthM)); pStair->SetSlabWidth(::_tstof(m_strSlabWidth)); pStair->SetSlabWidthM(::_tstof(m_strSlabWidthM)); pStair->SetSectStepNum(m_iSectStepNum); //pStair->SetAutoRail(m_bInsideRail);//测试,内测扶手 pStair->SetRailDistSide(::_tstof(m_strSideRailDist)); pStair->SetAutoRail(m_bInsideRail);//测试,内测栏杆 //------------------------ if (m_bEdit) { delete m_pBakObj; m_pBakObj=(TDbDoubleMulStair*)(pStair->clone()); } //------------------------ return; } //以下为事件处理 void CDoubleMulStairDlg::OnChangeStepNum() { CString temp; this->GetDlgItem(IDC_STEP_NUM)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STEP_NUM);//踏步总数 } } void CDoubleMulStairDlg::OnChangeStepNum1() { CString temp; this->GetDlgItem(IDC_STEP_NUM1)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STEP_NUM1); } } void CDoubleMulStairDlg::OnChangeStepNum2() { CString temp; this->GetDlgItem(IDC_STEP_NUM2)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STEP_NUM2); } } void CDoubleMulStairDlg::OnChangeStepNum3() { CString temp; this->GetDlgItem(IDC_STEP_NUM3)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STEP_NUM3); } } void CDoubleMulStairDlg::OnChangeStepHeight() { // UpdateEdit(IDC_STEP_HEIGHT); } void CDoubleMulStairDlg::OnChangeStepWidth() { CString temp; this->GetDlgItem(IDC_STEP_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STEP_WIDTH); } } void CDoubleMulStairDlg::OnChangeRailDistToSide() { CString temp; this->GetDlgItem(IDC_RAIL_DISTTOSIDE)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_RAIL_DISTTOSIDE); } } void CDoubleMulStairDlg::OnChangeRailHeight() { CString temp; this->GetDlgItem(IDC_RAIL_HEIGHT)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_RAIL_HEIGHT); } } void CDoubleMulStairDlg::OnChangeRailWidth() { CString temp; this->GetDlgItem(IDC_RAIL_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_RAIL_WIDTH); } } void CDoubleMulStairDlg::OnChangeSideStairWidth() { CString temp; this->GetDlgItem(IDC_SIDESTAIR_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_SIDESTAIR_WIDTH); } } void CDoubleMulStairDlg::OnChangeMidStairWidth() { CString temp; this->GetDlgItem(IDC_MIDSTAIR_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_MIDSTAIR_WIDTH); } } void CDoubleMulStairDlg::OnChangeStairHeight() { CString temp; this->GetDlgItem(IDC_STAIR_HEIGHTCOMBOX)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STAIR_HEIGHTCOMBOX); } } void CDoubleMulStairDlg::OnChangeSpaceWidth() { CString temp; this->GetDlgItem(IDC_SPACE_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_SPACE_WIDTH); } } void CDoubleMulStairDlg::OnChangeSlabWidth() { CString temp; this->GetDlgItem(IDC_FLATFORM_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_FLATFORM_WIDTH); } } void CDoubleMulStairDlg::OnChangeSectStepNum() { CString temp; this->GetDlgItem(IDC_POU_NUM)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_POU_NUM); } } void CDoubleMulStairDlg::OnChangeRailOutDist() {//扶手伸出距离 CString temp; this->GetDlgItem(IDC_RAIL_OUTDIST)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_RAIL_OUTDIST); } } void CDoubleMulStairDlg::OnChangeSideRailDist() {//边扶手伸出距离 CString temp; this->GetDlgItem(IDC_EDIT_MIDRAILDIST)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_EDIT_MIDRAILDIST,false); } } //扶手的处理 void CDoubleMulStairDlg::OnChangeSlabWidthM() {//平台中间宽度 CString temp; this->GetDlgItem(IDC_SLABM_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_SLABM_WIDTH); } } void CDoubleMulStairDlg::OnChangeSlabLength() {//边平台长度 CString temp; this->GetDlgItem(IDC_SLAB1_LENGTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_SLAB1_LENGTH); } } void CDoubleMulStairDlg::OnChangeSlabLengthM() {//中平台长度 CString temp; this->GetDlgItem(IDC_SLABM_LENGTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_SLABM_LENGTH); } } void CDoubleMulStairDlg::OnENKillFocus() { return; } void CDoubleMulStairDlg::OnStepHeightKillFocus() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090313 CString strText; GetDlgItem(IDC_STEP_HEIGHT)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strStepHeight))<_DIST_SNAP) return; UpdateEdit(IDC_STEP_HEIGHT,true); } } void CDoubleMulStairDlg::OnChangeStairWidth2() {//第二梯段宽 CString temp; this->GetDlgItem(IDC_STAIR2_WIDTH)->GetWindowText(temp); if (temp!=_T("")) { UpdateEdit(IDC_STAIR2_WIDTH); } } void CDoubleMulStairDlg::OnKFStairHeight() {//楼梯失去焦点 if (GetFocus()!=GetDlgItem(IDCANCEL)) { CString strText; GetDlgItem(IDC_STAIR_HEIGHTCOMBOX)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strStairHeight))<_DIST_SNAP) return; UpdateEdit(IDC_STAIR_HEIGHTCOMBOX,true); } } void CDoubleMulStairDlg::OnClickMidStairWidth() { double dDist=::_tstof(m_strMidStairWidth); BeginEditorCommand(); int nRet=GetDist(_T("\n中梯梯段宽度"), dDist, RSG_NOZERO|RSG_NONEG|RSG_2D); CompleteEditorCommand(); if (nRet==RTNORM) { m_strMidStairWidth=Dist2Str(dDist); if (dDist>::_tstof(m_strSlabWidthM)) { m_strSlabWidthM = Dist2Str(dDist); } UpdateData(FALSE); UpdateImage(); } return; } void CDoubleMulStairDlg::OnClickSideStairWidth() { double dDist=::_tstof(m_strSideStairWidth); BeginEditorCommand(); int nRet=GetDist(_T("\n边梯梯段宽度"), dDist, RSG_NOZERO|RSG_NONEG|RSG_2D); CompleteEditorCommand(); if (nRet==RTNORM) { m_strSideStairWidth=Dist2Str(dDist); if (dDist>::_tstof(m_strSlabWidth)) { m_strSlabWidth = Dist2Str(dDist); } UpdateData(FALSE); UpdateImage(); } return; } void CDoubleMulStairDlg::OnClickStairWidth() { double dDist=::_tstof(m_strSpaceWidth); BeginEditorCommand(); int nRet=GetDist(_T("\n楼梯间宽度"), dDist, RSG_NOZERO|RSG_NONEG|RSG_2D); CompleteEditorCommand(); if (nRet==RTNORM) { m_strSpaceWidth=Dist2Str(dDist); UpdateData(FALSE); UpdateImage(); } return; } void CDoubleMulStairDlg::OnClickStairWidth2() { double dDist=::_tstof(m_strStairWidth2); BeginEditorCommand(); int nRet=GetDist(_T("\n二跑梯段宽度"), dDist, RSG_NOZERO|RSG_NONEG|RSG_2D); CompleteEditorCommand(); if (nRet==RTNORM) { m_strStairWidth2=Dist2Str(dDist); if (dDist>::_tstof(m_strSlabLength)) { m_strSlabLength = Dist2Str(dDist); } if (dDist>::_tstof(m_strSlabLengthM)) { m_strSlabLengthM = Dist2Str(dDist); } UpdateData(FALSE); UpdateImage(); } return; } void CDoubleMulStairDlg::OnSelChangeStairHeight() {//楼梯高度选择 CString temp; CDataExchange dxIn(this,TRUE); DDX_CBString(&dxIn,IDC_STAIR_HEIGHTCOMBOX,m_strStairHeight); m_ctrlStairHeight.GetLBText(m_ctrlStairHeight.GetCurSel(),temp); if (_tstof(temp)>=4*_tstof(m_strStepHeight)-_DIST_SNAP) {//最少当前四踏步高 CDataExchange dxOut(this,false); m_strStairHeight=temp; DDX_Text(&dxOut,IDC_STAIR_HEIGHTCOMBOX,m_strStairHeight); m_nStepNum=(int)(_tstof(m_strStairHeight)/_tstof(m_strStepHeight)+0.5); DDX_Text(&dxOut,IDC_STEP_NUM,m_nStepNum); m_strStepHeight.Format(_T("%.2f"),::_tstof(m_strStairHeight)/m_nStepNum); DDX_Text(&dxOut,IDC_STEP_HEIGHT,m_strStepHeight); stepNum1.SetRange(2,m_nStepNum-2); DDX_Text(&dxOut,IDC_STEP_NUM1,m_iStepNum1=m_nStepNum/3); DDX_Text(&dxOut,IDC_STEP_NUM2,m_iStepNum2=m_nStepNum/3); DDX_Text(&dxOut,IDC_STEP_NUM3,m_iStepNum3=m_nStepNum-m_iStepNum1-m_iStepNum2); UpdateImage(); } } void CDoubleMulStairDlg::OnClose() { GetDlgItem(IDCANCEL)->SetFocus(); CBaseStairDlg::OnClose(); } void CDoubleMulStairDlg::OnKFStepNum() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_STEP_NUM)->GetWindowText(strText); if (fabs(_tstof(strText)-m_nStepNum)<_DIST_SNAP) return; UpdateEdit(IDC_STEP_NUM,true);//踏步总数 } } void CDoubleMulStairDlg::OnKFStepNum1() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_STEP_NUM1)->GetWindowText(strText); if (fabs(_tstof(strText)-m_iStepNum1)<_DIST_SNAP) return; UpdateEdit(IDC_STEP_NUM1,true); } } void CDoubleMulStairDlg::OnKFStepNum2() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_STEP_NUM2)->GetWindowText(strText); if (fabs(_tstof(strText)-m_iStepNum2)<_DIST_SNAP) return; UpdateEdit(IDC_STEP_NUM2,true); } } void CDoubleMulStairDlg::OnKFStepNum3() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_STEP_NUM3)->GetWindowText(strText); if (fabs(_tstof(strText)-m_iStepNum3)<_DIST_SNAP) return; UpdateEdit(IDC_STEP_NUM3,true); } } void CDoubleMulStairDlg::OnKFStepWidth() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_STEP_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strStepWidth))<_DIST_SNAP) return; UpdateEdit(IDC_STEP_WIDTH,true); } } void CDoubleMulStairDlg::OnKFRailDistToSide() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_RAIL_DISTTOSIDE)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strRailDistToSide))<_DIST_SNAP) return; UpdateEdit(IDC_RAIL_DISTTOSIDE,true); } } void CDoubleMulStairDlg::OnKFRailHeight() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_RAIL_HEIGHT)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strRailHeight))<_DIST_SNAP) return; UpdateEdit(IDC_RAIL_HEIGHT,true); } } void CDoubleMulStairDlg::OnKFRailWidth() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_RAIL_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strRailWidth))<_DIST_SNAP) return; UpdateEdit(IDC_RAIL_WIDTH,true); } } void CDoubleMulStairDlg::OnKFSideStairWidth() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_SIDESTAIR_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSideStairWidth))<_DIST_SNAP) return; UpdateEdit(IDC_SIDESTAIR_WIDTH,true); } } void CDoubleMulStairDlg::OnKFMidStairWidth() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_MIDSTAIR_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strMidStairWidth))<_DIST_SNAP) return; UpdateEdit(IDC_MIDSTAIR_WIDTH,true); } } void CDoubleMulStairDlg::OnKFSpaceWidth() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_SPACE_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSpaceWidth))<_DIST_SNAP) return; UpdateEdit(IDC_SPACE_WIDTH,true); } } void CDoubleMulStairDlg::OnKFSlabWidth() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_FLATFORM_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSlabWidth))<_DIST_SNAP) return; UpdateEdit(IDC_FLATFORM_WIDTH,true); } } void CDoubleMulStairDlg::OnKFSectStepNum() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_POU_NUM)->GetWindowText(strText); if (fabs(_tstof(strText)-m_iSectStepNum)<_DIST_SNAP) return; UpdateEdit(IDC_POU_NUM); } } void CDoubleMulStairDlg::OnKFRailOutDist() {//扶手伸出距离 if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_RAIL_OUTDIST)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strRailOutDis))<_DIST_SNAP) return; UpdateEdit(IDC_RAIL_OUTDIST,true); } } void CDoubleMulStairDlg::OnKFSideRailDist() {//边扶手伸出距离 if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_EDIT_MIDRAILDIST)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSideRailDist))<_DIST_SNAP) return; UpdateEdit(IDC_EDIT_MIDRAILDIST,true); } } //扶手的处理 void CDoubleMulStairDlg::OnKFSlabWidthM() {//平台中间宽度 if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_SLABM_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSlabWidthM))<_DIST_SNAP) return; UpdateEdit(IDC_SLABM_WIDTH,true); } } void CDoubleMulStairDlg::OnKFSlabLength() {//边平台长度 if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_SLAB1_LENGTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSlabLength))<_DIST_SNAP) return; UpdateEdit(IDC_SLAB1_LENGTH,true); } } void CDoubleMulStairDlg::OnKFSlabLengthM() {//中平台长度 if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_SLABM_LENGTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strSlabLengthM))<_DIST_SNAP) return; UpdateEdit(IDC_SLABM_LENGTH,true); } } void CDoubleMulStairDlg::OnKFStairWidth2() { if (GetFocus()!=GetDlgItem(IDCANCEL)) { //modiby by xlc on 090317 CString strText; GetDlgItem(IDC_STAIR2_WIDTH)->GetWindowText(strText); if (fabs(_tstof(strText)-_tstof(m_strStairWidth2))<_DIST_SNAP) return; UpdateEdit(IDC_STAIR2_WIDTH); } }