61 lines
1.8 KiB
C++
61 lines
1.8 KiB
C++
#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
|