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

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

关键代码:

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

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

            //判断是否启用工作集
            if (doc.IsWorkshared)
            {
                //同步
                doc.SynchronizeWithCentral(new TransactWithCentralOptions(), new SynchronizeWithCentralOptions());
                //创建临时文档,将临时文档设置为活动文档
                Document temDoc = uiapp.Application.NewProjectDocument(@"C:\ProgramData\Autodesk\RVT 2016\Templates\China\Construction-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);
            }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值