美文网首页BIM的乐趣
Dynamo批量将房间名称转换为模型文字

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

作者: 九哥BIMer | 来源:发表于2020-05-03 14:03 被阅读0次

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

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

image

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

image

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

image

所在类为“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
image

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

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

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

image

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

image

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

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

BIM的乐趣“群成员已经过百了,有希望入群的小伙伴,可以加我好友,备注来源,我来拉你入群哦~

相关文章

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

    今天呢,我们简单聊聊如何把房间名称,变成模型文字,好在三维中能够看到房间名称。 本来吧,我觉得批量创建模型文字应该...

  • 批量将图片名称转英文

    原因 iOS 开发时,设计师每次给的切图都是中文命名; 一些冷僻的单词有时候还忘记了; 用拼音看起来不太顺眼;每次...

  • 数据持久化之NSUserDefaults

    所谓的数据持久化、就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型可以...

  • 数据持久化

    数据持久化(PO)就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.数据模型可以是...

  • js 图片转换base64 base64转换为file对象

    将图片转换为Base64 将base64转换为file类型 可以将图片转换为base64

  • iOS中的数据持久化

    本文由我们团队的王瑞华童鞋撰写。 数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据...

  • MyBatis框架介绍及实战操作

    一、基本概念和介绍 数据持久化的概念 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数...

  • MyBatis框架介绍及实战操作

    一、基本概念和介绍 数据持久化的概念 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数...

  • MyBatis框架介绍及实战操作

    一、基本概念和介绍 数据持久化的概念 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数...

  • <Python脚本>批量转换less至css

    安装了less之后后, 可以通过lessc 将单个.less文件转换为.css, 但less没有提供批量转换为cs...

网友评论

    本文标题:Dynamo批量将房间名称转换为模型文字

    本文链接:https://www.haomeiwen.com/subject/knudghtx.html