网淘吧Visual Components、Flexsim 仿真技术博客 | Python、C#、Delphi xe 机器人编程教程 - 网淘吧

复制模型与从 eCat 加载模型- Component Modeling - visual compents 疑难解答

2026-04-03 新闻来源:网淘吧 围观:1258
电脑广告
手机广告

复制模型与从 eCat 加载模型

组件建模

大家好,

我们正在使用大量脚本化的自定义组件,以尽可能简化配置(基于接口连接自动连接信号、基于设置的参数化路径等)。

我们注意到,当从我们的目录加载这些模型时,它们的行为符合预期:我们可以根据期望更改组件(如宽度、传感器数量等)。然而,当我们在 3D 环境中复制现有模型时,复制的模型无法正确更新。我在此帖中附上了一段简短视频作为示例。

我们想知道从 eCat 加载模型与在虚拟环境中复制粘贴模型有什么区别?唯一可观察到的区别是,复制粘贴期间不会弹出“打开文件”的弹窗。

有没有办法解决这个问题,并在复制粘贴期间“正确”加载我们的模型?

诚挚问候,

Boon

Switch Feature 可能不接受像“With Drive”这样带空格的属性名称,所以我猜想您要么有另一个属性用于在“Switch”功能中更改几何体(您根据“With Drive”的值在脚本中更改该属性),要么您直接在脚本中更改可见性?
如果是这样,您将“OnChanged”放在脚本中的什么位置?或者您可以向我们展示应该发生更改的那部分脚本吗?

你好 Tilma,

感谢您的快速回复!根据您的问题,以下是更详细的回答:

  1. 属性名称和 Switch Feature:在我们的案例中,我们没有使用 Switch Feature,而是直接通过脚本控制可见性。

  2. OnChanged 处理程序的位置:在 Configscript 的第 1576 行,我们注册了“With Drive”属性的 OnChanged 处理程序:

if with_drive_prop:
    with_drive_prop.OnChanged = onToggleMotor
    onToggleMotor(with_drive_prop)
else:
    safe_print("Error: 'VDB::With Drive' property not found")
  1. 更改如何发生:可见性更改发生在第 1164 行的 onToggleMotor 函数中:
def onToggleMotor(property_object):
    """Toggle motor visibility based on 'With Drive' property."""
    if motor_object_to_toggle:
        motor_object_to_toggle.Visible = property_object.Value
        
        # Force visual refresh to make changes appear immediately
        force_visual_refresh_local()
    else:
        safe_print("Warning: 'Motor(Transmission)' feature not found")

motor_object_to_toggle 定义为:

motor_object_to_toggle = comp.getFeature("TransformMotor")

此外,其中一位工程师指出:

关于复制粘贴与目录加载:我怀疑问题与脚本初始化时序有关。从目录加载时,会执行完整的初始化序列(属性加载 → 脚本执行 → OnChanged 处理程序注册 → OnStart() 调用)。然而,在复制粘贴操作期间,这个序列可能会被中断或按不同顺序执行,导致某些 OnChanged 处理程序无法正确注册或执行。但这只是猜测。

再次感谢您的时间,
Boon

你好,我在这里遇到了同样的问题。从 eCat 加载我们自定义的组件时,属性更改工作正常。但是,当我们复制组件并粘贴到 3D 世界中时,复制组件的属性错误地链接到了前一个组件。

我们该如何解决这个问题?

你好 nattika,

我们的“解决方案”涉及重新设计我们构建组件的方式。现在,我们尝试更多地依赖从 Python 脚本中的基类继承的现有参数(例如,一个基本的输送机)。这样,复制粘贴似乎可以正常工作。

以前,我们会创建自己的属性,然后根据这些属性设置组件大小等。

希望这对你有帮助,尽管这可能不是“正确”的答案!

你好 BionicBoon,

非常感谢您分享想法!我不太明白您说的“从基类继承的现有参数”是什么意思。

在我们的案例中,我们试图更改自定义对象的“文本标签”。第一个对象工作正常,但复制粘贴一个组件后,新组件的属性仍然链接到第一个组件。

即使选择“使组件唯一”也无济于事。

欢迎任何人提出任何建议:wink:

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部

相关文章

上网淘巴领天猫淘宝优惠券,一年省好几千。

广告  ×

您是本站第853575名访客 今日有0篇新文章/评论