#include "stdafx.h" #include "DbConfluenceArea.h" /*#include "TAPI.h"*/ #include "DbWell.h" ACRX_DXF_DEFINE_MEMBERS(ATSConfluenceArea, ATSSpace, AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, 1, ATS_SPACE, "ATS_SPACE图形无法解析, 请下载上华软件|网址: www.shanghuasoft.com"); IMPLEMENT_TENTBASE(TDbConfluenceArea); TDbConfluenceArea::TDbConfluenceArea() { } TDbConfluenceArea::~TDbConfluenceArea() { } // 写入扩展数据 void SetXData(const AcDbObjectId &id,const TCHAR*szName,const TCHAR *szData,int nLength) { AcDbEntity *pEnt = NULL; CString sData = szData; if (acdbOpenAcDbEntity(pEnt,id,AcDb::kForWrite) == Acad::eOk) { resbuf *pRb = pEnt->xData(szName); if (pRb != NULL) { resbuf *pTemp = pRb; pTemp = pTemp->rbnext; if (pTemp->restype == 1000) { delete pTemp->resval.rstring; pTemp->resval.rstring = new TCHAR[nLength+1]; memset(pTemp->resval.rstring,0,nLength+1); _tcscpy(pTemp->resval.rstring,szData); pEnt->setXData(pRb); ads_relrb(pRb); } } else { if(!XSymbolTable(_T("APPID"), szName)) ads_regapp(szName); resbuf *pXData = ads_buildlist(1001, szName, 1000, szData, NULL); pEnt->setXData(pXData); ads_relrb(pXData); } pEnt->close(); } } void TDbConfluenceArea::CopyPropertiesFrom(AcDbEntity *pSrcEntity,unsigned gMatchFlag) { assertWriteEnabled(); TDbConfluenceArea *pSect = TDbConfluenceArea::cast(pSrcEntity); if(pSect != NULL) { setLayer(pSect->layerId()); SetHatchLayer(pSect->GetHatchLayer()); SetTextStyleId(pSect->GetTextStyleId()); SetHatchStyle(pSect->GetHatchStyle()); SetHasHatch(pSect->HasHatch()); } } Acad::ErrorStatus TDbConfluenceArea::subClose() { Acad::ErrorStatus es = TDbSpace::subClose(); if (es != Acad::eOk) { return es; } if(isModified() && database()==acdbCurDwg()) { AcDbObjectId idWell = GetWellId(); //WriteXdata(ent, _T("TG-WELLAREA"), XString(_T("%.2f"), m_nUseArea)); SetXData(idWell, _T("TG-WELLAREA"), XString(_T("%.2f"), m_nUseArea), 1000); } return es; } Acad::ErrorStatus TDbConfluenceArea::DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet, BOOL *bErase) { Acad::ErrorStatus es = Acad::eOk; if (g_nSaveTArchVer < 10 && g_nSaveTArchVer > 3) { TDbSpace *pDbSpace = new TDbSpace; pDbSpace->m_sName = m_sName; pDbSpace->m_ptLocation = m_ptLocation; pDbSpace->SetHas3D(Has3D()); pDbSpace->SetHighlight(IsHighlight()); pDbSpace->m_outline = m_outline; pDbSpace->m_nUseArea = m_nUseArea; pDbSpace->m_nOccuArea = 0; pDbSpace->m_nCeilArea = 0; pDbSpace->m_nWallSurfArea = 0; pDbSpace->m_nExtWallArea = 0; pDbSpace->m_nExtWinArea = 0; pDbSpace->m_nExtDoorArea = 0; pDbSpace->m_nPerimeter = 0; pDbSpace->m_nKickboardLength = 0; pDbSpace->SetShowOutline(TRUE); pDbSpace->SetTextStyleId(GetTextStyleId()); pDbSpace->setLayer(layerId()); entSet.append(pDbSpace); if(bErase) *bErase=TRUE; } return es; } Acad::ErrorStatus TDbConfluenceArea::subGetGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const { assertReadEnabled(); Acad::ErrorStatus es = TDbSpace::subGetGripPoints(gripPoints, osnapModes, geomIds); // zxl 2013.12.12 add acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true); Entity ent; ads_name name; acdbGetAdsName(name, GetWellId()); ent = name; ent.Redraw(3); acDocManager->unlockDocument(curDoc()); return es; } Acad::ErrorStatus TDbConfluenceArea::subDeepClone(AcDbObject *pOwner, AcDbObject *&pClonedObject, AcDbIdMapping &idMap, Adesk::Boolean isPrimary) const { Acad::ErrorStatus es = TDbSpace::subDeepClone(pOwner, pClonedObject, idMap, isPrimary); if (es != Acad::eOk) { return es; } TDbConfluenceArea *pReducer = TDbConfluenceArea::cast(pClonedObject); if(pReducer != NULL) { pReducer->SetWellId(NULL); m_ptLocation; } return Acad::eOk; } void InitDbConfluenceArea(BOOL bTrue) { if(bTrue) { TDbConfluenceArea::rxInit(); TDbConfluenceArea::InitMatchProtocol(TRUE); } else { TDbConfluenceArea::InitMatchProtocol(FALSE); deleteAcRxClass(TDbConfluenceArea::desc()); } }