#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 &ar) const; virtual void ProcessHlrResult(const AcArray &ar , const std::map> &preAr , AcArray &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; };