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

你好,这里是 BIM 的乐趣


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

 

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

 

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

import clr
clr.AddReference('System.Core')
clr.AddReference('RhinoInside.Revit')
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI')
from System import Enum, Action
import rhinoscriptsyntax as rs
import Rhino
import RhinoInside
import Grasshopper
from Grasshopper.Kernel import GH_RuntimeMessageLevel as RML
from RhinoInside.Revit import Revit, Convert

clr.ImportExtensions(Convert.Geometry)
from Autodesk.Revit import DB
from Autodesk.Revit.DB import Transaction

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

t = Transaction(doc, 'cadlinktype')
t.Start()

t.Commit()

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

 

Rhino.Inside.Revit批量删除Revit项目参数_第1张图片

 

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

 

Rhino.Inside.Revit批量删除Revit项目参数_第2张图片

 

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

 

Rhino.Inside.Revit批量删除Revit项目参数_第3张图片

 

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

import clr
import System
clr.AddReference('System.Core')
clr.AddReference('RhinoInside.Revit')
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI')
from System import Enum, Action
import rhinoscriptsyntax as rs
import Rhino
import RhinoInside
import Grasshopper
from Grasshopper.Kernel import GH_RuntimeMessageLevel as RML
from RhinoInside.Revit import Revit, Convert

clr.ImportExtensions(Convert.Geometry)
from Autodesk.Revit import DB
import Autodesk
from Autodesk.Revit.DB import Transaction

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)

if inputdoc == None:
  doc = Revit.ActiveDBDocument
elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.RevitLinkInstance":
  doc = inputdoc.GetLinkDocument()
elif inputdoc.GetType().ToString() == "Autodesk.Revit.DB.Document":
  doc = inputdoc
else: 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)

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

 

Rhino.Inside.Revit批量删除Revit项目参数_第4张图片

 

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

 

Rhino.Inside.Revit批量删除Revit项目参数_第5张图片

 

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

 

Rhino.Inside.Revit批量删除Revit项目参数_第6张图片

 

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

 

image

 

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

 

 

你可能感兴趣的:(Rhino.Inside.Revit批量删除Revit项目参数)