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