发行说明

SketchUpAPI从SketchUp的早期就以某种方式存在,随着每一个版本的发布,我们都扩展了它的功能。请阅读下面的内容以了解更改内容。

虽然我们对最新版本的采用率相当高,但在发布之后,每个人都需要一段时间才能升级。如果要构建依赖于最新版本功能的脚本,请确保选中Sketchup.version要确保用户能够运行脚本:

# You do something like this in the initialization routine of your extension.
version_required = 16
if (Sketchup.version.to_f < version_required)
  UI.messagebox("You must have Sketchup 20#{version_required} to run this "\
                "extension. Visit sketchup.com to upgrade.")
  return
end

内部版本号

以下是SketchUp最新版本的内部版本号。请注意,对于每个版本,除了英语以外,其他语言的内部版本号都会更大,因此最好检查是否有大于或等于此处数字的内部版本。

  • SU2020.2=20.2.172是Windows 64位,20.2.171是Mac 64位。

  • SU2020.1.1=20.1.235为Windows 64位。(未包含Ruby API更改)

  • SU2020.1=20.1.229为Windows 64位,20.1.228为Mac 64位。

  • SU2020.0=20.0.133是Windows 64位,20.0.134是Mac 64位。

  • SU2019.3=19.3.253为Windows 64位,19.3.252为Mac 64位。

  • SU2019.2=19.2.222为Windows 64位,19.2.221为Mac 64位。

  • SU2019.1=19.1.174为Windows 64位,19.1.173为Mac 64位。

  • SU2019=19.0.685是Windows 64位,19.0.684是Mac 64位。

  • SU2018 M1=18.1.1180是Mac 64位。(未包含Ruby API更改)

  • SU2018=18.0.16975是Windows 64位,18.0.16976是Mac 64位。

  • SU2017=17.0.18899是Windows 64位,17.0.18898是Mac 64位。

  • 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=15.0.9350为Windows 64位,15.0.9351为Windows 32位,15.0.9349为Mac 64位。

  • SU2014 M1=在Windows上为14.1.1282,在Mac上为14.1.1283。

  • SU2014=在Windows上为14.0.4900,在Mac上为14.0.4899。

  • SU2013 M2=在Windows上为13.0.4812,在Mac上为13.0.4811。

  • SU2013 M1=在Windows上为13.0.4124,在Mac上为13.0.4123。

  • SU2013=13.0.3689在Windows上,13.0.3688在Mac上。

  • SU8.0 M2=在Windows上为8.0.11752,在Mac上为8.0.11751。

  • SU8.0 M1=8.0.4811(在Windows上),8.0.4810(在Mac上)。

  • SU8.0=8.0.3117(在Windows上),8.0.3161(在Mac上)。

  • SU7.1 M2=Windows上为7.1.6860,Mac上为7.1.6859。

  • SU7.0 M1=Windows上为7.0.10247,Mac上为7.0.10246。

  • SU7.0=Windows上为7.0.8657,Mac上为7.0.8656。

  • SU6 M6=Windows上为6.4.265,Mac上为6.4.263。

SketchUp 2020.2的新增功能

Ruby和C交换API

为了在SketchUp应用程序中更好地实现Ruby API和C API的互操作性,我们引入了在API之间交换实体和映像代表的功能。

实体,因为它是一个键类型,而ImageRep是因为复制它可能是一个昂贵的对象。

  • SUEntityToRuby

  • SUEntityFromRuby

  • SUImageRepToRuby

  • SUImageRepFromRuby

有关更多详细信息,请参阅C API文档。

Ruby API的添加和改进

Ruby API错误修复

  • 修复了在Ruby控制台中无法正确显示Unicode字符的问题。

  • 修复了碰撞UI::HtmlDialog打开后立即关闭对话框时。

  • 固定DWG导入选项,:preserve_origin被忽略。

SketchUp 2020.1的新增功能

Ruby API的添加和改进

SketchUp 2020.0的新增功能

Ruby API的添加和改进

Ruby API错误修复

  • 修复了潜在的碰撞UI::HtmlDialog&#由于值不受Ruby垃圾回收保护而导致的回调。

  • 修复了模型验证错误地将一些有效的UV映射标记为无效并重置它。

SketchUp 2019的新增功能

Ruby API错误修复

  • (Win)将libcrypto和libssl dll更新为1.1.1c。

  • 固定的UI.openURL不执行跨平台URL编码的Mac一致性。

