Files
envi-code/SourceCode/Code2026/AecRxBase/KTModelLayoutXData.cpp
T
2026-09-28 15:28:50 +08:00

219 lines
5.2 KiB
C++

#include "stdafx.h"
#include "KTModelLayoutXData.h"
#include "AecDbObjXDataMapObj.h"
#include "EarThwormDef.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
KTModelLayoutXData::KTModelLayoutXData()
{
}
KTModelLayoutXData::~KTModelLayoutXData()
{
}
void KTModelLayoutXData::ReSet(AecDbObjXDataMap& xDataMap)
{
xDataMap.SetAt(DOC_TRADE,WPipe::ePetro); //应用行业,石油
xDataMap.SetAt(DOC_SCALE,_T("1:50")); //出图比例
xDataMap.SetAt(DOC_PLOTWIDTH,0.5); //最小打印线宽
xDataMap.SetAt(DOC_DPLOTWIDTH,0.5); //双线打印线宽
xDataMap.SetAt(DOC_WELDDIA,1.0); //焊点直径
xDataMap.SetAt(DOC_PIPEMINDIA,65.0); //最小管道直径
xDataMap.SetAt(DOC_PIPEMAXDIA,200.0); //最大管线直径
xDataMap.SetAt(DOC_PERELBOWDIA,40.0); //垂直弯头直径
xDataMap.SetAt(DOC_BREAKSPACE,2.0); //交叉断线间距
xDataMap.SetAt(DOC_UNIT,0); //单位
xDataMap.SetAt(DOC_DIMTERM,0); //标注端符
xDataMap.SetAt(DOC_DIMTXTH,2.0); //标注文字高度
xDataMap.SetAt(DOC_DIMTXTF,0.7); //标注文字宽度系数
xDataMap.SetAt(DOC_EQPTXTH,2.0); //设备标注文字高度
xDataMap.SetAt(DOC_EQPTXTF,1.0); //设备标注文字宽度系数
xDataMap.SetAt(DOC_STRTXTH,2.0); //结构标注文字高度
xDataMap.SetAt(DOC_STRTXTF,0.7); //结构标注文字宽度系数
xDataMap.SetAt(DOC_SCRIPTT,_T("{0}{-}{1}{-}{2}{-}{3}"));//上标脚本
xDataMap.SetAt(DOC_SCRIPTB,_T("{4}{-}{5}"));//下标脚本
xDataMap.SetAt(DOC_ELTYPE,0); //标高设置
xDataMap.SetAt(DOC_ELDESCR,_T("--")); //标高文本
}
BOOL KTModelLayoutXData::ReadModelXData(LPCTSTR pszKey,AecDbObjXDataMap& xDataMap,AcDbDatabase* pDb)
{
AcDbDictionary *pNamedobj = NULL;
if (pDb == NULL)
{
acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
}
else
{
pDb->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
}
BOOL bSuccess = FALSE;
if (pNamedobj != NULL)
{
AcDbObject* pObj = NULL;
pNamedobj->getAt(_T("ACAD_LAYOUT"),pObj,AcDb::kForRead);
if (pObj != NULL)
{
AcDbDictionary* pDic = AcDbDictionary::cast(pObj);
if (pDic != NULL)
{
AcDbObject* pModel = NULL;
pDic->getAt(_T("Model"),pModel,AcDb::kForRead);
if (pModel != NULL)
{
bSuccess = xDataMap.Read(pModel,pszKey);
pModel->close();
}
}
pObj->close();
}
pNamedobj->close();
}
return bSuccess;
}
BOOL KTModelLayoutXData::WriteModelXData(LPCTSTR pszKey,AecDbObjXDataMap& xDataMap,AcDbDatabase* pDb)
{
AcDbDictionary *pNamedobj = NULL;
if (pDb == NULL)
{
acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
}
else
{
//if (pDb != NULL)
{
AcDbRegAppTable* pTbl = NULL;
if ( Acad::eOk == pDb->getRegAppTable(pTbl,AcDb::kForWrite) )
{
AcDbObjectId idRec;
if (Acad::eOk != pTbl->getAt(pszKey,idRec))
{
AcDbRegAppTableRecord* pRec = new AcDbRegAppTableRecord;
pRec->setName(pszKey);
pTbl->add(idRec,pRec);
pRec->close();
}
pTbl->close();
}
}
pDb->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
}
BOOL bSuccess = FALSE;
if (pNamedobj != NULL)
{
AcDbObject* pObj = NULL;
pNamedobj->getAt(_T("ACAD_LAYOUT"),pObj,AcDb::kForRead);
if (pObj != NULL)
{
AcDbDictionary* pDic = AcDbDictionary::cast(pObj);
if (pDic != NULL)
{
AcDbObject* pModel = NULL;
pDic->getAt(_T("Model"),pModel,AcDb::kForWrite);
if (pModel != NULL)
{
bSuccess = xDataMap.Write(pModel,pszKey);
pModel->close();
}
}
pObj->close();
}
pNamedobj->close();
}
return bSuccess;
}
BOOL KTModelLayoutXData::WriteModelNameObjXData(LPCTSTR pszModeName
, AecDbObjXDataMap &xDataMap
, AcDbDatabase *pDb)
{
AcDbDictionary *pNamedobj = NULL;
if (pDb == NULL)
acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
else
pDb->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
if (!pNamedobj) return FALSE;
BOOL bSuccess = FALSE;
pNamedobj->upgradeOpen();
AcDbDictionary *pDic = new AcDbDictionary();
AecDbObjXDataMapObj *pMapObj = new AecDbObjXDataMapObj();
AcDbObjectId id;
pMapObj->SetXDataMap(xDataMap);
if (pNamedobj->setAt(pszModeName, pDic, id) == Acad::eOk)
{
if (pDic->setAt(pszModeName, pMapObj, id) == Acad::eOk);
bSuccess = TRUE;
}
else
bSuccess = FALSE;
pMapObj->close();
pDic->close();
pNamedobj->downgradeOpen();
pNamedobj->close();
return bSuccess;
}
BOOL KTModelLayoutXData::ReadModelNameObjXData(LPCTSTR pszModeName
, AecDbObjXDataMap &xDataMap
, AcDbDatabase *pDb)
{
AcDbDictionary *pNamedobj = NULL;
if (pDb == NULL)
acdbHostApplicationServices()->workingDatabase()->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
else
pDb->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
if (!pNamedobj) return FALSE;
BOOL bSuccess = FALSE;
AcDbObject *pObj(NULL);
if (Acad::eOk == pNamedobj->getAt(pszModeName, pObj, AcDb::kForRead))
{
AcDbDictionary *pDic(AcDbDictionary::cast(pObj));
if (pDic)
{
if (Acad::eOk == pDic->getAt(pszModeName, pObj, AcDb::kForRead))
{
AecDbObjXDataMapObj *pMapObj(AecDbObjXDataMapObj::cast(pObj));
if (pMapObj)
{
bSuccess = pMapObj->GetXDataMap(xDataMap);
pMapObj->close();
}
}
pDic->close();
}
}
pNamedobj->close();
return bSuccess;
}