今天呢,我们简单聊聊如何把房间名称,变成模型文字,好在三维中能够看到房间名称。
本来吧,我觉得批量创建模型文字应该是个很简单的事,但是我在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放置模型文字族即可,然后将房间名称设置给对应的族即可,如下图:
这样我们就完成了,房间名称转换为模型文字的操作,可以在三维中看到房间名称了。
好了,今天的分享就到这里了,只是简单的试了下,分享一下,有不对的地方,请指正哈!
BIM的乐趣“群成员已经过百了,有希望入群的小伙伴,可以扫码,加我微信,备注来源,我来拉你入群哦~
本公众号其他的相关DYNAMO文章还有:
三、在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长
九、获取链接文件Document——Dynamo Python系列教程(一)
十一、图元的基本操作(隔离、移动、旋转、删除)——Dynamo Python系列教程(三)
十四、Dynamo与Revit API之间的转换——Dynamo Python系列教程(五)
十七、Revit元素类别——Dynamo Python系列教程(六)
十九、IronPython与.NET Framework——Dynamo Python系列教程(七)
二十、什么是API?——Dynamo Python系列教程(八)
二十一、Revit API简介——Dynamo Python系列教程(九)
二十二、如何阅读Revit的API文档——Dynamo Python系列教程(十)
二十四、Dynamo一键清理Revit中未放置的房间和多余的房间
二十五、Dynamo2.5都更新了啥?