土木在线论坛 \ BIM技术 \ BIM专业软件 \ Dynamo批量设置Revit启动视图

Dynamo批量设置Revit启动视图

发布于:2022-07-12 10:21:12 来自:BIM技术/BIM专业软件 3 11

来源:BIM的乐趣

|

作者:九哥BIMer

[复制转发]


Hello大家好!我是九哥~

    一年忙两次,每次忙半年,公众号已经快彻底断更了,今天临时补一篇,通过Dynamo批量设置Revit的启动视图为三维视图。

 

    之前呢,我们已经讲过后台打开多个文件的逻辑,这里就不过多赘述了,见文章《 Dynamo批量修改多文件项目基点参数 》。

     
     
获取三维视图
 
 

    第一个点呢,就是获取文件的三维视图,我们先来看看API手册。先来搜搜ThreeD试试,你会发现搜到是ViewType的枚举,那么是不是我们只要找到ViewType是ThreeD的就可以了呢?


 

 

          ViewType枚举

    可是一测试,发现并不是那么回事,里面还有点别的东西,譬如Template视图样板,这个并不是我们想要的。如何过滤掉视图样板呢,经过查询,在View的属性里面,可以找到IsTemplate的属性,如下图:

 

 

 

          是否为视图样板

 

那么,只要获取所有视图,然后过滤掉视图样板,再获取视图类型是ThreeD的就好了,于是就可以写一个自定义函数了:

 










def getThreeDView(doc): views = FilteredElementCollector(doc).OfClass(View).ToElements() threeD = [] for i in views: if not i.IsTemplate: if i.ViewType == ViewType.ThreeD: threeD.append(i) else: continue return threeD[0]
   
 


     
     
设置启动视图

我们接着搜索StartingView,很容易就能找到 StartingViewSettings相关的方法,其中有个属性ViewId是可get可set的,就是我们需要的:

 

 

          启动视图设置

 
 

然后我们就可以先获取项目的启动视图,再赋予新的启动视图即可:

 

 

          获取启动视图设置


 
 

最后附上完整代码和节点截图:










































import clrclr.AddReference('RevitAPI')from Autodesk.Revit.DB import *import Autodesk
clr.AddReference("RevitServices")import RevitServicesfrom RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocumentuiapp = DocumentManager.Instance.CurrentUIApplicationapp = doc.Application
filePath = IN[0]options = OpenOptions()options.DetachFromCentralOption = DetachFromCentralOption.DetachAndPreserveWorksets
def getThreeDView(doc): views = FilteredElementCollector(doc).OfClass(View).ToElements() threeD = [] for i in views: if not i.IsTemplate: if i.ViewType == ViewType.ThreeD: threeD.append(i) else: continue return threeD[0]
typelist = list()view = []for i in filePath: modelPath = ModelPathUtils.ConvertUserVisiblePathToModelPath(i)  bDoc = app.OpenDocumentFile(modelPath, options) v = getThreeDView(bDoc) s = StartingViewSettings.GetStartingViewSettings(bDoc) t = Transaction(bDoc,'设置启动视图') t.Start() s.ViewId = v.Id t.Commit()   typelist.append(bDoc.Close(IN[1]))OUT = typelist
   
 


好了,今天的分享就到这里了,小伙伴们快去尝试吧~



全部回复(3)

只看楼主 我来说两句
  • 英雄联萌
    英雄联萌 沙发

    感谢,学习一下。

    2022-07-13 13:20:13

    回复 举报
    赞同0
  • 淡淡苏烟味

    谢谢分享

    2022-07-13 13:15:13

    回复 举报
    赞同0
  • 独唱独角戏

    谢谢楼主,谢谢楼主,谢谢楼主,

    2022-07-12 14:08:12

    回复 举报
    赞同0
评论帖子
评论即可得
+1经验值
+10土木币

请先 登录,再参与讨论!

BIM专业软件

返回版块

7977 条内容 · 178 人订阅

猜你喜欢

阅读下一篇

bim软件技巧 REVIT绘制围栏12步骤

一直以来,REVIT是大家做BIM的首选建模软件,在我们经历了“甩图板”到CAD时代,而如今BIM后时代,我们所需的不再仅仅是模型的创建那么低的要求了,当然,建模是基础,也是我们必须掌握的;每天分享建模软件REVIT的技能,帮助大家快速掌握BIM软件操作是我们为广大入门初学者提供的一波福利。    

请选择删除原因

回帖成功

经验值 +10