发布说明
从SketchUp的早期开始,SketchUp的API就以某种方式存在了,随着每一个版本的发布,我们都扩展了其功能。请阅读以下内容,了解有哪些变化。
虽然我们对最新版本的采用率很高,但在发布之后,每个人都需要时间来进行升级。如果你正在构建依赖于最新版本功能的脚本,请务必检查Sketchup.version以确保你的用户能够运行你的脚本。
# 你在你的扩展的初始化程序中做这样的事情。version_required = 16
if (Sketchup.version.to_f < version_required)
UI.("你必须有Sketchup 20#{version_required}才能运行这个"\"扩展。请访问sketchup.com来升级。")
else
# 你的代码...end
版本号
以下是最近SketchUp发布的版本的构建号。请注意,除了英语以外的语言,每个版本的版本号都比较大,所以最好是检查大于或等于这里的数字的版本。
-
SU2022.0.1=22.0.354 在Windows 64位上,22.0.353 在Mac 64位上。
-
SU2022.0= Windows 64位上的22.0.316,Mac 64位上的22.0.315。
-
SU2021.1.2= Windows 64位的21.1.332,Mac 64位的21.1.331。(不包含任何Ruby API变化)
-
SU2021.1.1= Windows 64位上的21.1.299,Mac 64位上的21.1.298。
-
SU2021.1= Windows 64位上的21.1.279,Mac 64位上的21.1.278。
-
SU2021.0.1= Windows 64位上的21.0.391,Mac 64位上的21.0.392。(不包含任何Ruby API变化)
-
SU2021.0= Windows 64位上的21.0.339,Mac 64位上的21.0.338。
-
SU2021.0= Windows 64位上的21.0.114,Mac 64位上的21.0.113。
-
SU2020.2= Windows 64位上的20.2.172,Mac 64位上的20.2.171。
-
SU2020.1.1= Windows 64位上的20.1.235。(不包含任何Ruby API变化)
-
SU2020.1= Windows 64位上的20.1.229,Mac 64位上的20.1.228。
-
SU2020.0= Windows 64位上的20.0.133,Mac 64位上的20.0.134。
-
SU2019.3=Windows 64位上的19.3.253,Mac 64位上的19.3.252。
-
SU2019.2=Windows 64位上的19.2.222,Mac 64位上的19.2.221。
-
SU2019.1=Windows 64位上的19.1.174,Mac 64位上的19.1.173。
-
SU2019=Windows 64位上的19.0.685,Mac 64位上的19.0.684。
-
SU2018 M1= Mac 64位上的18.1.1180。(不包含任何Ruby API变化)
-
SU2018= Windows 64位上的18.0.16975,Mac 64位上的18.0.16976。
-
SU2017= Windows 64位上的17.0.18899,Mac 64位上的17.0.18898。
-
SU2016= 16.0.19912 在Windows 64位,16.0.19911 在Windows 32位,16.0.19913 在Mac 64位。
-
SU2015 M2= 15.2.685 在 Windows 64 位上,15.2.687 在 Windows 32 位上,15.2.686 在 Mac 64 位上。
-
SU2015 M1= 15.1.106 在 Windows 64 位,15.1.105 在 Windows 32 位,15.1.104 在 Mac 64 位。
-
SU2015=Windows 64位上的15.0.9350,Windows 32位上的15.0.9351,Mac 64位上的15.0.9349。
-
SU2014 M1#NAME?
-
SU2014#NAME?
-
SU2013 M2= 13.0.4812 在Windows上,13.0.4811 在Mac上。
-
SU2013 M1= 13.0.4124 在Windows上,13.0.4123 在Mac上。
-
SU2013= 13.0.3689 在Windows上,13.0.3688 在Mac上。
-
SU8.0 M2#NAME?
-
SU8.0 M1#NAME?
-
SU8.0#NAME?
-
SU7.1 M2#NAME?
-
SU7.0 M1#NAME?
-
SU7.0#NAME?
-
SU6 M6#NAME?
SketchUp 2022.0.1中的新内容
修复了Ruby API的错误
-
在SketchUp 2022.0中,一个错误可能导致一个可用的名字被错误地重命名。或者一个应该不可用的名字被重复了。这在SketchUp 2022.0.1中得到了修复。
SketchUp 2022.0中的新内容
实体生成器
我们增加了一个新的接口。Sketchup::EntitiesBuilder,目的是能够以类似于Geom::PolygonMesh的速度生成批量几何图形。Geom::PolygonMesh+Sketchup::Entities#fill_from_mesh的速度生成大量的几何体,但同时又具有Sketchup::Entities提供的简单性和每个实体的控制。这对导入者来说特别有用,你可以期望通过从Sketchup::Entities#add_face到Sketchup::EntitiesBuilder#add_face。
Mac上的通用二进制支持
我们现在支持macOS上的通用二进制文件,可以在苹果芯片和基于Intel的Mac电脑上原生运行。
更新OpenSSL到1.1.1l
Ruby中的OpenSSL版本已经更新到了1.1.1l。
使Ruby控制台的输出更加一致
早期版本的SketchUp对Ruby Console命令的返回值的打印因平台不同而不同。这已经按照Ruby自己的IRB工具的模式变得一致了。这样做的一个副作用是,控制台现在使用.expect
而不是.puts
来打印返回的值,这使得它在许多情况下不那么含糊。比如说nil
与""
在这两种情况下都会打印一个空行。
Ruby API的增加和改进
-
添加了方法重载到Sketchup::ComponentDefinition#save_as允许用旧版本的文件格式保存定义
-
增加了Layout::AutoTextDefinition#number_style, 被废弃的Layout::AutoTextDefinition#page_number_style
-
添加了方法Layout::AutoTextDefinition#number_style=, 已废弃Layout::AutoTextDefinition#page_number_style=
-
添加了方法UI::Command#proc
-
添加了方法UI::命令#extension=
Ruby API的错误修正
-
修正了一个在UI::HtmlDialog#initialize的错误其中
max_height
和max_width
被调换了,当use_content_size
被设置为true
。 -
修正了一个错误,即UI::HtmlDialog的位置被不正确地设置,当
use_content_size
被设置为true
。 -
修正了一个在UI::HtmlDialog中的错误。
use_content_size
没有被持久化(当preference_key
被设置时)。由于这个bug,在某些情况下,HtmlDialog在被重新创建时改变了尺寸。 -
修正了Mac上的一个bug,在这个bug中,HtmlDialog的大小和位置都会改变。UI::HtmlDialog的大小和位置没有被保留下来。UI::HtmlDialog窗口时,SketchUp 的尺寸和位置不会被保留。
-
修正了一个在UI.savepanel的崩溃,当Mac系统下使用带
*
前缀的文件名时。response = UI.savepanel('Save Image', nil, '*.png')
. -
修正了 "EntityInfo "不是一个支持的参数,用于UI.show_inspector
-
修正了 "EntityInfo "没有被列在UI.inspector_names
-
修复了Sketchup::Face#uv_tile_at在某些边线情况下可能会返回不正确的值。
SketchUp 2021.1.1中的新内容
修复了Ruby API的错误
-
修复了退步在UI::HtmlDialog的回归,在这个问题上,JavaScript'的
sketchup
对象上的方法,在离开初始页面后,注册的动作回调就不见了。
SketchUp 2021.1中的新内容
Upgrade Ruby to 2.7.2
对于SketchUp 2021.1,我们将SketchUp中的Ruby版本从2.7.1升级到2.7.2。
值得注意的是bug-fix in Ruby 2.7.2是纠正了一个错误,该错误使ruby-prof等分析工具无法报告正确的结果。
更新OpenSSL到1.1.1k
Ruby中的OpenSSL版本已更新至1.1.1k。
Ruby 控制台的改进
-
Ruby 控制台现在可以在不同时段记住其可见性。
-
Ruby 控制台已从 Windows 菜单移至新的 Developer 菜单。
RubyAPI的增加和改进
-
升级了CEF(由UI::HtmlDialog) to version 88.
-
添加了键
use_content_size
到UI::HtmlDialog#initialize -
添加了方法Sketchup.focus
-
添加了方法重载到Sketchup::Face#position_material允许应用投影材料。
-
添加了方法重载到Sketchup::ComponentInstance#glued_to=允许胶合到图片组和组件。
-
增加了以下的显示时间UI::Notification的显示时间增加到10秒。
-
当一个菜单第一次被添加到顶层菜单时,添加一个分隔符。这在内置菜单和扩展的菜单之间创造了视觉上的区别。
-
增加了对向 "开发 "菜单添加子菜单的支持。
-
Geom::PolygonMesh现在在大网格中查找点时更快。这也提高了向大网格添加点时的性能。请注意,网格的创建需要有一个估计的总点数,以使这个性能改进生效。大网格中的点的查找现在是O(logN)而不是O(N^2)。
Ruby API的错误修正
-
修正了将无效的参数传递给Sketchup::Model#drawing_element_visible?。
-
修复了UI::HtmlDialog#bring_to_front在Mac上,调用该方法将焦点放在HtmlDialog上。这使得该方法的行为与 Windows 上的一致。
-
修正了UI::HtmlDialog#set_size和UI::HtmlDialog#set_position在 Windows 上,这样,调用这些方法就不会将焦点放在 HtmlDialog 上。这使得该方法的行为与Mac上的一致。
-
修正了UI::HtmlDialog#set_can_close的实现,以便提供的回调可以正确地防止窗口关闭。
-
修正了在Sketchup::Image#image_rep的崩溃。
-
修正了UI.show_model_info在Mac上不显示所选页面。
-
修正了UI.show_model_info不支持Mac上本地化版本的英文页面名称。
SketchUp 2021.0中的新内容
Upgrade Ruby to 2.7.1
对于SketchUp 2021.0,我们将SketchUp中的Ruby版本从2.5.5升级到2.7.1。开发人员应该验证他们的扩展在新版本的Ruby中是否能如期工作。
Ruby API的增加和改进
-
添加了方法签名到Sketchup::Page#set_visibility:
Sketchup::Page#set_visibility(layer_group, visibility)
-
添加了方法重做(Sketchup.redo
-
添加了新的方法签名到Sketchup.open_file:
Sketchup.open_file(filename, with_status: true)
如果SketchUp的文件格式比较新,这个签名将打开新的SketchUp文件格式。 -
废弃的旧方法签名:
Sketchup.open_file(filename)
因为打开一个较新的文件格式可能会导致数据丢失,所以扩展开发者必须明确地迁移到新的签名。这是为了确保没有扩展在不知道潜在数据丢失的情况下无意中打开和保存文件。 -
添加了新的方法签名到Sketchup::DefinitionList#load:
Sketchup::DefinitionList#load(filename, allow_newer: true)
-
添加了方法Sketchup::SCP.read_guid读取模型的指南,而不必在SketchUp中打开它。
-
更新了OpenSSL到1.1.1g。
RubyAPI的错误修正
-
修正了Sketchup::Texture#filename这样,当内部纹理文件名缺少扩展名时,它会附加一个与它所加载的数据格式相匹配的文件扩展名。
SketchUp 2020.2中的新内容
Ruby和C交换API
为了使Ruby API和C API在SketchUp应用程序中具有更好的互操作性,我们引入了在API之间交换实体和图像代表的能力。
实体是因为它是一个关键类型,而ImageRep是因为它可能是一个昂贵的复制对象。
-
SUEntityToRuby
-
SUEntityFromRuby
-
SUImageRepToRuby
-
SUImageRepFromRuby
更多细节请参考C语言API文档。
Ruby API的增加和改进
Ruby API的错误修正
-
修正了Unicode字符在Ruby Console中不能正确显示的问题。
-
修正了在UI::HtmlDialog的崩溃,当打开对话框后立即关闭时。
-
修正了DWG导入选项。
:preserve_origin
被忽略了。
SketchUp 2020.1中的新内容
RubyAPI的增加和改进
-
修正了以下错误Layout::LinearDimension#text中的错误,即复制的显示文本会返回纯文本
-
修正了在Layout::AngularDimension#text中的错误,在这个错误中,复制件的显示文本会返回纯文本
-
修正了以下问题Layout::SketchUpModel#current_scene和Layout::SketchUpModel#current_scene_modified?意外地引发一个断言,指出 "最近选择的场景不再存在"
SketchUp 2020.0中的新内容
RubyAPI的添加和改进
-
增加了Geom.tesselate可以接收一组循环点并返回三角形集。
-
增加了可选的
:normals
参数到Sketchup::View#draw的可选参数,允许在绘制多边形时使用照明。 -
增加了用以下方法绘制有纹理的多边形的能力Sketchup::View#draw和Sketchup::View#draw2d
-
增加了可选的
:uvs
和:texture
参数到Sketchup::View#draw和Sketchup::View#draw2d。 -
增加了垂直对齐文本的能力,用Sketchup::View#draw_text. 新的选项参数
:vertical_align
可以被设置为以下值之一。TextVerticalAlignBoundsTop,TextVerticalAlignBaseline,TextVerticalAlignCapHeight或TextVerticalAlignCenter。 -
已添加Sketchup::View#text_bounds返回SketchUp用于绘制文本的区域的边界盒。Sketchup::View#draw_text。
-
增加了Sketchup::Model#actual_path= 。以允许API打开一个实例路径供用户编辑。
-
增加了新的单位常量。
-
已添加
AreaPrecision
和VolumePrecision
到Sketchup.active_model.options["UnitsOptions"]
-
添加了Sketchup::Layer#display_name- 这将返回
"Untagged"
为layer0,而旧的Sketchup::Layer#name将继续返回"Layer0"
。 -
额外的实体类型现在返回PID为Sketchup::Entity#persistent_id:
-
废弃的Sketchup::ComponentDefinition#inserttion_point和Sketchup::ComponentDefinition#insertion_point=因为这个功能在SketchUp中被移除。它现在返回定义的原点,setter现在是一个noop。
Ruby API错误修复
-
修正了在UI::HtmlDialog'的回调中可能出现的崩溃,原因是这些值没有受到Ruby'垃圾回收的保护。
-
修正了模型验证时,错误地将一些有效的UV映射标记为无效,并将其重置。
SketchUp 2019.3中的新内容
Ruby API的错误修复
-
(Win) 更新了libcrypto和libssl dlls到1.1.1c。
-
修复了UI.openURL在Mac上不执行URL编码,以实现跨平台一致性。
SketchUp 2019.2中的新内容
RubyAPI的增加和改进
-
增加了
:scale_factor
选项到Sketchup::View#write_image允许控制视口相关元素的比例,如文本高度、箭头头、线宽、纹饰图案等。 -
记录了
:source => :framebuffer
选项在Sketchup::View#write_image that dumps the current frame as drawn in viewport. This has existed since SketchUp 7 -
添加了新的面积和体积单位设置到Sketchup::OptionsProvider
-
添加了常数到长度类的常量,以便与OptionsProvider一起使用面积和体积单位。
-
增加了检查,以防止图像材料被分配给普通绘图元素。这样做现在会抛出一个
ArgumentError
-
提高了彩色材质的PNG图像导出的性能。以前,它曾经使用最大压缩。现在我们使用一个更平衡的压缩设置。这影响到了Sketchup::Texture#write以及纹理写入器。我们还添加了一些一般性的优化,用于Sketchup::Texture#write. 在4Kx4K纹理上,我们看到处理时间从~50秒下降到~6秒。
-
添加了Sketchup::Tool#onMouseWheel事件到Sketchup::Tool接口添加了Sketchup::Tool#onMouseWheel事件。
Ruby API错误修复
-
将Ruby从2.5.1更新到2.5.5,以解决Ruby中的一个逻辑错误。
-
修正了以下可能的崩溃Sketchup::Entities#clear!
-
修复了.skm序列化中的一个bug,即材料属性中的数组没有被写到文件中。
SketchUp 2019.1中的新内容
Ruby API的错误修正
-
修正了 "点 "的可接受类型。Sketchup::Entities#add_text
-
修复了Sketchup::Model#save为
VERSION_2019
-
修正了当
rendering_options["RenderMode"] = 4
SketchUp 2019的新内容
Upgrade to Ruby 2.5.1
我们已经从Ruby 2.2.4升级到Ruby 2.5.1。这些升级往往会给Ruby语言带来微妙的变化,有时我们在内部测试中很难发现。我们的测试没有发现Ruby 2.2.4和新的2.5.1之间有任何重大的兼容性问题,我们希望大多数开发者的升级应该是相对直接的。请注意,任何已编译的C语言扩展将需要重新构建。确保OpenSSL库的调用是兼容的。
破折号
斑点和圆点以及点状斑点,哦,我的天! SketchUp增加了一个Dashes功能,允许在图层级别应用和控制独特的线条风格。我们已经在Ruby和C语言API中展示了这个新功能。参见每个API的改进和修复部分,了解我们增加的类和方法的清单。关于如何使用这些功能的完整文档,请参见每个API的文档。
尺寸和文本的InstancePath支持
在SketchUp 2019中,我们增加了Sketchup::InstancePath支持到我们现有的支持了Sketchup::DimensionLinear和Sketchup::Text类的支持。现在,当创建一个线性尺寸或一个附加的文本对象时,你可以通过提供一个有效的InstancePath
对象,或一个实例路径的数组版本,就可以将其附加到一个嵌套实体上。这将允许你在模型空间中创建一个尺寸,但将其附加到一个有效的嵌套实体。线性维度或文本将被附加到该实体上,这与通过用户界面创建线性维度和文本时的情况完全一样。
Ruby API 破坏性变化
-
SketchUp改变了它显示单位的方式。现在它在数字和单位指示器之间添加了一个空格。如果你的扩展使用你自己创造的方法来解释SketchUp格式化的字符串,你可能会发现,如果你不考虑额外的空间,它就不能工作了。比如说。
-
2019年之前。
"2.5mm"
-
现在是2019年。
"2.5毫米"。
-
Ruby版本升级--Ruby 2.5删除了方法。
Dir::Tmpname.make_tmpname
. 如果你在使用这个方法,你需要找到一个替代方法 -
Sketchup::Entity#delete_attribute不再返回
true
当试图删除一个不存在的字典键时,不再返回true。
Ruby API的增加和改进
-
将Mac和Windows的Ruby版本从2.2.4升级到2.5.1。
-
升级了 CEF(用于UI::HtmlDialog) to version 64.
-
添加了Sketchup::Tools#active_tool返回活动的Ruby工具
-
添加了
import_materials
选项到Sketchup::Model#import的选项。 -
增加了对实例路径的支持Sketchup::Entities#add_text
-
改进了String#to_l它解析了一个String成一个Length现在能够解析数字和单位之间有空格的字符串。它可以同时解析
"2.5mm"
和"2.5 mm"
-
改进后的Sketchup::InstancePath现在可以接受一个包括Sketchup::Image对象的路径
Ruby API的错误修正
-
修正了在Mac上退出时,当一个Sketchup::FrameChangeObserver处于活动状态时的崩溃
-
修正了一个问题,即Sketchup::Model可能会在调用
.singleton_class
. -
修正了Ruby创建的尺寸在非关联的情况下不高亮。
-
修正了当 "Hide Foreshortened "被激活时,Ruby创建的尺寸不能正确隐藏。
-
修正了 SketchUp 在构建Geom::PolygonMesh的时候,SketchUp会崩溃。
-
修正了Ruby DWG导入器的单位不正确的问题。
-
修复了Geom::PolygonMesh将不接受负数作为参数
-
修复了在High Sierra上以非决定性的顺序加载扩展程序的问题。
-
修正了SketchUp在试图加载较新版本的组件时崩溃的问题。
-
修正了关于
merge_coplanar_faces
的拼写错误(为兼容起见,保留旧的拼写)。 -
修正了SU2018中重命名相同名称的材料时的退步。这在过去会产生一个错误,而它本应是一个无用功。
-
修正了 SU2018 中的退步,即
model.materials["MaterialName"]
可能会失败 -
修正了在加载较新版本的 SketchUp 中制作的组件时出现的崩溃。
-
修正了Windows上Ruby Console中的unicode字符。
-
修正了修正了 UI::HtmlDialog这样,不可调整大小的对话框就不会使用偏好中的宽度和高度。
-
Sketchup::View#write_image如果有5个以上的参数传入,应该抛出一个错误。
-
修复了UI::HtmlDialog的内容在调整大小时闪烁。
SketchUp C API 文档
-
更新了关于VC++运行时版本的SDK文档。
用于SketchUp的LayOut Ruby API
-
添加了Layout::Document#save现在会在文件已经在LayOut中打开的情况下抛出一个错误。
-
已添加Layout::Path#winding来获取路径的当前卷绕方向。返回新的常量之一Layout::Path::PATH_WINDING_NONE,Layout::Path::PATH_WINDING_CLOCKWISE, 或Layout::Path::PATH_WINDING_COUNTER_CLOCKWISE。
-
已添加Layout::SketchUpModel#dash_scale来获取SketchUp Model Ref中斑点的当前比例值。值为0.0时,表示冲线的比例是根据线的重量自动确定的。
-
已添加增加了Layout::SketchUpModel#dash_scale=的功能。来设置SketchUp模型参考文献中斑点的比例值。如果数值在0.0或以下,将导致比例自动由线重决定。
-
修复文件Layout::Path#append_point. 当添加bezier路径段时,参数应该是(
control_1, control_2, point
),而不是(point, control_1, control_2
)。
SketchUp 2018 M0中的新内容
用于SketchUp的LayOut Ruby API
这是一个新的基于Ruby的SketchUp API,允许开发人员使用常规的SketchUp Ruby API来读写LayOut文件。我们已经采取了现有的LayOut C API,并用Ruby层将其包裹起来,然后将其包含在SketchUp内。这被证明是一个很好的工作模式,即如何将API功能暴露在我们的基础C API中,然后将该功能准确地暴露在Ruby层中而不重复代码。
Sketchup.send_to_layout
随着LayOut Ruby API for SketchUp的推出,我们增加了用LayOut应用程序打开LayOut文件的能力。这使开发人员能够纯粹用Ruby编写一个SketchUp扩展,解析SketchUp模型,编写LayOut文件,并在LayOut中顺利打开LayOut文件。这有助于在SketchUp和LayOut之间建立更强大的联系,并能通过使用开发人员创建的扩展来改善用户的工作流程。
ImageRep
你好,Ruby API开发者,请见Sketchup::ImageRep. 这个新类暴露了SketchUp内部的一个数据结构,称为的数据结构。
.ImageRep
是一个图像的内存表示(而不是对SketchUp模型中的图像的引用)。这个类向Ruby API暴露了许多图像阅读和操作工具。现在你可以在一个指定的uv坐标上获得一个像素的颜色。ImageRep
中获取一个数组的所有像素数据,从一个ImageRep
中设置像素数据。ImageRep
, 保存一个ImageRep
到磁盘,以及更多。当然,我们还包括将模型中的纹理转换为一个ImageRep
的工具,并将一个ImageRep
对象直接分配给一个材质作为该材质的纹理。这个新的类为读取和处理模型中的图像提供了很多机会。请看ImageRep
类,了解更多信息。
在Ruby API中公开了导入器/导出器选项
我们已经将我们的本地导入器和导出器的所有选项暴露给Ruby。参见Ruby API文档中的Sketchup::Model#import和Sketchup::Model#export.
API中新的SketchUp功能
为SketchUp核心团队对SketchUp应用程序所做的改进表示热烈的掌声。那么,我们也想确保这些新功能能被我们的开发者社区使用。我们已经为命名的剖面图和填充的剖面图引入了新的API功能。棒极了
高级属性的Ruby处理
SketchUp核心添加了一个名为高级属性的功能。这为每个模型的组件实例和定义默认添加了一些新的属性字典和属性。应该注意的是,我们已经阻止了通过Ruby删除字典的能力。这应该是不可能的,如果你发现你能够这样做的情况,请让我们知道。然而,你可以删除键/值对。如果这些键值对不存在,用户界面将重新创建它们。
鲁比的改进和修复
-
升级了CEF(由UI::HtmlDialog) to version 56.
-
添加了方法。UI.refresh_toolbars
-
添加了常量给Geom::PolygonMesh:
-
已添加Sketchup::Page方法:
-
已添加Sketchup::SectionPlane方法。
-
已添加Sketchup::ImageRep类。
-
已添加Sketchup::Material#texture=以接受Sketchup::ImageRep对象作为其使用的数据类型之一。
-
增加了对填充截面切割的渲染选项支持。
-
Sketchup::RenderingOptions键添加:
-
"SectionCutFilled"
-
"SectionDefaultFillColor"
-
-
Sketchup::RenderingOptionsObserver常量:
-
ROPSetSectionCutFilled
-
ROPSetSectionDefaultFillColor
-
-
增加了所有3D导出器和导入器的选项
错误修正
-
破坏性变化#NAME?Sketchup::Material#name=中的一个错误,该错误允许API创建具有重复名称的材料。现在它将引发
ArgumentError
如果它对模型来说不是唯一的。 -
突破性变化#NAME?Sketchup::Color类在LayOut和SketchUp之间是通用的。潜在的破坏性变化是Sketchup::Color改为现在比较RGBA值而不是Ruby对象。
-
破坏性变化#NAME?Geom::Transformation#identity?所以它现在可以正确地返回
true
在所有变换矩阵与同一性变换的值相匹配的情况下都会正确返回true。 -
修正了
Geom::Transformation.scaling(float)
和Geom::Transformation#initialize(float)
不设置矩阵的第15分量,而是调整其他字段。 -
修正了当试图调用Sketchup::View#animation=时崩溃。从Sketchup::Animation#stop
-
修正了一个崩溃,当调用UI.menu时的崩溃。
-
Sketchup::Pages#erase现在会正确删除场景标签,就像UI那样。
-
修正了一个在Sketchup::ArcCurve#end_angle中的一个错误,它有时会在返回值上增加360度。
-
修正了一个问题,在Windows下,由于描述中的管道字符,Ruby导入器可能导致导入文件对话框不正确地呈现下拉项目。
-
修正了一个崩溃,当使用
-RubyStartup
命令行参数时的崩溃,该参数在加载文件时引发了错误。 -
修正了一个在UI.create_cursor中的崩溃,如果长度小于4个字符就会发生。
-
修正了一个罕见的崩溃,在Sketchup::MaterialsObserver。
SketchUp 2017 M0中的新内容
Ruby 2.2
是的,又到了这个时候 - 是时候更新我们的Ruby解释器了。我们已经升级到Ruby版本2.2.4。我们希望使用纯Ruby的扩展能够升级到Ruby 2.2,而不会有什么困难。请注意,任何已编译的C语言扩展将需要重新构建。
嵌入式网络框架
我们对SketchUp 2017最感兴趣的开发者功能之一是一个新的Web Dialog框架。对于SketchUp 2017,我们将Chromium网络浏览器与SketchUp安装程序捆绑。什么?是的,现在SketchUp预装了一个适用于Mac和Windows客户端的单一网络浏览器。在试图使你的网页与Internet Explorer 8-11和Safari兼容时,不再有以头撞墙的创伤了。
为了保持向后兼容,我们在Ruby API中实现了一个新的HtmlDialog类,我们没有改变现有的WebDialog类。使用WebDialogs的扩展应该继续工作,不需要任何改变。
新的Ruby API文档
我们一直在努力改进我们的Ruby API文档和发布过程。我们从内部调整和维护的RDoc版本切换到YARD来生成文档。在这个过程中,我们不得不在源代码中对我们的文档进行许多改动,我们做了一个专门的YARD模板来满足我们的需求。我们现在拥有的是一种简单的方法,可以在几秒钟内重新生成文档,而且我们可以将它们推送到git repo,在那里它们可以立即公开使用。过去需要花费数小时的手动HTML编辑和对Sketchup.com网络服务器的特殊访问,现在已经减少到大约10分钟的过程来生成和发布文档。
SketchUp C API平价 - 继续
我们在2017年专注于增加SketchUp C API的功能,为我们的开发人员提供更大的利益,并作为我们继续努力的一部分,在未来完全废弃和删除旧的C++ API。我们将继续增加更多的功能,直到我们获得足够的覆盖面,使C API与被废弃的C++ API的功能相提并论。
更新的编译器
我们更新了Windows和MacOS的编译器。在Windows上,我们现在使用Visual Studio 2015 SP1(以Windows 7为目标)。在MacOS上,我们使用XCode 7.2.1(部署目标为10.10)。
新的Ruby API功能
-
添加了类UI::Notification
-
添加了方法UI.scale_factor
错误修复/小的改进
Ruby API
-
修正了Sketchup::Entities#transform_by_vectors以使其对第二个数组进行边界检查。一个
参数错误
如果第二个数组的项目少于第一个数组,则会引发ArgumentError。 -
增加了以下功能UI::HtmlDialog可以使用回调接收JavaScript数组和对象。
-
删除了一个UI::HtmlDialog的限制,即回调需要至少有一个参数。现在不需要参数了。
-
UI.show_model_info不再打开一个模型信息页面给
"扩展"
因为该页面现在被扩展管理器对话框所取代。
SketchUp 2016 M0中的新内容
一个新的LayOut API
我们很自豪地宣布,我们向LayOut的扩展生态系统迈出了第一步。使用这个新的API,开发人员现在可以打开、创建、修改、保存和导出.布局文件。实际上,这意味着其他应用程序可以使用C API导入或导出.layout文件格式。(这包括从SketchUp创建一个.layout文件)。我们有几个样本脚本供开发人员在发布时试用。请查看开发者中心的API文档。开发者中心获取更多信息。
数字签名扩展--扩展加载政策
在SketchUp 2016中,我们为用户引入了选择他们想要使用的扩展加载策略的功能。这些选项是 "仅识别的扩展"、"批准未识别的扩展 "和 "不受限制"。
这一功能的开发者方面被称为数字签名。所有2016年或更高版本的SketchUp扩展现在都需要数字签名才能在最高安全模式下运行--"仅识别的扩展"。如果用户选择了 "批准未识别的扩展",那么所有已签署的扩展将自动加载,任何未签署的扩展都必须由用户批准。所有已签署和未签署的扩展将以 "不受限制 "的模式加载。
SketchUp 2016 M0默认安装在 "不受限制 "模式下。
要对您的扩展进行数字签名,只需将您的.rbz包上传到我们新的数字签名和加密页面,我们将对其进行签名并返回给您。访问新的扩展程序数字签名页面。
每次你对代码进行修改并想重新发布时,你都需要签署你的扩展。您将需要成为扩展仓库的注册开发者,以便能够签署或加密扩展。在这里申请!
Ruby加密2.0
再见.rbs,你好.rbe! 我们增加了一种新的加密方式,您可以用它来帮助保护您的扩展知识产权(IP)。SketchUp 2016可以读取.rbe和.rbs两种文件类型。这应该有助于确保我们为那些需要一些时间来重新加密其扩展的作者保持向后的兼容性。要使用我们的新加密技术,只需将您的.rbz包的未加密版本上传到我们新的数字签名和加密页面,我们将对其进行加密并返回给您。访问新的扩展数字签名页面页面了解更多信息。
你将需要成为扩展仓库的注册开发者,以便能够签署或加密扩展。在这里申请!
开发者中心
在新的扩展数字签名页、新的LayOut C API和一大堆未来的想法和潜力之间,我们决定创建一个新的中心位置来组织我们的开发者资源、API文档等。访问(和书签!)。extensions.sketchup.com/en/developer_center
观察者升级
我们一直在努力寻找方法,使观察员对所有开发者来说更加稳定和可靠。这些变化大多发生在引擎盖下,对开发者来说并不完全可见。为了帮助解决这个问题,我们增加了一些出现在Ruby Console中的Ruby警告,以及两个调试方法,它们将决定是否显示这些警告。Sketchup.debug_mode=和Sketchup.debug_mode?.
-
观察者事件现在被排队,直到活动操作完成。
-
Sketchup::ModelObserver不会通知中间的Ruby操作("事务")。
-
观察者不应该再为实体返回僵尸Ruby对象。更多信息请参见 Observers 2016 pdf。
-
为了提高性能,从所有观察者基类中删除了假方法。这个pdf更深入地了解我们对观察者所作的改变。
SketchUp C API平价 - 继续
在2016年,我们专注于增加SketchUp C API的功能,为我们的开发人员提供更大的利益,并作为我们继续努力的一部分,在未来完全废弃和删除旧的C++ API。以下是我们在2016年增加的功能的完整列表。我们将继续增加更多的功能,直到我们获得足够的覆盖面,以考虑C API与被废弃的C++ API在功能上的平等。
新的Ruby API
-
添加了可选参数给Sketchup::View#draw_text的可选参数,定义了绘制文本的外观。
-
增加了Sketchup::Axes类,在SketchUp中通过Sketchup::Model#axes和Sketchup::Page#axes.
-
已添加Sketchup::Model#export来导出pdf文件。这是一个矢量导出,而不是用pdf容器包装的栅格化图像。
-
UI::Command类和UI.create_cursor被修改为接受矢量格式(Windows下为SVG,OSX下为PDF)。工具栏和光标现在都可以接受矢量图标。
-
增加了两个方法来协助调试扩展。Sketchup.debug_mode=和Sketchup.debug_mode?将允许开发者切换以下通知的显示。
-
Ruby Console现在对Ruby操作的开放提出警告。保持开放的操作通常是一种不好的做法。我们警告开发者,他们应该尝试找到一种不同的方式来做他们想做的事情。
-
当用户试图创建一个嵌套操作时,Ruby Console现在会发出警告。在一个操作仍在打开的情况下开始一个新的操作是一种不好的做法。我们希望开发者能更多地意识到他们正在这样做,以便他们能修正他们的代码。
错误修复/小的改进
-
修正了Sketchup::Pages#erase这样它就不会再错误地创建撤销操作了。
-
删除了有曲线的僵尸实例。更多信息请看观察者 2016 pdf。
-
修正了以下问题Sketchup::ViewObserver在平行投影模式下使用缩放工具时不启动的问题。
-
废弃了Piranisi .epx的导入
-
通过对Windows和Mac的库更新解决了IFC导入失败问题。
-
修正了Collada导出:camera_lookout值失败的问题,信息是 "被释放的指针从未被分配"。
-
修正了Collada导出不导出相机的问题
-
解决了扩展描述框的多个视觉缺陷。
-
Sketchup.version_number现在返回正确的值。
SketchUp 2015 M2的新内容
我们修复了Mac上的一个崩溃,该崩溃可能发生在通过终止定时器时可能会发生崩溃。来停止定时器时,可能会发生崩溃。
SketchUp 2015中的新内容
重新命名 "插件 "菜单
我们将 "插件 "菜单重新命名为 "扩展",以便与我们目前的命名惯例更加一致。这应该不会破坏现有的插件。在 "插件 "菜单中添加一个菜单项仍然有效,它将被添加到 "扩展 "菜单中。
新功能!--扩展许可API
我们为API添加的新功能之一是创建授权扩展的能力。扩展仓库已经升级,以管理和分发这些许可证。
新!--分类器API
-
这些类和方法是结合已经在SketchUp用户界面上实现的分类器工具而添加的。
新的API功能
-
已添加
"DisplaySectionCuts"
到RenderingOptions中 -
添加了
"DrawBackEdges"
到RenderingOptions中 -
添加了
"SectionCutDrawEdges"
到RenderingOptions中
对我们的Ruby API的64位相关修改
-
Length不再派生自
Float
. 在2015年,它的作用应该和以前的SketchUp版本一样,这也是我们64位升级变化的一部分。 -
我们已经将
GEM_PATH
和GEM_HOME
目录分开,用于32位和64位的构建。
开发人员的Webdialog JS错误对话框
在Windows上的SketchUp以前的版本中,只要网页上有畸形的js代码,用户就会看到javascript错误弹出框。我们在以前的版本中对这些弹出框进行了静音处理。应广大用户的要求,我们又把它们带了回来,这次只针对开发者。开发人员可以通过在他们的Windows注册表中创建这个键来启用js错误弹出窗口。HKEY_CURRENT_USER/Software/SketchUp/SketchUp 2015/WebDialogs/ShowErrorDialogs
并添加一个DWORD
值设置为1
.
错误修复和改进
-
我们现在将初始工作目录设置为用户的文档目录。
-
恢复了
$0
以返回"SketchUp"。
as it did prior to SketchUp 2014. -
修正了以下错误
point3d.vector_to(inputpoint)
会返回不正确的结果。 -
清理了在Sketchup::Edge中使用的不一致的操作名称和ID。Sketchup::Edge类中使用的不一致的操作名称和ID。
-
修正了工人线程对Ruby的内部调用导致的崩溃。
-
防止了在Sketchup::Importer#loading中发生未捕获的Ruby错误时的崩溃。Sketchup::Importer#load_file
-
Geom::BoundingBox#corner现在当给定一个不正确的索引时,会引发IndexError。
-
修正了一个错误,即Geom::BoundingBox#intersect可能会产生不正确的结果。
-
修正了一个错误,即Geom::BoundingBox#intersect不接受顶点或包围盒的数组的错误。
-
修正了一个错误,即Geom::PolygonMesh#normal_at将不会返回正确的顶点法线,如果模型在与获取 PolygonMesh 的脚本相同的处理循环中被修改。
-
修正了一个bug:当方法作用于数组时,冻结的数组可能会引发错误,即使该方法没有修改该数组。
-
修正了一个 Bug,即 InputPoint 对象在某些情况下可能会导致崩溃。
-
将 Program Files 文件夹中的分类文件夹从
C:\Program Files (x86)\SketchUp\SketchUp 2015\Classifications
改为C:\Program Files (x86)\SketchUp\SketchUp 2015\ShippedClassifications
. 现在Sketchup.find_support_file("Classifications")
将返回用户文件夹中的分类文件夹,而不是应用程序文件夹中的。 -
设置材料时Sketchup::ModelObserver#onPreSaveModel期间设置材料,在SU2014中不起作用。这应该在2015年得到修复。
-
Sketchup::ViewObserver通知在平行投影时曾经失败。这已被修复。
-
自定义工具中的自定义上下文菜单得到了改进。现在有可能在打开上下文菜单之前确定被点击的实体的类型。因此可以编写自定义上下文菜单,以不同的方式处理不同类型的实体。
-
爆炸一个图像实体现在会返回一个实体数组。这些实体包括所有相关的边、面、边缘使用对象等。以前它返回一个空数组。
-
修正了一个错误,即
view.draw(GL_LINES, ...)
在传递奇数的点时崩溃的错误。 -
HTTPS连接现在应该可以在Windows上使用
'net/https'
.
SketchUp 2014 M1的新内容
-
修正了在任何Ruby工具激活时导出动画时发生的崩溃。
-
修正了一个Sketchup::EntityObserver中Sketchup::EntityObserver#onEraseEntity的崩溃,该崩溃可能在观察者删除自己时发生。
-
修正了一个bug关于Sketchup::ViewObserver中的一个错误,该错误导致观察者方法在某些罕见的情况下不能正确启动。这发生在另一个事件的同一通知循环中删除观察者和添加新观察者时。
-
修正了一个问题,即通过双击其他驱动器上的 skp 文件来启动 SketchUp 会破坏
$LOAD_PATH
并使标准库无法访问。这个错误导致许多人在打开位于 "C: "驱动器以外的文件时遇到插件加载问题。 -
修正了一个在Windows上的错误,即如果用户名包含单引号,插件将无法加载。
-
修正了一个在Sketchup::Face#position_material. 在SketchUp 2014.0.4900下,一个失败的异常(被捕获)产生于Sketchup::Face#position_material调用失败所产生的异常,似乎会导致SketchUp将所有的东西解开,回到最后的Sketchup::Model#start_operation.
-
修正了一个Ruby的unicode问题,即Ruby不能要求unicode路径的.so文件。
-
为 SketchUp Mac 增加了对加载
SURubyDebugger.dylib
. 开发人员现在可以在Mac上使用我们的调试器。 -
修正了一个问题,即Sketchup::LayersObserver会导致SketchUp在用户进行撤销和重做时崩溃。
SketchUp 2014的新内容
We have made many additions and improvements to the SketchUp Ruby API. These changes include some big and potentially code-breaking changes in this round of SketchUp. We strongly recommend all developers test their scripts for compatibility with 2014.
升级到Ruby 2.0,现在包括Stdlib
-
我们在Windows和Mac平台上都升级到了Ruby 2.0.0 p247。
-
我们现在将Ruby标准库与SketchUp一起发布。
-
Ruby现在支持正确的unicode字符串。
-
Plugins on Windows have now been moved outside the SU Installation folder. On Vista, Win 7, 8:
C:\Users<username>\AppData\Roaming\SketchUp\SketchUp 2014\SketchUp\Plugins
在Win XP上。C:\Documents and Settings<username>\Application Data\Roaming\SketchUp\SketchUp 2014\SketchUp\Plugins
-
On Windows, we also load plugins from a user-independent support directory. On Win Vista, 7, 8:
C:\ProgramData\SketchUp\SketchUp 2014\SketchUp\Plugins
在Win XP上。C:\Documents and Settings\All Users\Application Data\SketchUp\SketchUp 2014\SketchUp\Plugins
这个路径只被加载到$LOAD_PATH
数组,如果该文件夹在SU启动时存在于用户的机器上。
新的! - 尺寸API
请参阅新的API文档,了解如何实现这些类和方法。
新的!-截面平面的增加
关于如何实现这些类和方法,请看新的API文档。
增加了对创建和激活的支持Sketchup::SectionPlane实体的支持。
-
新方法。
-
Sketchup::RenderingOptions现在暴露了一个新的键
'DisplaySectionPlanes'
可以用来显示或隐藏剖面图。Sketchup.active_model.rendering_options['DisplaySectionPlanes'] = false
额外的新API方法和功能
以下是新API功能的概要。关于如何实现这些类和方法,请看新的API文档。
-
增加了Sketchup::Image#transformation来获取图像转换。
-
添加了添加了Sketchup::Image#transformation=来设置图像转换
-
已添加Sketchup::Layer#color来获取一个图层的颜色
-
添加了Sketchup::Layer#color=来设置一个图层的颜色
-
已添加UI::WebDialog#screen_scale_factor这在Mac视网膜屏幕上很有用。
-
已添加Sketchup::AppObserver#expectsStartupModelNotifications#NAME?
onNewModel
/onOpenModel
方法,以包括程序启动时创建或打开的模型的通知。 -
已添加
clear
/show
/hide
/visible?
方法到Sketchup::Console. 这些方法需要在常量sketchup_console,例如:SKETCHUP_CONSOLE.show
通过以下方式创建一个新的实例Sketchup::Console.new
创建一个新的实例将不再起作用。 -
改进后的Sketchup::Model#save以允许保存到实时模型,并能以旧的 SketchUp 格式保存。
-
增加了文件格式常量到Sketchup::Model#save:
-
已添加Geom::PolygonMesh的常量
smooth_flags
. -
LanguageHandler方法已被别名,以具有更多类似Ruby的语法。见
langhandler.rb
-
LanguageHandler现在可以正确地从扩展资源文件夹中加载本地资源。
-
LanguageHandler必须被初始化在一个SketchupExtension
-
请仔细阅读
langhandler.rb
文件和本网站的文档,以便更好地理解LanguageHandler类。 -
Sketchup::Group#make_unique不再是过时的,警告已被删除。
-
增加了组和组件的持久性ID,可以通过Ruby访问。
-
RubyUI.openpanel/UI.savepanel过滤器现在使用一个更复杂的文件类型过滤器,以允许多个多文件类型过滤器。
-
添加了Sketchup.platform返回
:platform_win
或:platform_osx
. 我们鼓励开发者使用它而不是RUBY_PLATFORM
尽可能地使用。 -
新页面
"分类"
用于UI.show_model_info.
Ruby控制台的升级
-
多行代码输入和粘贴到Win平台的Ruby控制台(Ctrl+Enter创建一个新行)。
-
Ruby控制台写入数据的速度更快,并且在写入许多错误后不会变慢
-
输入cls现在也可以清除控制台了
-
Mac的Ruby控制台恢复到了固定宽度的字体
观察者的错误修正
-
修正了Sketchup::AppObserver的错误,其中
onNewModel
/onOpenModel
方法没有被调用,因为这些模型在程序启动时被创建或打开。参见AppObserver API文档,了解如何利用这个bug修复的信息。 -
修正了一个Sketchup::EntitiesObserver的崩溃,该崩溃发生在同一操作中创建和爆炸的组,并且有一个Sketchup::EntitiesObserver连接到它。
-
崩溃Sketchup::ModelObserver#onSaveModel观察者通知在PC上被错误地触发,当选择
文件 > 保存
作为,然后在保存前取消时,PC上的观察者通知被错误地触发。这一点现在已经修复。 -
使用同一观察者观察多个实体会导致内存泄漏。这个问题现在应该被修复了。
-
Sketchup::AppObserver#onQuit现在应该在 Mac 上可靠地启动。
-
观察者在被移除后没有被正确释放,可能会导致显著的性能下降。
-
修正了当重新加载一个组件和一个Sketchup::EntitiesObserver被附加到模型上时的崩溃。
-
Sketchup::ModelObserver#onExplode现在,当一个实例通过Ruby API被爆炸时,会触发。
-
修正了Sketchup::EntitiesObserver的错误,即一个错误的Sketchup::Entities的引用会被发送到观察者方法中。Sketchup::Entities.
将Set类移至Sketchup::Set
为了避免与标准Ruby库发生冲突,我们把类到Sketchup::Set。
类转移到Sketchup::Set. 所有对SketchUp Set类的引用都应该被重构。
一般错误修复
-
确保了我们的类实现了
Enumerable
的类不会覆盖改进后的Ruby 2.0的#count
方法。还确保了所有Enumerable
类都实现了#length
和#size
. -
更新后的Geom::PolygonMeshAPI 文档,使之准确无误。对许多其他 API 文档进行了修正和更新。
-
修正了在 Ruby 2.0 线程中通过 puts 把输出写到控制台时的程序挂起。这些输出将不再挂起程序,但也不会被打印出来。所有对SU API的访问(包括写到控制台)都必须从主线程中进行。
-
添加参数验证到Sketchup::Layer#page_behavior的参数验证。的参数验证,并更新了API文档。
-
修正了在迭代选定实体时隐藏图层的崩溃。如果你的代码在迭代过程中修改了你所迭代的集合,SketchUp将停止迭代。相反,你应该在集合的数组上迭代。类似于以下的代码
selection.each { |e| code_to_modify_the_selection_set } 类似的代码应该改为
应该改成:selection.to_a.each { |e| code_to_modify_the_selection_set }的代码应该改为: selection.to_a.each { |e| code_to_modify_the_selection_set }
所有的集合都是如此,例如。Sketchup::Entities,Sketchup::Layers,Sketchup::DefinitionList,Sketchup::Pages,Sketchup::Selection等。 -
修正了一个错误,在某些情况下,共享相同定义的组似乎在成为唯一的后继续共享实体。
-
修正了Sketchup::Group#description=的问题,该问题在设置组的描述之前没有使其成为唯一的。
-
修正了错误的
"RangeError: value cannot be negative"
的有效输入时出现的错误。Sketchup::ConstructionLine#stipple= -
修正了Sketchup::DefinitionList#load和 load_from_url,它们不能正确地启动 Ruby 操作。
-
修正了在应用模型中没有的材料时发生的崩溃和其他怪异现象--无论是从材料浏览器中选择的材料还是从其他打开的模型中选择的材料。现在,材料会在它所应用的模型中重新创建。
-
修复了Sketchup::Entities方法
erase_entities
和add_3d_text
当为一组 Entities 调用时,没有使该组唯一。 -
属于已关闭模型的Ruby引用不应再保持活力,并导致Mac上可能的崩溃。
-
修正了当Outliner打开时,在同一操作中创建/删除一个组所发生的崩溃。
-
修正了
Sketchup.active_model.export('myFilename.dae')
当给定相对路径时,截断了前两个字符。 -
修正了Sketchup::Tools#pop_tool以确保最后一个工具不会被弹出,这将使 SketchUp 处于没有活动工具的状态。
-
修复了Sketchup::Tools#active_tool_name以便在Mac上返回正确的工具名称。
-
修正了Sketchup::Model#close_active以便操作出现在撤销堆栈中。防止撤消操作时移动几何体。
-
修正了Sketchup::Materials#remove以使它在从材料列表中删除材料之前,正确地从模型中的实体中删除材料。
-
注册到的加载器文件SketchupExtension注册的加载器文件现在可以是加密的文件(.rbs)。
-
修正了输入框包装器在
sketchup.rb
中的输入框包装器,以便在没有参数的情况下不进入无限循环。 -
修正了加载错误,使其更加粗略,并包括文件路径和代码行号。
-
任何发生在rbs文件上的Ruby错误现在都会以正确的文件名和行号报告。
-
Ruby 关键字
__FILE__
和__LINE__
现在可以在 rbs 文件中正常工作。 -
在程序启动过程中发生的 Ruby 错误现在会用堆栈跟踪来报告,这应该会使问题的诊断更加容易。
-
修正了一个在 Windows 上的错误,即UI::WebDialog#show不记得webdialog之前的大小/位置。
-
Sketchup.require没有把加载的rbs文件的路径推到
$LOADED_FEATURES
#NAME? -
RBZ提取现在应该保留文件权限。
-
Sketchup::Group#locked=/Sketchup::ComponentInstance#locked=现在可以正确地将自己添加到撤销堆栈中。
-
为期望无符号整数参数的方法增加了负值检查(某些使用整数作为参数的方法允许格式化不良的负值)。
-
Sketchup::ComponentInstance#explode/Sketchup::Group#explode当编辑你爆炸的组件时,SketchUp会崩溃。现在这个问题已经解决了。
-
以前的问题Sketchup::Tool#getInstructorContentDirectory方法假设所有东西都是相对于SketchUp资源文件夹的。这一点在2014年已经改变了。现在它接受文件或文件夹的绝对路径。
-
新方法。Sketchup.quit
-
增加了UI::WebDialog#screen_scale_factor这在Mac视网膜屏幕上很有用。
-
修正了修复了Sketchup::EntitiesObserver的错误,当观察一个组的实体集合时,错误的实体引用会被发送到观察者方法。
SketchUp 2013 M1的新内容
错误修复
修复了一个工具条错误,该错误导致一些扩展工具条不显示,并且不正确地停靠在其他工具条后面。现在建议开发者调用UI::Toolbar#restore的话,尽管那些不这样做的工具条在SU2013 M1上也能正常工作。
修正了一个在UI::WebDialog#get_element_value中的一个错误。中的一个bug,该bug导致它在Mac上对某些html元素发生故障。
SketchUp 2013中的新内容
扩展了SketchupExtension类
新方法。
记录了LanguageHandler类
LanguageHandler}是一个现有的内部类,我们现在在API中公开。它已经被更新了,它首先寻找扩展目录结构中的资源文件夹中的翻译资源(如仓库开发者中心中的解释). 所有翻译的资源应位于适当的语言文件夹中。
增加了特殊的HTML链接,以便在扩展仓库中启动扩展页面。
请看详细解释"skp:launchEW"
链接的详细解释,见{UI::WebDialog类文档。
改变在Sketchup.send_action
"addBuilding:"
已被删除。
SketchUp 8 M2中的新内容
SketchUp 8的第二个维护版本于2011年12月1日发布。它包括一些围绕管理扩展的Ruby API的补充。
改进了SketchupExtension类
五个新方法。
-
SketchupExtension#check(加载扩展)
增加了ExtensionsManager类
让你检查哪些扩展被注册。
在Sketchup对象中增加了新的钩子
-
Sketchup.install_from_archive(从.rbz文件中安装内容)
-
Sketchup.plugins_disabled=(禁用所有Ruby插件)
SketchUp 8 M1的新内容
SketchUp 8的第一个维护版本于2011年1月12日发布。它包括几个Ruby API的修复和补充。
改进了UI::Toolbar类
两个新的方法。
修正了Mac上这些失败的方法调用。
-
UI.set_toolbar_visible('GoogleToolPaletteController', false)
-
UI.set_toolbar_visible('ToolPaletteController', false)
-
UI.set_toolbar_visible("SolidModelToolPaletteController", true)
-
UI.set_toolbar_visible("SolidModelToolPaletteController", false)
修正了这个在PC上失败的方法调用。
-
UI.set_toolbar_visible("Walkthrough", true)
-
UI.set_toolbar_visible("Walkthrough", false)
-
UI.set_toolbar_visible("FullToolSet", true)
-
UI.set_toolbar_visible("FullToolSet", false)
展开了命令类
新的方法。
扩展了材质/材料类
新的方法。
给予Ruby访问 "阴影错误修复 "的机会
如果你发现自己在8.0M1阴影错误修复中得到了意外的结果,你可以把它关掉。
改进的Alpha透明度控制
-
Sketchup::View#draw2d现在尊重用Alpha设置的Sketchup::View#drawing_color=
-
Sketchup::Color#alpha=现在可以接受介于
0.0
和1.0
或0
和255
修正了几个错误
我们在最近的SketchUp版本中不小心引入了一些错误。所以我们在8.0 M1中修复了它们。
Sketchup::View#pick_helper不再尊重传递给它的参数。这破坏了Bezier.rb和BZ Tools插件。现已修复。
Sketchup::ConstructionLine#stipple=方法现在可以按文件规定工作了。
Sketchup::Model#raytest方法有时会返回不正确的值。我们修复了这个问题,并添加了一个可选的布尔参数,以指定是否在隐藏实体处停止。model.raytest(ray)
#NAME?model.raytest(ray, true)
忽略隐藏的实体model.raytest(ray, false)
停在被隐藏的实体上(通过隐藏或在隐藏层上)。
Sketchup::Color#to_a返回的是一个Bignum
当一个修复值
的时候,却返回了一个Bignum。AFixnum
现在会被返回。
SketchUp 8中的新内容
更新了PC上的Ruby版本至1.8.6
SketchUp的Ruby解释器版本在PC上已经升级到1.8.6(Mac上仍为1.8.5)。请注意,1.8.6包括数千个错误修复和稳定性改进,但它对语法的要求也更加严格。在SketchUp 7.x和更早版本中运行的脚本在SketchUp 8中可能会出现语法错误。
WebDialog用户代理更新
过去,WebDialogs会发送一个SketchUp特有的useragent字符串。现在我们发送的用户代理是由嵌入式浏览器的原始用户代理和一个额外的字符串连接而成的,用于识别SketchUp。这使得谷歌地球插件(和类似的插件)能够正确地检测到浏览器的种类,从而在SketchUp内部正常工作。
观察者的错误修复
-
Sketchup::DefinitionObserver#onComponentInstanceAdded现在可以工作了。
-
Sketchup::DefinitionObserver#onComponentInstanceRemoved现在可以工作了。
-
RubySketchup::ToolsObserver
工具名称
参数现在在Mac和PC上是一致的。 -
修正了Sketchup::InstanceObserver所以它的工作方式一致,没有崩溃。
Sketchup::EntitiesObserver#onElementModified现在接受两个参数:实体和实体,使其更有用。
修正了以下常见的崩溃Sketchup::EntitiesObserver#onContentsModified的常见崩溃。
另外。Sketchup::EntitiesObserver#onContentsModified
重命名为Sketchup::EntitiesObserver#onElementModified以保证一致性。
回调Sketchup::MaterialsObserver#onMaterialRemoveAll
现在已被弃用,我们建议使用Sketchup::MaterialsObserver#onMaterialRemove来代替。
写入图像大小夹层
Sketchup::View#write_image现在被限制为输出16000x16000的最大图像尺寸,以防止冻结。
计时器以更小的增量工作
UI.start_timer现在可以接受小于1秒的值。
新的布尔方法
Sketchup::Group和Sketchup::ComponentInstance有几个新的布尔运算方法。
-
manifold?
-
体积
-
交叉
-
联合
-
减去
-
修剪
-
分割
-
外壳
-
等于?
-
显示差异
Sketchup::Face#classify_point更新
请注意,对于Sketchup::Face#classify_point的返回值在SketchUp 8中已经改变了。关于你应该检查的常量列表,请参见文档。如果你有依赖硬编码数值的脚本,你应该更新它们,以使用常量代替。
修复了崩溃
修正了在Sketchup::Pages#add和Sketchup::Model#number_faces.
SketchUp 7.1中的新内容
新方法
-
Sketchup::Model#number_faces找出你的模型中有多少个面。
-
Sketchup::Model#georeferenced?查看一个模型是否已被地理参考,以便在地球上使用。
-
Sketchup::View#refresh强制刷新一个视图。比view.invalidate更强大,因为它立即刷新。
-
UI::WebDialog#write_image从任何WebDialog中获取屏幕截图。
SketchUp 7.0 M1的新内容
新方法
-
Sketchup::Face#get_glued_instances查看哪些实例被粘在一个给定的面孔上。
SketchUp 7中的新内容
改善脚本性能
能够在start_operation事务中更快地执行。
go_faster = true
model.start_operation("我的处理", go_faster)
# 在这里做在SU6中很慢的处理# ...model.commit_operation
一些实际测试的结果,(在同一台机器上比较SU6和SU7),一旦加入go_faster布尔值。
交叉重叠500个重叠的方块,28.4秒对26.3秒(约92%的时间)
制作面21.7秒比14.5秒长(~66%)。
窗口化3.0用四个20'x20'窗口,12x12 16.1秒对7.0秒 (~43%的时间)
Windowizer 4.010个5'x5'窗口,6x6 22.6秒对8.7秒(~38%的时间)。
改进的网页对话框
增加了最小/最大宽度。
Webdialog.min_width=100
webdialog.max_width=300
webdialog.min_height=500
webdialog.max_height=600
固定Mac对WebDialogs的支持 execute_script
webdialog.execute_script('alert("Bug is Fixed!")') 。
为webdialogs新增full_security模式(禁用插件和远程链接)
webdialog.set_full_security
能够在Mac上隐藏主页/下一页/后一页导航图标
webdialog.navigation_buttons_enabled=true
更加简洁,基于哈希值的初始化语法
my_dialog = UI::WebDialog.new(my_settings_hash)
控制缩放工具的处理方式
你的脚本现在可以控制当用户选择一个给定的组件时,哪个比例工具手柄出现。
# 禁用绿轴和红轴手柄# 通过设置位1和2为1。behavior = my_component_definition.behavior
behavior.no_scale_mask = (1 << 1) + (1 << 2)
从网络上加载定义,或保存到磁盘上
能够从URL中下载一个定义
model.definitions.load_from_url(url, download_handler)
从API中保存组件到磁盘的能力
my_definition.save_as(path)
了解更多关于用户互动的信息
检测 "组件编辑 "模式的新方法
users_current_edit = model.active_path
edit_mode_transform = model.edit_transform
轻松确定他们是否在授权的专业版中运行
is_licensed_pro = Sketchup.is_pro?
ModelObserver中新的 "模型级 "回调
def onActivePathChanged(model) { # 检测编辑模式 }
def onPlaceComponent(instance) { # 检测摆放位置 } def onExplode(model) { # 检测组/组件爆炸 } def onBeforeComponentSaveAs(instance) { # 保存时添加数据 } def onAfterComponentSaveAs(instance) { # 然后进行清理 }
检测他们是否已经通过AppObserver关闭了你的扩展功能
def onUnloadExtension(extension_name)
开发人员要求的各种改进
通过API删除你的场景
my_page.erase
保持SketchUp的同步性
UI.refresh_inspectors # 强制完全更新UImy_definition.refresh_thumbnail # 强制更新缩略图my_definition.invalidate_bounds # 强制更新bb
测量你的组,不管他们的变换是什么
untransformed_bb = my_group.local_bounds
在你的自定义工具中使用鼠标中键
def onMButtonDown(flags, x, y, view) # 现在可以工作了! def onMButtonUp(flags, x, y, view) # 现在可以工作了
将Ruby控制台输出发送到标准输出 如果你从命令行启动SketchUp,你可以用管道连接到标准错误,看到Ruby puts语句为你出现。
Sketchup.exe > myRubyLog.txt
最后,我们修复了一些崩溃的错误,主要与模型中的实体迭代有关。
SketchUp 6的新内容
在SketchUp 6的Ruby API中,最重要的新增内容是Ruby Observer机制、Tools类、WebDialog类、Styles类和Style类。
Ruby观察者机制
Ruby观察者机制是为了让Ruby脚本在SketchUp应用程序或模型中的对象发生变化时得到通知。例如,你可以创建一个观察者类来 "监听 "SketchUp的退出,然后执行一些动作。
创建一个特定观察者类型的Ruby类,例如AppObserver,覆盖所需的方法,例如onQuit,并将观察者的实例添加到Ruby脚本中的适用对象中(使用该对象的add_observer方法)。更多信息请参考各个观察者接口。
工具类
Tools类包含操作SketchUp工具集合的方法。这个类主要用于通过使用按键或鼠标操作在工具之间进行切换。
WebDialog类
Ruby WebDialog类可以从Ruby代码中创建DHTML对话框并与之互动,在本文档中称为webdialogs。例如,你可以创建webdialogs,从你的Ruby代码中调用,以显示一个网站,或接受用户的输入并在你的Ruby代码中使用结果。样式和样式类 样式类包含操作模型中的样式集合的方法。样式类包含了用于修改特定样式信息的方法。
Before SketchUp 6
API的62个核心类在此建立。很少有用户是在SketchUp 6之前的,所以这个文档网站只关注SketchUp 6及以上版本。