Files
envi-code/SourceCode/Code2026/tg_shs/shs_annotate/ElevDlg.h
T

267 lines
10 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#ifndef _ELEV_DLG_H_
2026-09-28 15:28:50 +08:00
#define _ELEV_DLG_H_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Resource.h"
#include "WDGrid.h"
2026-10-04 00:04:20 +08:00
//以下类的定义整理by lgy 20120109
2026-09-28 15:28:50 +08:00
#define WM_GRID_CHANGED WM_USER+1 // sg add 090410
Adesk::Boolean acedPostCommand(const TCHAR * );
2026-10-04 00:04:20 +08:00
static BOOL g_bHatch = FALSE; // 是否实体填充
static BOOL g_bHasBase = FALSE; // 是否带基线
static BOOL g_bHasLeader = FALSE; // 是否带引线
static BOOL g_bHightWrite = FALSE; // 是否手工输入
2026-09-28 15:28:50 +08:00
// add by zkm
2026-10-04 00:04:20 +08:00
static BOOL g_bContinue = TRUE; // 是否连标
static BOOL g_bOrder = FALSE; // 是否自动对齐标注
static BOOL g_bFirstExecute = TRUE; //总图命令,为TZELEV命令默认值使用
2026-09-28 15:28:50 +08:00
static double g_nLeaderLen = 7.0;
static double g_nBaseLen = 7.0;
// sg add 090209
2026-10-04 00:04:20 +08:00
static BOOL g_bDote = FALSE; // 是否点样式
static BOOL g_bStandard = FALSE; // 多行文字输出,是否规范样式,标高加括号
//modify by lgy 20120111 字高初始化时从程序中读取(即与文字管理一致)
//static double g_dTextHeight = 3.5;// 字高
static double g_dTextHeight = GetTextHeightByTs(TS_SYMBOL); // 字高
2026-09-28 15:28:50 +08:00
// sg add 090212
2026-10-04 00:04:20 +08:00
static BOOL g_bParentheses = TRUE; // 传统样式,楼层是否加括号
static BOOL g_bElevSideText = TRUE; // 文字是否齐线端
//modify by lgy 20120111 文字样式初始化应从程序中读取
2026-09-28 15:28:50 +08:00
// sg add 090216
2026-10-04 00:04:20 +08:00
//static CString g_csFontStyle = _T("_TCH_DIM"); // 默认文字样式
static CString g_csFontStyle = GetTextStyleName(TS_SYMBOL); // 默认文字样式
2026-09-28 15:28:50 +08:00
// sg add 090220
2026-10-04 00:04:20 +08:00
static BOOL g_nElevType = 0; // 建筑标高为0,总图标高为1
static int g_nElevTextAlign = 0; // 总图,普通标高,文字排列方式
static BOOL g_bUseConversion = FALSE; // 总图,是否自动换算绝对标高
static CString g_csElevConversion = _T("50"); // 总图,换算关系
2026-09-28 15:28:50 +08:00
// sg add 090226
2026-10-04 00:04:20 +08:00
static BOOL g_bCommonElev = TRUE; // 普通标高样式
2026-09-28 15:28:50 +08:00
// sg add 090311
2026-10-04 00:04:20 +08:00
static CString g_csAbsoluteElev = _T("50"); // 绝对标高
static CString g_csRelativeElev = _T(""); // 相对标高或注释
static BOOL g_bElevMidText = TRUE; // 文字居中
2026-09-28 15:28:50 +08:00
// sg add 090313
2026-10-04 00:04:20 +08:00
static TString g_szGridText = _T(""); // 表格内容记忆
2026-09-28 15:28:50 +08:00
// sg add 120608
2026-10-04 00:04:20 +08:00
static BOOL g_bHollow = FALSE; // 是否三角形空心标高符号
static BOOL g_bElevCross = FALSE; // 是否使用十字标高符号
static CString g_csTextLoc = _T("上部"); // 总图标高默认文字位置,不包含普通标高样式
2026-09-28 15:28:50 +08:00
class CElevDlg;
class CEditMutiElevDlg;
2026-10-04 00:04:20 +08:00
// 多层楼层标高编辑对话框中使用的表格,sg add 090407
2026-09-28 15:28:50 +08:00
class TMutiElevGrid : public WDGrid
{
public:
TMutiElevGrid() {};
BOOL m_bPrec3;
protected:
virtual void OnDataChanged();
virtual bool OnModified(WDGridCell&cell, CString &text);
2026-10-04 00:04:20 +08:00
// sg add 090506,插入行前,首先COPY当前行内容,解决排顺序问题,防止插入的行内容总在最后
2026-09-28 15:28:50 +08:00
virtual bool OnBeforeInsertRow(long i, WDGridRow*&pNewRow);
public:
void ArrangeDouble();
};
2026-10-04 00:04:20 +08:00
// 多层标高编辑对话框,sg add 090401,8.0新功能
2026-09-28 15:28:50 +08:00
class CEditMutiElevDlg: public CModelessDialog
{
// Construction
public:
CEditMutiElevDlg(CWnd* pParent = NULL); // standard constructor
2026-10-04 00:04:20 +08:00
public: // 与CElevDlg类的交互函数
void SetPrecision(BOOL bPrec3); // 精确度设置,只用在对话框上显示使用
void SetCell01(CString csCell01); // 从标高对话框传进来的首层楼层号/解释
// 从标高对话框传进来的已知的楼层号,用于初始化表格
2026-09-28 15:28:50 +08:00
void SetKnownElev(XStringList &lstElevs);
2026-10-04 00:04:20 +08:00
// 返回给标高对话框的表格内容
2026-09-28 15:28:50 +08:00
void GetGridTexts(XStringList &lstElevs, XStringList &lstFloors);
// Dialog Data
protected:
//{{AFX_DATA(CEditMutiElevDlg)
enum { IDD = IDD_DIALOG_MUTIELEVEDIT };
CComboBox m_cmbLHeight;
CComboBox m_cmbLNum;
//}}AFX_DATA
2026-10-04 00:04:20 +08:00
static CString m_csLHeight; // 层高(记忆使用)
static CString m_csLNum; // 层数
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
TMutiElevGrid m_grid; // 表格
BOOL m_bAutoFloorInfo; // 自动填充楼层号
CString m_csFirstFloor; // 首层楼层号
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
BOOL m_bPrec3; // 是否精确到小数点后第三位
CString m_csCell01; // 标高对话框传进来的首层楼层号/解释
2026-09-28 15:28:50 +08:00
protected:
2026-10-04 00:04:20 +08:00
void AnalysisCell01(); // 解析楼层号/解释,填充m_bAutoFloorInfo、m_csFirstFloor
double GetLHeight(); // 获取层高,已换算到M单位
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
CString GetFormatText(XString szText); // 按照传进来的精度显示标高,非数字不做处理
CString GetFormatText(double dElev); // 按照传进来的精度显示标高
2026-09-28 15:28:50 +08:00
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CEditMutiElevDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CEditMutiElevDlg)
virtual BOOL OnInitDialog();
afx_msg void OnButtonAddElev();
afx_msg void OnButtonClearList();
afx_msg void OnChangeEditFirstFloor();
afx_msg void OnBnClickedAutoFloor();
afx_msg LRESULT OnGridChanged(WPARAM wParam, LPARAM lParam); // sg add 090410
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
2026-10-04 00:04:20 +08:00
// 标高,sg modify 090209,满足8.0的新需求
2026-09-28 15:28:50 +08:00
class CElevDlg:public CModelessDialog
{
protected:
WDGrid m_grid;
public:
CElevDlg(TDbSymbElevation *pElev);
CElevDlg(CWnd* pParent = NULL);
virtual ~CElevDlg();
2026-10-04 00:04:20 +08:00
BOOL IsSitePlanDlg(){return m_bSitePlanDlg;}//设置为总图标高单独对话框
void SetSitePlanDlg(BOOL bSitePlan);//设置为总图标高单独对话框
// sg add 120609,下面这些函数用于提供外界与上面定义的静态变量交互使用
2026-09-28 15:28:50 +08:00
BOOL IsHightWrite () const;
BOOL IsHasBase() const;
BOOL IsHasLeader() const;
void SetLeaderLen(double dLen);
void SetBaseLen(double dLen);
BOOL IsOrder() const;
virtual void DoDataExchange(CDataExchange*pDX);
virtual BOOL OnInitDialog();
virtual void OnOK();
// add by zkm
2026-10-04 00:04:20 +08:00
void SetEntPoint(TDbSymbElevation * pElev); // 关联标注对象
2026-09-28 15:28:50 +08:00
void UpdataEnt();
void UpdateEntText();
2026-10-04 00:04:20 +08:00
void SetGridEnableWrite(BOOL bWrite); // 表格设置可写
void UpdateGrid(double newValue); // 更新Grid值
void UpDateGridToStar(); // 清空标注的附加内容
void SetArchElevGrid(); // sg add 090222,设置表格行数、表头
void InitGridAndTextFromEnt(); // sg add 090222,用对象中的文字内容,填充表格
2026-09-28 15:28:50 +08:00
void SetOrderFa(BOOL bOrder);
2026-10-04 00:04:20 +08:00
void GetTextHeight(); // sg add 090209,获取文字字高
void LoadTextStyle(); // sg add 090209,加载文字样式
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
void SetTabCurPage1(); // sg add 090220,设置当前标高页面控件显示情况
void SetTabCurPage2(); // sg add 090227,强制对标高当前选择页面进行规定
void SetShowByUseConversion(); // sg add 090311,根据是否自动换算,设置各控件是否显示
2026-09-28 15:28:50 +08:00
void SetTextLocationByStyle(); // sg add 090311
2026-10-04 00:04:20 +08:00
BOOL IsDigitEle(const XString &sText); // sg add 090223,判断输入内容是否是数字
void CalAbsoluteElev(); // sg add 090223,用换算关系、相对标高,计算绝对标高
void CalRelativeElev(); // sg add 090312,用换算关系、绝对标高,计算相对标高
2026-09-28 15:28:50 +08:00
DECLARE_MESSAGE_MAP()
virtual void PostNcDestroy(){ if(m_bDlgType)delete this; }
afx_msg void OnPickHatch();
afx_msg void OnPickBaseLine();
afx_msg void OnPickLeadLine();
afx_msg void OnOrder();
afx_msg void OnContinueDim();
afx_msg void OnPrecision();
afx_msg void OnDestroy();
afx_msg void OnClose();
afx_msg void OnActivate(UINT nState,CWnd*pWndOther,BOOL bMinimized);
afx_msg void OnPickCheckWriter();
2026-10-04 00:04:20 +08:00
void OnCheckHatch(); // 以下三个函数未使用
2026-09-28 15:28:50 +08:00
void OnCheckBaseLine();
void OnCheckLeader();
2026-10-04 00:04:20 +08:00
afx_msg void OnPickDote(); // sg add 090209,圆点样式
afx_msg void OnPickHollow(); // sg add 120608,三角形空心标高符号
afx_msg void OnPickCommonElev(); // sg add 090226,普通样式
afx_msg void OnButtonTextHeight(); // sg add 090212,字高、文字样式
afx_msg void OnPickCross(); //十字标高符号
2026-09-28 15:28:50 +08:00
afx_msg void OnSelchangeComboFongstyle();
2026-10-04 00:04:20 +08:00
afx_msg void OnSelchangeComboTextLoc(); // sg add 120608,总图标高默认文字位置,不包含普通标高样式
2026-09-28 15:28:50 +08:00
afx_msg void OnSelchangeComboTextHeight();
afx_msg void OnEditchangeComboTextHeight();
2026-10-04 00:04:20 +08:00
afx_msg void OnBnClickedSideText(); // sg add 090217,齐线端、规范样式、加括号
2026-09-28 15:28:50 +08:00
afx_msg void OnBnClickedStandard();
afx_msg void OnBnClickedParentheses();
2026-10-04 00:04:20 +08:00
afx_msg void OnBnClickedUseConversion(); // sg add 090222,自动计算换算标高
afx_msg void OnChangeEditConversion(); // sg add 090223,修改换算关系值
afx_msg void OnSelchangeTabElevType(NMHDR* pNMHDR, LRESULT* pResult); // sg add 090220,切换标高类型
afx_msg void OnRadioElevAlignType1(); // sg add 090224,上下排列
afx_msg void OnRadioElevAlignType2(); // sg add 090301,左右排列
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
afx_msg void OnBnClickedUpText(); // sg add 090311,文字居中
afx_msg void OnChangeEditAbsoluteElev(); // sg add 090311,修改绝对标高
afx_msg void OnChangeEditRelativeElev(); // sg add 090311,修改相对标高
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
afx_msg void OnButtonAddMutiElev(); // sg add 090401,调用自动多层标高
2026-09-28 15:28:50 +08:00
public:
static CElevDlg *g_pElevDlg;
TDbSymbElevation *m_pElev;
BOOL m_bUpdateText;
2026-10-04 00:04:20 +08:00
BOOL m_bHatchTou; // 当拖动引线长度时控制填充按钮不可用
BOOL m_bOrderTou; // 选择第一点时对齐不可选(无对齐目标)
BOOL m_bDlgType; // FALSE 模态 TRUE 非模态
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
CString m_csTextHeight; // sg add 090209,字高、字体样式、文字位置
2026-09-28 15:28:50 +08:00
CString m_csFontStyle;
CString m_csTextLoc;
protected:
enum { IDD = IDD_ELEV };
CButton m_ButHatch;
CButton m_ButBaseLine;
CButton m_ButLeadLine;
CButton m_ButContinue;
CButton m_ButOrder;
CComboBox m_ComBox;
CButton m_Rider;
2026-10-04 00:04:20 +08:00
CButton m_ButDote; // sg add 090209,圆点样式
CButton m_ButHollow; // sg add 120608,空心三角形地坪标高
CComboBox m_cmbTextHeight; // sg add 090209,字高、字体样式、文字位置
2026-09-28 15:28:50 +08:00
CComboBox m_cmbStyleName;
CComboBox m_cmbTextLoc;
2026-10-04 00:04:20 +08:00
CTabCtrl m_Tab; // sg add 090220,属性页
CButton m_ButCommon; // sg add 090226,普通标高样式
CButton m_ButCross; //jsx add 160513,十字样式标高
2026-09-28 15:28:50 +08:00
protected:
void InitData();
2026-10-04 00:04:20 +08:00
void UpdateBitmap(); // 该函数无实现
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
BOOL m_bSitePlanDlg; //设置总图标高独立对话框
2026-09-28 15:28:50 +08:00
};
#endif