SketchUp 2019.2的新增功能

Ruby API的添加和改进

Ruby API错误修复

  • 将Ruby从2.5.1更新到2.5.5,以解决Ruby中的一个逻辑错误

  • 修复了可能的崩溃Sketchup::Entities#clear!

  • 修复了.skm序列化中的一个错误,其中material属性中的数组未写入文件

SketchUp 2019.1的新增功能

Ruby API错误修复

SketchUp 2019有什么新功能

Upgrade to Ruby 2.5.1

我们已经从ruby2.2.4升级到ruby2.5.1。这些升级往往会给Ruby语言带来一些细微的变化,而这些变化有时很难在内部测试中找到。我们的测试没有发现ruby2.2.4和新的2.5.1之间存在任何主要的兼容性问题,我们希望大多数开发人员的升级应该相对简单。请注意,任何编译的C扩展都需要重新构建。确保OpenSSL库调用兼容。

虚线

点划线和虚线,哦,天哪!SketchUp添加了一个虚线功能,允许在图层级别应用和控制唯一的线样式。我们已经在Ruby和C API中公开了这个新特性。有关我们添加的类和方法的列表,请参阅每个API的改进和修复部分。有关如何使用这些功能的完整文档,请参阅每个API的文档。

InstancePath支持维度和文本

在SketchUp 2019中,我们添加了Sketchup::InstancePath支持我们现有的Sketchup::DimensionLinearSketchup::Text类。现在,在创建线性标注或附着的文字对象时,可以通过提供有效的InstancePath对象,或实例路径的数组版本。这将允许您在模型空间中创建维度,但将其附加到有效的嵌套实体。然后线性标注或文字将附着到该实体,这与通过用户界面创建线性标注和文字时的情况完全相同。

Ruby API突破性变化

  • SketchUp改变了它表示单位的方式。现在它在数字和单位指示符之间加了一个空格。如果您的扩展使用自己创建的方法来解释SketchUp格式化的字符串,如果您不占用额外的空间,您可能会发现它不再工作。例如:

  • 2019年前:"2.5mm"

  • 2019年:"2.5 mm"

  • Ruby版本升级-Ruby 2.5删除了以下方法:Dir::Tmpname.make_tmpname. 如果你使用的是这种方法,你需要找到一个替代方法

  • Sketchup::Entity#delete_attribute不再回来了true尝试删除不存在的字典键时

Ruby API的添加和改进

Ruby API错误修复

  • 修正了Mac电脑退出时的崩溃Sketchup::FrameChangeObserver处于活动状态

  • 修正了一个问题Sketchup::Model打电话后可能无法使用.singleton_class.

  • 修正了Ruby创建的维度在不关联时不突出显示的问题

  • 修正了Ruby创建的维度在启用“hide preshortened”时不能正确隐藏

  • 修复了构建时SketchUp崩溃Geom::PolygonMesh带负值

  • 修复了Ruby DWG导入器单元无法正常工作

  • 固定的Geom::PolygonMesh不接受负数作为参数

  • 固定延伸段在High Sierra上以非确定性顺序加载

  • 修复了SketchUp在尝试加载更新版本中生成的组件时发生的崩溃

  • 修正了关于merge_coplanar_faces在Importer Options文档和代码中(为保持兼容性,仍保留旧拼写)

  • 修复了SU2018中重命名同名材质时的回归。这是用来抛出一个错误时,它应该是一个没有操作

  • 2018年上半年固定回归,其中model.materials["MaterialName"]可能会失败

  • 修复了加载由更新版本的SketchUp生成的组件时发生的崩溃

  • 修复了Windows上Ruby控制台中的unicode字符

  • 固定的UI::HtmlDialog不可调整高度和宽度的对话框。

  • Sketchup::View#write_image如果传入的参数超过5个,则应引发错误。

SketchUp C API文档

  • 更新了VC++运行时版本的SDK文档

SketchUp的LayOut Ruby API

更新的Chromium(CEF),用于UI::HtmlDialog

  • SketchUp 2019:Chrome/64.0.3282.119

  • SketchUp 2018:Chrome/56.0.2924.76

SketchUp 2018 M0的新增功能

SketchUp的LayOut Ruby API

