Files
envi-code/SourceCode/Code2026/ThunderProof/LayPinDlg.h
T

209 lines
5.9 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
2026-09-28 15:28:50 +08:00
// = FileName: LayPinDlg.h
// = Version: 1.0
// = Author:
// = Date: 2008/06/06
2026-10-04 00:04:20 +08:00
// = Description: 插入,编辑单针
2026-09-28 15:28:50 +08:00
// = Maintainers:
#if !defined(AFX_LAYPINDLG_H__3CABE034_8F60_43D4_8D49_933503B820DC__INCLUDED_)
#define AFX_LAYPINDLG_H__3CABE034_8F60_43D4_8D49_933503B820DC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif
#include "resource.h"
#include "ThunderXData.h"
#include "DrawThunder2D.h"
#include "ThunderXData.h"
#include "UIIListCtrl.h"
#define GRADENUM 4
#define COLWIDTH 60
#define SPNMIN 1
#define SPNMAX 1000
class CThunderDbReactor;
class CLayPinDlg : public CDialog
{
public:
CLayPinDlg(const AcDbObjectId& entId = AcDbObjectId::kNull,BOOL bIsModel = FALSE,CWnd* pParent = NULL);
~CLayPinDlg();
enum UpdateStyle
{
2026-10-04 00:04:20 +08:00
UpdateNone = 0, // 不做更新
UpdateAllTH = 1, //更新所有字高
UpdateCurTH = 2, // 更新当前字高
UpdateAllSc = 3, // 更新所有图块系数
UpdateCurSc = 4, //更新当前图块系数
UpdateAllTHAndSc = 5,//更新所有 字高 和 图块系数
UpdateCurTHAndSc = 6,//更新当前字高 和 图块系数
2026-09-28 15:28:50 +08:00
};
//{{AFX_DATA(CLayPinDlg)
enum { IDD = IDD_LAYPINDLG };
CButton m_btnGroupExplain;
CString m_strTextHigh;
CString m_strBlockScale;
CString m_strRadius;
CString m_strPinHeight;
CButton m_btnTip;
CStatic m_stcNumCue;
CEdit m_edtSafeHt;
CButton m_radiShowType;
CButton m_btnCancel;
CButton m_btnUpdate;
CEdit m_edtNumber;
CEdit m_edtHeight;
CComboBox m_cmbRadius;
UpdateStyle m_Us;
CUIIListCtrl m_wndGrid;
CSpinButtonCtrl m_wndModulate;
CSpinButtonCtrl m_wndSpinGroupNo;
CSpinButtonCtrl m_wndHT;
CString m_sGroupNo;
CString m_sProvider;
//}}AFX_DATA
//{{AFX_VIRTUAL(CLayPinDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual void PostNcDestroy();
//}}AFX_VIRTUAL
public:
2026-10-04 00:04:20 +08:00
// 对话框的非模式形式
2026-09-28 15:28:50 +08:00
BOOL DoModeless();
2026-10-04 00:04:20 +08:00
// 添加扩展数据
2026-09-28 15:28:50 +08:00
BOOL SetCurrentExData(const AcDbObjectId& idEnt);
2026-10-04 00:04:20 +08:00
// 读取扩展数据
2026-09-28 15:28:50 +08:00
BOOL GetCurrentExData(const AcDbObjectId& idEnt);
2026-10-04 00:04:20 +08:00
// 插入避雷针
2026-09-28 15:28:50 +08:00
BOOL InsertThunderBlock(AcDbObjectId& idEnt);
2026-10-04 00:04:20 +08:00
// 设置绘画指针
2026-09-28 15:28:50 +08:00
void SetThunderDraw2d(CDrawThunderTools* pThundDraw);
2026-10-04 00:04:20 +08:00
//更新字体高度 和 图块系数
2026-09-28 15:28:50 +08:00
void UpdateTHAndBkSc(UpdateStyle us);
2026-10-04 00:04:20 +08:00
//得到所有避雷针图块
2026-09-28 15:28:50 +08:00
void GetAllInsert(AcDbObjectIdArray& arcId);
2026-10-04 00:04:20 +08:00
//得到指定块参照的属性字的内容
2026-09-28 15:28:50 +08:00
void GetBlkAttrText(AcDbObjectId oid,LPCTSTR pszTag,CString& strBlkTest);
2026-10-04 00:04:20 +08:00
////得到指定块参照的属性字的插入点
2026-09-28 15:28:50 +08:00
void GetBlkAttrPos(AcDbObjectId oid,LPCTSTR pszTag,AcGePoint3d& ptPos);
2026-10-04 00:04:20 +08:00
//更新指定避雷器的字体高度 如果 IsUpdataAll 为 TRUE 更新全部,为 FALSE 更新当前
2026-09-28 15:28:50 +08:00
void UpdateTextHeight(BOOL IsUpdataAll = TRUE);
2026-10-04 00:04:20 +08:00
//修改扩展数据-字体高度
2026-09-28 15:28:50 +08:00
void ModifyTHChanged(const AcDbObjectIdArray& arcId);
2026-10-04 00:04:20 +08:00
//修改扩展数据- 图块系数
2026-09-28 15:28:50 +08:00
void ModifyBlkScaleChanged(const AcDbObjectIdArray& arcId);
2026-10-04 00:04:20 +08:00
//更新指定避雷器缩放比例 如果 IsUpdataAll 为 TRUE 更新全部,为 FALSE 更新当前
2026-09-28 15:28:50 +08:00
void UpdateBlkScale(BOOL IsUpdataAll = TRUE);
2026-10-04 00:04:20 +08:00
//设置指定块参照,指定Tag 的属性字 位置
2026-09-28 15:28:50 +08:00
Acad::ErrorStatus SetAttrPos(AcDbBlockReference* pRef,LPCTSTR pszTag,const AcGePoint3d& pt);
void UpdateThunderByProtectHeight();
double GetThunderHeight() const;
2026-10-04 00:04:20 +08:00
// 是否响应动态更新
2026-09-28 15:28:50 +08:00
BOOL IsDynamicUpdate() const;
2026-10-04 00:04:20 +08:00
//读写设置
2026-09-28 15:28:50 +08:00
void UpdateDlgData(BOOL ReadOrWrite);
2026-10-04 00:04:20 +08:00
//高亮保护圆
2026-09-28 15:28:50 +08:00
void HighlightSubEnt(double dProheight);
void UnHighlightSubEnt();
void SetDbReactorPtr(CThunderDbReactor* pRector);
void GetThunderProHeight(AcGeDoubleArray& arPro);
double GetThunderRadius() const;
void GetCurrentData(CStringArray& arData);
protected:
//{{AFX_MSG(CLayPinDlg)
virtual BOOL OnInitDialog();
afx_msg void OnClose();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnButtonUpdate();
afx_msg void OnButtonCancel();
afx_msg void OnChangeEditNum();
afx_msg void OnLayer2d();
afx_msg void OnLayer3d();
afx_msg void OnThunderHeightTip();
afx_msg void OnDestroy();
afx_msg void OnChangeGroupNo();
afx_msg void OnGroupExplain();
afx_msg void OnAddHeight();
afx_msg void OnRemoveHeight();
//}}AFX_MSG
LONG_PTR OnAcadKeepFocus(UINT_PTR, LONG_PTR);
DECLARE_MESSAGE_MAP()
private:
2026-10-04 00:04:20 +08:00
// 初始化模式对话框
2026-09-28 15:28:50 +08:00
void InitModalDlg();
2026-10-04 00:04:20 +08:00
// 初始化非模式对话框
2026-09-28 15:28:50 +08:00
void InitModalessDlg();
2026-10-04 00:04:20 +08:00
// 显示或隐藏控件
2026-09-28 15:28:50 +08:00
void DisplayOrHideBtn(BOOL bIsHide = FALSE);
2026-10-04 00:04:20 +08:00
// 编号错误提示
2026-09-28 15:28:50 +08:00
void PostErrorToCue(CString& strError);
2026-10-04 00:04:20 +08:00
// 获取数据
2026-09-28 15:28:50 +08:00
BOOL GetDlgData(BOOL bIsUpdate = FALSE);
2026-10-04 00:04:20 +08:00
// 将圆和避雷针生成组并添加到有名对象字典的组字典中
2026-09-28 15:28:50 +08:00
AcDbObjectId AddCurGroup(const AcDbObjectIdArray& arIds, LPCTSTR pszGroupName);
2026-10-04 00:04:20 +08:00
// 避雷针保护高度
2026-09-28 15:28:50 +08:00
BOOL GetProtectHeightFromReg(CStringArray& arProHeight);
BOOL SetProtectHeightToReg(const CStringArray& arProHeight);
BOOL GetProtectHeightFromObj(const AcDbObjectId& idThunder, CStringArray& arProHeight);
BOOL SetProtectHeightToObj(LPCTSTR pszGNo, const CStringArray& arProHeight);
BOOL SplitValue(LPCTSTR pszSrc, LPCTSTR pszSplitCh, CStringArray& arValue);
BOOL SplitString(CString& sSrc, LPCTSTR pszSplitCh, CString& sValue);
CString ConvertToCString(const CStringArray& arValue, LPCTSTR pszSplitCh);
CString TrimDoubleString(LPCTSTR pszSrc);
BOOL AssertProtectHeight(BOOL bBoxTip = TRUE);
AcGePoint3d GetThunderInsertPosition(const AcDbObjectId& id);
void SaveDlgData();
void ReadDlgData();
private:
2026-10-04 00:04:20 +08:00
// 避雷针ID
2026-09-28 15:28:50 +08:00
AcDbObjectId m_idThunder;
2026-10-04 00:04:20 +08:00
// 模式显示或者非模式显示
2026-09-28 15:28:50 +08:00
BOOL m_bIsModel;
2026-10-04 00:04:20 +08:00
// 提示内容是否改变,用于更改字体颜色
2026-09-28 15:28:50 +08:00
BOOL m_bTipChange;
BOOL m_bValid;
CDrawThunderTools *m_pDrawThunder;
CThunderDbReactor *m_pReactor;
2026-10-04 00:04:20 +08:00
// 扩展数据
2026-09-28 15:28:50 +08:00
CStringArray m_arsXData;
2026-10-04 00:04:20 +08:00
// 保护高度
2026-09-28 15:28:50 +08:00
AcGeDoubleArray m_arProHeight;
CBitmap m_bitTip;
2026-10-04 00:04:20 +08:00
// 用于高亮显示实体
2026-09-28 15:28:50 +08:00
AcDbObjectIdArray m_arHlEnt;
};
#endif // !defined(AFX_LAYPINDLG_H__3CABE034_8F60_43D4_8D49_933503B820DC__INCLUDED_)