|
|
[color=rgb(33, 33, 33)][font=宋体][size=12pt]更改任务执行程序的打包方法可能很棘手,并且类型之间也可能有很大差异。在本文中,我们将探讨每个 TE 的默认打包方法,以及如何更改它以适应模型的需求。Attached 是一个模型,它演示了默认的打包方法和比较。该模型也是获取 ASRS、起重机和 Robot 的预制代码的最佳位置:[/size][/font][/color]
[color=rgb(33, 33, 33)][font=宋体][b][size=4]Task Executers[/size][size=4]上的默认堆叠[/size][/b][align=left]TE 上有两种类型的默认堆叠方法[/align][align=left]AGV、作员、叉车、ASRS 和 basicTE 都使用简单的上下堆垛方法:[/align][/font][/color]
[color=rgb(33, 33, 33)][font=宋体][size=12pt][align=left]其他 TE(电梯、机器人和起重机)根本不将箱子分开,因此它们看起来都像是彼此重叠的(这是因为它们一次只能携带一件物品):[/align][/size][/font][/color]
[color=rgb(33, 33, 33)][font=宋体][b][size=4]更改堆叠模式:[/size][/b][b][size=4]AGV[/size][size=4]、作员和BasicTE:[/size][/b][align=left]对于这些对象,更改堆叠方法相对简单。[/align][align=left]1.向对象添加 5 个标签:numx、numy、xshift、yshift 和 zshift[/align][align=left]2.在属性面板中添加 OnLoad 触发器[/align][align=left]3.通过转到 Visual-Set Location 设置触发器>Set Location[/align][align=left]4.输入此代码[/align][size=12pt]current.xshift+item.size.x*((item.rank-1)%current.numx)-current.yshift+item.size.y*(Math.floor(((item.rank-1)/current.numx)%current.numy) - (current.numy-1)/2)current.zshift+item.size.z*Math.floor((item.rank-1)/current.numx/current.numy)[/size]
这3个对象之间唯一不同的是标签值。标签“numx”和“numy”设置 x 方向上的对象数量和 y 方向上的对象数量。例如,AGV上的3x3网格会将“numx”设置为 3,将“numy”设置为 3[/font][/color]
[color=rgb(33, 33, 33)][font=宋体][table]
[tr][td=142]
[/td][td=142][align=left][align=left]x轴[/align][/align][/td][td=142][align=left][align=left]Y轴[/align][/align][/td][td=142][align=left][align=left]z轴[/align][/align][/td][/tr]
[tr][td=142] [align=left]AGV自动导引车[/align] [/td][td=142][align=left][align=left]1[/align][/align][/td][td=142][align=left][align=left].5[/align][/align][/td][td=142][align=left][align=left].5[/align][/align][/td][/tr]
[tr][td=142] [align=left]算子[/align] [/td][td=142][align=left][align=left].75[/align][/align][/td][td=142][align=left][align=left].29[/align][/align][/td][td=142][align=left][align=left]1.10[/align][/align][/td][/tr]
[tr][td=142] [align=left]基础 TE[/align] [/td][td=142][align=left][align=left]0[/align][/align][/td][td=142][align=left][align=left]0[/align][/align][/td][td=142][align=left][align=left].85[/align][/align][/td][/tr]
[/table][b][size=4]电梯、机器人和起重机:[/size][/b][align=left]这些对象与上述 TE 的对象非常相似。您将按照上述相同的步骤作,但在On Load(加载时)触发器上,选择仅在框中粘贴自定义代码。它们的代码略有不同(由于堆叠的方向/方式不同),您可以从上面的模型中复制。但是,您仍将向 TE 添加标签。您可以使用如下标签进行设置:[/align][table]
[tr][td=142]
[/td][td=142][align=left][align=left]X轴[/align][/align][/td][td=142][align=left][align=left]Y轴[/align][/align][/td][td=142][align=left][align=left]Z轴[/align][/align][/td][/tr]
[tr][td=142][align=left][align=left]电梯[/align][/align][/td][td=142][align=right][align=left].7[/align][/align][/td][td=142][align=right][align=left]1[/align][/align][/td][td=142][align=right][align=left].095[/align][/align][/td][/tr]
[tr][td=142][align=left][align=left]机器人[/align][/align][/td][td=142][align=right][align=left].34[/align][/align][/td][td=142][align=right][align=left].35[/align][/align][/td][td=142][align=right][align=left].2[/align][/align][/td][/tr]
[tr][td=142][align=left][align=left]起重机[/align][/align][/td][td=142][align=right][align=left].2[/align][/align][/td][td=142][align=right][align=left].5[/align][/align][/td][td=142][align=right][align=left]-.25[/align][/align][/td][/tr]
[/table][b][size=4]叉车:[/size][/b][align=left]这是最容易更改的对象,因为它已经内置到TE中。[/align]要更改堆叠模式,只需添加一个OnEntry触发器并选择Transporter Stacking Method,然后将值更改为您想要的值。[/font][/color]
[color=rgb(33, 33, 33)][font=宋体][/font][/color]
[color=rgb(33, 33, 33)][font=宋体][b][size=4]ASRS[/size][size=4]:[/size][/b][align=left]对于这个,您可以通过编辑模型树来更改堆叠方法。[/align][align=left]更改它的步骤简单但具体:[/align][align=left]1通过右键单击并选择Explore Tree来打开对象的模型树[/align][align=left]2.在 ASRS 节点下找到行为节点[/align][align=left]3.在下面添加一个名为“eventfunctions”的节点[/align][align=left]4.在您刚刚创建的节点下,添加一个名为“OnPreDraw”的节点[/align][align=left]5.将下面的代码粘贴到该节点中(您可以编辑此代码以根据需要更改堆叠方法):[/align]inheritcode();TaskExecuter current = c;Object followingObj = first(current);double numx = 1;double numy = 4;double xshift = .95;double yshift = 1.45;double zshift = .1;while(objectexists(followingObj)){double x = xshift+followingObj.size.x*((followingObj.rank-1)%numx);double y = -yshift+yloc(node(">visual/drawsurrogate/Lift/Slide", current))+followingObj.size.y*(Math.floor(((followingObj.rank-1)/numx)%numy) - (numy-1)/2);double z = zshift+followingObj.size.z*Math.floor((followingObj.rank-1)/numx/numy);double xFactor = 0.5;double yFactor = 0.5;double zFactor = 0; setloc(followingObj, x, y, z, xFactor, yFactor, zFactor);followingObj = next(followingObj);}
[align=left]需要记住的一些事项:[/align][align=left]每个 TE 都可以由用户完全自定义,因此我认为看起来正确的偏移量对您来说可能看起来不正确,好消息是它非常可变![/align][/font][/color]
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|