#pragma once #include "AecDbCurveBase.h" #include "AecDbObjXDataMap.h" class AecAngleWatch; class AecDbECableJig; class AECStatusRecord; class AecDbECableTray; class AecDbEcFitting; class AecDbECableLine : public AecDbCurveBase { public: AecDbECableLine(); AecDbECableLine(AecDbECableJig* pJig); virtual ~AecDbECableLine(void); protected: virtual Acad::ErrorStatus Draw2d(AcGiDraw &mode) const; virtual const AecDbObjXDataMap* GetSpecialtyData() const { assertReadEnabled(); return NULL; } virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite) { return NULL; } public: //管线基本参数 //jig void SetPipeParam(AecHvac::DuctParam* pPipePar); AecHvac::DuctParam* GetPipeParam(); //电缆沟支架 void SetXHolder(const XHolder& lHolder, const XHolder& rHolder); //jig double GetEndElevation() const; //jig BOOL AddPipeNode(AECStatusRecord* pCurStaRec , WPipe::PipeDraw ePipe ); //jig BOOL AddReducer(AECStatusRecord* pCurStaRec,AecHvac::DuctParam* pParam); //jig BOOL ChangeEl(AECStatusRecord* pRec,double dNewEl,BOOL bCheckRec,double dRedElPos,AecHvac::DuctParam* pParamred); //jig BOOL ChangeEl2(AECStatusRecord* pRec,AECStatusRecord* pRecLast,double dNewEl,BOOL bCheckRec,double dRedElPos,AecHvac::DuctParam* pParamred); //jig BOOL ChangeEl3(AECStatusRecord* pRec,AcGePoint3d& ptThis); //jig void SetAngleWath(AcGePoint3d& ptCen,const AcGePoint3d& ptGeTo,const AcGeVector3d& vtDir = AcGeVector3d::kXAxis); //jig void MoveAngWatchPosition(); void SwitchAutoSnapOrF8(); void AngWatchTo(const AcGePoint3d& ptGeTo); //jig 画管线停止 BOOL PipeFinished(); //jig void PopUpInterface(int nGroupID); void PushPipeParam(); void PushInterface(AecInterface& intf,BOOL bStartDragFromIt = FALSE); //jig AecInterface* GetLastInterface(); public: virtual BOOL CreateWPipe(AECStatusRecord* pRec,BOOL bMaybeAddTee = FALSE); virtual BOOL ExtendLastWPipe(AECStatusRecord* pRec); virtual BOOL CreateElbowAndPipe(AECStatusRecord* pRec, const EFittingType &type = eElbow); void SetElbowAndPipe(bool bHasFit); public: AcDbObjectId CreateElbow( AcGeVector3d vtMaj, AcGePoint3d ptMid, AcGeVector3d vtMin, AecHvac::DuctParam* pparam, BOOL bInsertBeforLast = FALSE); BOOL CreatePipe(AcGePoint3d ptSta,AcGePoint3d ptEnd,AecHvac::DuctParam* pPipeParam,double dSectRot = 0.0); BOOL MaybeAddTeeConnectToThis(AcGePoint3d& ptGe,AcGeVector3d& vtDir,AcDbObjectId id,int nPos); BOOL MaybeAddCrossConnectToThis(AcGePoint3d ptFr,AcGePoint3d ptTo,AcDbObjectId id); BOOL SplitWPipe(AcGePoint3d& ptMid,double dL,AecDbECableTray* pWPipe,BOOL bEraseWhiletooShort = TRUE); BOOL ModifyWPipe(AcGePoint3d& ptGe,AcDbObjectId id,int nPos); BOOL AddTee(AecDbECableTray* pWPipe,double dL,const AcGePoint3d& ptMid,double dB,const AcGeVector3d& vtMin); //添加异形三通 BOOL AddTee3(const AcGePoint3d& ptMid, double dL, const AcGeVector3d& vtMaj, const AcGeVector3d& vtMin, AecUserInterface &uinf); BOOL AddTee5(const AcGePoint3d& ptMid, double dL, const AcGeVector3d& vtMaj, const AcGeVector3d& vtMin, AecUserInterface& uinf); BOOL AddCross(AcDbObjectId id1,AcGePoint3d& ptInt,AcDbObjectId idThis); BOOL AddElbow(AcDbObjectId id1,AcGePoint3d& ptGe,AcDbObjectId idThis); BOOL ChangeElbowToTree(AecDbEcFitting* pDbFit,AcGeVector3d vtMaj,AcGePoint3d ptGeM,AcGeVector3d vtMin,double dDn,AECStatusRecord* pCurRec); BOOL ChangeTeeToCross(AecDbEcFitting* pDbFit,AcGeVector3d& vtMaj,AcGeVector3d& vtMin,AECStatusRecord* pCurRec); void ModifyPipeOfElbow(AcDbObjectId id,AcGePoint3d ptOld,AcGePoint3d ptNew); double PixelToWcs(int nPixel); void AddUserData(AcDbObjectId id,AecDbObjXDataMap* pXDataMap,int nType); static void RemoveHolePipe(AecDbECableTray* pWPipe); BOOL IsLastParamAndInfFit(); private: void *operator new[](size_t nSize) { return 0; } void operator delete[](void *p) {}; void *operator new[](size_t nSize, const char *file, int line) { return 0; } protected: BOOL m_bStopCommand; AecAngleWatch* m_pAngleWatch; //导向罗盘 AecDbCurveBase* m_pCurPipeLine[2]; //当前的管子 AecDbECableJig* m_pPipeJig; //当前拖动 AecHvac::DuctParam* m_pPipeParam; //管子参数 CPtrList m_lstLastPipeParam; //管子参数历史记录 AcDbObjectId m_idStartDragFrom; CArray m_arHistoryIntfs; //记录历史的接口 bool m_bHasFit; public: AecInterface m_intf0; //临时 AecInterface m_intf1; // AecDbObjXDataMap m_xInitDataMap; AcDbObjectId m_idTemp; //临时 //电缆沟的内部支架 BOOL m_bHasHolder; XHolder m_lHolder; XHolder m_rHolder; };