Files
envi-code/SourceCode/Code2026/EarthWormCmd/AecPipeLineTool.h
T
2026-09-28 15:28:50 +08:00

49 lines
2.9 KiB
C++

#pragma once
class AecDbEwPipe;
class AecDbEwFitting;
class AecDbObjXDataMap;
struct AecInterface;
class AecPipeLineTool
{
public:
AecPipeLineTool(void);
~AecPipeLineTool(void);
static bool ConnectPipe(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,int nType,int nWeldType,int nOffsetDir,double dOffset,double dTopSpace,double dZSWeepAngle,double dRRato,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static AecDbEwPipe* BreakPipe(AecDbEwPipe* pPipe1,AcGePoint3d& pt22,double dLen );
static bool UShapeAoid(AecDbEwPipe* pPipe,AcGeVector3d& vtOffset,double dFrom,double dL,double dVSpace,double dAngle,double dAngleB,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static bool CreatePipe(AecDbEwPipe* pPipe,const AcGePoint3dArray& arPtsPath,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
public:
static bool ConnectPipe1(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,int nWeldType,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static bool ConnectPipe2(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,int nWeldType,int nOffsetDir,double dOffset,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static bool ConnectPipe3(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,int nWeldType,double dZSWeepAngle,int nOffsetDir,double dOffset,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static bool ConnectPipe4(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,int nWeldType,int nOffsetDir,double dOffset,double dTopSpace,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static bool PipeExit(AecDbEwPipe* pPipeMaj,double dOD,double dDn,double dt,int nWeldType,const AecInterface& infTo,AcDbVoidPtrArray& arPipePtrs,AcDbVoidPtrArray& arFittPtrs);
static bool QueryTeeData(double dDn,double dDn2,double& dLen1,double& dLen2);
static AecDbEwPipe* CreatePipe(AecDbObjXDataMap* pMap,const AcGePoint3d& pt2,const AcGePoint3d& pt3);
static AecDbEwPipe* CreatePipe(AecDbObjXDataMap* pMap,const AcGePoint3d& pt2,const AcGePoint3d& pt3,AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,int nWeldType,AecDbEwFitting*& pTee,AecDbEwPipe*& pPipeOther);
static AecDbEwFitting* CreateElbow(AecDbObjXDataMap* pMap,AcDbArc* pArc,double dRRato);
static AecDbEwFitting* CreateElbow(AecDbObjXDataMap* pMap,const AcGeVector3d& vtMaj,const AcGeVector3d& vtMin,const AcGePoint3d& ptMid,double dRRato);
static AecDbEwFitting* CreateElbow(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,double dRRato);
static AecDbEwPipe* PointOnPipeConnect(AecDbObjXDataMap* pMap,const AcGePoint3d& pt2,const AcGePoint3d& pt3,AecDbEwPipe* pPipe1,AecDbEwFitting*& pTee,AecDbEwPipe*& pPipeNew);
static bool GetIntersectPoint(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2,AcGePoint3d& pt2);
static bool GetIntersectPoint2(AcDbCurve* pCrv1,AcDbCurve* pCrv2,AcGePoint3d& pt2,const AcGePlane& plan);
static void CopyPipeLayerAndLineTypeFromTo(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2);
static bool ElbowJoinHere(AecDbEwPipe* pPipe1,AecDbEwPipe* pPipe2);
static double m_dRRato;
};