这是一个新的基于Ruby的SketchUp API,允许开发人员使用常规的SketchUp Ruby API读写LayOut文件。我们采用了现有的layoutcapi,并用Ruby层将其包装起来,然后将其包含在SketchUp中。事实证明,这是一个很好的工作模型,可以帮助我们将API功能公开给我们的基本C API,然后在不复制代码的情况下向Ruby层公开确切的功能。

Sketchup.send_to_layout

除了SketchUp的LayOut Ruby API之外,我们还添加了使用LayOut应用程序打开LayOut文件的功能。这使开发人员能够完全用Ruby编写SketchUp扩展,该扩展可以解析SketchUp模型,编写LayOut文件,并在LayOut中以一个平滑的动作打开LayOut文件。这有助于在SketchUp和LayOut之间建立更紧密的连接,并可以通过使用开发人员创建的扩展改进用户工作流。

ImageRep

你好,Ruby API开发人员,认识Sketchup::ImageRep. 这个新类公开了SketchUp内部的一个数据结构,称为ImageRep.ImageRep是图像的内存表示形式(与对SketchUp模型中图像的引用相对)。这个类向rubyapi公开了许多图像读取和操作工具。现在可以从ImageRep,从ImageRep,在ImageRep,保存ImageRep输出到磁盘,等等。当然,我们还包含了将模型内纹理转换为ImageRep,并分配ImageRep对象直接指向材质作为材质的纹理。这个新类为读取和操作模型中的图像提供了很多机会。看看ImageRep类以获取更多信息。

向Ruby API公开导入/导出选项

我们已将本国进出口商的所有选择都交给了Ruby。请参阅上的Ruby API文档Sketchup::Model#importSketchup::Model#export.

API中的新SketchUp功能

为SketchUp核心团队对SketchUp应用程序所做的改进表示热烈的掌声。好吧,我们还想确保我们的开发者社区可以访问这些新特性。我们为命名剖面和填充剖面引入了新的API特性。令人惊叹的!

高级属性的Ruby处理

SketchUp core添加了一个名为高级属性的功能。默认情况下,这会将一些新的属性字典和属性添加到每个模型的组件实例和定义中。应该注意的是,我们已经阻止了通过Ruby删除字典的功能。这应该是不可能的,请让我们知道,如果你找到一个场景,你可以这样做。但是,您可以删除键/值对。如果键值对不存在,UI将重新创建它们。

Ruby改进和修复

漏洞修补

  • 零钱-修复了一个错误Sketchup::Material#name=它允许API创建具有重复名称的材质。现在它会提高ArgumentError如果它不是唯一的模型。

  • 零钱-改变Sketchup::Color类在LayOut和SketchUp之间通用。潜在的突破性变化是Sketchup::Color改为现在比较RGBA值而不是Ruby对象。

  • 零钱-改变Geom::Transformation#identity?这样它就可以正常返回了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度。

  • 修复了一个问题,即Ruby导入程序可能会导致导入文件对话框在Windows下由于描述中的管道字符而错误地呈现下拉项。

  • 修正了使用时的崩溃-RubyStartup命令行参数,文件在加载时引发错误。

  • 修复了一次撞车事故UI.create_cursor如果长度小于4个字符,就会发生这种情况。

  • 修复了一个罕见的Sketchup::MaterialsObserver.

SketchUp 2017 M0的新增功能

Ruby 2.2

是的,又到了更新Ruby解释器的时候了。我们已经升级到Ruby版本2.2.4。我们希望使用纯Ruby的扩展能够轻松升级到ruby2.2。请注意,任何编译的C扩展都需要重新构建。

嵌入式Web框架

SketchUp2017最让我们兴奋的开发特性之一是新的Web对话框架。对于SketchUp 2017,我们将Chromium Web浏览器与SketchUp安装程序捆绑在一起。什么?!是的,现在SketchUp预装了一个web浏览器,可用于Mac和Windows客户端。当你试图让你的网页与InternetExplorer8-11和Safari兼容时,你的头撞在墙上不会造成更多的创伤。

为了保持向后兼容性,我们在rubyapi中实现了一个新的HtmlDialog类,并且没有修改现有的WebDialog类。使用WebDialogs的扩展应该可以继续工作,不需要任何更改。

新的Ruby API文档

我们一直在努力改进rubyapi文档和发布过程。为了生成文档,我们从内部调整和维护的RDoc版本切换到YARD。在这个过程中,我们不得不对源代码中的文档进行许多修改,我们制作了一个专门的YARD模板来满足我们的需要。我们现在拥有的是一种简单的方法,可以在几秒钟内重新生成文档,我们可以将它们推送到git repo,在那里它们可以立即公开使用。一个过去需要数小时的手动html编辑和对我们的Sketchup.com网站webserver,已经减少到大约10分钟的过程来生成和发布文档。

