通过更改底层 SketchUp 模型来更新 SketchUp 模型

Updating a Sketchup Model by changing an underlying sketchup model

我有一个 SketchUp 模型,它是通过导入其他三个模型文件创建的。我想更新三个基础模型文件之一。如果我编辑模型并再次物理导入,我必须花时间再次对模型进行物理定位。有没有办法更改底层模型并自动更新更高级别的模型?

虽然 SketchUp 没有 link 模型,而且您不能自动从一个模型更改为另一个模型(无论如何都没有插件),但有一种方法可以用不同的组件替换组件。您是否习惯使用 Ruby 控制台?如果是这样,请执行以下操作(请注意,这假定您的对象是组件!):

  1. Select old 组件实例,您要替换的实例。

  2. 打开 Ruby 控制台(Window -> Ruby 控制台)。

  3. 键入以下内容(您必须选择旧实例):

    old = Sketchup.active_model.selection.first

然后按回车键。

  1. 导入您的新对象(除非您已经拥有)并将其放置在场景中的某处(某处它不挡路并且您可以轻松找到它)。

  2. Select new 组件实例,您刚刚导入的新对象

  3. 在 Ruby 控制台中键入以下内容(您必须选择新实例):

    new = Sketchup.active_model.selection.first

然后按回车键。

  1. 现在,要用新组件替换旧组件,请在 Ruby 控制台中键入以下内容:

    old.definition = new.definition

然后按回车键。

那应该用你的新组件替换旧组件。您现在可以删除之前导入的对象。也清除您的模型可能是个好主意。 请注意,替换使用旧实例的坐标轴位置。只要这些是相同的模型,只需进行一些编辑,就不会有任何问题。

不确定这是编程问题还是用户问题,但如果是编程问题,那么您可以使用 DefinitionList#load 加载新的 SKP 文件,然后使用 ComponentInstance#definition= 替换实例您要替换的定义。

http://ruby.sketchup.com/Sketchup/DefinitionList.html#load-instance_method http://ruby.sketchup.com/Sketchup/ComponentInstance.html#definition=-instance_method

如果这是用户问题,那么我建议您在超级用户网站上提问 (https://superuser.com/) or the SketchUp forums: https://forums.sketchup.com/

您不需要以编程方式执行此操作 - 您可以在 Sketchup 本身中执行此操作。

  1. 在文件中保存组件 aComponent.skp
  2. 将组件导入您的工作文件,也许 workingFile.skp

更新组件(类似于 Autocad 中的 XREF)

每当您对 aComponent.skp 文件进行更改时,您需要做的就是进入 workingFile.skp 并在 OUTLINER 中找到您加载的组件(我在这里制作了一个名为 weirdThing 的组件),不是组件 window.

  1. 在 OUTLINER 中右键单击组件名称。
  2. 选择"Reload..."
  3. Sketchup 要求您提供用于更新的文件。选择 aComponent.skp -- 或其中包含同名组件定义的任何其他文件!

注意:如果您右键单击组件列表中的名称(见下图),这将不起作用。