BIM建筑网
更专业的BIM技术学习网站!


Revit二次开发_项目文件分离

免费的Ai上线啦!
BIM建筑网自主研发,你想要Ai功能都在这里!
Ai·提升效率 技术答疑

赶项目节点的时候觉得导图纸、分离模型这种工作实在是太难受了,图纸量大的时候即麻烦又容易出错,于是通过二次开发的方法直接将导CAD、PDF、分离模型的工作整合成批量导出,并且自动放到对应的路径。写到分离模型的时候发现了一些API里面不太友好的地方,首先是项目不能直接由当前文档分离,需要先把当前文档关掉,通过打开的方式分离;但是API又不支持直接关掉当前文档,而且又没有给出直接切换文档的方法…最后解决的办法是新建一个临时的项目,通过UIApplication将这个新项目打开并设为当前文档,然后再分离模型,结束后再把临时项目删掉…饶了一圈实在难受,也不知道16之后的API有没有改进。

关键代码:

UIApplication uiapp = commandData.Application;
 Document doc = uiapp.ActiveUIDocument.Document;

 string filePath = @"C:UsersimfourDesktop新建文件夹 (2)新建文件夹 (2)" + doc.Title;

 //判断是否启用工作集
 if (doc.IsWorkshared)
 {
 //同步
 doc.SynchronizeWithCentral(new TransactWithCentralOptions(), new SynchronizeWithCentralOptions());
 //创建临时文档,将临时文档设置为活动文档
 Document temDoc = uiapp.Application.NewProjectDocument(@"C:ProgramDataAutodeskRVT 2016TemplatesChinaConstruction-DefaultCHSCHS.rte");
 string temFilePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "" + "temFile.rvt";
 temDoc.SaveAs(temFilePath);
 temDoc.Close(false);
 uiapp.OpenAndActivateDocument(temFilePath);
 temDoc = uiapp.ActiveUIDocument.Document;

 //关闭本地文件
 string docPathName = doc.PathName;
 ModelPath modelPath = doc.GetWorksharingCentralModelPath();
 doc.Close(false);

 //分离模型
 OpenOptions openOptions = new OpenOptions
 {
 DetachFromCentralOption = DetachFromCentralOption.DetachAndDiscardWorksets
 };
 Document detachDoc = uiapp.Application.OpenDocumentFile(modelPath, openOptions);
 detachDoc.SaveAs(filePath);
 detachDoc.Close(false);

 //重新打开本地文件

 uiapp.OpenAndActivateDocument(docPathName);

 //清理临时文档
 temDoc.Close(false);
 File.Delete(temFilePath);
 }
 else
 {
 //保存项目,复制到新路径
 doc.Save();
 File.Copy(doc.PathName, filePath);
 }

 

微信公众号:xuebim
关注建筑行业BIM发展、研究建筑新技术,汇集建筑前沿信息!
← 微信扫一扫,关注我们+
赞(0) 打赏
BIM建筑网 » Revit二次开发_项目文件分离

评论 抢沙发

评论前必须登录!

 

BIM建筑网,更专业的BIM技术学习网站!

关注建筑新动态,分享建筑新技术

联系我们关于BIM建筑网

觉得文章有用就打赏一下小编吧

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

扫码登录

微信「关注」,快捷登录
扫码关注后会自动登录
注册登录代表您已同意《用户许可协议》
账号登录 | 其他登录

|登录

找回密码

|账号登录注册