SketchUp C API奇偶校验-续

我们专注于在2017中添加StogcUp C API的特性,为我们的开发人员提供更大的好处,并作为我们今后不断地努力删除和删除旧的C++ API的一部分。我们将继续增加更多,直到我们获得足够的覆盖率来考虑C API在功能奇偶性与弃用的C++ API。

更新的编译器

我们更新了Windows和macOS的编译器。在Windows上,我们现在使用的是Visual Studio 2015 SP1(针对Windows 7)。在MacOs上,我们使用的是xcode7.2.1(带有部署目标10.10)。

新的Ruby API特性

错误修复/小改进

Ruby API

  • 固定的Sketchup::Entities#transform_by_vectors以便对第二个数组执行边界检查。安ArgumentError如果第二个数组的项少于第一个数组,则引发。

  • 增加了UI::HtmlDialog使用回调接收JavaScript数组和对象。

  • 取消了限制UI::HtmlDialog其中回调需要至少有一个参数。现在不需要任何参数。

  • UI.show_model_info不再为打开模型信息页"Extensions"因为该页现在被扩展管理器对话框所取代。

SketchUp 2016 M0的新增功能

新的LayOutAPI

我们很自豪地宣布我们迈向LayOut扩展生态系统的第一步。使用这个新的API开发人员现在可以打开、创建、修改、保存和导出.layout文件。实际上,这意味着其他应用程序可以使用C API导入或导出.layout文件格式。(这包括从SketchUp创建.layout文件)。我们有几个示例脚本供开发人员在发布时试用。查看中的API文档Developer Center了解更多信息。

对扩展进行数字签名-扩展加载策略

在SketchUp 2016中,我们为用户提供了选择要使用的扩展加载策略的功能。选项包括“仅限已标识扩展”、“批准未标识扩展”和“无限制”。

这个特性的开发者端称为数字签名。2016年或更高版本的所有SketchUp扩展现在都需要数字签名才能在最高安全模式下运行-“仅标识扩展”。如果用户选择了“批准未标识的扩展名”,则所有已签名的扩展名都将自动加载,并且任何未签名的扩展名都必须由用户批准。所有有符号和无符号的扩展,将以“无限制”模式加载。

默认情况下,SketchUp 2016 M0安装在“无限制”模式下。

要对您的扩展进行数字签名,只需将您的.rbz包上载到我们新的数字签名和加密页,我们将对其进行签名并将其返回给您。参观新的Extension Digital Signature page.

每次更改代码并希望重新发布时,都需要对扩展进行签名。您需要是扩展仓库上的注册开发人员才能对扩展进行签名或加密。Apply here!

Ruby加密2.0

再见。rbs和你好。rbe!我们添加了一个新的加密,您可以使用它来帮助保护您的扩展知识产权(IP)。SketchUp 2016可以读取.rbe和.rbs文件类型。这将有助于确保我们为需要时间重新加密扩展的作者保持向后兼容性。要使用我们的新加密,只需将.rbz包的未加密版本上载到我们新的数字签名和加密页面,我们将对其进行加密并返回给您。参观新的Extension Digital Signature page请点击此处了解更多信息。

您需要是扩展仓库上的注册开发人员才能对扩展进行签名或加密。Apply here!

开发者中心

在新的扩展数字签名页,新的LayOutC API和所有未来的想法和潜力之间,我们决定创建一个新的中心位置来组织我们的开发人员资源,API文档等访问(和书签!):extensions.sketchup.com/en/developer_center

观察员升级

我们一直在努力寻找方法,使观察员更稳定和可靠的所有开发人员。这些变化大多是在幕后发生的,对开发人员来说并不完全可见。为了帮助解决这一问题,我们添加了一些出现在Ruby控制台中的Ruby警告,以及两个确定是否显示这些警告的调试方法:Sketchup.debug_mode=Sketchup.debug_mode?.

  • 观察者事件现在排队,直到活动操作完成。

  • Sketchup::ModelObserver不通知中间Ruby操作(“事务”)。

  • 观察者不应该再返回实体的zombie Ruby对象。更多信息,请参阅2016年观察员pdf。

  • 从所有观察者基类中删除伪方法以改进性能。参见this pdf为了更深入地了解我们对观察员所做的改变。

