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

143 lines
4.6 KiB
C++

#pragma once
#include "aecdbewpipebase.h"
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
class DLLIMPEXP AecDbEwPipe : public AecDbEwPipeBase
{
public:
ACRX_DECLARE_MEMBERS(AecDbEwPipe);
protected:
static Adesk::UInt32 kCurrentVersionNumber;
public:
AecDbEwPipe(void);
virtual ~AecDbEwPipe(void);
// 设置开始点,如果是LINE管子
Acad::ErrorStatus SetStartPoint(const AcGePoint3d& ptSta);
AcGePoint3d StartPoint() const;
// 设置端点 如果是LINE管子
Acad::ErrorStatus SetEndPoint(const AcGePoint3d& ptEnd);
AcGePoint3d EndPoint() const;
//管线基本参数
void SetPipeParam(WPipe::PipeParam* pPipePar);
WPipe::PipeParam* GetPipeParam() const;
//流向
bool IsShowFlowDir() const;
Acad::ErrorStatus ShowFlowDir(bool bShowDir);
bool IsMainPipe() const;
Acad::ErrorStatus SetMainPipe(bool bIsMain);
bool IsMinorPipe() const;
Acad::ErrorStatus SetMinorPipe(bool bIsMinor);
void SetLayerByXDataMap();
//获取位置标高0 中心 1顶部 2内底部 3 外底部 4内顶部
void SetElevation(double dEl);
virtual float GetElevation(int nPos) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
#if ARX>16
virtual void subList() const;
virtual Acad::ErrorStatus subGetGripPoints(AcDbGripDataPtrArray& grips,
const double curViewUnitSize,
const int gripSize,
const AcGeVector3d& curViewDir,
const int bitflags) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags);
virtual void GetGripText(int nPos, CString& sText);
#endif
//AEC 派生
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw2dSingleSegment(AcGiDraw &dc,AcDbPolyline* pPl) const;
Acad::ErrorStatus BaseDraw2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawSingle2d(AcGiDraw &dc, DrawContext &dcCon) const;
Acad::ErrorStatus DrawDouble2d(AcGiDraw &dc, DrawContext &dcCon) const;
virtual bool TransformAssocInf(int nInf,const AcGeMatrix3d& xform);
virtual LPCTSTR GetGripCmd() const;
//剖切提取,符号法,对于管线构件
virtual bool GetSectionDraw(AcGePlane& plan,const AcGeVector3d& vtTo,AcDbVoidPtrArray& arRegionPtrs) const;
virtual int ComparedTo(AecDbCurveBase* pCurOther) const;
virtual SHJson::WValue& ToJson(bool bExprotGeo = true) const;
virtual bool ByJson(const SHJson::WValue &v);
virtual bool GetBimInfoTip(CString& sInfoTip) const;
public:
//局部Line变虚
void AddLineDashedSegment(AcGePoint3d& pt1,AcGePoint3d& pt2);
void RemoveLineDashedSegment(AcGePoint3d& pt1);
void RemoveLineDashedSegment(int nIdex);
// 用于管线系统变化后,更新实体
// 主要是 内外线的颜色、线形、线宽、图层
void UpdatePipeSystem(const int &outClr
, const AcDbObjectId &outLt
, const double &outWd
, const AcDbObjectId &outLy
, const int &innClr
, const AcDbObjectId &innLt
, const double &innWd
, const AcDbObjectId &innLy);
Acad::ErrorStatus TransformHole(const AcGeMatrix3d &xform);
//法兰数量
int GetFlangeCount(BOOL bIsBomCall = FALSE) const;
int GetBreakFlangePipes(AcDbVoidPtrArray &arPipes);
void GetPipeLineInfo(const bool &bCenter
, int &clr
, double &dW
, AcDbObjectId &idLy
, AcDbObjectId &idLt) const;
virtual void PreprocessForHlr(const AcGePoint3d &ptPlnO
, const AcGeVector3d &vtPlnN
, AcArray<AcDbEntity *> &ar) const;
virtual void ProcessHlrResult(const AcArray<AcDbEntity *> &ar
, const std::map<AcDbEntity *, AcArray<AcDbEntity *>> &preAr
, AcArray<AcDbEntity *> &output) const;
protected:
EPosition ExplainGripIndex(int nIndex) const;
Acad::ErrorStatus ImpGetGripPonts(AcGePoint3dArray& gripPoints,const int bitflags) const;
Acad::ErrorStatus moveGripBrokenOpen(int nBrokenGrip,const AcGeVector3d& offset);
virtual Acad::ErrorStatus DrawFlangInf3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawFlangInf3d(AcGiDraw &dc,const AcGePoint3d& ptPos,const AcGeVector3d& vtInf) const;
Acad::ErrorStatus SubAddDimPoints(AcDbGripDataPtrArray& grips,const AcGeVector3d& curViewDir) const;
virtual Acad::ErrorStatus DrawFlangInf2d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawFlangInf2d(AcGiDraw &dc,const AcGePoint3d& ptPos,const AcGeVector3d& vtInf) const;
Acad::ErrorStatus CheckBrokenOpen();
Acad::ErrorStatus DrawPlotPolyline(AcGiDraw &dc,AcDbCurve* pCurve,int nStyle,BOOL bDraw = TRUE,BOOL bIsSE = FALSE) const;
};