打开APP
userphoto
未登录

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

开通VIP
Rhino.Inside.Revit批量删除Revit项目参数

你好,这里是BIM的乐趣


        本篇文章先开个头,开始我们的Rhino.Inside.Revit之旅,看看如何在Grasshopper中玩转Revit,那么接下来就进入今天的主题,批量删除Revit项目参数。

        这个程序很简单,分两步,第一步,获取所有项目参数,第二步,删除参数。删除是有现成节点的,那么我们只需要通过GhPython Script节点,写一些代码,获取所有的项目参数即可。

        双击GhPython Script节点,进入代码编辑界面,为了方便,我这里设置了代码模板,方便调用各种库,代码模板如下:

import clrclr.AddReference('System.Core')clr.AddReference('RhinoInside.Revit')clr.AddReference('RevitAPI') clr.AddReference('RevitAPIUI')from System import Enum, Actionimport rhinoscriptsyntax as rsimport Rhinoimport RhinoInsideimport Grasshopperfrom Grasshopper.Kernel import GH_RuntimeMessageLevel as RMLfrom RhinoInside.Revit import Revit, Convert# 还可以添加扩展方法# 这允许在Revit对象上调用.ToXXX()转换器方法clr.ImportExtensions(Convert.Geometry)from Autodesk.Revit import DBfrom Autodesk.Revit.DB import Transaction# 访问Revit数据库作为主体REVIT_VERSION = Revit.ActiveUIApplication.Application.VersionNumber# 访问活动文档对象doc = Revit.ActiveDBDocument# 一些实用方法def show_warning(msg):    ghenv.Component.AddRuntimeMessage(RML.Warning, msg)def show_error(msg):    ghenv.Component.AddRuntimeMessage(RML.Error, msg)def show_remark(msg):    ghenv.Component.AddRuntimeMessage(RML.Remark, msg)
doc = Revit.ActiveDBDocumentuidoc = Revit.ActiveUIDocumentapp = doc.Application
# 在这里编写代码
#Transactiont = Transaction(doc, 'cadlinktype')t.Start()
t.Commit()

        在Tools菜单下,有Set Template Code...命令,写好模板代码,点击即可:

        接下来看看如果获取项目中的项目参数,在Document下,有个ParameterBindings属性,是获取参数和类型的映射关系:

        点进去我们能看出,要找的就是这个,自定义的参数映射:

        那么我们只要迭代所有的自定义参数即可,就是要找的所有项目参数,那么完整代码如下:

import clrimport Systemclr.AddReference('System.Core')clr.AddReference('RhinoInside.Revit')clr.AddReference('RevitAPI') clr.AddReference('RevitAPIUI')from System import Enum, Actionimport rhinoscriptsyntax as rsimport Rhinoimport RhinoInsideimport Grasshopperfrom Grasshopper.Kernel import GH_RuntimeMessageLevel as RMLfrom RhinoInside.Revit import Revit, Convert# 还可以添加扩展方法# 这允许在Revit对象上调用.ToXXX()转换器方法clr.ImportExtensions(Convert.Geometry)from Autodesk.Revit import DBimport Autodeskfrom Autodesk.Revit.DB import Transaction# 访问Revit数据库作为主体REVIT_VERSION = Revit.ActiveUIApplication.Application.VersionNumber# 访问活动文档对象doc = Revit.ActiveDBDocument# 一些实用方法def show_warning(msg):    ghenv.Component.AddRuntimeMessage(RML.Warning, msg)def show_error(msg):    ghenv.Component.AddRuntimeMessage(RML.Error, msg)def show_remark(msg):    ghenv.Component.AddRuntimeMessage(RML.Remark, msg)
#doc = Revit.ActiveDBDocument#uidoc = Revit.ActiveUIDocument#app = doc.Application
# 在这里编写代码
if inputdoc == None: doc = Revit.ActiveDBDocumentelif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.RevitLinkInstance": doc = inputdoc.GetLinkDocument()elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.Document": doc = inputdocelse: doc = None
names = []elems = []
iterator = doc.ParameterBindings.ForwardIterator()while iterator.MoveNext():
names.append(iterator.Key.Name) elem = doc.GetElement(iterator.Key.Id) elems.append(elem)
print(names,elems)

        代码完成后,根据代码的输入和输出,设置输入和输出端口的参数名称,如下图:

        然后直接将获得的项目参数,连入Delete Element节点,即可完成删除,当然你也可以根据索引,获取自己想要删除的,截图如下:

        当然了,你可以用Human UI节点包,创建一个UI,勾选自己要删除的参数,这里就不详细介绍了,简单截个图:

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




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

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

二、Dynamo幕墙表皮创建随机UV网格

三、隔离与重设临时隐藏/隔离——Dynamo Python系列教程
四、如何将Civil 3D模型转换为Revit模型

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

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

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

八、创建天花——Dynamo for Revit2022

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
建筑建模常用软件
REVIT中参数化族的创建
怎样快速学习rhino和grasshopper?
关于那些建筑设计的软件
参数化设计技术平台的软件汇总
我赌你不知道这个软件是什么!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服