SketchUp C API奇偶校验-续

我们专注于在2016中添加StogcUp C API的特性,为我们的开发人员提供更大的好处,并作为我们今后不断地努力删除和删除旧的C++ API的一部分。以下是我们为2016年增加的功能的完整列表。我们将继续增加更多,直到我们获得足够的覆盖率来考虑C API在功能奇偶性与弃用的C++ API。

新Ruby API

错误修复/小改进

  • 固定的Sketchup::Pages#erase这样它就不会再错误地创建撤消操作了。

  • 移除了带有曲线的僵尸实例的实例。更多信息,请参阅2016年观察员pdf。

  • 固定问题在哪里Sketchup::ViewObserver在平行投影模式下使用缩放工具时不激发

  • 已弃用Piranisi.epx导入

  • 通过对Windows和Mac的库更新解决了IFC导入失败的问题。

  • 修正了Collada导出失败的原因:camera_lookout value带有消息“指针被释放从未被分配”

  • 修正了Collada导出不导出相机

  • 用扩展描述框解决了多个视觉缺陷。

  • Sketchup.version_number现在返回正确的值。

SketchUp 2015 M2的新增功能

Mac上的一个定时器可能会停止运行UI.stop_timer在定时器程序中。

SketchUp 2015的新增功能

重命名插件菜单

我们将“Plugins”菜单重命名为“Extensions”,以便更符合我们当前的命名约定。这不应该破坏现有的插件。添加一个菜单项到“插件”菜单仍然有效,它将被添加到“扩展”菜单。

新的!-扩展授权API

我们在API中添加的一个新特性是创建许可扩展的能力。扩展仓库已经升级以管理和分发这些许可证。

新的!-分类器API

新的API功能

对Ruby API的64位相关更改

  • Length不再来自Float. 它在2015年的行为应该与之前版本的SketchUp相同,这是我们64位升级更改的一部分

  • 我们已经分开了GEM_PATHGEM_HOME32位和64位生成的目录。

开发人员的Webdialog JS错误对话框

在Windows上的SketchUp的早期版本中,只要网页上出现格式错误的js代码,用户就会看到javascript错误弹出框。我们在上一个版本中禁用了这些弹出窗口。由于大众的需求,我们把他们带回来了,这次只针对开发商!开发人员可以通过在Windows注册表中创建以下项来启用js错误弹出窗口:HKEY_CURRENT_USER/Software/SketchUp/SketchUp 2015/WebDialogs/ShowErrorDialogs并添加一个DWORD值设置为1.

错误修复和改进

  • 我们现在将初始工作目录设置为用户的Documents目录。

  • 恢复$0返回"SketchUp" as it did prior to SketchUp 2014.

  • 修正了错误point3d.vector_to(inputpoint)将返回错误的结果。

  • 已清除中使用的不一致的操作名称和idSketchup::Edge类。

  • 修复了从工作线程内部调用Ruby导致的崩溃。

  • 在中发生未捕获的Ruby错误时防止崩溃Sketchup::Importer#load_file

  • Geom::BoundingBox#corner现在,当给定不正确的索引时引发一个索引器错误。

  • 修正了一个错误Geom::BoundingBox#intersect可能会产生错误的结果。

  • 修正了一个错误Geom::BoundingBox#intersect不接受顶点或边界框数组。

  • 修正了一个错误Geom::PolygonMesh#normal_at如果在与获取polygomesh的脚本相同的处理循环中修改模型,则不会返回正确的顶点法线。

  • 修正了一个错误,即当某个方法作用于某个数组时,冻结数组可能会引发错误,即使该方法没有修改数组。

  • 修正了在某些情况下InputPoint对象可能导致崩溃的错误。

  • 已将Program Files文件夹中的“分类”文件夹从C:\Program Files (x86)\SketchUp\SketchUp 2015\ClassificationsC:\Program Files (x86)\SketchUp\SketchUp 2015\ShippedClassifications. 现在Sketchup.find_support_file("Classifications")将返回用户文件夹中而不是应用程序文件夹中的分类文件夹。

  • 设置材料期间Sketchup::ModelObserver#onPreSaveModel2014年上半年没有工作。这应该在2015年得到解决。

  • Sketchup::ViewObserver通知在并行投影时通常失败。这个问题已经解决了。

  • 自定义工具中的自定义上下文菜单已得到改进。现在可以在打开上下文菜单之前确定所单击的实体类型。因此,可以编写自定义上下文菜单以不同方式处理不同类型的实体。

  • 分解图像实体现在返回一个实体数组。这些包括所有相关的边、面、边用对象等。以前它返回一个空数组。

  • 修正了一个错误view.draw(GL_LINES, ...)通过奇数个点时崩溃。

  • HTTPS连接现在应该可以在Windows上使用'net/https'.

