Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/AxisNoParser.h
T
2026-09-28 15:28:50 +08:00

78 lines
2.5 KiB
C++

#ifndef __AXISNOPARSER_H
#define __AXISNOPARSER_H
// 推导轴号类
// sg modify 1007113,导出给tch_anotate工程的主附转换命令使用
// class XAxisNoParser: public XString
class TARCH_EXP XAxisNoParser: public XString
{
public:
// sg modify 100530,接收轴号标注对象传来的“变前项”、“变后项”的排列规则
// XAxisNoParser(const TCHAR *pszNo)
XAxisNoParser(const TCHAR *pszNo, BOOL bPreNo = FALSE)
{
*(XString *)this = pszNo;
m_bChangePreNo = bPreNo;
}
BOOL GetDenominator(XString &sDenominator) const; // 求分母
BOOL GetNumerator(XString &sNumerator) const; // 求分子
// sg modify 100706,分子一般都是数字,修改参数接口,减少代码
// BOOL GetSubNo(XString &sSubNo) const; // 求附加轴线号(分子)
BOOL GetSubNo(int &nSubNo) const; // 求附加轴线号(分子)
BOOL GetRegionNo(XString &sRegion) const; // 求分区号
int GetMajorNo(XString &sMajorNo) const; // 求主轴号
BOOL GetMajorVarNo(XString &sMajorVar) const; // 求主轴号中可变的部分(对于双字母)
BOOL GetMajorConstNo(XString &sMajorConst) const; // 求主轴号中不变的部分(对于双字母)
// 求下一根轴号
// bNextIsMajor——下一根轴线是否是主轴线
BOOL GetNext(XString &sNextNo, BOOL bNextIsMajor) const;
// 覆盖当前
BOOL GetNext(BOOL bNextIsMajor);
public: // sg add 100521,根据8.5需求,添加下列函数
// 推算下个字母的内容
TCHAR GetNextAxisAlpha(TCHAR cCur, bool &bChangeOther) const;
// sg add 100706,根据8.5新增加的变前项、变后项的规则,由szOld推导出szNew,成功返回true,否则返回false
bool GetNext(XString szOld, XString &szNew) const;
// sg add 100706,将szNo拆分为前项szFront和后项szBehind
// 返回0:出现错误;返回1:正常解析;返回2:单个字母或全部都是数字;返回3:正常解析,但是判断含有分区号
short GetFrontAndBehindNo(XString szNo, XString &szFront, XString &szBehind) const;
// nType:表示处理方式,0:如果是字母,到Y时,不再处理;1:针对单个字母类,自动处理到szNew中
bool GetNextNo(XString szOld, XString &szNew, int nType = 0) const;
// 求首个轴号之前的一根轴号
// bPreIsMajor——前一根性质是主轴线嘛
BOOL GetPre(XString &sPreNo, BOOL bPreIsMajor) const;
// add by xly on 100816 判断主轴号是否含有分区
static bool GetRegion(CString &csMajorAxis);
public:
// sg add 100530,保存“变前项”、“变后项”的排列规则
BOOL m_bChangePreNo;
};
// 把轴线标记: <Handle>|<Flag>分解成两部分
BOOL SplitAxisFlag(const TCHAR *pszFullFlag, TCHAR * szHandle, int *nFlag);
// 清除附加轴线标记
void ClearAttachFlag(XString &sFullFlag);
//#define AXIS_ARC 0x01 //弧形轴网|矩形轴网
//#define AXIS_JS 0x02 //进深|开间
//#define AXIS_ATTACH 0x04 //辅助|正式
#endif