博客 / Others/ SketchUp 批量生成 SKP 模型缩略图完整指南(附 Ruby 脚本)

SketchUp 批量生成 SKP 模型缩略图完整指南(附 Ruby 脚本)

SketchUp 批量生成 SKP 模型缩略图完整指南(附 Ruby 脚本)

使用 Ruby 脚本批量生成 SketchUp SKP 文件缩略图

在 SketchUp 中,可以通过其内置的 Ruby 控制台运行脚本来批量处理模型文件。以下是一个经过优化和修正的脚本,用于批量生成指定文件夹内所有 SKP 文件的缩略图,并保存为 PNG 格式。

脚本代码与说明

将以下代码复制到 SketchUp 的 Ruby 控制台(菜单:窗口 > Ruby 控制台)中执行。

# 选择包含 SKP 文件的文件夹
folder_path = UI.select_directory(title: "选择包含 SKP 文件的文件夹")
if folder_path
  # 定义缩略图保存的子文件夹路径
  thumbnails_folder = File.join(folder_path, 'Thumbnails')
  # 如果目标文件夹不存在,则创建它
  Dir.mkdir(thumbnails_folder) unless Dir.exist?(thumbnails_folder)

  # 遍历文件夹中的所有 .skp 文件
  Dir.glob(File.join(folder_path, "*.skp")).each do |skp_file|
    begin
      # 打开模型文件
      model = Sketchup.open_file(skp_file, with_status: false)
      if model
        puts "正在处理: #{skp_file}"
        # 生成缩略图文件名(与 SKP 文件同名,扩展名为 .png)
        png_filename = File.join(thumbnails_folder, File.basename(skp_file, ".skp") + ".png")
        # 保存缩略图
        model.save_thumbnail(png_filename)
        puts "缩略图已保存至: #{png_filename}"
        # 关闭当前打开的模型,避免内存占用过高
        Sketchup.active_model.close if Sketchup.active_model && !Sketchup.active_model.path.empty?
      end
    rescue => exception
      puts "处理文件 #{skp_file} 时出错: #{exception.message}"
    end
  end
  # 处理完成后,在文件资源管理器中打开缩略图文件夹
  UI.openURL("file:///#{thumbnails_folder}")
  puts "批量缩略图生成完成!"
else
  puts "未选择文件夹,操作已取消。"
end

脚本功能详解

  • 选择文件夹:脚本首先会弹出一个对话框,让你选择包含所有 SKP 模型文件的文件夹。
  • 创建输出目录:脚本会在你选择的文件夹内创建一个名为 Thumbnails 的子文件夹,用于存放所有生成的 PNG 缩略图。
  • 批量处理:脚本会遍历所选文件夹中的所有 .skp 文件,依次打开每个模型并生成缩略图。
  • 错误处理:添加了异常捕获,如果某个文件处理失败(例如文件损坏),脚本会输出错误信息并继续处理下一个文件,而不会中断整个流程。
  • 资源管理:处理完每个模型后,脚本会关闭它,以防止同时打开过多模型导致 SketchUp 内存占用过高或性能下降。
  • 完成提示:所有文件处理完毕后,脚本会自动在系统的文件资源管理器中打开 Thumbnails 文件夹,并输出完成信息。

重要注意事项

  1. 模型状态:建议在运行此脚本前,保存并关闭所有已打开的 SketchUp 模型。脚本会尝试关闭它打开的模型,但直接从已包含大量实体的活跃模型运行脚本可能导致意外行为。
  2. 文件权限:确保 SketchUp 有权限在所选的文件夹及其子文件夹中读取(SKP文件)和写入(PNG文件)。
  3. 缩略图质量model.save_thumbnail 方法生成的缩略图尺寸和渲染质量是 SketchUp 内部预设的,通常较小。如需更高分辨率或自定义尺寸的截图,需要使用更复杂的 API 进行视图渲染和截图。
  4. SketchUp 版本:此脚本适用于 SketchUp 2017 及更高版本。不同版本的 Ruby API 可能存在细微差异。

提示:如果你需要为大量或复杂的模型生成缩略图,此过程可能需要一些时间。请耐心等待脚本运行完成,不要中途关闭 SketchUp。

  1. 大佬可以设置缩略图尺寸吗

    1. 暂时不能额...我还没有研究出来

  2. avatar
    小不点

    站长,研究出来设置缩略图尺寸了吗 ?~…~

    1. 研究出来了啊

      1. 请问可以指教一下吗?

        1. 安装su 然后用这个脚本即可

          1. 呃,谢谢你的回复,但是这个代码产生的缩略图很小,能设置大小吗? 😳

          2. 这个 我也还没仔细研究呢

  3. avatar
    xubosong

    请问能不关闭当前模型运行代码吗?

    1. 可以强制关闭

发表评论

您的邮箱不会公开。必填项已用 * 标注。