#pragma once class AecMInterfaces; class AecDbHvacFitting; 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 SetPipeParamOld(const AecHvac::DuctParam* pPipeParam); void SetPipeNetIds(AcDbObjectIdArray& arNetIds); bool ModifyPipeLineParam(AcDbObjectIdArray& arPipeIds,AcDbObjectIdArray& arFitIds,AcDbObjectIdArray& arEquIds, AecHvac::DuctParam& paramNew,BOOL bUpdateMat); bool AddjustTInfAssoc(); private: bool ModifyFitting(AecDbHvacFitting * pFit,const AecHvac::DuctParam & paramNew); bool ModifyPipeOnParam(const AcDbObjectIdArray& arPipeIds,const AecHvac::DuctParam & paramNew); bool ModifyByInfAssoc(const AcArray& arFitEquOldInfs,AecMInterfaces* pFitEquMInfNew,const AecHvac::DuctParam & paramNew); CPoint PickAssocEqu(AcArray& arInfs,AcDbObjectIdArray& arEquIds,AcArray& arAssEquIds); void MakeEquListStartByEqus(AcArray& arAssEquIds,AcDbObjectIdArray& arEquIds); void MakeEquListStartByFlgs(AcArray& arAssFlgs,AcDbObjectIdArray& arEquIds); void MakeEquListTheRest(AcDbObjectIdArray& arEquIds,AcArray& arIdInf); //沿着list修改阀门 void ModifyEquAlongList(AcArray& arAssEquIds,const AecHvac::DuctParam & paramNe); void ModifyEquAlongList(AecInterface& infOld,AecInterface& infNewTo,AcDbObjectIdInf* pNext,const AecHvac::DuctParam & paramNew); void ModifyPipeOnNewInf(AecInterface& infOld,AecInterface& infTo); private: AecDbEwEquipment* CreateNewValve(AecDbEwEquipment* pEqu,const AecHvac::DuctParam & paramNew); AecDbEwEquipment* getEquiment(bool bByDB , const double &dDN , LPCTSTR pszPN , bool &bHasFangle , AecEqui::ValveType val , LPCTSTR psz = NULL , LPCTSTR pszFolder = NULL); public: AecHvac::DuctParam m_paramOld; BOOL m_bTeeStop,m_bCrossStop; BOOL m_bUpdateMat; bool m_bElLock; AcDbObjectIdArray m_arNetIds; AcDbObjectIdArray m_arPipeIds; //关联的接口更改 AcArray m_arFrTo; };