//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TArchPerBlockData 类 // = Version : ver2.0 // = Author : wlw // = CreateDate : 2002-09-09 // = Description: TArchPerBlockData 定义 // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #include "StdAfx.h" #include "TArchPerBlockData.h" #include "TDbColumn.h" #include "TDPtrList.h" #include "CFindShortWallDlg.h" #include "TSearchSpaceFromWall.h" #include "TSearchException.h" #include "TDupWallException.h" TArchPerBlockData::TArchPerBlockData(AcDbObjectId idBlock) : m_idBlock(idBlock) { } AcDbObjectId TArchPerBlockData::GetBlockId() const { return m_idBlock; } long TArchPerBlockData::GetUpdateScale() const { return m_lstCornersToBeUpdated.Length(); } void TArchPerBlockData::Reset() { m_lstCornersToBeUpdated.Reset(); m_lstColumnsChanged.Reset(); } bool TArchPerBlockData::operator == (const TArchPerBlockData&d) const { return m_idBlock == d.GetBlockId(); } bool TArchPerBlockData::operator!=(const TArchPerBlockData&d) const { return !((*this) == d); } bool TArchPerBlockData::operator >(const TArchPerBlockData&d) const { return m_idBlock>d.GetBlockId(); } bool TArchPerBlockData::operator <(const TArchPerBlockData&d) const { return d > (*this); } void TArchPerBlockData::Initialize() { } void TArchPerBlockData::UpdateExtend() { } void TArchPerBlockData::AddWallCorners(const TDbWall *pWall) { m_lstCornersToBeUpdated.NewAppend(pWall->StartPoint()); m_lstCornersToBeUpdated.NewAppend(pWall->EndPoint()); if (pWall->m_ptOldStart != pWall->m_ptOldEnd) { m_lstCornersToBeUpdated.NewAppend(pWall->m_ptOldStart); m_lstCornersToBeUpdated.NewAppend(pWall->m_ptOldEnd); } } void TArchPerBlockData::AddChangedColumn(const TDbColumn *pColumn) { if (!m_lstColumnsChanged.FindNode(&pColumn->m_ptLocation, TColumnData::CompareByLocForFind)) { m_lstColumnsChanged.Append(new TColumnData(*pColumn)); } } void TArchPerBlockData::UpdateCorners(LPVOID pReserve) { ::ModifyWallAtCorner(m_lstCornersToBeUpdated, m_lstColumnsChanged,m_idBlock,pReserve); //add by xlc on 100531 提速优化 m_lstCornersToBeUpdated.Reset(); m_lstColumnsChanged.Reset(); }