#include "StdAfx.h" #include "DbVPipeDim.h" //*************************************************************************************************** // 编号增减 //*************************************************************************************************** void PlusMinusSerial(BOOL bPlus) { // g_ssPickFirst.Free(); RBList rbMask(RTDXF0, _T("ATS_PIPE,ATS_VPIPEDIM"), NULL); Entity entPipe, entSel; CString csPrompt; if(bPlus) csPrompt = _T("\n请选择要编号加1的立管或编号:<退出>"); else csPrompt = _T("\n请选择要编号减1的立管或编号:<退出>"); if(SelectEntity(csPrompt, entSel, rbMask) != RTNORM) return; if(!IsPipeVertical(entSel)) { OPENOBJ_BEGIN(entSel, AcDb::kForRead, TDbVPipeDim, pDim); if (pDim != NULL) { AcDbObjectId idDim = pDim->GetVPipeId(); ads_name name; acdbGetAdsName(name,idDim); entPipe = name; } else return; OPENOBJ_END(); } else entPipe = entSel; char szLay[256]; entPipe.GetData(8, szLay); CString csSerial = ReadXdata(entPipe, _T("PIPE-SERIAL")); CString sFloorNum = ReadXdata(entPipe,_T("BUILDING-SERIAL")); int newIdx = _ttoi(csSerial); if(bPlus) newIdx ++; else newIdx --; if(newIdx == 0) { adsout << _T("编号为1,不能再减了。\n"); return; } //2007-7-6 考虑了被打断的多立管情况 AcDbObjectId id = NULL; acdbGetObjectId(id, entPipe); PickSet ssAllVertPipe(SS_FREE); GetAllVertPipeByPt(ssAllVertPipe, id); for(long i=0;i"), iLen); int ret = ads_getstring(NULL, csPrompt, szText); if(_tcsicmp(szText, _T("Y")) == 0 || _tcsicmp(szText, _T("")) == 0){ PickSet ssTmp(SS_FREE); if(bDouble){ //发现多处同名立管编号 if(SelectEntities(_T("\n请选择立管包括的范围:<退出>"), ssTmp, rbMask2) != RTNORM) return; } for(i=0;iGetVPipeId(); ads_name name; acdbGetAdsName(name,idDim); Entity ent(name); if (ssModify.IsInclude(ent)) { ssRenew += ssAll[m]; pDim->RenewDimLen(); pDim->SaveCurText(); } } OPENOBJ_END(); } UpdateGraphic(ssRenew); } } void PlusPipeSerial() { PlusMinusSerial(TRUE); } void MinusPipeSerial() { PlusMinusSerial(FALSE); }