Files
envi-code/SourceCode/Code2026/tg_shs/shs_pipewire/DbConfluenceArea.cpp
T
2026-09-28 15:28:50 +08:00

162 lines
4.2 KiB
C++

#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());
}
}