You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SketchUp Ruby为模型添加‘Metal Corrugated Shiny’纹理?

在SketchUp Ruby中为立方体添加‘Metal Corrugated Shiny’纹理

我来帮你搞定这个纹理添加的需求!核心思路是先获取SketchUp自带的‘Metal Corrugated Shiny’材质,再将其应用到立方体的所有表面(或者直接给组设置材质)。下面是修改后的完整代码和关键步骤说明:

完整修改后的代码

l=96 w=60 h=60 clr='Gray'
ent = Sketchup.active_model.entities
#---------Clear All
Sketchup.active_model.entities.clear!
#----------------
model = Sketchup.active_model
model.start_operation "Create Box with Metal Texture"

# 获取模型的材质集合
materials = model.materials
# 尝试获取目标金属材质(SketchUp自带材质通常能直接获取)
metal_mat = materials.get("Metal Corrugated Shiny")
# 兜底逻辑:如果材质未找到,从默认材质库加载
if metal_mat.nil?
  material_path = Sketchup.find_support_file("Materials/Metal/Metal Corrugated Shiny.skm", "SketchUp")
  metal_mat = materials.load(material_path) unless material_path.nil?
end

#-----------------------------------------------------------------------------
entities = model.active_entities
group = entities.add_group
entities = group.entities
group.name = "Box"
@pt0 = [0, 0, 0]
@pt1 = [0, l*12, 0]
@pt2 = [w*12.0, l*12, 0]
@pt3 = [w*12, 0, 0]
newface = entities.add_face(@pt0, @pt1, @pt2, @pt3)
newface.reverse!
# 推拉生成立方体,返回所有生成的面
cube_faces = newface.pushpull h*12

# 将金属材质应用到立方体的所有面
if metal_mat
  cube_faces.each { |face| face.material = metal_mat }
  # 可选:给组设置材质,确保整体材质一致性
  group.material = metal_mat
end

model.commit_operation

关键步骤解释

  • 获取材质:通过model.materials.get("Metal Corrugated Shiny")直接调用SketchUp自带的材质。如果因为版本或路径问题找不到,兜底逻辑会通过Sketchup.find_support_file定位材质文件并加载。
  • 应用材质:pushpull方法会返回立方体所有面的集合,用each遍历每个面并赋值材质;同时给组设置材质,确保后续编辑时材质继承的一致性。
  • 操作包裹:保留原有的start_operation和commit_operation,让整个创建+材质设置的操作可以被撤销/重做。

可选优化:调整纹理缩放

如果需要调整纹理的大小和重复频率,可以在设置材质后添加这行代码:

cube_faces.each { |face| face.position_material(metal_mat, 24, 24) }

这里的24代表纹理每24英寸重复一次,你可以根据需求修改数值。

内容的提问来源于stack exchange,提问作者Davesexcel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:25:08