【案例百解】Dynamo按分区索引切分视图

Hello大家好!我是九哥~

看到群里有小伙伴询问,如何能像CAD似的,将一张大图快速拆分成多个小图,于是呢,就有了今天这篇文章。

简单测试了下,比较容易就实现了,于是呢,赶紧分享给大家,效果大致如下面视频演示的样子:

Dynamo按分区索引切分视图

接下来,我们简单讲下实现逻辑:

一、确定范围框

首先呢,我们需要按照自己的需求,创建一个矩形,然后将其移动到指定的基点,之后我们的操作,都是根据其进行的。

二、阵列范围框

这步比较简单,通过Geometry.Translate节点,即可进行阵列,只需要将连缀改成差积即可。

然后将这个矩形框转换成Boundingbox,这个是剪裁视图的前期准备之一。

三、复制视图

复制视图这里,我简单示意了一下。

(1)根据列表长度,构造了下视图名称

(2)使用Clockwork节点包中的View.DuplicateAsDependent节点,复制相关视图

当然,也可以直接复制,或者带细节复制,Clockwork包里均有相关节点:

注意:这个节点代码有点问题,运行完没有关闭事务,所以最后连一个Transaction.End节点,把没用的事务关掉。

四、剪裁视图

这里我为了方便,简单写了两行代码,同时将视图属性中的剪裁视图、剪裁区域可见、注释剪裁都给勾上了,之后将Boundingbox应用给了视图,就完成了视图剪裁。

涉及的API主要是View.CorpBox属性,可get可set:

完成后代码如下:

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

import clr
import sys
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

def tolist(x):
    if hasattr(x,'__iter__'): return x
    else : return [x]

views = UnwrapElement(tolist(IN[0]))
bbox = UnwrapElement(tolist(IN[1]))

t = Transaction(doc, "剪裁视图")
t.Start()

for v,b in zip(views,bbox):
  v.CropBoxActive = True
  v.CropBoxVisible = True
  shapeManager = v.GetCropRegionShapeManager()
  shapeManager.RemoveCropRegionShape()
  
  v.CropBox = b.ToRevitType()

t.Commit()

OUT= views

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

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九哥BIMer

予人玫瑰,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值