#ifndef __CDRAWDRAINCHAMFER_H__ #define __CDRAWDRAINCHAMFER_H__ class CDrawDrainChamfer { public: // 生成倒角 void MakeChamfer(SSearchPipeList *pListAll, PickSet &ssAll, double dChamferLen); private: // 获得待修改次管线信息 bool GetChamferInfo(const AcDbObjectId &IdPipeM, const AcDbObjectId &idPipeBra, std::map &dataMap, double dChamferLen); // 是否为立管 bool IsVerticalPipe(const AcDbObjectId &id); // 是否在选择集内 bool IsValidPipe(PickSet &ssAll, AcDbObjectId &id); // 节点上的管线是否都在选择集内 bool IsAllVaildPipe(PickSet &ssAll, SSearchPipeList *pLst); // 节点上是否有管线与id管线共线 bool IsExistOnLine(AcDbObjectId &id, SSearchPipeList *pLst, SSearchPipeList *&pLstOut); // 两管是否共线 bool IsOnSameLine(const AcDbObjectId &id1, const AcDbObjectId &id2); // 管线长度是否大于倒角长度 bool IsOverChamferLen(AcDbObjectId &id, double dChamferLen); // 获得所有需要修改的管线的信息 void GetPipeMap(SSearchPipeList *pListAll, std::map &dataMap, double dChamferLen, PickSet &ssAll, std::vector &vecId); // 修改管线 void ModifyPipe(std::map &dataMap, std::vector &vecId); // 获得管道系统的第一根管道 void GetFristPipeNode(SSearchPipeList *pLstIn, SSearchPipeList *&pLstOut); // 获得需要修改的次管道的最小长度 void GetMinPipeLen(SSearchPipeList *pLst, PickSet &ssAll, const AcDbObjectId &idM, double &dMin); }; #endif