SketchUp启动时运行脚本

我在扩展加载时有一个http调用,它可以正常工作并命中服务器,但消息框没有显示。这是我的示例代码_分机.rb module> my_extension/my_own_extension.rb class == Sketchup::Http::STATUS_SUCCESSUI.messagebox \"Success\", MB_OKelseUI.messagebox \"Failed\", MB_OKendend 但是如果我更新FetchServer并在类上添加一个消息框,它现在会显示状态消息框 class == Sketchup::Http::STATUS_SUCCESSUI.messagebox \"Success\", MB_OKelseUI.messagebox \"Failed\", MB_OKendendUI.messagebox \"Fetch called\", MB_OKend 是否有任何解决方法,以便我不需要调用另一个消息框? 一般来说,将每一段代码包装在一个方法中是一个好的做法,这样您就可以完全控制代码的运行时间(即调用该方法的时间)。 class FetchServerdef == Sketchup::Http::STATUS_SUCCESSUI.messagebox \"Success\", MB_OKelseUI.messagebox \"Failed\", MB_OKendendendself.do_fetch()end 我认为用户不会仅仅为了让一些代码正常工作而喜欢消息框。消息框中断用户是因为它们是\"模态\"的,这意味着消息框会阻止Ruby代码的执行(以及任何其他用户交互),并等待用户做出响应。 这意味着当代码与消息框一起工作而不是没有时,很可能是由于异步性引起的计时问题。请求回调块被安排在请求完成后异步运行,而代码执行立即继续执行下一行(\"Fetch called\"),该行阻止执行并等待。尽管这样的超时隐藏了异步代码的问题,但它们并不是一个可靠的解决方案。 我也不会在加载时运行繁重的计算,因为其他扩展也需要加载,而且用户不愿意与应用程序交互。您最好在启动和加载所有扩展之后调用服务器。你可以用零超时来完成,在加载/执行之前的所有脚本完成后,有效地安排代码的时间: UI.start_timer(0, false) {FetchServer.do_fetch()} 请在Ruby API子类别中发布Ruby编码问题。 (1)您的所有扩展代码都应位于唯一顶级命名空间模块中的单独子模块中。(即,在顶级ObjectSpace中定义自定义类是绝对不允许的,因为它们将成为全局类。只有某些API类和Ruby核心类应该在顶层定义。) (2)服务器请求应该延迟到绝对必要时,不是在SketchUp的启动周期中。 模态消息框可以中断其他扩展的加载,也可以在SketchUp加载时被抑制(以避免干扰其他扩展的加载)。 (3)类似的东西应该由方法调用触发,而不是在加载和评估扩展的类。 (4)通常尝试避免调试的模态消息框,并使用puts()将信息字符串输出到控制台。 (5)您没有正确命名扩展注册器文件或其文件夹,也没有在SketchupExtension对象的构造函数调用中设置正确的路径名。 即…构造函数的第二个参数是\"sample_extension/fetch_server\",但是在这个例子中给出的实际路径是…\"my_extension/my_own_extension.rb\"。 这个\"Plugins\"文件空间是一个共享空间,就像SketchUp的RubyObjectSpace。 所以让我们假设您唯一的命名空间模块标识符是\"marcsyu\",而您的扩展子模块名称是\"SampleFetch\"使用链式模块名:\"MarcoSyu_SampleFetch.rb\"和\"MarcoSyu_SampleFetch/\" 例如: # encodng: UTF-8# File: \"MarcoSyu_SampleFetch.rb\"#module MarcoSyumodule> … and then the loader file must be as named in the constructor\"s 2nd argument: \"MarcoSyu_SampleFetch/fetch_server.rb\" 现在,我特别认为您的问题是由于违反了上述条件(在启动周期中)而产生的,并且您误用了class对象。 类用于实例化多个代码实例,每个实例都保留自己的状态和实例变量。类实例对象是通过构造函数调用创建的,通常是对new()的调用,然后自动调用新实例的initialize()方法。 您的类没有定义它的initialize()方法,因此这会发出一个危险信号,表明您实际上可能不需要类。也许这应该包装在一个方法中,并在扩展的子模块中? 示例:尝试使用AppObserver触发对fetch_server()方法的延迟调用… #encodng:UTF-8#文件:\"MarcoSyuu SampleFetch/fetch_服务器.rb\"模块marcsyumodule SampleFetchextend self\"这是由SketchUp引擎在启动期间调用的AppObserver回调循环.def预期启动ModelNotificationsUI.startu计时器(5.0,false){#在5之后调用服务器秒:获取服务器()#将此子模块分离为AppObserver:Sketchup.removeu观察者(self)}return falseend}def==Sketchup::Http::STATUS_SUCCESSputs\"请求成功。}Read响应。主体>

SketchUp在扩展仓库中更改扩展的价格不再是即时的…为什么?

我想把这个假期所有的分机都降价,但由于新分机仓库的变动,我不能降价。以前更改插件的成本非常容易,现在需要永远的时间。可以像以前那样更改吗?谢谢!现在是否需要您创建一个新草稿并再次进行审阅?办公室已在假期关闭,因此我们目前正在积压处理审阅队列。它应该很快就会恢复正常。我们正在计划清理编辑/提交过程,以便再次只有一个新的RBZ需要一个新的草稿和审阅。tt琰su:现在是否需要您创建一个新草稿并再次审阅?是的...

日期:2021-06-26 02:00:03 浏览:579

SketchUp访问组的实体以应用/更改材质

