Dynamo修改族名称和族类型名称——群问题整理001

你好,这里是 BIM 的乐趣,我是九哥~

近期给大家分享一些短平快的小教程,基本都是来自群里面常问的问题,不做过多的介绍了,直接上截图和代码。

问题:001 - 改族名称和族类型名称

隔三差五的,群里就会有人问这个问题,关于改族名称和族类型名称,ClockWork 里有现成的节点 Element.SetName,可以解决该问题:

改族名称,就输入 Family:

改类型名称,就获取 ElementType:

当然,如果你没有安装 ClockWork 节点包,也可以直接复制下面的代码,放到 PythonScript 里使用。

Element.SetName 核心的代码:

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

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

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

doc = DocumentManager.Instance.CurrentDBDocument
items = UnwrapElement(IN[0])
names = IN[1]

def SetElementName(item, name):
  if item.GetType().ToString() == "Autodesk.Revit.DB.FamilyParameter":
    try: 
      doc.FamilyManager.RenameParameter(item, name)
      return True
    except: return False
  else:
    try: 
      item.Name = name
      return True
    except: return False

TransactionManager.Instance.EnsureInTransaction(doc)
if isinstance(IN[0], list):
  if isinstance(names, list): OUT = [SetElementName(x, y) for x, y in zip(items, names)]
  else: OUT = [SetElementName(x, names) for x in items]
else:
  if isinstance(names, list): OUT = SetElementName(items, names[0])
  else: OUT = SetElementName(items, names)
TransactionManager.Instance.TransactionTaskDone()

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九哥BIMer

予人玫瑰,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值