下载app免费领取会员
资料获取说明
本文用到的Revit软件版本为:Revit 2020;
本文使用到的Dynamo版本为:Revit2020自带的Dynamo Revit 2.1;
若需在2017~2019中使用,推荐安装DynamoInstall2.0.4,可完美适配公众号内提供的Dynamo插件包;
本文提到的所有文件获取方式:公众号内回复:Dynamo设置管道材质
本文为前半部分为Dynamo文件制作解析,后半部分为成品文件使用,让小白也能使用成品文件快速完成材质设置,如有需要可查看下一篇;
目录
Dynamo脚本编写思路解析 提取项目中的MEP系统 提取所有的MEP管道系统(含风管,管道) 提取所有的风管系统 提取所有的管道系统 新建材质并为材质修改颜色(着色模式颜色) 新建材质 选择材质 为材质修改颜色 将材质赋值到管道系统中 修改管道系统图形替换线图形的颜色 真实模型颜色思路 成品Dynamo使用 使用Element Types节点,选择MEPSystemType可以提取Revit文件中所有的管道类型,包括管道类型及风管类型;提取出来的为一个大类,需要使用All Elements of Type节点对大类进行拆分,以获得包含所有管道系统的列表;获得的管道系统列表为英文内容,可使用Orchid节点包中的o|ElementType.Name节点,获取各管道系统的中文字段;如下所示:Dynamo脚本编写思路解析
提取项目中的MEP系统
提取所有的MEP管道系统(含风管,管道)

内容与上面提取所有MEP系统一致,Element Types节点下选择MechanlcalSystemType即可;

内容与上面提取所有MEP系统一致,Element Types节点下选择PipingSystemType即可;

使用Orchid节点包中的o|Material.Create节点新建材质;若有此名称材质,不会新建; 使用Material.ByName节点对项目中现有的材质进行选择,选中后可进行相应的修改; 选择材质 使用下面的python代码进行材质颜色修改: 材质名称的数量应与给定材质颜色的数量一致;若有多个材质,则中名称Code Block使用,隔开,如“喷淋系统”,“给水系统”;同时需要有对应数量的RGB颜色值,也用逗号隔开,如[[255,0,255],[0,0,0]]; 这里的颜色色号输入要求为数字,如果源内容为字段,则需要使用String.ToNumber节点将字段转换为数字; IN[0]为材质,IN[1]为颜色 通过Python Script脚本配置材质颜色,有两个IN[X],其中IN[0]为材质,IN[1]为颜色,颜色输入内容eg:[[255,0,255]];以上代码中,行前有用#注释的内容分别为表面填充及截面填充内容,可按需选择;需要设置的话删除行前的#即可; 将材质赋值到管道系统中 使用Element.SetParameterByName节点,将材质附到管道系统材质参数下: 使用下面的Python代码对管道系统图形线样式的颜色进行修改;输入为两项,IN[0]为管道系统,IN[1]为颜色值,颜色与上方一致,使用[[255,0,255]];形式输入。如下图所示:新建材质

选择材质

为材质修改颜色

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
if isinstance(IN[0], list):
mat = UnwrapElement(IN[0])
else:
mat = [UnwrapElement(IN[0])]
if isinstance(IN[1], list):
col = IN[1]
else:
col = [IN[1]]
def ToRevitColor(DynamoColor):
return Color(DynamoColor[0], DynamoColor[1], DynamoColor[2])
mats = []
TransactionManager.Instance.EnsureInTransaction(doc)
for m, c in zip(mat, col):
# m.CutPatternColor = ToRevitColor(c)
# m.SurfacePatternColor = ToRevitColor(c)
m.UseRenderAppearanceForShading = False
m.Color = ToRevitColor(c)
mats.append(m)
TransactionManager.Instance.TransactionTaskDone()
OUT = mats
修改管道系统图形替换线图形的颜色

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
if isinstance(IN[0], list):
sys = UnwrapElement(IN[0])
else:
sys = [UnwrapElement(IN[0])]
if isinstance(IN[1], list):
col = IN[1]
else:
col = [IN[1]]
def ToRevitColor(DynamoColor):
return Color(DynamoColor[0], DynamoColor[1], DynamoColor[2])
system = []
TransactionManager.Instance.EnsureInTransaction(doc)
for s, c in zip(sys, col):
s.LineColor = ToRevitColor(c)
system.append(s)
TransactionManager.Instance.TransactionTaskDone()
OUT = systemIN[0]为管道系统,IN[1]为颜色值
真实模型颜色思路
考虑不同材质真实效果配置的区别,本文成品内容暂未直接对真实材质进行直接配置;推荐在材质按系统分类完成后,在Lumion等渲染软件中为模型设置真实材质,进一步提高材质渲染质量;如需在Revit中直接配置真实材质,可参考如下方法:
material.add image
material set render color
本文版权归腿腿教学网及原创作者所有,未经授权,谢绝转载。
上一篇:深化智能建造与建筑工业化协同发展!《江苏省住房城乡建设科技创新行动计划(2026—2028年)》发布
下一篇:Revit中还原地形地貌系列之(二),可编辑地形地貌
推荐专题