162 lines
4.2 KiB
C++
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());
|
|
}
|
|
} |