通过更改底层 SketchUp 模型来更新 SketchUp 模型
Updating a Sketchup Model by changing an underlying sketchup model
我有一个 SketchUp 模型,它是通过导入其他三个模型文件创建的。我想更新三个基础模型文件之一。如果我编辑模型并再次物理导入,我必须花时间再次对模型进行物理定位。有没有办法更改底层模型并自动更新更高级别的模型?
虽然 SketchUp 没有 link 模型,而且您不能自动从一个模型更改为另一个模型(无论如何都没有插件),但有一种方法可以用不同的组件替换组件。您是否习惯使用 Ruby 控制台?如果是这样,请执行以下操作(请注意,这假定您的对象是组件!):
Select old 组件实例,您要替换的实例。
打开 Ruby 控制台(Window -> Ruby 控制台)。
键入以下内容(您必须选择旧实例):
old = Sketchup.active_model.selection.first
然后按回车键。
导入您的新对象(除非您已经拥有)并将其放置在场景中的某处(某处它不挡路并且您可以轻松找到它)。
Select new 组件实例,您刚刚导入的新对象
在 Ruby 控制台中键入以下内容(您必须选择新实例):
new = Sketchup.active_model.selection.first
然后按回车键。
现在,要用新组件替换旧组件,请在 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 本身中执行此操作。
- 在文件中保存组件 aComponent.skp
- 将组件导入您的工作文件,也许 workingFile.skp
更新组件(类似于 Autocad 中的 XREF)
每当您对 aComponent.skp 文件进行更改时,您需要做的就是进入 workingFile.skp 并在 OUTLINER 中找到您加载的组件(我在这里制作了一个名为 weirdThing 的组件),不是组件 window.
- 在 OUTLINER 中右键单击组件名称。
- 选择"Reload..."
- Sketchup 要求您提供用于更新的文件。选择 aComponent.skp -- 或其中包含同名组件定义的任何其他文件!
注意:如果您右键单击组件列表中的名称(见下图),这将不起作用。
我有一个 SketchUp 模型,它是通过导入其他三个模型文件创建的。我想更新三个基础模型文件之一。如果我编辑模型并再次物理导入,我必须花时间再次对模型进行物理定位。有没有办法更改底层模型并自动更新更高级别的模型?
虽然 SketchUp 没有 link 模型,而且您不能自动从一个模型更改为另一个模型(无论如何都没有插件),但有一种方法可以用不同的组件替换组件。您是否习惯使用 Ruby 控制台?如果是这样,请执行以下操作(请注意,这假定您的对象是组件!):
Select old 组件实例,您要替换的实例。
打开 Ruby 控制台(Window -> Ruby 控制台)。
键入以下内容(您必须选择旧实例):
old = Sketchup.active_model.selection.first
然后按回车键。
导入您的新对象(除非您已经拥有)并将其放置在场景中的某处(某处它不挡路并且您可以轻松找到它)。
Select new 组件实例,您刚刚导入的新对象
在 Ruby 控制台中键入以下内容(您必须选择新实例):
new = Sketchup.active_model.selection.first
然后按回车键。
现在,要用新组件替换旧组件,请在 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 本身中执行此操作。
- 在文件中保存组件 aComponent.skp
- 将组件导入您的工作文件,也许 workingFile.skp
更新组件(类似于 Autocad 中的 XREF)
每当您对 aComponent.skp 文件进行更改时,您需要做的就是进入 workingFile.skp 并在 OUTLINER 中找到您加载的组件(我在这里制作了一个名为 weirdThing 的组件),不是组件 window.
- 在 OUTLINER 中右键单击组件名称。
- 选择"Reload..."
- Sketchup 要求您提供用于更新的文件。选择 aComponent.skp -- 或其中包含同名组件定义的任何其他文件!
注意:如果您右键单击组件列表中的名称(见下图),这将不起作用。