打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

你好,这里是BIM的乐趣


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

    如下图:

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

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

import sysimport clrclr.AddReference('ProtoGeometry')from Autodesk.DesignScript.Geometry import * clr.AddReference("RevitAPI")import Autodeskfrom Autodesk.Revit.DB import * clr.AddReference("Revitservices")import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom 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方法:

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

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

    调整后的代码如下:

import sysimport clr
clr.AddReference("RevitAPI")import Autodeskfrom Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory, Transaction clr.AddReference("Revitservices")import RevitServicesfrom 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操作内容了。

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



本公众号还有其他Dynamo案例教程:

一、Dynamo文章目录整理——BIM的乐趣By九哥

二、Dynamo幕墙表皮创建随机UV网格
三、隔离与重设临时隐藏/隔离——Dynamo Python系列教程
四、如何将Civil 3D模型转换为Revit模型

五、隔离与重设临时隐藏/隔离——Dynamo Python系列教程

六、pyRevit之清理未使用的房间和面积

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Dynamo python调用revitAPI系列
Dynamo用户俱乐部【第一弹】
Dynamo初探——简介及安装
最短路径——通过Dynamo批量创建行进路线
【新提醒】Revit二次开发 RevitLookUp安装说明
Unity and Autodesk – Unity Blog
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服