如何用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
相关产品推荐
相关产品推荐

