40 lines
1.6 KiB
C++
40 lines
1.6 KiB
C++
#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<AcDbObjectId,AcGePoint3dArray> &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<AcDbObjectId,AcGePoint3dArray> &dataMap, double dChamferLen, PickSet &ssAll, std::vector<AcDbObjectId> &vecId);
|
|
// 修改管线
|
|
void ModifyPipe(std::map<AcDbObjectId, AcGePoint3dArray> &dataMap, std::vector<AcDbObjectId> &vecId);
|
|
// 获得管道系统的第一根管道
|
|
void GetFristPipeNode(SSearchPipeList *pLstIn, SSearchPipeList *&pLstOut);
|
|
// 获得需要修改的次管道的最小长度
|
|
void GetMinPipeLen(SSearchPipeList *pLst, PickSet &ssAll, const AcDbObjectId &idM, double &dMin);
|
|
|
|
};
|
|
|
|
#endif |