#ifndef __CBASEHOLEOPERATION_H__ #define __CBASEHOLEOPERATION_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "BaseHoleDlg.h" #include #include class CBaseHoleOperation { public: CBaseHoleOperation(); virtual ~CBaseHoleOperation(); // 获取中心点 XPoint Mid(XPoint ptStart, XPoint ptEnd); // 执行基础洞操作 void RunBaseHole(CBaseHoleDlg &baseHoleDlg); // 执行添加标注 Adesk::Boolean AddLabel(CBaseHoleDlg &baseHoleDlg, XPoint ptStart); //添加标注 void AddLabel(XPoint ptIns, double dAngle, LPCTSTR pszText = _T("消火栓洞")); // 添加尺寸标注 void AddDimLabel(XPoint ptStart, XPoint ptEnd, int dBaseLineDist); // 创建基础洞 void CreateBaseHole(CBaseHoleDlg &baseHoleDlg,Entity EntWall, Entity entBaseLine); // 选择墙体为弧墙时,调整墙体插入点 void AdjustBaseHoleInsPt(Entity entBaseLine , TDbWall *pWall, int nDist); // 添加弧长标注 void addArcLabel(); // 基础洞插入点是否在弧墙上 void IsInArcWall(BOOL &bFlag, Entity entBaseLine, TDbWall *pWall, CBaseHoleDlg &baseHoleDlg); // 基准线是否与所选墙体相邻 BOOL IsInWall(Entity &entBaseLine, Entity &entWall); // 判断消火栓是否在墙内 BOOL IsInWall(Entity &ent, std::map &mapEnt); // 选择消火栓 void SelectHydrant(std::map &mapEnt); // 为消火栓添加基础洞 void AddHoleToHydrant(std::map &mapEnt); //判断点是否在两条线之间 BOOL IsIn2Line(const XCurveSegment &segL, const XCurveSegment &segR, XPoint ptTemp); //为单个消火栓添加基础洞 void AddHoleToHydrant(AcDbObjectId idWall, AcDbObjectId idHydrant); //添加基础洞 void AddBaseHole(AcDbObjectId idWall, XPoint ptIns, double dWidth, double dHeight, double dBottomHeight); //批量处理消火栓开洞 void AddBaseHoleByBatch(std::map &mapEnt); //批量处理消火栓开洞 void AddBaseHoleByBatch(std::map &mapEnt, std::vector &vecId); //一次为多个消火栓添加基础洞 void AddBaseHole(std::map &mapEnt, std::multimap &mapId, double dB, BOOL bLevelHydrant = TRUE); public: BOOL m_bLabel; // 是否添加标注 BOOL m_bDimLabel; // 是否添加尺寸标注 XPoint m_ptBaseLine; // 选取的基准线上的一点 XPoint m_ptWallLine; //选取的墙线上的一点 int m_nDist; // 基准线距基础洞的距离 AcDbArc* m_pArc; //指向所选弧墙的中心弧线 AcGePoint3d m_ptMid; //获取弧线的中点 BOOL m_bArcWall; //是否为弧墙 private: //获取基础洞插入点 BOOL getInsertPoint(AcDbObjectId idHdyrant, XPoint &pt); }; #endif // !defined(__CBASEHOLEOPERATION_H__)