在我的模型中,有一个码垛区,一个码垛剂移动到一个靠近堆积输送机的位置,捡起那个输送机上的最后一个盒子,并把它转移到一个托盘上。
我正试图找到最好的方法来引用传送带上的最后一个盒子,并将它存储在一个变量中。
我知道ConveyorPath.getAgent(),文档化的这里,但它似乎不能正常工作,引发以下错误:
Code : v_box = v_conveyorPath.getAgent(0);
Error : Description: Type mismatch: cannot convert from Agent to Box.我已经进入我的传送带标记,并将“材料项目类型”字段更改为"Box",但没有效果。
我在这里做错什么了?如何让ConveyorPath返回Box类型而不是Agent类型?
谢谢。
编辑:运行测试后,我可以确认我的传送带上的代理商是Box级的。
traceln(conveyor.getAgent(0).getClass());
Output : class modelname.Box然而,我仍然不能在变量的内部存储对该Box的引用。
发布于 2021-11-30 04:52:51
你可以简单地把你得到的代理变成一个盒子。
Box myBox = (Box)conveyor.getAgent(0)
请记住,如果在传送带上有任何不是盒子的东西,这种类型的铸造就会造成错误。
在这里阅读更多casting.asp
但是如果您在传送器对象中指定您拥有的对象是盒子,或者在本例中在纸箱下面,

然后,get函数将返回指定类型的代理,因此没有铸造条目。

后一种选择在大多数模型中是最安全的,也可能是更正确的方法。
https://stackoverflow.com/questions/70160330
复制相似问题