SketchUp 2014 M1的新增功能

  • 修复了在任何Ruby工具处于活动状态时导出动画时发生的崩溃。

  • 修正了Sketchup::EntityObserver撞车Sketchup::EntityObserver#onEraseEntity如果观察者移除自身,可能会发生这种情况。

  • 修复了一个错误Sketchup::ViewObserver这导致观察者方法在某些罕见的情况下不能正常启动。当在另一事件的同一通知循环中删除观察者并添加新观察者时,会发生这种情况。

  • 修正了通过双击另一个驱动器上的skp文件启动skup会损坏的问题$LOAD_PATH标准库和渲染器无法访问。这个错误导致许多人在打开位于“C:”驱动器以外的驱动器上的文件时遇到插件加载问题。

  • 如果一个插件不包含在一个插件中,那么这个插件就不会被加载了。

  • 修正了Sketchup::Face#position_material. 在SketchUp 2014.0.4900下,由失败的Sketchup::Face#position_material调用似乎会导致SketchUp将所有内容恢复到最后一次Sketchup::Model#start_operation.

  • 修复了Ruby unicode无法要求来自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平台上升级到ruby2.0.0p247。

  • 我们现在随SketchUp一起发布Ruby标准库。

  • 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文档:

新-SectionPlane Additions

有关如何实现这些类和方法,请参阅新的API文档。

增加了对创建和激活的支持Sketchup::SectionPlane实体:

其他新的API方法和特性

下面是新API功能的概述。有关如何实现这些类和方法,请参阅新的API文档。

Ruby控制台升级

  • 多行代码输入并粘贴到Win上的Ruby控制台(Ctrl+Enter创建一个新行)

  • Ruby控制台向自身写入数据的速度要快得多,并且在写入许多错误后不会减慢速度

  • 现在输入cls也可以清除控制台

  • Mac Ruby控制台恢复为固定宽度字体

Observer错误修复

已将集合类移到Sketchup::Set

为了避免与标准Ruby库发生冲突,我们将Set类到Sketchup::Set. 对SketchUp集合类的所有引用都应该重构。

一般错误修复

  • 确保我们的类实现Enumerable不要重写改进的Ruby2.0#count方法。也保证了Enumerable类实现#length#size.

  • 更新Geom::PolygonMeshAPI文档要准确。许多其他API文档的修复和更新。

  • 修复了ruby2.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 }所有收藏都是如此,例如:Sketchup::Entities,Sketchup::Layers,Sketchup::DefinitionList,Sketchup::Pages,Sketchup::Selection等等。

  • 修正了一个错误,在某些情况下,共享相同定义的组在被设置为唯一后似乎继续共享实体。

  • 固定的Sketchup::Group#description=这在设置组的描述之前没有使组唯一。

  • 修正了错误"RangeError: value cannot be negative"在的有效输入上引发的Sketchup::ConstructionLine#stipple=

  • 固定的Sketchup::DefinitionList#load并从没有正确启动Ruby操作的url加载。

  • 修复了应用模型中不存在的材质(从“材质浏览器”或从其他打开的模型中选择的材质)时可能发生的崩溃和其他奇怪情况。现在,将在应用该材质的模型中重新创建材质。

  • 固定的Sketchup::Entities方法erase_entitiesadd_3d_text当调用组实体时,它不会使组唯一。

  • 属于封闭模型的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-现在已经修复了。

  • 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#onActiveSectionPlaneChanged

  • 补充Geom::PolygonMesh#set_uv

  • 修复了Sketchup::EntitiesObserver错误,在观察组的实体集合时,错误的实体引用将被发送到观察者方法。

SketchUp 2013 M1的新增功能

漏洞修补

修复了一个工具栏错误,该错误导致某些扩展无法显示,并且错误地停靠在其他工具栏后面。现在建议开发商来电UI::Toolbar#restore在创建了一个工具栏之后,尽管那些不能在SU2013 M1上正常工作。

