以编程方式更改页面样式(场景),“Page.use_style =”不返回nil

时间:2013-03-13 14:32:40

标签: ruby sketchup

我想使用Style更改场景的Page(以编程方式称为SketchUp Ruby API)。

首先,我只是通过Ruby Console in SketchUp对此进行测试。为了清楚起见,我已将>运行的所有代码添加到前面。

假设我开始使用所有Styles

> styles = Sketchup.active_model.styles
#<Sketchup::Styles:0xad9cd08>

我在Style的“池”中添加了一个新的Styles,并检查我是否可以引用它

> styles.add_style("MyStyle.style", false)
true
> styles["MyStyle"]
#<Sketchup::Style:0xad6f45c>

当我尝试使用use_style=Style应用于Page(在SketchUp GUI中,Page称为场景时):

> pages = Sketchup.active_model.pages
#<Sketchup::Pages:0xad9cccc>
> pages[0].use_style?
true
> pages[0].style
#<Sketchup::Style:0xad7fdac>
> pages[0].style.name
[Design Style]
> styles["MyStyle"].name
MyStyle
> pages[0].use_style = styles["MyStyle"]
#<Sketchup::Style:0xad6f45c>

根据API文档,use_style= 应该始终返回 nil,所以我觉得这里有些不对劲。在任何情况下,以下是我在运行上述代码后从pages[0].style获得的内容:

> pages[0].style
#<Sketchup::Style:0xad7fdac>
> pages[0].style.name
[Design Style]

在API中查看了一下之后,我找到了Page的{​​{3}}方法。然而,尝试一下,产生了相同的结果。 (无论如何,我觉得这里不相关,因为我认为这是基于用户的当前观点。)

> pages[0].update(2)
true
> pages[0].style.name
[Design Style]

我是否遗漏了一些明目张胆的内容,或者API是否已被破坏?

(我正在运行SketchUp 8.0)

1 个答案:

答案 0 :(得分:1)

这应该有效:

styles.selected_style = styles["MyStyle"]
pages[0].update(2)

API文档并不总是正确的。有时候信息缺乏,有时候会让人感到困惑,有时候这是完全错误的。

Page.use_style=设置页面(现在称为SketchUp中的场景)是否存储样式。如果在“场景”工具窗口中选择页面(场景),则会看到一系列复选框,可用于保存摄像机,隐藏的几何图形,图层,剖面等。这是您设置的属性 Page.use_style=

例如,选择一个页面(场景)并对其进行引用 - 保持场景窗口打开并输入以下命令:

page.use_style = false
UI.refresh_inspectors

请注意,“样式和雾”复选框未被选中。另请注意,您需要调用UI.refresh_inspectors以便在设置此属性时更新UI。