您好,据我所知,可以在组中添加实体。是否有任何方法可以访问组的特定面(例如:大小为1米、1米、1米的立方体,由6个面组成)并在每个面上应用不同的材料。谢谢这是完全可能的,尽管你需要使用的技巧取决于你对你想要的脸的了解程度油漆。一些示例:- 如果您自己创建了面,您可以立即应用材质>- 如果您知道感兴趣的面已经在组中,您可以检索它们>然后需要决定数组中的哪个面将接收哪个面材料。那个可以通过测试每个面的正常。注意grep将在组中找到所有的面孔,如果有其他人在场的话,这些面孔可能会包含比你想处理的更多的面孔我也是。...

日期:2021-06-26 05:00:05 浏览:718

SketchUp保持数值而不考虑单位

我已经开始开发一个插件,我希望输入框中的值以当前单位输入。当前如果我指定>如果模型是mm,它就可以工作,但是如果是英寸就不行。如果我只是有了相同的>如果模型是英寸而不是毫米就可以工作。有没有某种自动转换,我可以把@radius的值建立为当前的工作单位?Class:Length 1Class:Numeric 1我很欣赏文档的链接,但我已经了解了这一点,仍然不知道如何转换为当前单位。确保将默认的inputbox维度值设置为Sketchup长度。然后它将自动转换并保存为长度值(以英寸为单位)并以模型单位显示,自动...

日期:2021-06-26 06:00:03 浏览:988

SketchUp复制组/组件时出现持续的ID错误

rigin(在片段中设置)。对于你的mod,明显的旋转中心是短线的末端(右侧):这不是我的目标。这实际上使用了Sasquatch:此外,用户可以通过文本指定副本的数量(使用\"s\")供参考,所有本机工具都使用\"s\"表示边的数量,使用\"x\"表示副本的数量。明白了,按照建议从\"s\"更改为\"x\"。与此同时,我弄明白了为什么我的\"卷积\"代码产生了正确的转换,而你的代码却没有…在你的代码中,你添加每个新实例,同时对其执行转换,这只会导致相对于预选组的局部轴的转换,而是关于模型空间(或worlds...

日期:2021-06-26 07:00:04 浏览:744

SketchUpC点/引导点的样式是否可行?

我正在测试用点云做房子模型。导入点(dxf),SketchUp将其转换为许多cpoint。使用这些进行捕捉的建模很好。我的问题是:是否可以\"样式化\"cpoints?比如尺寸、颜色等?更多的视觉控制可能会更好。另外,API中是否有其他实体可以将这些CPoint转换为更小/更精细/更可定制的CPoint?通常,他们应该在渲染选项散列(样式)中采用指导色的颜色,如果\"按标记颜色\"处于禁用状态。如果\"按标记颜色\"处于启用状态,则他们将使用层/标记颜色显示。实验表明,指定材质不会使他们按材质显示。(即,指...

日期:2021-06-26 07:00:04 浏览:651

SketchUp如何获取html值

从HTML对话框获取值时出现问题。This is callback function at sketchup.add_action_callback(\"receiveValue\") { |not_used, id, val|receive_value(id,val)}def receive_value(id,>I try to get input value like this, but I can\"t get>I can\"t get dlgValues, so I checked the size...

日期:2021-06-26 12:00:03 浏览:812

SketchUp如何判断V-Ray渲染是否已完成

你好!我正在使用V-Ray自动渲染,但遇到了一个问题,即无法知道渲染何时完成。目前我渲染场景,然后等待20秒,更改模型的材质,然后再次渲染,但如果渲染在5秒内完成,这是一个非常无效的系统。到目前为止,我已经完成了尝试了live_scene.renderer?布尔值和几个VRay::Renderer::IDLE_变量,但没有成功。问题是,在从扩展渲染循环时,布尔值不会更改,因此代码总是超时,即使渲染更快完成。下面是一些示例+=1if i>20puts\"超时渲染\"BreakEndModel.commi...

日期:2021-06-26 14:00:01 浏览:1166

SketchUp rubyapi:将工具栏停靠到其他工具栏

我已经创建了自己的工具栏,但是我不知道如何将它自动停靠到行上,所有其他工具栏都已经位于行上(在下拉菜单下)。有什么提示吗?DanRathbun在post#2中解决的用户必须进行对接。您所能做的就是调用#restore。用户必须进行对接。你所能做的就是打电话给#restore4...

日期:2021-06-26 15:00:04 浏览:815

SketchUp从多个曲面创建多个组

大家晚上好,我有一张约2000个小表面的图纸,我想分组制作,然后推拉。创建曲面后,如果图形是新的,下面的脚本工作得非常好。当我只选择第二个或第三个曲面时,它仍然运行得很快,但是当我选择了一个并且在脚本中有一个以前创建的组时,它只以一半甚至更少的速度运行,脚本变成\"没有响应\",但最终在后台运行一段时间后它就完成了。即使我重新启动sketchup甚至pc并重新运行脚本,它仍然很慢。当我分解所有组并进行另一个选择时,脚本又变快了。如果我做错了什么,也许有人能告诉我。我的笔记本电脑有16 GB内存,图形卡是,并...

日期:2021-06-26 20:00:05 浏览:633

SketchUp有没有办法加快添加面和边的速度?

我正在创建一个进口商。我用实体添加面以及实体添加边导入一个模型,但是要花很多时间。54234个面需要11秒来添加面85417个边需要9秒来添加边这是一个简单的模型。对于复杂模型,创建面和边的时间太长,无法接受。我怎样才能加快速度?谢谢。您是否创建了撤消操作并在操作过程中关闭了UI?- Sketchup::Model#start_operation- Sketchup::Model#commit_operation您是否考虑过创建虚拟多边形网格…- Geom::PolygonMesh4class…然后在操作中...

日期:2021-06-27 00:00:03 浏览:850