修复了一个错误UI::WebDialog#get_element_value这导致它在Mac上的一些html元素上出现故障。

SketchUp 2013的新增功能

扩展SketchupExtension

新方法:

记录了LanguageHandler

LanguageHandler是我们现在在API中公开的现有内部类。 已对其进行了更新,以使其首先在扩展目录结构的Resources文件夹中查找转换后的资源(如Warehouse Developer Center中所述)。所有翻译过的资源都应该放在相应的语言文件夹中。

添加了特殊的HTML链接来启动扩展仓库上的扩展页面

请参见"skp:launchEW"{UI::WebDialog类文档中的链接。

变化Sketchup.send_action

"addBuilding:"已删除。

SketchUp 8 M2的新增功能

SketchUp8的第二个维护版本于2011年12月1日发布。它包含了一些关于管理扩展的rubyapi。

改进了SketchupExtension类

五种新方法:

添加了ExtensionsManager类

允许您检查注册了哪些扩展。

在Sketchup对象中添加了新挂钩

SketchUp 8M1有什么新功能

SketchUp8的第一个维护版本于2011年1月12日发布。它包括几个rubyapi的修复和添加。

改进了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)

扩展UI::Command等级

新方法:

扩展了材质/材质类

新方法:

允许Ruby访问“Shadow Bug Fix”

如果关闭了阴影M1.0,你可以找到一个意外的结果。

改进的Alpha透明度控制

修复了几个错误

在最近的SketchUp版本中,我们意外地引入了一些bug。所以我们在8.0 M1中修复了它们:

Sketchup::View#pick_helper不再尊重传递给它的参数。这打破了贝塞尔.rb和BZ工具插件。现在修好了。

Sketchup::ConstructionLine#stipple=方法现在如文档所示工作。

Sketchup::Model#raytest方法偶尔返回不正确的值。我们修复了这个问题,并添加了一个可选的布尔参数来指定是否在隐藏的实体处停止:model.raytest(ray)-忽略隐藏的实体model.raytest(ray, true)忽略隐藏的实体model.raytest(ray, false)在隐藏的实体处停止(通过隐藏或隐藏图层)

Sketchup::Color#to_a正在返回一个BignumFixnum是意料之中的。AFixnum现在返回。

SketchUp 8的新增功能

在PC上更新了Ruby版本到1.8.6

SketchUp附带的Ruby解释器版本在PC上已升级到1.8.6(Mac上仍然是1.8.5)。请注意,1.8.6包含了数千个错误修复和稳定性改进,但它对语法也更加严格。在SketchUp7.x及更早版本中工作的脚本在SketchUp 8中可能存在语法错误。

WebDialog用户代理已更新

过去,WebDialogs会发送SketchUp特有的useragent字符串。现在,我们发送一个useragent,它是与嵌入式浏览器的原始useragent的连接,以及一个额外的字符串来标识SketchUp。这使得googleearth插件(和类似的插件)能够正确地检测到浏览器的类型,以便在SketchUp中正常工作。

Observer错误修复

Sketchup::EntitiesObserver#onElementModified现在接受两个参数:实体和实体,使其更有用。

修复了常见的崩溃Sketchup::EntitiesObserver#onContentsModified也,Sketchup::EntitiesObserver#onContentsModified重命名为Sketchup::EntitiesObserver#onElementModified为了一致性。

回拨Sketchup::MaterialsObserver#onMaterialRemoveAll现在已弃用,建议使用Sketchup::MaterialsObserver#onMaterialRemove相反。

写入图像大小钳制

Sketchup::View#write_image现在被钳制以导出16000x1600的最大图像大小,以防止冻结。

计时器以较小的增量工作

UI.start_timer现在接受小于1秒的值。

新的布尔方法

Sketchup::GroupSketchup::ComponentInstance有几种新的布尔运算方法:

  • manifold?

  • volume

  • intersect

  • union

  • subtract

  • trim

  • split

  • outer_shell

  • equals?

  • show_differences

Sketchup::Face#classify_point更新

注意,返回值Sketchup::Face#classify_point已更改为SketchUp 8。请参阅文档以获取应检查的常量列表。如果您的脚本依赖于硬编码的数值,您应该将它们更新为使用常量。

已修复崩溃

修复了碰撞Sketchup::Pages#addSketchup::Model#number_faces.

SketchUp 7.1的新增功能

新方法

