arx对正在操作的文件进行保存
//对正在操作的文件进行保存
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对正在操作的文件进行保存的更多相关文章
- Python---进阶---文件操作---搜索文件和保存搜索结果
### 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如果遇到文件夹,则进入该文件夹继续搜索 - input 去接受用户输入的文件名和开始搜索的路径 - os.path.isdi ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- 面试问题2:给一个5G的大文件,保存的数据为32位的整型,找到所有出现次数超过两次的数字
问题描述:给一个5G的大文件,保存的数据为32位的整型,找到所有出现次数超过两次的数字 大数据操作: 解决方法一: 依次遍历文件数据, 开始32二进制清0 每次读取一个数,先和二进制位与,如果为0 则 ...
- 用javacsv API 来操作csv文件
javacsv是国外开发的一个比较好的操作csv文件的API,这里简单讲一下用法. 先下载javacsv2.0.zip的文件,解压后,把javacsv.jar 添加到项目中. 本站下载地址: htt ...
- java使用Apache POI操作excel文件
官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...
- c#操作XML文件的通用方法
转载地址:http://www.studyofnet.com/news/36.html 原址没找到 sing System; using System.Data; using System.Confi ...
- java操作csv文件之javacsv.jar应用
csv文件是分隔文件,如果使用java的io流来写,比较麻烦,这里为大家提供一个javacsv的jar包,这个很方便操作csv文件. 下载地址:https://pan.baidu.com/s/1i46 ...
- C#操作Excel文件(转)
摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...
- Java操作属性文件,支持新增或更新多个属性
Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...
随机推荐
- MyBatis-parameterType 取出入参值
SQL 映射文件的几种入参情况 一.单个基本类型参数 public MyUser selectMyUser(Integer id); <!-- #{参数名或任意名}:取出参数值 --> & ...
- ACM-ICPC 2018 徐州赛区网络预赛 I Characters with Hash(模拟)
https://nanti.jisuanke.com/t/31461 题意 一个hash规则,每个字母映射成一个两位数,求给的字符串最后的编码位数,要求去除最终结果的前导零 分析 按题意模拟就是了 # ...
- HDU - 4625 JZPTREE(第二类斯特林数+树DP)
https://vjudge.net/problem/HDU-4625 题意 给出一颗树,边权为1,对于每个结点u,求sigma(dist(u,v)^k). 分析 贴个官方题解 n^k并不好转移,于是 ...
- 算法实践——舞蹈链(Dancing Links)算法求解数独
在“跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题”一文中介绍了舞蹈链(Dancing Links)算法求解精确覆盖问题. 本文介绍该算法的实际运用,利用舞蹈链(Dancin ...
- ubuntu主题收集
ubuntu主题收集 一些cmd常用命令: 任务栏底部,进入Dash并打开终端,命令最后一个是参数可选 ( Left | Bottom ) gsettings set com.canonical.Un ...
- 细说log4j之log4j 1.x
官网:http://logging.apache.org/log4j/1.2/manual.html 三大组件:loggers,appenders,layouts. LoggersLogger是一个层 ...
- linux 下shell脚本备份文件
以下是shell自动备份用的: 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去. 具体步骤:先查询源目录和目标目录中的文件,分别存在fileSrc和fileDst中. -&g ...
- Groovy 设计模式 -- null对象模式
Null Object Pattern http://groovy-lang.org/design-patterns.html#_loan_my_resource_pattern 对于一些场景获得的对 ...
- String类中的常用方法
String类 一.转换成String方法 1.public String(); 空参构造 初始化一个新创建的 String 对象,使其表示一个空字符序列 2.public String(byte[] ...
- poj2559/hdu1506 单调栈经典题
我实在是太菜了啊啊啊啊啊 到现在连个单调栈都不会啊啊啊 写个经典题 #include<cstdio> #include<algorithm> #include<cstri ...