71 lines
3.0 KiB
C++
71 lines
3.0 KiB
C++
#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__
|