SketchUp类中的钩子ruby方法

嗨, 我是一名c++开发人员,对ruby的东西不太熟悉。有什么方法可以钩住现有的ruby类和类成员函数吗? 例如,钩住InputPoint并更改InputPoint.pick文件,因此我可以在pick中添加一些自定义函数。 您好, Han 首先,您应该不要更改核心Ruby类或API类,因为这将对其他扩展造成严重破坏。 在Ruby中有改进允许单个文件或类更改Ruby类,因此只有使用细化的文件才能看到更改。 文件:优化.rdoc[Ruby 2.7.1]3 但是Ruby实际上是用C实现的,而且有一些方法可以从C/C++调用Ruby方法。 但是我不太确定Ruby在C中是如何改进的。 你呢应该读一下…媒体.pragprog.com66分机_红宝石.pdf6 486.54 KB 它有点旧,早于Ruby的改进,但是可以让您从C端了解如何使用Ruby。 正如Dan所说,Ruby API方法是使用Ruby C API实现的,并且是封闭源代码。你不能阅读这些方法并根据它们的代码来编写自己的方法。 你可以做的是检查你想要输入的更改是否记录在我们的Ruby API Issue Tracker 2中,或者以其他方式添加它。 优化似乎是一种方法。但它能遗传给别人吗?这就是我改进InputPoint,但是所有其他插件甚至本地SketchUp工具也会响应我的改进? 恐怕这不是输入点的问题。因为我要选择的是原生OpenGL对象,而不是SketchUp实体。 saedrna: 但是它能被继承给其他人吗?这就是我改进InputPoint,但是所有其他插件甚至本地SketchUp工具也会响应我的改进? 否。这就是Ruby精化的目的。Ruby类(或文件)必须明确使用1来细化。 p>要点是SketchUp核心C代码(本地工具)或其他Ruby扩展不会\"使用1\", hr>p>而且本地SketchUp工具也不能被API修改。但是这些工具中的一些可以被观察者\"观察\"并对他们的行为做出反应。 通常,如果扩展作者需要自定义行为,他们必须编写自己的Ruby工具。 多亏了您的解释。 通常是这样,但我很肯定这是可能的。因为正如在另一个线程(类似于saedrna 2的Trimble Scan Essential-#4的捕捉点云)中所提到的,Trimble Scan Essential插件gas改变了InputPoint的行为。 我可以在C中钩住标准Win32 API,但是不要为InputPoint之类的东西获取函数。saedrna: 但是我很肯定这是可能的。因为…,Trimble扫描基本插件气体改变了InputPoint的行为。 好吧,Trimble本身可以创建\"秘密钩子\",因为它们可以访问SketchUp代码的C++核心。我们这些\"低级\"API开发人员无法获得这些\"秘密\"。 另外,我在那个主题中问过,您是否可以发布一个带有使用该扩展创建的小型点云的模型。然后我就可以看到云状物体了。(我自己没有扫描扩展名,也没有激光扫描仪。) saedrna:实体。但是尽管如此,SketchUp API不提供任何访问OpenGL数据的方法直接。你呢可以在工具的draw方法中生成OpenGL对象,但这是单向的;您无法获得对它们的引用,并且有方法请求它们。我对黑客的攻击持谨慎态度,因为你有可能完全破坏SketchUp与OpenGL的纠缠。 我明天将发布一个点云。这个插件有30天的试用期。 事实上,它并没有你想象的那么危险。很多插件都做这种事情,比如undet和Trimble Scan Essential。saedrna: 事实上,它并没有你想象的那么危险。很多插件都是这样做的,比如Unet和Trimble Scan Essential。 我会挑战\"很多\"。但不管怎样,是什么让你相信这些扩展直接读取OpenGL数据?他们不是把几何图形添加到SketchUp模型的内容中,然后显示在视图中吗?如果所有结果都是可视化的,而不是几何体,我看不到\"导入\"点云数据的意义,因为在SketchUp中不会有结果模型。 slbaumgartner:blockquote>p>如果所有结果都是可视化的,而不是几何体,我看不到\"导入\"点云数据的意义,因为在SketchUp中不会有结果模型,因为SketchUp不可能如果这些数据是编辑模型的一部分, 通过可视化地引入它们,用户可以看到它们,捕捉到它们,并将它们用作绘制模型的底层。 我认为SketchUp没有办法捕捉到几何数据库中没有的任何数据?我认为SketchUp没有办法捕捉到它的几何数据库中没有的任何东西? 不是开箱即用的,不是。但这正是OP试图通过编码实现的。 我上传了一个视频来演示我的开发过程。InputPoint不能这样做,但只有我自己的工具可以。但是,Trimble Scan Essentials不会这样做。它影响所有使用InputPoint的工具。? 也许我误解了任务,但至少只是为了好玩,我做了一个测试…我如何想象在opengl点上捕捉:(我不知道影响性能… ***0***点在\"虚拟\"曲线顶点数组中,这就是***1***捕捉到的。(即,虚拟的,因为实际的曲线对象不存在。这是我发现这个例子最有趣的地方。) 这个主题和相关主题的要点是,OP(是说)他没有权限\"读取\"Trimble Scan Essentials扩展创建的\"特殊\"点云的点位置。在这个主题中,Christina说,..与Trimble-Scan-Essential类似的点云快照 这不能用我们当前的开放API来完成。Scan Essentials是一个Trimble扩展,可以获得一些特权。虽然我们喜欢为每个人提供有用的API,但在有些情况下,我们自己的一个团队需要访问一些我们不想公开的东西,因为如果使用不当,它会有破坏东西的风险。 事实上,我们不知道它的底层C APIInputPoint.pick文件. 我不知道如何实现这个

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

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

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

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

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

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

SketchUp保持数值而不考虑单位

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

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

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

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

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

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

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

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

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 浏览:797

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

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

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

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

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

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

SketchUp从多个曲面创建多个组

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

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

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

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

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