SketchUp 7.0 M1的新增功能

新方法

SketchUp 7的新增功能

提高脚本性能

能够更快地执行内部启动操作事务。

go_faster = true
model.start_operation("My Processing", go_faster)
# Do processing here that was slow in SU6
# ...
model.commit_operation

添加go峈u faster boolean后,一些实际测试的结果(在同一台机器上比较SU6和SU7):

Intersect overlaps有500个重叠方块,28.4秒,而26.3秒(约92%长)

Make faces500个无脸立方体,21.7秒,而14.5秒(约66%的长度)

Windowizer 3.0四个20';x20';窗口,12x12 16.1秒,而7.0秒(约43%的长度)

Windowizer 4.0使用10个5';x5';窗口,6x6 22.6秒vs 8.7秒(约38%的时间)

改进的Web对话框

添加最小/最大宽度。

webdialog.min_width=100
webdialog.max_width=300
webdialog.min_height=500
webdialog.max_height=600

修复了对WebDialogs execute_脚本的Mac支持

webdialog.execute_script('alert("Bug is Fixed!")');

webdialogs的新full_安全模式(禁用插件和远程链接)

webdialog.set_full_security

能够隐藏Mac上的主页/下一页/上一页导航图标

webdialog.navigation_buttons_enabled=true

用于初始化基于哈希的清理器

my_dialog = UI::WebDialog.new(my_settings_hash)

控制比例工具手柄

您的脚本现在可以控制用户选择给定组件时显示的缩放工具控制柄。

# Disable the green and red-axes handles
# by setting bits 1 and 2 to 1.
behavior = my_component_definition.behavior
behavior.no_scale_mask = (1 << 1) + (1 << 2)

从Web加载定义,或保存到磁盘

能够从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

轻松确定它们是否在licensed Pro中运行

is_licensed_pro = Sketchup.is_pro?

ModelObserver中新的“模型级”回调

def onActivePathChanged(model) { # Detect edit mode }
def onPlaceComponent(instance) { # Detect placements }
def onExplode(model) { # Detect group/component explode }
def onBeforeComponentSaveAs(instance) { # Add data on save as }
def onAfterComponentSaveAs(instance) { # Then clean up }

检测他们是否通过AppObserver关闭了您的分机

def onUnloadExtension(extension_name)

开发商要求的各种改进

通过API删除场景

my_page.erase

保持SketchUp同步

UI.refresh_inspectors # force complete UI update
my_definition.refresh_thumbnail # force thumb update
my_definition.invalidate_bounds # force bb update

衡量你的团队,不管他们的转变

untransformed_bb = my_group.local_bounds

在自定义工具中使用鼠标中键

def onMButtonDown(flags, x, y, view) # now works!
def onMButtonUp(flags, x, y, view) # now works!

将Ruby控制台输出发送到标准输出如果您从命令行启动SketchUp,您可以管道到标准错误并看到Ruby puts语句为您显示。

Sketchup.exe > myRubyLog.txt

最后,我们修复了一些崩溃的错误,主要与模型中的实体迭代有关。

SketchUp 6的新增功能

SketchUp6RubyAPI最重要的补充是RubyObserver机制、Tools类、WebDialog类、Styles类和Style类。

Ruby观察者机制

RubyObserver机制的设计目的是在SketchUp应用程序或模型中的对象发生变化时,允许Ruby脚本收到通知。例如,可以创建一个观察者类,该类在SketchUp退出时“监听”,然后执行某些操作。

创建一个特定观察者类型的Ruby类,如AppObserver,覆盖所需的方法(如onQuit),并将观察者的实例添加到Ruby脚本中的适用对象(使用该对象的add_observer方法)。有关更多信息,请参阅各个观察者接口。

工具类

Tools类包含操作SketchUp工具集合的方法。此类主要用于通过使用键或鼠标操作在工具之间进行切换。

WebDialog类

创建并与之交互的Ruby WebDialog类,DHTML对话框,在本文档中称为webdialogs,来自Ruby代码。例如,您可以创建从Ruby代码调用的webdialogs来显示网站,或者接受用户输入并在Ruby代码中使用结果。样式和样式类Styles类包含用于操作模型中样式集合的方法。Style类包含用于修改有关特定样式的信息的方法。

Before SketchUp 6

API的62个核心类是在这里建立的。在SketchUp6之前很少有用户关注任何内容,所以这个文档站点只关注SketchUp6及更高版本。