#ifndef _KTPIPEOPER_H__ #define _KTPIPEOPER_H__ #include "earthwormdef.h" #if _MSC_VER > 1000 #pragma once #endif class KTPipeOper { public: KTPipeOper(); virtual ~KTPipeOper(); //在ptGeOn两方向打断管子 static BOOL BreakPipe(AcGePoint3d& ptGeOn,double dHalfWidth,AcDbObjectId idCen = AcDbObjectId::kNull); //在ptGeOn两方向打断管子 static BOOL BreakPipe(AcGePoint3d& ptGeOn,double dHalfWidth,AcDbEntity* pEnt); //合并管线,删除阀门用 static BOOL MergePipe(AcDbObjectId& idPipe,AcDbObjectIdArray& arIDs); static BOOL MergePipe(AcDbObjectId& id1,AcDbObjectId& id2); //根据pLineCen 找管子的外轮廓线 static BOOL FindPipePair(AcDbLine* pLineCen,AcDbObjectId& id1,AcDbObjectId& id2); //根据idCen 找管子的外轮廓线 static BOOL FindPipePair(const AcDbObjectId& idCen,AcDbObjectId& id1,AcDbObjectId& id2); //找管子的中心线 static BOOL FindPipeCen(AcGePoint3d& ptGeIn,AcDbObjectId& idCen); static BOOL FindPipeCen(AcGePoint3d& ptGeIn,AcDbObjectId& idCen,int & npipe,double dPipeW=30.0); static BOOL FindPipeCenPt(AcGePoint3d& ptGeIn,AcDbObjectId& idCen,int & npipe,double dPipeW,AcGePoint3d & pts,AcGePoint3d & pte); //选择管子的中心线 static BOOL SelectPipeCen(LPCTSTR pszTip,AcDbObjectId& idCen,AcGePoint3d& ptGeHit); //分割管子为两段 static BOOL SplitPipe(AcDbEntity* pEnt1,WPipe::PipeParam* pParam,AecDbObjXDataMap* pxData,AcGePoint3d& ptGeIns,double dL1); //分割管子为两段 static BOOL SplitPipe(AcGePoint3d& ptGeIns,double dL1,AcDbEntity* pEnt1,AcDbObjectId& id11,AcDbObjectId& id12); //剪切管子,剪掉方向ptGeOn 到-->ptGeIns, static BOOL TrimPipe(AcDbEntity* pEnt2,AcGePoint3d& ptGeIns,AcGePoint3d& ptGeOn,double dL2); //剪切管子,剪掉方向ptGeOn 到-->ptGeIns static BOOL TrimPipe(AcGePoint3d& ptGeIns,AcGePoint3d& ptGeOn,double dL2,AcDbEntity* pEnt2,AcDbObjectId& id21,AcDbObjectId& id22); //管子方向画相贯线,同时断开管子外边线 static BOOL WeldjointPipe(AcGePoint3d& ptGeIns,AcGeVector3d& vtWeldDir,WPipe::PipeParam* pParamThis,AcDbObjectId& idCen,BOOL& bCenNeedExtended); //根据一点,找管口的参数和几何方向[涉及管件,管子,阀门...] bAndOnOther包括管线的中间部分[针对三通等件的要求] static BOOL FindPipeVector(AcGePoint3d& ptGe,AcGeVector3d& vtDir,WPipe::PipeParam& param1,AcGeVector3d& vtNorm,AcDbObjectId& idPipeCen,BOOL bAndOnOther = FALSE); //根据一点,找管口的参数和几何方向[涉及管件,管子,阀门...] bAndOnOther包括管线的中间部分[针对三通等件的要求] static BOOL FindPipeVector(AcGePoint3d& ptGe,AcGeVector3d& vtDir,WPipe::PipeParam& param1,AcGeVector3d& vtNorm,AcDbObjectId& idCen,BOOL& bAtEnd,BOOL bAndOnOther = FALSE); //曲线上 点集合在该曲线上排序 static BOOL SortPoints(AcGePoint3dArray& arPts,AcDbCurve* pCurve); static double GetDocScale(AecDbObjXDataMap* pInitData); public: static double m_dPickBox; //SSGET的选择范围 = 单线的宽度 }; #endif //_KTPIPEOPER_H__