autodesk Revit材质如何转换为标准材质Stardard

在讲autodesk Revit模型文件转换为VRML(.wrl)过程中发现,材质丢失了。因为导出为wrl的材质是不能识别autodesk的材质。所以只能将autodesk材质转换为标准材质。

手动修改吧太复杂了,所以重新写了一个转换函数。将所有材质,包括多维子材质转换为标准材质。问题解决。


fn  converMat obj =(
colorSrc=color 200 200 200
try(
colorSrc=obj.Material.Generic_Color
)
catch()
try(
colorSrc=obj.Material.Concrete_Color
)
catch()
try(
colorSrc=obj.Material.Wall_Paint_Color
)
catch()
try(
colorSrc=obj.Material.Ceramic_Color
)
catch()
try(
colorSrc=obj.Material.diff_color
)
catch()

try(
colorSrc=obj.Material.Masonry_Color
)
catch()
try(
colorSrc=obj.Material.Metallic_Paint_Color
)
catch()
print colorSrc

obj.Material=Standardmaterial ()
obj.Material.Ambient =colorSrc
obj.Material.Diffuse = colorSrc
)
 
 
 
for obj in selection do

print obj.material 


 


if (obj.Material != undefined and Classof obj.Material == StandardMaterial)then
(
 
)
 
else if(obj.Material != undefined and Classof obj.Material == MultiMaterial)then
(
num=1
for  subMat in obj.Material do(
 

if(Classof subMat==Autodesk_Material) then (
colorSrc=color 200 200 200
try(
colorSrc=subMat.Generic_Color
)
catch()

try(
colorSrc=subMat.Concrete_Color
)
catch()

try(
colorSrc=subMat.Wall_Paint_Color
)
catch()

try(
colorSrc=subMat.Ceramic_Color
)
catch()

try(
colorSrc=subMat.diff_color
)
catch()

try(
colorSrc=subMat.Masonry_Color
)
catch()

try(
colorSrc=subMat.Metallic_Paint_Color
)
catch()

print colorSrc

obj.Material[num]=Standardmaterial ()
obj.Material[num].Ambient =colorSrc
obj.Material[num].Diffuse = colorSrc
)


num=num+1


)


 
)

else if(obj.Material != undefined  and Classof obj.Material==Autodesk_Material)then
(
converMat(obj)
 


)




)


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值