Dynamo批量将房间名称转换为模型文字

今天呢,我们简单聊聊如何把房间名称,变成模型文字,好在三维中能够看到房间名称。

本来吧,我觉得批量创建模型文字应该是个很简单的事,但是我在Dynamo中搜了下ModelText,发现只有一个在族环境中创建模型文字的节点:
 

我这么多节点包,竟然没有直接创建模型文字的节点?难道还要去写Python代码?没办法,只好去查下API,不查还好,一查,觉得这个更是有意思了,竟然只能在族环境下才允许创建模型文字,这个事就有点扯了。。。

谁能告诉我,这是什么鬼,但是问题有了,总要想办法解决,好在这个问题还有能变通解决的,例如之前我做门窗详图那个例子,我们可以复制模型文字啊,所以“copy element”方法在这里使用正合适,我们可以再搜索下:

所在类为“ElementTransformUtil Class“,所以我们的基本语法为:

copied = ElementTransformUtils.CopyElement(doc,ElementId(elementId),i.ToXyz())

那么我们只要获取所有的房间,然后在房间中心点或者直接获取房间的location,把模型文字复制到这里就可以了,大家可以自己尝试下,我就直接贴出代码和节点了:

# Copyright(c) 2010, 九哥BIMer
import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

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

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

doc =  DocumentManager.Instance.CurrentDBDocument
app =  DocumentManager.Instance.CurrentUIApplication.Application

elementId = IN[0].Id
Pts = UnwrapElement(IN[1])
new = []
copied = []

TransactionManager.Instance.EnsureInTransaction(doc)
for i in Pts:
  copied = ElementTransformUtils.CopyElement(doc,ElementId(elementId),i.ToXyz())
  new.append(doc.GetElement(copied[0]))
TransactionManager.Instance.TransactionTaskDone()

OUT = new

从上图可以看出,我复制完文字,将模型文字的值改成房间名称,最后又更新了下文字的位置,这是因为,这里复制模型文字,坐标是相对于你放置的那个模型文字的坐标,更新成房间坐标就可以了。
 

从这里我们也看出,这不是个好的解决办法,于是我又想,既然允许在族环境中创建模型文字,那么我们不如直接做个模型文字的族,直接放置族岂不是来的痛快。

于是我就做了一个模型文字族,添加需要的参数,文字采用中心对齐,如下图,载入项目中就可以用了:
 

那么这样来的更简单,只需要获取房间的location,然后用FamilyInstance.ByPoint放置模型文字族即可,然后将房间名称设置给对应的族即可,如下图:

这样我们就完成了,房间名称转换为模型文字的操作,可以在三维中看到房间名称了。

好了,今天的分享就到这里了,只是简单的试了下,分享一下,有不对的地方,请指正哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九哥BIMer

予人玫瑰,手有余香

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

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

打赏作者

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

抵扣说明:

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

余额充值