Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

267 lines
10 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef _ELEV_DLG_H_
#define _ELEV_DLG_H_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Resource.h"
#include "WDGrid.h"
//以下类的定义整理by lgy 20120109
#define WM_GRID_CHANGED WM_USER+1 // sg add 090410
Adesk::Boolean acedPostCommand(const TCHAR * );
static BOOL g_bHatch = FALSE; // 是否实体填充
static BOOL g_bHasBase = FALSE; // 是否带基线
static BOOL g_bHasLeader = FALSE; // 是否带引线
static BOOL g_bHightWrite = FALSE; // 是否手工输入
// add by zkm
static BOOL g_bContinue = TRUE; // 是否连标
static BOOL g_bOrder = FALSE; // 是否自动对齐标注
static BOOL g_bFirstExecute = TRUE; //总图命令,为TZELEV命令默认值使用
static double g_nLeaderLen = 7.0;
static double g_nBaseLen = 7.0;
// sg add 090209
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); // 字高
// sg add 090212
static BOOL g_bParentheses = TRUE; // 传统样式,楼层是否加括号
static BOOL g_bElevSideText = TRUE; // 文字是否齐线端
//modify by lgy 20120111 文字样式初始化应从程序中读取
// sg add 090216
//static CString g_csFontStyle = _T("_TCH_DIM"); // 默认文字样式
static CString g_csFontStyle = GetTextStyleName(TS_SYMBOL); // 默认文字样式
// sg add 090220
static BOOL g_nElevType = 0; // 建筑标高为0,总图标高为1
static int g_nElevTextAlign = 0; // 总图,普通标高,文字排列方式
static BOOL g_bUseConversion = FALSE; // 总图,是否自动换算绝对标高
static CString g_csElevConversion = _T("50"); // 总图,换算关系
// sg add 090226
static BOOL g_bCommonElev = TRUE; // 普通标高样式
// sg add 090311
static CString g_csAbsoluteElev = _T("50"); // 绝对标高
static CString g_csRelativeElev = _T(""); // 相对标高或注释
static BOOL g_bElevMidText = TRUE; // 文字居中
// sg add 090313
static TString g_szGridText = _T(""); // 表格内容记忆
// sg add 120608
static BOOL g_bHollow = FALSE; // 是否三角形空心标高符号
static BOOL g_bElevCross = FALSE; // 是否使用十字标高符号
static CString g_csTextLoc = _T("上部"); // 总图标高默认文字位置,不包含普通标高样式
class CElevDlg;
class CEditMutiElevDlg;
// 多层楼层标高编辑对话框中使用的表格,sg add 090407
class TMutiElevGrid : public WDGrid
{
public:
TMutiElevGrid() {};
BOOL m_bPrec3;
protected:
virtual void OnDataChanged();
virtual bool OnModified(WDGridCell&cell, CString &text);
// sg add 090506,插入行前,首先COPY当前行内容,解决排顺序问题,防止插入的行内容总在最后
virtual bool OnBeforeInsertRow(long i, WDGridRow*&pNewRow);
public:
void ArrangeDouble();
};
// 多层标高编辑对话框,sg add 090401,8.0新功能
class CEditMutiElevDlg: public CModelessDialog
{
// Construction
public:
CEditMutiElevDlg(CWnd* pParent = NULL); // standard constructor
public: // 与CElevDlg类的交互函数
void SetPrecision(BOOL bPrec3); // 精确度设置,只用在对话框上显示使用
void SetCell01(CString csCell01); // 从标高对话框传进来的首层楼层号/解释
// 从标高对话框传进来的已知的楼层号,用于初始化表格
void SetKnownElev(XStringList &lstElevs);
// 返回给标高对话框的表格内容
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
static CString m_csLHeight; // 层高(记忆使用)
static CString m_csLNum; // 层数
TMutiElevGrid m_grid; // 表格
BOOL m_bAutoFloorInfo; // 自动填充楼层号
CString m_csFirstFloor; // 首层楼层号
BOOL m_bPrec3; // 是否精确到小数点后第三位
CString m_csCell01; // 标高对话框传进来的首层楼层号/解释
protected:
void AnalysisCell01(); // 解析楼层号/解释,填充m_bAutoFloorInfo、m_csFirstFloor
double GetLHeight(); // 获取层高,已换算到M单位
CString GetFormatText(XString szText); // 按照传进来的精度显示标高,非数字不做处理
CString GetFormatText(double dElev); // 按照传进来的精度显示标高
// 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()
};
// 标高,sg modify 090209,满足8.0的新需求
class CElevDlg:public CModelessDialog
{
protected:
WDGrid m_grid;
public:
CElevDlg(TDbSymbElevation *pElev);
CElevDlg(CWnd* pParent = NULL);
virtual ~CElevDlg();
BOOL IsSitePlanDlg(){return m_bSitePlanDlg;}//设置为总图标高单独对话框
void SetSitePlanDlg(BOOL bSitePlan);//设置为总图标高单独对话框
// sg add 120609,下面这些函数用于提供外界与上面定义的静态变量交互使用
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
void SetEntPoint(TDbSymbElevation * pElev); // 关联标注对象
void UpdataEnt();
void UpdateEntText();
void SetGridEnableWrite(BOOL bWrite); // 表格设置可写
void UpdateGrid(double newValue); // 更新Grid值
void UpDateGridToStar(); // 清空标注的附加内容
void SetArchElevGrid(); // sg add 090222,设置表格行数、表头
void InitGridAndTextFromEnt(); // sg add 090222,用对象中的文字内容,填充表格
void SetOrderFa(BOOL bOrder);
void GetTextHeight(); // sg add 090209,获取文字字高
void LoadTextStyle(); // sg add 090209,加载文字样式
void SetTabCurPage1(); // sg add 090220,设置当前标高页面控件显示情况
void SetTabCurPage2(); // sg add 090227,强制对标高当前选择页面进行规定
void SetShowByUseConversion(); // sg add 090311,根据是否自动换算,设置各控件是否显示
void SetTextLocationByStyle(); // sg add 090311
BOOL IsDigitEle(const XString &sText); // sg add 090223,判断输入内容是否是数字
void CalAbsoluteElev(); // sg add 090223,用换算关系、相对标高,计算绝对标高
void CalRelativeElev(); // sg add 090312,用换算关系、绝对标高,计算相对标高
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();
void OnCheckHatch(); // 以下三个函数未使用
void OnCheckBaseLine();
void OnCheckLeader();
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(); //十字标高符号
afx_msg void OnSelchangeComboFongstyle();
afx_msg void OnSelchangeComboTextLoc(); // sg add 120608,总图标高默认文字位置,不包含普通标高样式
afx_msg void OnSelchangeComboTextHeight();
afx_msg void OnEditchangeComboTextHeight();
afx_msg void OnBnClickedSideText(); // sg add 090217,齐线端、规范样式、加括号
afx_msg void OnBnClickedStandard();
afx_msg void OnBnClickedParentheses();
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,左右排列
afx_msg void OnBnClickedUpText(); // sg add 090311,文字居中
afx_msg void OnChangeEditAbsoluteElev(); // sg add 090311,修改绝对标高
afx_msg void OnChangeEditRelativeElev(); // sg add 090311,修改相对标高
afx_msg void OnButtonAddMutiElev(); // sg add 090401,调用自动多层标高
public:
static CElevDlg *g_pElevDlg;
TDbSymbElevation *m_pElev;
BOOL m_bUpdateText;
BOOL m_bHatchTou; // 当拖动引线长度时控制填充按钮不可用
BOOL m_bOrderTou; // 选择第一点时对齐不可选(无对齐目标)
BOOL m_bDlgType; // FALSE 模态 TRUE 非模态
CString m_csTextHeight; // sg add 090209,字高、字体样式、文字位置
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;
CButton m_ButDote; // sg add 090209,圆点样式
CButton m_ButHollow; // sg add 120608,空心三角形地坪标高
CComboBox m_cmbTextHeight; // sg add 090209,字高、字体样式、文字位置
CComboBox m_cmbStyleName;
CComboBox m_cmbTextLoc;
CTabCtrl m_Tab; // sg add 090220,属性页
CButton m_ButCommon; // sg add 090226,普通标高样式
CButton m_ButCross; //jsx add 160513,十字样式标高
protected:
void InitData();
void UpdateBitmap(); // 该函数无实现
BOOL m_bSitePlanDlg; //设置总图标高独立对话框
};
#endif