219 lines
5.2 KiB
C++
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;
|
|
}
|