#ifndef _TCHECKFLOORRECTDATA_H_ #define _TCHECKFLOORRECTDATA_H_ /*============================================================================* * Copyright(c), 1994-2008, Beijing Tangent Engineering Software Co.Ltd. * 作 者: 宋戈 * 创建时间: 2010-5-12 * 描 述: 用于楼层框专用,用于检查层号、层高数据的用户输入是否合理 * 修改记录: =============================================================================*/ class TARCH_EXP XCheckFloorRectData { public: XCheckFloorRectData(); ~XCheckFloorRectData(); public: // 提供的与调用处交互的接口 // 检查层高输入是否合法 // 若返回false,请调用GetPrompt函数,获得提示语 bool IsHeightLegal(CString &csHeight); // 检查层号输入是否合法 // 若返回false,请调用GetPrompt函数,获得提示语 bool IsNameLegal(CString &csName); // 获取提示语 CString GetPrompt() const; // 获取楼层号数组 void GetFloors(AcDbIntArray &aryFloors) const; private: CString m_csPrompt; // 警告提示语 AcDbIntArray m_aryFloors; // 楼层号数组 private: // 以下函数对楼层号字符串进行分析 // 判断是否存在“指定”间断符号连接的楼层号,递归调用 bool IsDisconnectNum(CString csSymb, CString &csName); // 判断是否存在连续的楼层号 bool IsContinuousNum(CString &csName, int &nLow, int &nUp); // 判断是否存在指定符号的连续的楼层号 bool IsContinuousNum(CString csSymb, CString &csName, int &nLow, int &nUp); // 检查楼层号是否是正负一到三位数以内的整型数,直接返回楼层号,根据提示是否为空判断是否获取成功 int GetFloorNumber(CString &csName); // 处理空格 void DealSpace(CString csSymb, CString &csName); private: // 以下函数对楼层号数组进行操作 void ClearFloors(); // 向数组中增加楼层号,自动检查,若和aryFloorNum中有重复,返回false。nLow为下限,nUp为上限,自动过滤掉0 bool AppendNum(int nNum); bool AppendNum(int nLow, int nUp); }; #endif