//对正在操作的文件进行保存
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) == )
{
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;
}

arx对正在操作的文件进行保存的更多相关文章

  1. Python---进阶---文件操作---搜索文件和保存搜索结果

    ### 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如果遇到文件夹,则进入该文件夹继续搜索 - input 去接受用户输入的文件名和开始搜索的路径 - os.path.isdi ...

  2. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  3. 面试问题2:给一个5G的大文件,保存的数据为32位的整型,找到所有出现次数超过两次的数字

    问题描述:给一个5G的大文件,保存的数据为32位的整型,找到所有出现次数超过两次的数字 大数据操作: 解决方法一: 依次遍历文件数据, 开始32二进制清0 每次读取一个数,先和二进制位与,如果为0 则 ...

  4. 用javacsv API 来操作csv文件

    javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法. 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中.  本站下载地址: htt ...

  5. java使用Apache POI操作excel文件

    官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...

  6. c#操作XML文件的通用方法

    转载地址:http://www.studyofnet.com/news/36.html 原址没找到 sing System; using System.Data; using System.Confi ...

  7. java操作csv文件之javacsv.jar应用

    csv文件是分隔文件,如果使用java的io流来写,比较麻烦,这里为大家提供一个javacsv的jar包,这个很方便操作csv文件. 下载地址:https://pan.baidu.com/s/1i46 ...

  8. C#操作Excel文件(转)

    摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...

  9. Java操作属性文件,支持新增或更新多个属性

    Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...

随机推荐

  1. 绕不开的hadoop

    安装 jdk 1.8 # 官网下载可能比较慢,请自行搜索国内镜像源 wget http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a ...

  2. 获取ArcMap窗口句柄,通过WinAPI获取工作空间中点击要素的系统桌面坐标实现窗体跟随

    这里用了个“桌面坐标”,是希望区分一下ArcGis的“屏幕坐标”(与之对应的还有一个“地理坐标”). 什么是“屏幕坐标”呢?使用ITool接口的OnMouseDown方法获取的“x,y”值即是,其原点 ...

  3. ajax的优缺点

    ajax(Asynchronous Javascript And XML) 异步的js和XML 以前更多的是使用XML的数据格式,现在数据格式更多的是json   ajax的优势:单页面应用(SPA) ...

  4. MySQL忘记root密码的解决办法

    # 1.停掉MySQL进程 [root@standby ~]# /etc/init.d/mysqld stop Shutting down MySQL... SUCCESS! [root@standb ...

  5. extjs.net Combox赋值

    1.直接赋值 ].Rows) //遍历获取两个值 { Ext.Net.ListItem listItem = new Ext.Net.ListItem(); //每次创建一个Ext.Net.ListI ...

  6. tensorflow faster rcnn 代码分析一 demo.py

    os.environ["CUDA_VISIBLE_DEVICES"]=2 # 设置使用的GPU tfconfig=tf.ConfigProto(allow_soft_placeme ...

  7. tensorflow can not find libcusolver.so.8.0

    ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory solution: ...

  8. Hadoop思维导图之概述

  9. python中的Process

    from multiprocessing import Process import time import os # # def acb(n): # print(n) # # # if __name ...

  10. 剑指Offer-从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路 使用两个队列一个存放节点,一个存放值.先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子 ...