如何让撤销栏显示Dynamo的具体操作内容

Dynamo 案例百解——简单实用的 Dynamo 图文教程已经基本完成了!有兴趣小伙伴,可以加我微信,进行购买哦~

 

你好,这里是 BIM 的乐趣


今天来简单聊聊关于撤销这个事,我们在建模过程中,经常会遇到操作失误的时候,这里经常会用到撤销这个命令,当然也有撤销很多步的时候。同样的,Dynamo 操作后,我们也可能会需要撤销操作,但是,如果你仔细观察,就会发现,撤销栏里显示的 Dynamo 操作很模糊,并不能具体显示 Dynamo 做了什么。

如下图:

image

第一行是我们的正常显示,而第二行,则显示的 “Dynamo-**“等一些东西,并没有很明确的显示 Dynamo 的操作,那么我们能否让其显示呢,答案是很定的。

我们先来看一段代码,取消墙体两端连接:

import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
 
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
 
clr.AddReference("Revitservices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
 

doc = DocumentManager.Instance.CurrentDBDocument

walls_list = FilteredElementCollector(doc).WhereElementIsNotElementType().OfCategory(BuiltInCategory.OST_Walls).ToElements()

TransactionManager.Instance.EnsureInTransaction(doc)
 
for i in walls_list:
    elem = UnwrapElement(i)
    WallUtils.DisallowWallJoinAtEnd(elem, 0)
    WallUtils.DisallowWallJoinAtEnd(elem, 1)
 
TransactionManager.Instance.TransactionTaskDone()
OUT = walls_list

上面这段代码,看着没啥大问题,都是按照常规的写法来了。可以看出,我们这里用的是 Dynamo 提供的 TransactionManager 方法,它处理来自 Dynamo 应用程序内部对 Revit 文档数据库所做的更改。

而显示撤销具体内容这里,实际上需要用到 Revit API 里 Transaction 下的部分方法。

接下来我们再来看看 Revit API 提供的 Transaction 方法:

image

如上图,Revit API 提供的 Start 方法有两种,其中一种,就包含返回的信息:

image

那么,我们直接调用 Revit API 的 Transaction 方法,就能解决返回信息的问题,在 Start(“这里是返回的信息”)方法内填写即可。

调整后的代码如下:

import sys
import clr

clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory, Transaction
 
clr.AddReference("Revitservices")
import RevitServices
from RevitServices.Persistence import DocumentManager

doc = DocumentManager.Instance.CurrentDBDocument

t = Transaction(doc,"取消墙体两端连接")
t.Start()

walls_list = FilteredElementCollector(doc).WhereElementIsNotElementType().OfCategory(BuiltInCategory.OST_Walls).ToElements()

for i in walls_list: 
    Autodesk.Revit.DB.WallUtils.DisallowWallJoinAtEnd(i, 0)
    Autodesk.Revit.DB.WallUtils.DisallowWallJoinAtEnd(i, 1)
 
t.Commit()

OUT = walls_list

然后我们再次运行程序,就可以在 Revit 撤销栏,看到我们填写的 Dynamo 操作内容了。

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


不知不觉中,“BIM 的乐趣 “群已经满了,不过不用担心,我们又创建了一个超级群,有希望入群的小伙伴,可以私信我哈~

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九哥BIMer

予人玫瑰,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值