#pragma once class AecDbEwFitting; class CUIISQLiteServer; class AecDbEwEquipment; typedef struct AecInterfaceFrTo { AecInterface infFr; AecInterface infTo; }AECINTERFACEFRTO; typedef struct AcDbObjectIdNext { AcDbObjectId id; AcDbObjectIdNext* pNext; }ACDBOBJECTIDNEXT; typedef struct AcDbObjectIdInf { AcDbObjectId id; AecInterface infFr; AcGeVector3d vtMove;//是否有移动 AcDbObjectIdInf* pNext; }AcDbObjectIdInf; class AecPipeLineModify { public: AecPipeLineModify(void); ~AecPipeLineModify(void); void SetADOServer(CUIISQLiteServer* pADOServer); void SetPipeParamOld(const WPipe::PipeParam* pPipeParam); void SetPipeNetIds(AcDbObjectIdArray& arNetIds); bool ModifyPipeLineParam(AcDbObjectIdArray& arPipeIds,AcDbObjectIdArray& arFitIds,AcDbObjectIdArray& arEquIds,WPipe::PipeParam& paramNew,BOOL bUpdateMat); bool AddjustTInfAssoc(); private: bool ModifyFitting(AecDbEwFitting* pFit,const WPipe::PipeParam& paramNew); bool ModifyPipeOnParam(const AcDbObjectIdArray& arPipeIds,const WPipe::PipeParam& paramNew); bool ModifyByInfAssoc(const AcArray& arFitEquOldInfs,AecMInterfaces* pFitEquMInfNew,const WPipe::PipeParam& paramNew); CPoint PickAssocEqu(AcArray& arInfs,AcDbObjectIdArray& arEquIds,AcArray& arAssEquIds); CPoint PickAssocFlange(AcArray& arInfs,AcDbObjectIdArray& arFitIds,int iPos,AcArray& arAssFlgs); void MakeEquListStartByEqu(AcArray& arAssEquIds,AcDbObjectIdArray& arEquIds); void MakeEquListStartByFlang(AcArray& arAssFlgs,AcDbObjectIdArray& arEquIds,AcDbObjectIdArray& arFlangIds); void MakeEquListTheRest(AcDbObjectIdArray& arEquIds,AcDbObjectIdArray& arFlangIds,AcArray& arIdInf); bool ModifyPipeLineParamSys(AcDbObjectIdArray &arIds, WPipe::PipeParam ¶mNew); //沿着list修改阀门 void ModifyEquAlongList(AcArray& arAssEquIds,const WPipe::PipeParam& paramNe); void ModifyEquAlongList(AecInterface& infOld,AecInterface& infNewTo,AcDbObjectIdInf* pNext,const WPipe::PipeParam& paramNew); void ModifyPipeOnNewInf(AecInterface& infOld,AecInterface& infTo); private: AecDbEwEquipment* CreateNewValve(AecDbEwEquipment* pEqu,const WPipe::PipeParam& paramNew); AecDbEwFitting* CreateNewFlang(AecDbEwFitting* pFitFr,const WPipe::PipeParam& paramNew); AecDbEwEquipment* getEquiment( AecDbEwEquipment *pOldEqu , const WPipe::PipeParam ¶mNew , bool &bHasFangle , AecEqui::ValveType val , LPCTSTR psz = NULL , LPCTSTR pszFolder = NULL); public: WPipe::PipeParam m_paramOld; BOOL m_bTeeStop,m_bCrossStop; BOOL m_bUpdateMat; AcDbObjectIdArray m_arNetIds; AcDbObjectIdArray m_arPipeIds; CUIISQLiteServer* m_pADOServer; //关联的接口更改 AcArray m_arFrTo; };