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

499 lines
11 KiB
C++

#pragma once
#include "resource.h"
#include "singleton.h"
#include "BtnST.h"
#include <set>
#include "xlistctrl.h"
#include "AecDbMultiPartEntity.h"
class AcDbX3dSolid;
class AecDbX3dPart;
class CDtygProperty : public CDialog
{
DECLARE_DYNAMIC(CDtygProperty)
public:
CDtygProperty(AecDbX3dPart *pPart, CWnd* pParent = NULL);
CDtygProperty(AecDbBDPipeBase *pPart, CWnd* pParent = NULL);
virtual ~CDtygProperty();
enum { IDD = IDD_PROPERTY };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickedButton2();
afx_msg void OnBnClickedButton3();
afx_msg void OnBnClickedButton4();
afx_msg void OnBnClickedButton5();
afx_msg void OnBnClickedButton8();
afx_msg void OnBnClickedOk();
afx_msg void OnNMDblClkList1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg LRESULT OnComboSelection(WPARAM nItem, LPARAM nSubItem);
public:
AcDbObjectId getLayerByStatisticsType(LPCTSTR sType);
private:
CXListCtrl m_wndListCtrl;
CButton m_btnAdd;
CButton m_btnModify;
CButton m_btnDel;
CButton m_btnImport;
CButton m_btnExport;
CFont m_font;
// 查看构建属性使用
AecDbX3dPart *m_pPart;
// 查看母实体属性使用
AecDbBDPipeBase *m_pMultiEnt;
};
class CDTYGDlg : public CDialog
{
public:
enum TYPE
{
kErr = -1,
kBox,
kCylinder,
kCone,
kPyramid,
kCircleTorus,
kRectTorus,
kXTorus,
kWedge,
kDrums,
kExtrude,
kRevolve,
kSpere,
kLoft,
kSweep,
kCut,
kWeir,
};
DECLARE_DYNAMIC(CDTYGDlg)
public:
CDTYGDlg(CWnd* pParent = NULL);
virtual ~CDTYGDlg();
enum { IDD = IDD_DTYG_DLG };
public:
void SetObjectID(AcDbObjectId id);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
virtual void OnOK();
virtual void OnCancel();
void enableWindows(bool bEnble, const std::set<int> &exceptions);
void showEntity(bool bShow);
bool HasSelectItem();
bool PropertyDlg(HTREEITEM hItem);
TYPE getType(HTREEITEM hItem);
bool getSelectItems(std::vector<HTREEITEM> &items, bool bTip = true);
void refreshTree(AcDbObjectId &id);
void modifyDTYG();
void refreshHlightEntity();
bool getTransfromOf3DPart(AcGeMatrix3d &mat);
DECLARE_MESSAGE_MAP()
afx_msg void Ok() { OnOK(); }
afx_msg void Cancel() { OnCancel(); }
afx_msg void OnClose() { OnCancel(); }
afx_msg LONG_PTR onAcadKeepFocus( UINT_PTR, LONG_PTR);
afx_msg LRESULT OnRefreshHlightEntityMsg(WPARAM, LPARAM);
afx_msg void OnBnClicked1(); // 长方体
afx_msg void OnBnClicked2(); // 圆住体
afx_msg void OnBnClicked3(); // 圆台体
afx_msg void OnBnClicked4(); // 棱锥体
afx_msg void OnBnClicked7(); // 球体
afx_msg void OnBnClicked8(); // 拉伸体
afx_msg void OnBnClicked9(); // 旋转体
afx_msg void OnBnClicked10(); // 楔体
afx_msg void OnBnClicked11(); // 球台体
afx_msg void OnBnClicked12(); // 环体
afx_msg void OnBnClicked15(); // 切割
afx_msg void OnBnClicked78(); // 下一个面
afx_msg void OnBnClicked79(); // 上一个面
afx_msg void OnBnClicked80(); // 应用
afx_msg void OnBnClicked81(); // 开始
afx_msg void OnBnClicked31(); // 位移-移动
afx_msg void OnBnClicked36(); // 位移-捕捉点移动
afx_msg void OnBnClicked34(); // 位移-复位
afx_msg void OnBnClicked27(); // 角度-旋转
afx_msg void OnBnClicked28(); // 角度-旋转
afx_msg void OnBnClicked75(); // 复制
afx_msg void OnBnClicked77(); // 镜像
afx_msg void OnBnClicked33(); // 修改
afx_msg void OnBnClicked32(); // 属性
afx_msg void OnBnClicked76(); // 删除
afx_msg void OnBnClicked20(); // 隐藏
afx_msg void OnBnClicked30(); // 隐藏
afx_msg void OnBnClicked5(); // 保存本地
afx_msg void OnBnClicked14(); // 本地载入
afx_msg void OnBnClickedButton6(); // 异形堰
afx_msg void OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedBtnFill();
public:
struct compare_subent
{
bool operator () (const AcDbSubentId &id1, const AcDbSubentId &id2) const { return id1.index() < id2.index(); }
};
private:
// 10个需要设置图标的按钮
CButtonST m_btn1, m_btn2, m_btn3, m_btn4, m_btn7, m_btn8, m_btn9, m_btn10, m_btn11, m_btn12, m_btn15;
CButton m_btnFaceBegin, m_btnFaceEnd, m_btnNext, m_btnPrev;
CString m_sHatch;
CButton m_wndBtHatch;
// 平面定位
AcDbObjectId m_idSolidTemp;
std::map<AcDbSubentId, int, compare_subent> m_SolidSubentIds;
AcArray<AcGePlane> m_SolidGeFaces;
int m_iFaceIdx;
// end
int m_iMove, m_iRotate;
double m_dMove, m_dRotate;
AcDbObjectId m_id; // 构建物
CString m_sObjectName; // 所选实体类型
//CJDXZDlg m_wndSelDlg;
CTreeCtrl m_wndTree;
CImageList m_Imagelist;
CImageList m_Imagelist32;
HTREEITEM m_hCurSelItem;
AcDbObjectId m_HligthtID; // 选择tree上的item时,高亮的临时实体
public:
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
BOOL m_bAddHatch;
afx_msg void OnBnClickedCheckHatch();
CButton m_wndBtnHatchCheck;
};
typedef Singleton<CDTYGDlg> g_DtygDlg;
class CBoxDlg : public CDialog
{
DECLARE_DYNAMIC(CBoxDlg)
public:
CBoxDlg(CWnd* pParent = NULL);
virtual ~CBoxDlg();
enum { IDD = IDD_BOXDLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
afx_msg void OnBnClickedOk();
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
DECLARE_MESSAGE_MAP()
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
public:
int m_clr;
double m_dX, m_dY, m_dZ;
int m_iSub;
PVOID m_pData;
};
class CCylinderDlg : public CDialog
{
DECLARE_DYNAMIC(CCylinderDlg)
public:
CCylinderDlg(CWnd* pParent = NULL);
virtual ~CCylinderDlg();
enum { IDD = IDD_CLNDLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
afx_msg void OnBnClickedOk();
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
DECLARE_MESSAGE_MAP()
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
public:
int m_clr;
double m_dR;
double m_dH;
int m_iSub;
PVOID m_pData;
};
class CConeDLg : public CDialog
{
DECLARE_DYNAMIC(CConeDLg)
public:
CConeDLg(CWnd* pParent = NULL);
virtual ~CConeDLg();
enum { IDD = IDD_CONDLG };
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCheck90();
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
public:
int m_clr;
double m_dr;
double m_dR;
double m_dH;
PVOID m_pData;
double m_dXOffset;
int m_iSub;
BOOL m_bIs90Tr;
};
class CPyrmDlg : public CDialog
{
DECLARE_DYNAMIC(CPyrmDlg)
public:
CPyrmDlg(CWnd* pParent = NULL);
virtual ~CPyrmDlg();
enum { IDD = IDD_PYRMDLG };
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCheck90();
public:
int m_clr;
double m_dTH;
double m_dTx;
double m_dTy;
double m_dBx;
double m_dBy;
PVOID m_pData;
double m_dXOffset;
int m_iSub;
BOOL m_bIs90Tr;
};
class CSpereDlg : public CDialog
{
DECLARE_DYNAMIC(CSpereDlg)
public:
CSpereDlg(CWnd* pParent = NULL);
virtual ~CSpereDlg();
enum { IDD = IDD_SPEREDLG };
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBnClickedOk();
public:
int m_clr;
double m_dR;
PVOID m_pData;
int m_iSub;
};
class CDrumsDlg : public CDialog // 圆台-鼓
{
DECLARE_DYNAMIC(CDrumsDlg)
public:
CDrumsDlg(CWnd* pParent = NULL);
virtual ~CDrumsDlg();
enum { IDD = IDD_DRUMS_DLG };
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBnClickedOk();
public:
double m_dR, m_dL1, m_dL2, m_dSAngle, m_dEAngle;
int m_iSub;
int m_clr;
PVOID m_pData;
};
class CWedgeDlg : public CDialog
{
DECLARE_DYNAMIC(CWedgeDlg)
public:
CWedgeDlg(CWnd* pParent = NULL);
virtual ~CWedgeDlg();
enum { IDD = IDD_WEDGE_DLG };
public:
AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBnClickedOk();
public:
double m_dA, m_dB, m_dT;
int m_iSub;
int m_clr;
PVOID m_pData;
};
class CTorusDlg : public CDialog
{
DECLARE_DYNAMIC(CTorusDlg)
public:
CTorusDlg(CWnd* pParent = NULL);
virtual ~CTorusDlg();
enum { IDD = IDD_TORUS_DLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnStaticColor();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickRadio();
public:
void SetDonotSelectX() { m_bDonotSelectX = true; }
AcDbX3dSolid* makeSolid(const AcGeMatrix3d &ucs);
public:
double m_dInnerR, m_dOuterR; // 内外径
double m_dStartA, m_dEndA; // 起终角度
double m_dRectH; // 矩形截面高
int m_iMode; // 0-Rect 1-Circle 2-region
int m_iSub;
bool m_bDonotSelectX;
int m_clr;
PVOID m_pData;
};
class CYiXingYanDlg: public CDialog
{
DECLARE_DYNAMIC(CYiXingYanDlg)
public:
CYiXingYanDlg(double dLen, CWnd* pParent = nullptr);
virtual ~CYiXingYanDlg();
enum { IDD = IDD_YIXINGYAN_DLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedRadioType();
afx_msg void OnBnClickedRadio2();
afx_msg void OnBnClickedRadio3();
void changeType();
void getXSolids(AcDbCurve *pCurve, AcArray<AcDbX3dSolid*> &solids);
private:
AcDbX3dSolid* makeXSolid4Arc(const double &dStart, AcDbCurve *pCurve);
AcDbRegion* makeRegion4Arc(const double &dStart, AcDbCurve *pCurve, const double &dL, const double &dT);
private:
CStatic m_wndPic;
double m_dAllLen;
public:
int m_nType;
double m_dHa;
double m_dSp;
double m_dL;
double m_dH1;
double m_dH2;
double m_dT;
};