//对正在操作的文件进行保存
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. python Bootstarp框架和inconfont、font-awesome使用

    http://www.bootcss.com/ http://www.runoob.com/bootstrap/bootstrap-panels.html  查找基本的没问题 https://www. ...

  2. layui(四)——table组件常见用法总结

    table是 layui 最核心的组成之一.它用于对表格进行一些列功能和动态化数据操作,涵盖了日常业务所涉及的几乎全部需求.支持固定表头.固定行.固定列左/列右,支持拖拽改变列宽度,支持排序,支持多级 ...

  3. HDU - 6444 Neko's loop(循环节+最大子段和)

    http://acm.hdu.edu.cn/showproblem.php?pid=6444 题意 一个有n个数的环,每次循环走k步,走到每个点都有具体的权值,问在任意点出发最多走m步的情况下,一开始 ...

  4. vue-cli脚手架笔记

    vue不支持IE8,因为vue使用了IE8无法模拟的 ECMAScript 5特性 使用vue-cli脚手架会让我们的工作非常方便 比如想编译一下es6的语法就使用 babel loader 和 ba ...

  5. keeping.py

    定时push+告警 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author : 71standby@gmail.com # Description ...

  6. Android资源重命名

    Android资源比如图片重命名后,Resource里看到的还是之前的名字,可以关掉AndroidStudio,从新打开就正常了

  7. VS2017 新建win32控制台应用

    VS2017的Win32应用比较隐蔽添加新项目,选择项目向导,点击下一步即可看到.

  8. 常用SQL语句大全总结

    出处:http://www.cnblogs.com/0351jiazhuang/p/4530366.html SQL是(Structured Query Language)结构化查询语言的简称,下面赵 ...

  9. 哈希函数(hash函数)

    hash,—般译为“散列”,也可以直接音译为“哈希”,是对输入的任意长度(又称预映射),通过哈希算法,转换成固定长度的哈希值输出.这种转换是一种压缩映射,即,哈希值空间通常比输入空间小得多,不同的输入 ...

  10. mvc EF框架中,加载外键对象序列化对象时报错 序列化类型为XX的对象时检测到循环引用

    Newtonsoft.Json.dll 或者通过->工具->库程序包管理工具->NuGet管理包->联机 输入Newtonsoft或者json.net Newtonsoft.J ...