天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 79|回复: 0

ObjectARX对正在操作的文件进行保存

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
ObjectARX对正在操作的文件进行保存

//对正在操作的文件进行保存STDMETHODIMP CTHDatabase::Save(void)
{ // TODO: 在此添加实现代码 Acad::ErrorStatus es ; try{
  AcDbDatabase* pCurDb = acdbHostApplicationServices()->workingDatabase();  if(pCurDb == NULL)
  {   return Error(L"Fialed to get current docment " ,IID_ITHDatabase,E_FAIL);
  }
  AcAxDocLock docLock( pCurDb, AcAxDocLock::kCurDocSwitch );  if(docLock.lockStatus() != Acad::eOk)   throw docLock.lockStatus();  //得到被操作dwg文件的数据库
  AcDbDatabase* pWorkDb = NULL;
  CAcApDocLockServer tempDocLockServer;  if(m_strFileName.IsEmpty())
   pWorkDb = pCurDb;  else
  {
   pWorkDb = tempDocLockServer.GetDataBase(m_strFileName);   if(NULL == pWorkDb)
   {
    CString strErr = L"Fialed To open the " ;    return Error(strErr + m_strFileName,IID_ITHDatabase,E_FAIL);
   }
  }  //如果当前操作的文件不是ACAD当前活动文档,则进行存盘
  if(!m_strFileName.IsEmpty()){            //遍历ACAD所打开的所有文档,如果当前操作的文件已经被ACAD打开,   //那么把此文档切换为活动文档,存盘后在切换到原来的活动文档
   AcApDocument* pCurDoc = curDoc();
   AcApDocumentIterator* iter = acDocManager->newAcApDocumentIterator();   if (iter) {
    AcApDocument* tmpDoc;    for (; !iter->done(); iter->step()) {
     tmpDoc = iter->document();     if (tmpDoc)
     {
      CString strFile(tmpDoc->fileName());      if(m_strFileName.CompareNoCase(strFile) == 0)
      {
       es = acDocManager->setCurDocument(tmpDoc, AcAp::kWrite);//切换为活动文档
       if(Acad::eOk != es)
       {
        delete iter;        throw MESSAGE(es);
       }
       es = tmpDoc->database()->saveAs(m_strFileName);       if(Acad::eOk != es)
       {
        delete iter;        throw MESSAGE(es);
       }
       es = acDocManager->unlockDocument(tmpDoc);       if(Acad::eOk != es)
       {
        delete iter;        throw MESSAGE(es);
       }
       es = acDocManager->setCurDocument(pCurDoc);//切换到原来的活动文档
       if(Acad::eOk != es)
       {
        delete iter;        throw MESSAGE(es);
       }
       delete iter;
       iter = NULL;       return S_OK;
      }
     }
    }    if(iter != NULL)
    {
     delete iter;
     iter = NULL;
    }
   }            //如果当前操作的文件没有被ACAD打开,直接保存
   es = pWorkDb->saveAs(m_strFileName);   if(Acad::eOk != es)    throw MESSAGE(es);
  }
} catch(const Acad::ErrorStatus)
{
   CString strErr = L"Fialed To open the " ;   return Error(strErr + m_strFileName,IID_ITHDatabase,E_FAIL);
} return S_OK;
}

 

 

 

 

ObjectARX对正在操作的文件进行保存
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:20 , Processed in 0.188367 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表