Storage.Slot
説明
ストレージオブジェクトの格納可能スロットのグリッドの一部であるスロット。
プロパティ
address | スロットのアドレス。 |
aisleID | スロットの通路ID。 |
bay | スロットのベイ。 |
bayID | スロットのベイID。 |
isStorable | そのスロットが格納可能スロットの場合は1、それ以外の場合は0。 |
labelProperties | 独自の名前付きプロパティを使用して、スロットのラベル値を取得または設定します。 |
level | スロットのレベル。 |
levelID | スロットのレベルID。 |
location | スロットのストレージオブジェクトのローカル座標で、スロットの下端、前面、左隅の場所。 |
size | スロットのサイズ。 |
slotID | スロットのスロットID。 |
slotItems | このスロットに格納または割り当てされているStorage.Slot.Itemの配列にアクセスします。 |
StorageObject | スロットのストレージオブジェクト。 |
zoneID | スロットのゾーンID。 |
メソッド
getLocation | スロット内の位置を取得します。 |
hasSpace | 渡されたアイテムをスロットに格納するため十分な容量があると計算された場合に1を、それ以外の場合に0を返します。 |
restack | スロットに格納されている一部またはすべてのアイテムについて、スロットのスタッキングアルゴリズムを再実行します。 |
詳細
Storage.Slot.address
readonly string address
説明
スロットのアドレス。
スロットのストレージオブジェクトにアドレス方式が存在するなら、そのアドレス方式に従ってスロットのアドレスをフォーマットします。存在しない場合、アドレスは<StorageObjectName>-<BayNumber>-<LevelNumber>-<SlotNumber>のようにフォーマットされます。
Storage.Slot.aisleID
readonly Variant aisleID
説明
スロットの通路ID。
スロットのストレージオブジェクトにアドレス方式が存在するなら、そのアドレス方式に従ってスロットの通路IDをフォーマットします。言い換えると、通路のアドレス方式が数値でアドレス指定されるなら、通路IDは数値です。それ以外の場合、通路IDは文字列です。アドレス方式が存在しない場合、通路IDは空白になります。指定されたストレージオブジェクトのすべてのスロットが、ストレージオブジェクトの通路IDを自分の通路IDとして使用します。
Storage.Slot.bayID
readonly Variant bayID
説明
スロットのベイID。
スロットのストレージオブジェクトにアドレス方式が存在するなら、そのアドレス方式に従ってスロットのベイIDをフォーマットします。言い換えると、そのアドレス方式でベイが英字でアドレス指定されるならbayIDは文字列、それ以外の場合、bayIDは数値です。アドレス方式が存在しない場合、bayIDはベイ番号になります。
Storage.Slot.labelProperties
Variant labelProperties
説明
独自の名前付きプロパティを使用して、スロットのラベル値を取得または設定します。
Storage.Slotクラスを使用して、スロット上のラベルに適用されるカスタム名付きのプロパティを取得および設定できます。たとえば、指定したスロットの「SKU」という名前のラベルの値を5に設定するには、次のコードを使用します。
slot.SKU = 5;
これにより、ラベルの値は5に設定されます。その名前のラベルが存在しない場合、スロットのラベルに追加されます。
スロットの「SKU」ラベルに格納されている値を返すには、次のコードを実行します。
return slot.SKU;
スロットラベルの場合、この動的なプロパティ構文を使用してラベルにアクセスする必要があります。ツリー内で直接ラベルノードにアクセスする構文(
slot.labels.assert("SKU").value = 5;など)は使用しません。ストレージシステムは、ルックアップを迅速に行えるよう、スロットラベル値のインデックスを管理できます。このインデックスは、動的なプロパティ構文を使用してラベルの値を設定する場合のみ、正しく更新されます。
詳細については、treenode.labelPropertiesを参照してください。
Storage.Slot.levelID
readonly Variant levelID
説明
スロットのレベルID。
スロットのストレージオブジェクトにアドレス方式が存在するなら、そのアドレス方式に従ってスロットのレベルIDをフォーマットします。言い換えると、そのアドレス方式でレベルが英字でアドレス指定されるならlevelID は文字列、それ以外の場合、levelIDは数値です。アドレス方式が存在しない場合、levelIDはレベル番号になります。
Storage.Slot.slotID
readonly Variant slotID
説明
スロットのスロットID。
スロットのストレージオブジェクトにアドレス方式が存在するなら、そのアドレス方式に従ってスロットのスロットIDをフォーマットします。言い換えると、そのアドレス方式でスロットが英字でアドレス指定されるならslotIDは文字列、それ以外の場合、slotIDは数値です。アドレス方式が存在しない場合、slotIDはスロット番号になります。
Storage.Slot.slotItems
readonly slotItems
説明
このスロットに格納または割り当てされているStorage.Slot.Itemの配列にアクセスします。
スロットアイテム数へのアクセス
次のコードを使用して、スロットアイテムの数にアクセスできます。
slot.slotItems.length
ランクによるスロットアイテムへのアクセス
次のコードを使用して、ランクにより個別のスロットアイテムにアクセスできます。
slot.slotItems[1] // first slot item
slot.slotItems[slot.slotItems.length] // last slot item
slot.slotItems[i] // i-th slot item
Storage.Slot.storageObject
readonly Storage.Object storageObject
説明
スロットのストレージオブジェクト。
このスロットが属するストレージオブジェクトを返します。
Storage.Slot.zoneID
readonly Variant zoneID
説明
スロットのゾーンID。
スロットのストレージオブジェクトにアドレス方式が存在するなら、そのアドレス方式に従ってスロットのゾーンIDをフォーマットします。言い換えると、そのアドレス方式でゾーンが数値でアドレス指定されるなら、ゾーンIDは数値です。それ以外の場合、ゾーンIDは文字列です。アドレス方式が存在しない場合、ゾーンIDは空白になります。指定されたストレージオブジェクトのすべてのスロットが、ストレージオブジェクトのゾーンIDを自分のゾーンIDとして使用します。
Storage.Slot.getLocation()
Vec3 getLocation( double xFactor , double yFactor , double zFactor ) |
Vec3 getLocation( Vec3 factors ) |
パラメータ
xFactor | スロット内の正規化されたターゲットxの場所。範囲は0~1です。 |
yFactor | スロット内の正規化されたターゲットyの場所。範囲は0~1です。 |
zFactor | スロット内の正規化されたターゲットzの場所。範囲は0~1です。 |
factors | x、y、zの係数を単一のVec3としてカプセル化します。 |
説明
スロット内の位置を取得します。
このメソッドは、Object.getLocation()と似たものです。ストレージオブジェクトのローカル座標で、スロットの相対位置を返します。
Storage.Slot.hasSpace()
int hasSpace( treenode item ) |
パラメータ
item | スロット内に配置するフローアイテム。 |
戻り値
int | スロット内に、アイテムを格納するため十分な容量があると計算された場合は1、それ以外の場合は0。 |
説明
渡されたアイテムをスロットに格納するため十分な容量があると計算された場合に1を、それ以外の場合に0を返します。
hasSpace()メソッドは、ストレージオブジェクトの[スロットスタッキング順序]プロパティを使用して、スロットに既に格納または割り当てされているアイテムの組を考慮し、スロットへのアイテムの格納をシミュレートします。スロットにアイテムを格納できると判定された場合、その配置が完全にスロットの境界内かどうかのチェックが行われます。配置がスロットの境界内なら、メソッドは1を返します。それ以外の場合、メソッドは0を返します。
アイテムのサイズとローテーション
アイテムの配置を計算するとき、アイテムの現在のサイズとローテーションが使用されます。アイテムのサイズとローテーションは、アイテムが最終的にスロットに格納された時点でも同じであると想定されます。ローテーションはモデルの実行中に変化することが多いため、この点は特に重要です。アイテムが最終的にスロットに格納されるとき、hasSpace()が呼び出されたときとアイテムのローテーションが異なる場合、hasSpace()の戻り値が結果的に正しくなくなる可能性があります。これを修正するには、アイテムのローテーションを、そのアイテムがラックに格納されるときと同じに設定してから、hasSpace()を呼び出します。その後で、アイテムの現在のコンテキストで必要な値にローテーションを戻すことができます。
割り当てのみのアイテム
アイテムを格納できる容量が使用可能かどうかを判定するために配置を「シミュレート」するときは、そのスロットに既に格納されているアイテムだけではなく、スロットに割り当てられているが、まだスロットに格納されていないアイテムも考慮されます。まず割り当てのみのアイテムが、スロットに割り当てられた順で、スロットに仮想的に「配置」されます。その後で、現在照会されているアイテムが、他の割り当て済みアイテムすべての後でスロットに送り込まれたものとして、仮想的に配置されます。
割り当てのみのアイテムが仮想的に配置されるため、hasSpace()メソッドは発見的なものでしかないことに注意してください。hasSpace()の結果では、割り当て済みのアイテムがスロットに割り当てられたのと同じ順序でスロットに格納され、アイテムのローテーションとサイズが、ラックに格納されるときと同じであると想定します。これらの要素が変化する、または異なるサイズのアイテムが、割り当て順序とは異なる順序でスロットに格納される場合、hasSpace()の返す値は、すべての割り当て済みアイテムが格納された後で実際に容量がスロットに存在するかどうかとは一致しなくなります。
Storage.Slot.restack()
void restack( int fromRank = 0 ) |
パラメータ
fromRank | 0以外の場合、スロットは定義済みラックのアイテムからのみ開始し、そのポイントから再スタックします。 |
説明
スロットに格納されている一部またはすべてのアイテムについて、スロットのスタッキングアルゴリズムを再実行します。
スロットのスタッキング順序で、単一の軸にのみスタックが行われるストレージオブジェクト(および、グラビティフローとプッシュバックラックの場合)では、再スタックを必要とする場所からアイテムが取り出されるとき、ストレージオブジェクトの再スタックが自動的に行われます。しかし、スロットのスタッキング順序に複数の軸が含まれる場合、中間または先頭の場所からアイテムが取り出されても、ストレージオブジェクトのスロットは自動的に再スタックされません。この場合、このメソッドを使用して手動でスロットを再スタックする必要があります。