SketchUp观察员和被删除的实体信息可以解决这个问题

阅读其他主题后,我了解到,在实体观察者的onEraseEntity方法中,我无法访问已删除实体中的信息。 是否有观察者(或其他方式)获取某个事件,该事件将被删除? 我对当前软件所做的是让用户使用我的UI删除我的一个实体。什么时候发生这种情况时,我检查实体是什么,它是否与另一个实体关联(通过属性信息)。 例如,当用户删除一个窗口时,我看看它属于哪面墙去。然后呢然后我把墙上的洞关上,把窗户也去掉了。 问题当然是,用户只需选择窗口并以旧的方式删除它快点。这个在墙上留下一个洞墙。什么我需要做的是: -看到窗口将被删除 -从窗口的属性中获取相关信息 -允许删除发生 -关闭墙上的洞 如果我不能用观察者来做这件事,有人知道我该怎么办吗? 提前感谢您的支持救命,你呢男人总是很有洞察力好主意。我的如果没有你,项目将陷入泥潭。 当你创建墙的实例时,你将定义它的初始属性,例如, 我是墙1 我有几个属性,比如颜色,高度等 没有窗口:但是当你创建一个窗口实例并放到墙1上时,你将定义它的属性,例如, 我是一个窗口1 我属于墙1,在这里和那里的某个位置,我的大小是这个和那个,然后创建这个窗口的最后一部分通知墙1,通过将墙1的属性修改为: 我是一个墙1 我有几个属性,比如颜色、高度,所以 现在有一个窗口:window1 位于这里和那里的窗口 我打开了一个洞对于大小为this和that的用户。 现在,您可以将一个观察者附加到window1实例,以侦听它是否被删除。 当用户删除此window1实例时,observer OnRaseEntity方法将启动。在该方法中,您仍然可以读取墙的属性(包含洞口信息),并注意关闭墙的洞口1,并将其属性修改回initials。 Class:Sketchup::EntityObserver Johno3535: 是否有一个观察者(或其他方法)来获取将要删除的事件? 现在不行。API问题跟踪程序中有一个打开的请求…github.com/SketchUp/api-issue tracker 3已删除事件的观察员-应在删除前启动3已打开上海2019年12月9日上午5:39,2019年12月8日下午10:39洛杉矶2019年12月9日下午1:39 Fredosixx检测到实体、实例、定义等删除的所有观察者。。。开火…在移除后地点。作为因此,observer event方法的参数中传递的对象或id引用的是一个已删除的实体,因此完全没有用处,因为我们无法对其进行任何查询。**请求**:在删除之前触发observer事件,以便我们可以对对象或实体执行有意义的操作。有\"after\"事件只是一个加号,但如前所述,完全没有用。我认为无论如何**应该完全重新访问整个obserapi**。它的设计方式通常是不可用的,在许多情况下是错误的,即使一些错误已经在SketchUp版本中得到了修复。至少,任何事件驱动框架都会在事件发生之前和之后触发显式方法。此外,目前还不清楚在观察者方法中可以做什么和不可以做什么。观察器的概念非常强大,但至少可以说,当前的实现是有缺陷的。 Johno3535: 如果我不能用观察器来做这件事,有人知道我该怎么做吗?一般来说,您将需要访问的信息附加到实体层次结构中较高的对象上。 您可以使用DefintionsObersever#onComponentInstanceRemoved回调来触发对\"父\"对象属性的搜索。 @dezmo显示了上面的一个场景。 您可能没有意识到的是,一个AttributeDictionary是一个Entity子类对象,它本身也是有一个AttributeDictionaries的儿童词典集合(比如每个窗口和/或打开一个)。 谢谢@dezmo和@DanRathbun。 我对这些场景的问题是IFC导出。每个这些项目(墙、窗、门等)中的一个是IFC组件。我需要保存在要导出的组件词典中的信息当我执行导出。如果信息不包含在组件的字典,它不会被导出到IFC文件。 有什么想法吗?这与观察者的话题不同。请在论坛中搜索有关国际金融公司的讨论。 修好。基本上, 我需要在删除该项之前获取观察者事件,以便查询属性。但是我不能从元素中删除属性(正如您和@desmo所建议的),因为属性需要在那里国际金融公司这是一个难题。 也是您前面提到的API请求的一个很好的例子。 创建一个自定义观察者,将重要数据存储在其中并将其附加到窗口。 mobnamico/mobnamico_load 如果您不喜欢类(但是类是首选的),但希望捕获上下文:使用lambdas: \"ex_hello_cube/main\"SketchUp在默认观察者中为您提供。 删除对象后观察者会发生什么?它是被sketchup删除的还是我需要跟踪它? 你现在的观察员怎么办?它是你的观察者对象。您的代码可以保持对它的持久引用……即,File.join(\"mobnamico\", \"constants\"). 但是附加它的操作也意味着SketchUp的观察者队列也保留对它的引用。 删除任何附加了观察者的API对象时会发生什么情况?很简单,它们由SketchUp引擎从观察者回调队列中删除。如果没有其他引用,那么在下一个GC循环中,它们将被垃圾收集。 但是(正如您所发现的那样,include MobnamicoConstants回调在删除之后,但在清理之前被调用。我想我们都同意这几乎使回拨毫无价值。(如果可以检查include MobnamicoConstants对象的pid,可能会更好一些。)

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

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

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

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

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

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

SketchUp保持数值而不考虑单位

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SketchUp从多个曲面创建多个组

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

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

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

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

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