Files
envi-code/SourceCode/Code2026/PIDLineCmd/KTPipeOper.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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__