目次

目次

カテゴリ別コマンドリファレンス

カテゴリごとのコマンド

AGV

説明
廃止されました。AGVクラスを使用してください。
パラメータに応じて、AGVについての各種の情報を取得します。
AGV_CURRENT_CP - AGVの現在のコントロールポイントを返します。
AGV_ORIGIN_CP - AGVの元のコントロールポイントを返します。
AGV_INTERMEDIATE_DEST_CP - AGVの中間目的地コントロールポイントを返します。
AGV_DEST_CP - AGV_INTERMEDIATE_DEST_CPと同じです。
AGV_FINAL_DEST_CP - AGVの最終目的地のコントロールポイントを返します。
AGV_DEST - AGVの目的地オブジェクトを返します。
AGV_BATTERY_LEVEL - AGVの現在のバッテリーレベルをバッテリー容量のパーセンテージ(0~100)で返します。
AGV_AMP_HOURS - AGVの現在のバッテリーレベルをアンペア時で返します。
AGV_START_RECHARGE - AGVの再充電を開始します。最大容量まで再充電するため必要な時間を返します。
AGV_RECHARGE_TO_LEVEL - AGVのバッテリーレベルをp1(0~100)に明示的に設定します。
AGV_ADD_ALLOC_POINT - 移動初期化トリガーから呼び出します。割り当てのコントロールポイント/コントロールエリアを手動で割り当てます。これらは、AGVの現在の移動パスの一部として割り当てる必要がないコントロールポイント/コントロールエリアです。コントロールポイント/コントロールエリアはp1として渡され、どの距離で割り当てる必要があるかがp2として渡されます。このコマンドは、その割り当てを表すノードへの参照を返します。その割り当てポイントについてさらにデータを指定するには、AGV_SET_ALLOC_POINT_DEALLOC_DISTとAGV_SET_CAN_STOP_AT_ALLOC_POINTを使用します。
AGV_SET_ALLOC_POINT_DEALLOC_DIST - 追加された手動の割り当てポイントについて、AGVがオブジェクトを割り当て解除できる移動距離を設定します。オブジェクトが正しく割り当て解除されるよう、割り当ての追加後にいずれかの時点でこのコマンドを呼び出します。p1はAGV_ADD_ALLOC_POINTにより返される割り当てポイントノードへの参照、p2は割り当て解除距離です。
AGV_SET_CAN_STOP_AT_ALLOC_POINT - AGVが、手動で追加された割り当てポイントで停止可能かどうかを設定します。デフォルトはnoで、AGVは停止距離では停止せず、オブジェクトの割り当てを試みる前に次の停止可能なポイントまで続行します。これを1に設定すると、AGVは手動の割り当てポイントで停止し、先の割り当てを行います。p1はAGV_ADD_ALLOC_POINTにより返される割り当てポイントノードへの参照、p2は1または0です。
AGV_ATTACH_TRAILER - AGVに手動でトレーラーを追加します。p1は追加するオブジェクト、p2は適用するトレーラーギャップです。p3が1の場合はトレーラーがAGVの後ろ(AGVの末尾)に追加され、0の場合はトレーラーがAGVの前(AGVの先頭)に追加されます。p4が1の場合、オブジェクトがAGVから出るときにトレーラーが自動的にデタッチされ、0の場合、トレーラーのデタッチは手動で行います。
AGV_DETACH_TRAILER - AGVからトレーラーを手動でデタッチします。p1は、トレーラーとして追加されているオブジェクトです。
AGV_SPEED - AGVの現在の速度を返します。
AGV_PROXIMITY_STATE - AGVが累積パスの近接性によりブロックされている場合は1を、そうでない場合は0を返します。
AGV_ACCUM_AHEAD_AGV - 累積パスで、このAGVの前に別のAGVが存在する場合、そのAGVを返します。
agvinfo(agv, AGV_DEST_CP);
説明
廃止されました。AGVクラスを使用してください。
指定されたオブジェクト/コントロールポイントにAGVをリダイレクトします。modeは次のいずれかの値です。
REDIRECT_AND_WAIT - 到着前にリダイレクトされていない場合、AGVはリダイレクトされるまで目的地で待機します。
REDIRECT_AS_FINAL - 目的地がAGVの新しい最終目的地になります。REDIRECT_AND_CONTINUE_ON_ARRIVAL - AGVは中間目的地に到着した後で、最終目的地に移動を続けます。
REDIRECT_AND_CONTINUE_ON_PRE_ARRIVAL - AGVは中間目的地に事前に到着した後で、最終目的地に移動を続けます(減速して停止しません)。
agvredirect(agv, controlpoint, 1);
説明
コントロールポイント接続を返します。また、connectionが文字列で、controlpointとrankの両方が0の場合、このコマンドは与えられた接続のインデックスを返します。このコマンドは、以後のコマンドで接続の番号を使用し迅速化を行うためのものです。
cpconnection(cp, "ForwardTo", 1) cpの最初のForwardTo接続を返します。
cpconnection(cp, "LookForWork>NextLookForWork", 1) オブジェクトを見つけるため、2つの接続を横断します。これは、cpconnection(cpconnection(cp, "LookForWork", 1), "NextLookForWork", 1) と同じです。
cpconnection(cp, "LookForWork:2>NextLookForWork", 1) cpconnection(cpconnection(cp, "LookForWork", 2), "NextLookForWork", 1) と同じです。
int connIndex = cpconnection(0, "LookForWork", 0);
treenode obj = cpconnection(cp, connRank, 1);
接続のインデックスを取得し、名前の代わりにインデックスを使用します。

通信

ソケットなどの外部アプリケーションとの通信、データベース通信、Microsoft Excelとのリンクを行うためのコマンド。
クライアントソケットへの接続を試みる
説明
このコマンドは、socketにより指定されたソケットから、hostnameの名前を持つマシンで実行中の、指定されたポートをリッスンしているサーバーへ接続を試みます。

socketとして渡される数値は、clientcreate()により以前に返された数値です。hostnameとして渡される文字列は、コンピュータの名前(クライアントと同じネットワークに存在する場合)またはIPアドレスです。このコマンドは、clientcreate()呼び出しが成功した後で使用します。ソケットが接続できなかった場合はソケットが閉じ、clientcreate()を再度呼び出して開く必要があります。この関数は、ソケットが正常に接続された場合に真を返します。
clientconnect(1,"localhost",1880);
ソケットへ送信されたデータを受信する
説明
このコマンドは、socketで指定されるソケットに送信されたデータを受信します。socketの値は、clientcreate()により返された数値です。このコマンドは、flexscriptとc++で動作が異なります。c++では、bufferはchar*デスティネーションへの有効なポインターの必要があり、読み取られたバイトはこのバッファにコピーされます。戻り値は、受信した合計バイト数です。クライアントのメッセージから最大でbufsizeまでのバイトが読み取られ、bufという名前の事前に割り当てられた文字配列に格納されます。これに対してflexscriptでは、bufferにNULLを渡し、戻り値は受信された実際の文字列です。noblocking = 1のとき、このコマンドはFlexSimプログラムの実行をブロックしません。noblocking = 0のとき、クライアントから何かが受信されるまでFlexSimプログラムの実行はブロック(フリーズ)されます。
c++: int bytes = clientreceive(1,Buf,15,0);
flexscript: string readstr = clientreceive(1, NULL, 15, 0);
ODBCデータベースに、tablenameで指定される名前のテーブルを開く
説明
このコマンドは、tablenameで指定される名前のテーブルをデータベースに開きます。データベースがSQLモードで開いている場合、このコマンドは何もしません。このコマンドが呼び出されたとき開いていたテーブルは閉じられます。新しいテーブルのみが読み取り可能です。これにより、ユーザーはデータベース全体を閉じて再度開く必要なしに、テーブルモードで複数のテーブルを読み取ることができます。
dbchangetable("Inventory");
現在開いているテーブルを閉じ、Inventoryという名前のテーブルを開きます。
ODBCデータベースを開く
説明
このコマンドは、ODBCデータベースを開く動作を試みます。成功した場合は1、失敗した場合は0が返されます。データベースを開く前に、ODBCエイリアス(またはデータソース名DSN)が定義されている必要があります。この操作は、Windowsコントロールパネルの[データソース]オプションを使用して行います。エイリアス名はdatabasenameとしてコマンドに渡されます。データベースのファイル名は渡しません。データベースは2つの異なるモードで開くことができます。これらのモードは、動作および使用可能なコマンドが多少異なります。SQLモードとテーブルモードがあります。パラメータtablemodeが1ならデータベースはテーブルモードで開き、commandには開くデータベースのテーブル名を使用します。テーブルが正しく開かれると、テーブル全体を読み取れるようになります。テーブルモードでは各セルを編集できます。データベースがテーブルモードのとき、SQLコマンドは呼び出せません。tablemodeが0ならデータベースはSQLモードで開き、commandには最初のSQLクエリを使用します。クエリが正しく実行されると、クエリの結果のみを読み取ることができます。SQLモードでは各セルを編集できません。ただし、データベースが開くとSQL更新クエリを呼び出すことができます。showloginが1なら、データベースへの接続を行う前に標準のログインプロンプト(ユーザー名/パスワード)が表示されます。
dbopen("itemdrive","timetable",1);

データベースをエイリアス「itemdrive」で開き、「timetable」という名前のテーブルをテーブルモードで開きます。

dbopen("warehouse","select * from inventory",0);

データベースをエイリアス「warehouse」で開き、SQLクエリを実行します。データベースはSQLモードで開きます。
開いているODBCデータベースの行、セルの値を設定する
説明
このコマンドは、現在開いているODBCデータベースで、rowおよびcolで指定されるセルの値をvalueに設定します。データベースがSQLモードで開いている場合、このコマンドは何もしません。データベースのエイリアスが読み取り専用に設定されている場合、このコマンドは例外を引き起こします。エイリアスは、Windowsコントロールパネルの[データソース]オプションで読み取り専用に設定されます。関数に数値を渡す必要がある場合は、strintonum()コマンドを使用します。
for (int x=1; x<= model().subnodes.length; x++)
dbsettablecell(x,1,model().subnodes[x].name);

モデルのすべてのオブジェクトの名前を、現在のデータベースの最初の列に置きます。
開いているODBCデータベースにSQLクエリを実行する
説明
このコマンドは、現在開いているデータベースに対して、queryにより指定されたSQLクエリを実行します。結果は現在のテーブルとなります。データベースがテーブルモードのとき、このコマンドは何もしません。クエリによりテーブルが返された場合、dbgettablecell()コマンドを使用してテーブルを読み取ることができます。クエリにより更新が行われた場合、dbgettablecell()コマンドを実行すると例外が引き起こされます。
このコマンドでUPDATEステートメントを実行した場合はテーブルが返されないため、直後にSELECTを呼び出します。このコマンドはSQLモードでのみ使用できます。forwardOnlyCursorが1の場合、結果は順方向のみのカーソルの結果と想定されます。順方向のみのカーソルにはdbgetnumrows()を使用できません。その代わりに、dbsqlquery()の後でdbnextrow()を呼び出してください。このコマンドはアクティブ化された行を返します。テーブルの末尾に到達すると、-1を返します。
dbsqlquery("select processtime from timetable where type='1'");

渡されたSQLクエリに基づく新しいテーブルを返します。

dbsqlquery("update timetable set processtime=type*2");

渡されたクエリに基づいてデータベースを更新します。
dbopen()でODBCデータベースにアクセスするため使用するユーザー名とパスワードを設定する
説明
このコマンドは、次にdbopen()を呼び出すときデータベースにアクセスするため使用する、ユーザー名とパスワードを設定します。これにより、モデル作成者はdbopen()で提供されるユーザー名とパスワードのプロンプトを使用せず、データベースに要求されるログインパラメータを使用できます。このコマンドで設定されるユーザー名とパスワードは、再度dbusername()を呼び出して変更されるまで、dbopen()呼び出しのたびに使用されます。ユーザー名、パスワード、または両方を空の文字列に設定することもできます。
dbusername("user1","abc123XYZ");

ユーザー名を「user1」、パスワードを「abc123XYZ」に設定します。これらの値は、次にdbopen()が呼び出されるときデータベースにアクセスするため使用されます。

dbusername("","");

最後に設定したユーザー名とパスワードをクリアします。dbopen()が次に呼び出されたとき、データベースはユーザー名とパスワードなしでアクセスされます。
Excelワークブックを作成する
説明
このコマンドは、Excelでワークブックを作成します。同時に開くことのできるワークブックは1つだけです。ユーザーは、別のワークブックを開くまたは作成する、新しいモデルを開く、現在のモデルをコンパイルする、またはFlexSimを閉じる前に、excelclose()を呼び出す必要があります。開いているファイルから読み取りを行う前には、excelsetsheet()も呼び出す必要があります。
excelcreateworkbook();
excelsetsheet("Sheet1");
excelwritenum(1,1,1);
excelsave("NewWorkBook.xlsx");
excelclose(0);

最初にFlexSimと新しいExcelワークブックとの間にリンクを作成し、ワークブックのアクティブなシートを「Sheet1」に設定し、行1列1に1を書き込み、ワークブックを保存して、ワークブックを閉じます。
FlexSim内のテーブルから、現在開いているExcelワークブックにデータをエクスポートする
説明
FlexSim内のテーブルから、Excelにデータをエクスポートします。テーブルはGlobalTableの名前で参照することも、テーブルノードへのツリーノード参照を使用することもできます。エクスポートされるデータタイプ(文字列または数値)は、FlexSimテーブルのセルのデータタイプにより決定されます。ユーザーは、Excelの開始行および列番号と、エクスポートする行および列の総数を指定します。
excelexporttable("Table1",1,1,5,3);
Microsoft Excelを開始する
説明
このコマンドは、Microsoft Excelを開き、FlexSimからアクセスできるようにします。launchdirが指定されていない場合、[ツール]|[Excel]|[グローバル設定]で定義されているパスが使用されます。それ以外の場合、launchdirはハードドライブ上でEXCEL.EXEが置かれている場所を指す正確なパスである必要があります。一般には"C:/Program Files/Microsoft Office/Office10"のような形式ですが、インストールされているExcelのバージョンによって異なる可能性があります。通常、Excelとの通信を行う前にExcelを開始する必要はありません。ただし、FlexSimがDDEを使用してExcelと通信を行うよう設定されている(デフォルト動作ではなく、maintenance(1000,1)を呼び出して)場合は、通信を行う前にExcelが実行されている必要があります。通信の開始時にexcellaunch()を呼び出しれた場合、ユーザーが新しいモデルを開く、現在のモデルをコンパイルする、またはFlexSimを閉じる前に、excelquit()を呼び出す必要があります。
excellaunch("C:/Program Files/Microsoft Office/Office10");
excelopen("C:/mybook.xls");
excelsetsheet("Sheet1");
double thenum = excelreadnum(1,1);
excelclose(true);
excelquit();

Excelを開始し、「mybook」という名前のワークブックを開き、そのワークブックの行1、列1から読み取った値を保存して、ファイルとExcelを閉じます。
Excelワークブックを開く
説明
このコマンドは、workbookで指定される名前のファイルをExcelで開きます。同時に開くことのできるワークブックは1つだけです。ユーザーは、別のワークブックを開く、新しいモデルを開く、現在のモデルをコンパイルする、またはFlexSimを閉じる前に、excelclose()を呼び出す必要があります。開いているファイルから読み取りを行う前には、excelsetsheet()も呼び出す必要があります。
excelopen("mydata.xls");
excelsetsheet("Sheet1");
double myvalue = excelreadnum(1,2);
excelclose(0);

最初にFlexSimと、「mydata.xls」という名前のExcelワークブックとの間にリンクを作成し、ワークブックのアクティブなシートを「Sheet1」に設定し、行1列2から読み取られた数値をmyvalueという名前のローカル変数に設定して、保存せずにワークブックを閉じます。
アクティブなワークシートのセルの値をバリアントとして返す
説明
アクティブなワークシートのセルの値をバリアントとして返します。Excelから何を返すかを正確に指定するため、flagsを指定できます。使用できるフラグはEXCEL_DATA_NUMBER、EXCEL_DATA_STRING、EXCEL_DATE_AS_NUMです。

EXCEL_DATA_NUMBERは、Excelデータを数値として読み取ります。

EXCEL_DATA_STRINGは、Excelデータを文字列として読み取ります。

EXCEL_DATE_AS_NUMは、Excelの日付をFlexsimで読み取り可能な日付数値として解釈します。
Variant value = excelreadcell(1, 5, EXCEL_DATA_NUMBER | EXCEL_DATE_AS_NUM);

最初の行に含まれる5つの列の値を数値として返します。その値が日付の場合、Flexsimで日付として読み取り可能な数値が返されます。
サーバーでクライアント接続の受け付けを試みる
説明
サーバーで、クライアント接続の受け付けを試みます。noblocking = 0なら、このコマンドは接続が作成されるまでブロックを行います。作成された接続への参照に使用されるインデックスが返されます。

サーバーは、待機中のクライアントから接続の受け付けを試みます。確立された接続のインデックスが数値として返されます。戻り値が0の場合、接続が作成されなかったことを示します。この値は、以後のすべてのサーバー呼び出しで使用されます。noblocking = 1なら、サーバーはFlexSimプログラムの実行をブロックしませんが、クライアントが接続を試みなかった場合に0を返します。noblocking = 0なら、サーバーはクライアントが接続を試みるまでFlexSimプログラムの実行をブロック(フリーズ)します。クライアントとの接続を作成するのはこのコマンドのみです。
int client = serveraccept(0);
接続からメッセージを受信する
説明
指定の接続からメッセージを受信します。このコマンドは、flexscriptとc++で動作が異なります。c++では、bufferはchar*デスティネーションへの有効なポインターの必要があり、読み取られたバイトはこのバッファにコピーされます。戻り値は、受信した合計バイト数です。クライアントのメッセージから最大でbufsizeまでのバイトが読み取られ、bufという名前の事前に割り当てられた文字配列に格納されます。これに対してflexscriptでは、bufferにNULLを渡し、戻り値は受信された実際の文字列です。noblocking = 1のとき、このコマンドはFlexSimプログラムの実行をブロックしません。noblocking = 0のとき、クライアントから何かが受信されるまでFlexSimプログラムの実行はブロック(フリーズ)されます。
c++: int bytes = serverreceive(1,Buf,15,0);
flexscript: string readstr = serverreceive(1, NULL, 15, 0);

変換

単位、データタイプ、空間座標を変換するコマンド。
指定された値(時間)を、ある時間形式から別の時間形式に変換する
説明
指定された値(時間)を、ある時間形式から別の時間形式に変換します。fromおよびto引数には、次の値のみを使用できます。

FS_DATETIME
XL_DATETIME
MODEL_TIME
DATE_STR
TIME_STR
DATETIME_STR

FS_DATETIME - 1601年1月1日から計算した秒数。getmodelunit(START_TIME)はFS_DATETIME単位で数値を返します。

XL_DATETIME - 1900年1月1日を1として順に計算した日数。2025年2月10日、午後1時30分は、XL_DATETIME単位では45698.5625です。この形式は、Microsoft Excelで日付に使用されます。

MODEL_TIME - モデル開始時間から後のモデル単位数。

DATE_STR - datetime値の日付部分を表す文字列。結果として得られるテキストは、モデル設定で指定された日付形式によって異なります。この形式から変換する場合、それらの設定に従って値の書式を設定する必要があります。

TIME_STR - datetime値の時刻部分を表す文字列。結果として得られるテキストは、モデル設定で指定された時刻形式によって異なります。この形式から変換する場合、それらの設定に従って値の書式を設定する必要があります。

DATETIME_STR - datetime値の日付と時刻の部分を表す文字列。結果として得られるテキストは、モデル設定で指定された日時と時刻の形式によって異なります。この形式から変換する場合、それらの設定に従って値の書式を設定する必要があります。時刻部分が先で、1つのスペースによって日付部分と区切る必要があります。

このコマンドでは、3000年およびそれ以後はサポートされないことに注意してください。
convert(42308, XL_DATETIME, MODEL_TIME) // Excelの日付を有効なモデル時間に変換する

コンベヤ


廃止

コマンドのサポートが終了したか、別のコマンドが作成されました。これらのコマンドのドキュメントは更新されていないため、不正確な可能性があります。多くのコマンドは後方互換性のため依然として動作しますが、代替コマンドの使用をお勧めします。
廃止
説明
このコマンドは廃止されました。移動テーブルに新しいエントリを追加します。このエントリは、全履歴が有効なときに記録されます。この新しいエントリは、flowitemidで識別されるフローアイテムが原点オブジェクトから目的地オブジェクトへ、指定した時間に移動したことを記録します。このエントリは、移動時点のフローアイテムのアイテムタイプが、3番目のパラメータとして渡されたitemtypeであることも記録します。ユーザーがこのコマンドを使用する必要があるのは非常に稀な状況のみです。
addfullhistorymoverecord(getnodenum(uniqueid(item)), time(), current, current.outObjects[1], item.type);
廃止、Math.atan2()を使用すること
説明
このコマンドは廃止されました。代わりにMath.atan2()を使用してください。

角度を度単位で返します。角度はベクトル(dx, dy)について、x軸の正方向から時計回りに計算されます。angle(dx, dy)を呼び出すのは、-Math.degrees(Math.atan2(dy, dx))を呼び出すのと同じです。
double myangle = angle(distx, disty)
廃止、Math.asin()を使用すること
説明
このコマンドは廃止されました。代わりにMath.asin()を使用してください。

角度のarcsinをラジアン単位で取得します。
廃止、Object.attrs.assert()を使用すること
説明
このコマンドは廃止されました。Object.attrs.assert()を使用してください。

オブジェクトの属性attributenameへの参照を取得します。属性が存在しない場合は作成します。
廃止、treenode.labels.assert()を使用すること
説明
このコマンドは廃止されました。代わりにtreenode.labels.assert()を使用してください。

ラベルlabelnameへの参照を取得します。ラベルが存在しない場合は作成します。
廃止、Math.atan()を使用すること
説明
このコマンドは廃止されました。代わりにMath.atan()を使用してください。

角度のarctanをラジアン単位で取得します。
廃止、レガシーコンベヤのサポートは終了
説明
廃止されました。レガシーコンベヤのサポートは終了しました。

このコマンドは、BasicConveyorオブジェクトと組み合わせて使用されます。

bcgetitemkinematicsコマンドは、BasicConveyorのフローアイテム移動に関連付けられている3つのキネマティクスのいずれかへの参照を取得するため使用されます。

0 = メインコンベヤ状態キネマティクス。これからキネマティクス情報を取得できますが、キネマティクスに追加や初期化の変更を加えることはできません。

1 = ユーザー定義可能なキネマティクスで、シミュレーション時間に依存します。

2 = ユーザー定義可能なキネマティクスで、コンベヤ上のフローアイテムの搬送位置に依存します。

2つのユーザー定義可能なキネマティクスは、ユーザーがコンベヤの長さに応じた移動に加え、カスタマイズされたキネマティクス動作をセットアップするため使用できます。bcgetitemkinematicsを使用して目的のキネマティクスノードへの参照を取得してから、標準のinitkinematics()およびaddkinematic()コマンドを通常に使用します。代替のinitkinematicsパラメータリストとして、initkinematics(node, x, y, z, rx, ry, rz, managerots, localcoords)を使用する必要があります。また、タイプ2の搬送依存のキネマティクスノードにキネマティクスを追加する場合、そのキネマティクス用の時間単位はどれも、実際のシミュレーションの時間単位には適用されないことに注意してください。代わりに、それらの時間単位は「搬送単位」と解釈されます。たとえば、速度5は時間単位当たり5単位とは解釈されず、搬送単位ごとに5単位と解釈されます。加速は時間あたりの距離の二乗ではなく、搬送単位ごとの距離の二乗です。開始時間はキネマティクスを開始する時間ではなく、コンベヤに沿った位置がキネマティクスを開始する時間です。例として、「start time」 5および「max speed」 0.5を使用して、搬送依存のキネマティクスノードに、y方向へ1単位移動するキネマティクスを追加したとします。搬送依存のキネマティクスでは、アイテムがコンベヤに沿って5単位に到達してから、y方向に移動を開始すると解釈されます。また、コンベヤの長さに沿って移動するすべての単位について、y方向に0.5単位移動します(搬送単位ごとに0.5 y単位)。このため、コンベヤに沿って7単位移動すると、yキネマティクスは終了します。アイテムが累積によって中間、たとえば搬送位置6でブロックされた場合、yキネマティクスも停止して、アイテムがコンベヤに沿った移動を再開するまではキネマティクスも再開されません。

BasicConveyorオブジェクトの一般的な説明については、bcsetitemconveystateコマンドのドキュメントを参照してください。
treenode kin = bcgetitemkinematics(current, item, 2);
treenode kin2 = bcgetitemkinematics(current, item, 1);

initkinematics(kin, 0,0,0, 0,0,0, 0,0);
addkinematic(kin, 0,1,1,0.5,1,1,0,0, 5, KINEMATIC_TRAVEL);
initkinematics(kin2, 0,0,0, 0,0,0, 0,0);
addkinematic(kin2, 0,0,720,360,0,0,0,0, time()+5.0, KINEMATIC_ROTATE);
廃止、レガシーコンベヤのサポートは終了
説明
廃止されました。レガシーコンベヤのサポートは終了しました。

このコマンドは、BasicConveyorオブジェクトと組み合わせて使用されます。

bcgetitempositionコマンドは、BasicConveyorオブジェクト上のアイテムの現在位置を返します。この位置は、コンベヤの長さに沿って、コンベヤの頭部から、フローアイテムでコンベヤの頭部から最も離れたエッジまで測定されます。

BasicConveyorオブジェクトの一般的な説明については、bcsetitemconveystateコマンドのドキュメントを参照してください。
bcgetitemposition(current,current.first);
廃止、レガシーコンベヤのサポートは終了
説明
廃止されました。レガシーコンベヤのサポートは終了しました。

このコマンドは、BasicConveyorオブジェクトと組み合わせて使用されます。

bcsetdirectionコマンドは、コンベヤ上のすべてのフローアイテムを停止し、移動方向を1=順方向および0=逆方向に設定します。すべてのフローアイテムは、再度移動を開始する前にbcsetitemconveystate()コマンドで搬送状態をリセットする必要があります。次の例は、コンベヤを停止してから、すべてのフローアイテムを逆方向に速度1まで加速する方法を示しています。すべての追加アイテムキネマティクスは、方向の変更後もアクティブのままです。

BasicConveyorオブジェクトの一般的な説明については、bcsetitemconveystateコマンドのドキュメントを参照してください。
bcsetdirection(so(),0);
for(int i = 1; i <= so().subnodes.length; i++)
{
treenode item = so().subnodes[i];
bcsetitemconveystate(so(), item, bcgetitemposition(so(), item), 0, 1, 0.2);
}
廃止、レガシーコンベヤのサポートは終了
説明
廃止されました。レガシーコンベヤのサポートは終了しました。

このコマンドは、BasicConveyorオブジェクトと組み合わせて使用されます。

BasicConveyorオブジェクトを使用すると、フローアイテムをどの時点、どの位置でもコンベヤの中に、またはコンベヤから外に移動できます。BasicConveyorの各フローアイテムに独自のキネマティクスプロファイルを割り当ておよび再割り当てし、フローアイテムがコンベヤに沿ってどのように移動するかを定義できます。1つのフローアイテムが、コンベヤ上で停止または低速で移動している他のフローアイテムに追い付くと、そのフローアイテムの速度に合わせてただちに減速されます。フローアイテムはコンベヤに沿ってどちらの方向にも移動する可能性がありますが、特定の時点で見ると、すべてのフローアイテムが同じ方向に移動します。コンベヤの移動方向はbcsetdirection()コマンドで設定されます。フローアイテムがコンベヤの中に、またはコンベヤから外に移動するとき、コンベヤ上の他のフローアイテムはコンベヤ上で利用可能な空間が増加または減少したことを認識し、自然に集積を行います。フローアイテムがコンベヤに進入した後で、receiveitem()コマンドで間接的に、またはmoveobject()コマンドで直接的に、フローアイテムの初期キネマティクスプロファイルを定義する必要があります。このプロファイルはフローアイテムの「搬送状態」と呼ばれ、bcsetitemconveystate()コマンドで設定されます。フローアイテムの搬送状態は、必要に応じて何回でも設定できます。フローアイテムの搬送状態を定義するため使用されるパラメータの定義は次のとおりです。

basicconveyor = コンベヤへの参照。

item = フローアイテムへの参照。

startpoint = フローアイテムの開始位置。コンベヤの先頭から、コンベヤの長さ方向に沿って、コンベヤの頭から最も離れたフローアイテムのエッジまで測定されます(コンベヤの方向が順方向なら前縁、逆方向なら後縁)。

startspeed = フローアイテムの移動開始時の速度。

targetspeed = フローアイテムが到達を試みる目標速度。targetspeedがstartspeedよりも大きい場合、フローアイテムは目標速度まで加速します。そうでない場合、目標速度まで減速します。startspeedとtargetspeedが両方とも0に設定されている場合、フローアイテムはstartpointのまま移動しません。

accdec = 時間の経過とともに目標速度に到達するため使用される、加速度または減速度。値が0なら、無限大の加速度/減速度を意味します。言い換えれば、フローアイテムは一瞬でtargetspeedに達します。

フローアイテムは、コンベヤの終端に到達する、別のフローアイテムに衝突する、または搬送状態が再度変更されるまでコンベヤに沿って移動を続けるため、目的地や終端速度は必要ありません。BasicConveyorでは、長さ方向に沿って複数の「決定点」を定義できます。これらのトリガーポイントは、フローアイテムの搬送状態を更新するため便利な場所です。フローアイテムには、bcsetitemconveystate()コマンドで割り当てられたメイン搬送状態キネマティクスに加え、2つの別のキネマティクス構造が関連付けられており、コンベヤに沿った移動の動作だけでなく、カスタムのキネマティクス動作(平行移動または回転)も適用できます。キネマティクス構造の1つはシミュレーションの時間単位に基づいており、もう1つはコンベヤの長さ方向に沿った距離単位に基づいています。これらのキネマティクス構造にアクセスするには、bcgetitemkinematics()コマンドを使用してからinitkinematics()およびaddkinematic()コマンドを使用して、必要なカスタムキネマティクス動作を作成します。詳細については、bcgetitemkinematics()コマンドのドキュメントを参照してください。
bcsetitemconveystate(current, item, position, 0, 60, 0);
廃止、Math.ceil()を使用すること
説明
このコマンドは廃止されました。代わりにMath.ceil()を使用してください。

numよりも小さくない、最小の整数値を返します。
廃止、Table.cell()を使用すること
説明
このコマンドは廃止されました。代わりにTable.cell()を使用してください。

テーブルのセルへの参照を取得します。
double val = getnodenum(cellrc(reftable("MyTable"),2,3));
廃止、Object.centerObjects[]を使用すること
説明
このコマンドは廃止されました。代わりにObject.centerObjects[]を使用してください。

オブジェクトのセンターポートに接続されているオブジェクトを参照します。
廃止、conveyor.targetSpeedを使用すること
changeconveyorspeed(current, 4);
この例は、コンベヤの速度を4に変更します。
廃止、treenode.subnodes.clear()を使用すること
説明
このコマンドは廃止されました。代わりにtreenode.subnodes.clear()を使用してください。

ノードの下にあるすべてのオブジェクト/ノードを破棄します。
廃止、Object.input.close()を使用すること
説明
このコマンドは廃止されました。代わりにUse Object.input.close()を使用してください。

このコマンドは、オブジェクトの入力をブロックします。エントリをブロックするには、入力ポート自体、または一般的な入力のみを閉じる必要があります。ポート接続がビューウィンドウに十分なサイズで表示されているとき、オブジェクトの入力ポート(正方形)すべてにわたって小さな赤色のバーが描画され、入力ポートがブロックされていることを示します。個別のポートを開くことはでき、開いているポートは緑色で表示されますが、赤いバーのためにオブジェクトへの進入はブロックされます。このコマンドをstopinput()と比較してください。
if (current.subnodes.length == getvarnum(current,"maxcontent")
closeinput(current);

current内のオブジェクトが多すぎる場合、currentの入力ポートをブロックします。
廃止、Object.output.close()を使用すること
説明
このコマンドは廃止されました。代わりにObject.output.close()を使用してください。

このコマンドは、オブジェクトの出力をブロックします。出口をブロックするには、出力ポート自体、または一般的な出力のみを閉じる必要があります。ポート接続がビューウィンドウに十分なサイズで表示されているとき、オブジェクトの出力ポート(正方形)すべてにわたって小さな赤色のバーが描画され、出力ポートがブロックされていることを示します。個別のポートを開くことはでき、開いているポートは緑色で表示されますが、赤いバーのためにオブジェクトからの出口はブロックされます。このコマンドをstopoutput()と比較してください。
if (current.subnodes.length == current.mincontent)
closeoutput(current);

current内のオブジェクトが少なすぎる場合、currentの出力ポートをブロックします。
廃止、Colorクラスを使用すること
説明
このコマンドは廃止されました。代わりにObject.colorColor.byNumber()に設定してください。

オブジェクトの色をカラーインデックスに基づいて設定します。
廃止、Colorクラスを使用すること
説明
このコマンドは廃止されました。代わりにObject.colorColor.random()に設定してください。

オブジェクトの色をランダムな色に設定します。
廃止、Colorクラスを使用すること
説明
このコマンドは廃止されました。代わりにObject.colorColor()に設定してください。

赤、緑、青色のコンポーネントを使用してオブジェクトの色を設定します。
廃止、contextdragconnection()を使用すること
説明
このコマンドは廃止されました。代わりにcontextdragconnection()を使用してください。

2つのオブジェクトのポートを接続します。2つのオブジェクトを接続するため、該当のオブジェクトにポートが存在するかどうかチェックしてから、接続が行われます。最初のオブジェクトの出力ポートは、2番目のオブジェクトの入力に接続されます。ポートが存在しない、または既に接続済みのとき、このコマンドは中断されます。2つのオブジェクトを、ポートを追加して自動的に接続するには、objectconnect()コマンドを参照してください。
connect(model().subnodes[2],1,model().subnodes[3],2)
廃止、treenode.subnodes.lengthを使用すること
説明
このコマンドは廃止されました。代わりにtreenode.subnodes.lengthを使用してください。

親ノードに存在する子ノードの数を取得します。
廃止、Object.attrs.lengthを使用すること
説明
このコマンドは廃止されました。代わりにObject.attrs.lengthを使用してください。

オブジェクトの属性サブツリーのコンテンツを取得します。
廃止、Math.cos()を使用すること
説明
このコマンドは廃止されました。代わりにMath.cos()を使用してください。

角度のcosをラジアン単位で取得します。
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、dispatcherにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、現在のタスクはdelaytime秒だけ一時停止されます。遅延時間の間は、stateで指定される状態に維持されます。タスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです:

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createdelaytask(current.centerObjects[1], 25, SCHEDULED_DOWN, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

与えられた動的パラメータ1~5を使用して名前付きグローバルタスクシーケンスのインスタンスを作成し、指定のディスパッチャーに送付します。作成されたグローバルタスクシーケンスへの参照が返されます。このコマンドはタスクシーケンスを送付しないことに注意してください。送付はdispatchtasksequence()を使用して行う必要があります。
treenode ts = createglobaltasksequence("GlobalTS", current.centerObjects[1])
dispatchtasksequence(ts)
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、フローアイテムがロードされます。オフジェクトは、フローアイテムをロードする前に、フローアイテムへ移動しません。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです:

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createloadtask(current.centerObjects[1],current.centerObjects[2],item, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、dispatcherにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、receiverで指定されたオブジェクトにメッセージが送信されます。受信側オブジェクトのOnMessageトリガーは、メッセージの送信時に実行されます。param1、param2、param3で渡される値は、param()コマンドを使用してトリガー関数で使用可能です。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです:

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createsendmessagetask(current, current.centerObjects[1],1,PREEMPT_NOT,5, 6, 7);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これによりオブジェクトは原点に移動し、フローアイテムをロードして、目的地に移動してから、フローアイテムをアンロードします。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createstandardtaskcurrent.centerObjects[1],current.centerObjects[2],current.centerObjects[3],item, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、オブジェクトは目的地に移動してフローアイテムをロードします。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createtravelloadtask(current.centerObjects[1],current.centerObjects[2],item, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、オブジェクトは目的地に移動します。オブジェクトは、前端が目的地に到達するまで移動します。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createtraveltask( current.centerObjects[1], current.centerObjects[2], 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、オブジェクトはxlox、y、zにより指定されたポイントに移動します。オブジェクトがそのポイントに到達すると、stateで指定された状態のまま、endwaittask()がそのオブジェクトに対して発行されるまで待機します。有効な状態のリストについては、setstate()を参照してください。relativelocが1なら、指定されたポイントはディスパッチャーの原点に対する相対位置です。relativelocが0なら、指定されたポイントは

モデルの中でディスパッチャーの移動先となる正確なポイントです。オブジェクトは、前端が指定されたポイントに到達するまで移動します。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createtraveltolocandwaittask(current.centerObjects[1], 1, 5.15, 2.5, 0, 0, STATE_IDLE, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、オブジェクトはxlox、y、zにより指定されたポイントに移動します。relativelocが1なら、指定されたポイントはディスパッチャーの原点に対する相対位置です。relativelocが0なら、指定されたポイントはモデルの中でディスパッチャーの移動先となる正確なポイントです。オブジェクトは、前端が指定されたポイントに到達するまで移動します。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createtraveltoloctask(current.centerObjects[1], 1, 5.15, 2.5, 0, 0, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、オブジェクトは目的地に移動してフローアイテムをアンロードします。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createtravelunloadtask(current.centerObjects[1],current.centerObjects[2],item, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーにより指定されるオブジェクトのタスクシーケンスを作成します。これにより、destinationで指定されたオブジェクトにフローアイテムがアンロードされます。オブジェクトはアンロードの前に、指定場所に移動しません。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createunloadtask(current.centerObjects[1],current.centerObjects[2],item, 1, PREEMPT_NOT);
廃止、代わりに処理フローを使用すること
説明
このコマンドは廃止されました。代わりに処理フローを使用してください。

このコマンドは、ディスパッチャーとして指定されたオブジェクトのタスクシーケンスを作成します。これにより、オブジェクトはリリースされるまで、与えられる新しいタスクシーケンスを実行しません。オブジェクトはendwaittask()コマンドでリリースできます。オブジェクトは待機中、stateで指定される状態に維持されます。可能な状態のリストについては、setstate()コマンドを参照してください。このタスクシーケンスの優先度はpriorityで、プリエンプト値はpreemptingで与えられます。preemptingの値は次のいずれかです。

0 - PREEMPT_NOT
1 - PREEMPT_ONLY
2 - PREEMPT_AND_ABORT_ACTIVE
3 - PREEMPT_AND_ABORT_ALL
createwaittask(current.centerObjects[1], STATE_IDLE, 1, PREEMPT_NOT);
廃止、contextdragconnection()を使用すること
説明
このコマンドは廃止されました。代わりにcontextdragconnection()を使用してください。

指定されたcharacterpressedに応じて、fromobjectとtoobjectとの間のポートを接続または接続解除します。このコマンドは、オブジェクトのポートを接続/切断するため使用されるキーボートおよびマウスの操作を模倣します。たとえば、「A」はキーボードの「A」を押し下げたまま、fromobjectをクリックしてtoobjectにドラッグする操作に相当します。「A」および「Q」なら、出力ポートを入力ポートに接続および接続解除します。「S」および「W」なら、セントラルポートを接続および接続解除します。C++でのみ使用でき、flexscriptでは使用できません。
defaultdragconnection(model().subnodes[count], model().subnodes[2], 'A')
廃止、treenode.labels["LabelName"].destroy()を使用すること
説明
このコマンドは廃止されました。代わりにtreenode.labels["LableName"].destroy()を使用してください。

指定されたobjectで、「labels」で指定されたノードから、指定されたlabelを削除します。
labelの指定は文字列のラベル名、またはラベルのランクを示す数値です。
そのノードにラベルが存在しない場合、このコマンドは何もしません。
dellabel(current,"MyLabel")
廃止、Table.query()を使用すること
説明
このコマンドは廃止されました。代わりにTable.query()を使用してください。

最後に呼び出されたquery()について、完全な結果テーブルをノードにダンプします。asTableが1なら、結果はテーブルデータとしてダンプされます。asTableが0なら、結果はバンドルデータとしてダンプされます。
Excelの範囲を読み込み、ツリーノードにダンプする
説明
この関数は、渡された引数に応じて2つの関数にオーバーロードされます。最初の関数(文字列を渡した場合)は廃止されました。代わりにexcelrangereadnum()とexcelrangereadstr()を使用してください。

2番目の関数(ツリーノードを渡した場合)はExcelのある範囲を読み込み、その範囲に含まれるすべてのデータをターゲットのツリーノードに割り当てます。ツリーノードにバンドルデータが存在する場合、Excelデータはバンドルに設定されます。それ以外の場合、ターゲットのツリーノードの下にサブノードが挿入されます。Excelのデータはこのサブノードに文字列または数値データとして、グローバルテーブルと同じ形式で設定されます。

範囲の原点は渡されたrowおよびcolにより指定され、2番目の数値のペアは範囲のサイズを指定します。これらのいずかに0が渡された場合、FlexSimはその方向のExcel範囲について、データが存在する範囲の境界を自動的に選択します。

flagsを渡すことで、Excelから正確に何を読み込むかを変更できます。flagsはEXCEL_DATA_AUTOMATIC、EXCEL_DATA_NUMBER、EXCEL_DATA_STRING、EXCEL_DATE_AS_NUM、EXCEL_USE_COLUMNHEADERS、EXCEL_USE_ROWHEADERSのいずれかです。

EXCEL_DATA_AUTOMATICは、Excelセルのデータタイプに応じて文字列または数値データを割り当てます。これはデフォルトの動作です。

EXCEL_DATA_NUMBERは、すべてのExcelデータを数値として読み込みます。

EXCEL_DATA_STRINGは、すべてのExcelデータを文字列として読み込みます。

EXCEL_DATE_AS_NUMは、Excel日付を、FlexSimで日付として読み込み可能な数値として読み込みます。それ以外の場合、データは文字列となります。

EXCEL_USE_COLUMNHEADERSは、データの最初の行をデータではなくテーブルの列の名前として使用します。

EXCEL_USE_ROWHEADERSは、データの最初の列をデータではなくテーブルの行の名前として使用します。

treenode myTable = node ("Tools/GlobalTables/GlobalTable1>variables/data", model());

excelrangeread(myTable, 1, 1, 5, 0, EXCEL_DATA_AUTOMATIC | EXCEL_USE_COLUMNHEADERS);

アクティブなシートのセルA1からデータを読み込みます。最初の5行について、データが存在する列をすべて読み込みます。最初の行は、書き込み先のグローバルテーブルの列名に使用されます。したがって、Excelシートにデータの存在する列が10存在するなら、グローバルテーブルのデータ変数の下に合計40のノードが挿入されます。これらの各ノードは、対応するExcelセルのデータタイプになります。
ソーステーブルノードからデータを読み込み、アクティブなExcelシートに置き込む
説明
この関数は、ソーステーブルノードのすべてのデータを、アクティブなExcelシートに書き込みます。ツリーノードにバンドルデータが存在する場合、バンドルデータを読み込んでシートに書き込みます。それ以外の場合、グローバルテーブルと同様に、データの存在する子ノードを探します。渡されるrowとcolは、Excelシートのどこからデータの書き込みを開始するかを指定します。常に、ソースノードのすべてのデータが書き込まれます。flagsを渡すと、ヘッダーの使用方法を変更できます。flagsに使用できるのは、EXCEL_USE_COLUMNHEADERSとEXCEL_USE_ROWHEADERSです。

EXCEL_USE_COLUMNHEADERSを使用すると、既存の列ヘッダーをExcelテーブルの別の行として書き込みます。

EXCEL_USE_ROWHEADERSを使用すると、既存の行ヘッダーをExcelテーブルの別の列として書き込みます。
treenode myTable = node("Tools/GlobalTables/GlobalTable1>variables/data", model());

excelrangewrite(myTable, 1, 1, EXCEL_USE_ROWHEADERS | EXCEL_USE_COLUMNHEADERS);

GlobalTable1のすべてのデータを取得し、アクティブなExcelシートのA1から始まるセルに書き込みます。実際のデータを書き込む前に、列ヘッダーの行と行ヘッダーの列があります。
廃止、Math.exp()を使用すること
説明
このコマンドは廃止されました。代わりにMath.exp()を使用してください。

(e ^ value)を返します。ここでeは2.7183です。
説明
このコマンドは廃止されました。代わりにGroupクラスを使用してください。

新しいファミリー(リレーショナル情報の編成に使用されるノードのリスト)を作成します。
familycreate(item,"family1")
説明
このコマンドは廃止されました。代わりにGroupクラスを使用してください。

ファミリーを削除します。
familydelete(item,"family1")
説明
このコマンドは廃止されました。代わりにGroupクラスを使用してください。

指定されたファミリーのメンバーへのポインターを返します。
familymember(item,"family1",2)
説明
このコマンドは廃止されました。代わりにGroupクラスを使用してください。

指定されたfamilycontainerに新しいファミリーメンバーを追加します。
familymemberadd(item,"family1",item.subnodes[1])
説明
このコマンドは廃止されました。代わりにGroupクラスを使用してください。

指定されたfamilycontainerからファミリーメンバーを削除します。
familymemberdel(item,"family1",item.subnodes[2])
説明
このコマンドは廃止されました。代わりにGroupクラスを使用してください。

指定されたファミリーのサイズを返します。
familymemberqty(item,"family1")
説明
定義された回数だけ一致テストを実行し、一致が見つかった場合は、その一致と関連付けられたユーザ定義可能な値を返します。一致の式と戻り値の式では、チェックの反復の何回目かを「count」を使用して判定できます。これを使用して、何かのリストを検索し、一致するアイテムや条件を探すことができます。呼び出しにreturnexpressionが含まれていない場合、findmatch()は一致の式に関連付けられているcountを返します。一致が見つからなかった場合、findmatch()は0を返します。reverseorderが1なら、countにnrを最初に代入し、次にnr - 1を代入し、以下1まで逆順にカウントします。returnexpressionが指定されていない場合、findmatchは見つかった一致に関連付けられているcountを返します。
int portNr = findmatch(current.outObjects.length, current.outObjects[count].subnodes.length < 5);
この例は、currentの出力ポートに接続されている、コンテンツが5より小さい最初のオブジェクトに対応する出力ポート番号を返します。

treenode object = findmatch(current.outObjects.length, current.outObjects[count].subnodes.length < 5, current.outObjects[count]);
この例は前の例とほぼ同じですが、関連付けられているポート番号ではなくオブジェクト自体を返します。

int item2Rank = findmatch(current.subnodes.length, current.subnodes[count].type == 2);
この例は、currentのキューで見つかった、アイテムタイプが2である最初のアイテムのランク番号を返します。

説明
式を繰り返し評価し、見つかった最大値、またはその最大値に関連付けられているユーザー定義可能な戻り値を返します。値の式、戻り値の式、およひ基準では、チェックの反復の何回目かを「count」を使用して判定できます。戻り値の式が定義されていない場合、見つかった最大値が返されます。また、無効な値を除外するための基準を指定できます。基準が定義されており、基準を満たす値が存在しない場合、0が返されます。
double latestCreation = findmax(current.subnodes.length, getcreationtime(current.subnodes[count]));
この例は、currentに含まれるすべてのアイテムの最大作成時間を返します。

int largestQueuePortNr = findmax(current.inObjects.length, current.inObjects[count].subnodes.length;
この例は、アイテムの最も大きなキューを持つオブジェクトに関連付けられている入力ポート番号を返します。

int largestQueuePortNr = findmax(current.inObjects.length, current.inObjects[count].subnodes.length, count, getitemstate(current.inObjects[count].first) == FR_STATE_READY);
この例は前の例とほぼ同じですが、上流オブジェクトの最初のアイテムがリリースされているという条件が追加されています。

廃止、Math.floor()を使用すること
説明
このコマンドは廃止されました。代わりにMath.floor()を使用してください。

numよりも大きくない、最大の整数値を返します。
説明
このコマンドは廃止されました。代わりにfor()またはwhile()コマンドを使用してください。

thenodeとして指定されたオブジェクトと同じレイヤーに属し、オブジェクトのランクと同じ、またはより小さいランク値を持つ各ノードに対して、コードブロックを実行します。ループ内で現在アクティブなノードにアクセスするため、「a」コマンドが使用されます。forobjectsbefore()コマンドはflexscriptでのみ使用でき、C++では使用できません。
forobjectsbefore(model.subnodes[5]))
{
    pt(a.name); pr();
}

モデルの最初にある5つのオブジェクトの名前を、出力コンソールに表示します。
説明
このコマンドは廃止されました。代わりにfor()またはwhile()コマンドを使用してください。

thenodeとして指定されたオブジェクトと同じレイヤーに属し、オブジェクトのランクと同じ、またはより大きいランク値を持つ各ノードに対して、コードブロックを実行します。ループ内で現在アクティブなノードにアクセスするため、「a」コマンドが使用されます。forobjectsbehind()コマンドはflexscriptでのみ使用でき、C++では使用できません。
forobjectsbehind(model.subnodes[5])
{
pt(a.name); pr();
}

モデルの6番目から始めて、それ以後のオブジェクトの名前を、出力コンソールに表示します。
説明
このコマンドは廃止されました。代わりに次のコードを使用してください。

for(int i =1; i<= container.subnodes.length; i++)
{
if(switch_selected(container.subnodes[i]))
{
pt(container.subnodes[i].name); pr();
}
}

container内で選択された各オブジェクトに対して、コマンド以後のブロックが一回ずつ実行されます。「a」コマンドの値は、繰り返し実行が行われる対象のオブジェクトへのポインターを返します。このコマンドは、C++では使用できません。
forobjectselectionset(library()) { pt(a.name); pr(); }

ライブラリツリーで現在選択されているすべてのオブジェクトの名前を、出力コンソールに表示します。
廃止、Colorクラスを使用すること
説明
このコマンドは廃止されました。代わりに、Color.rColor.gColor.bColor.aのいずれかを使用してください。

objectのrgb色コンポーネントを取得します。
廃止、treenode.dataTypeを使用すること
説明
このコマンドは廃止されました。代わりにtreenodedataTypeを使用してください。

ノードのデータタイプを取得します。
getdatatype(so())
廃止、Object.stats.input.valueを使用すること
説明
このコマンドは廃止されました。代わりに、Object.stats.input.valueを使用してください。

関連オブジェクトの入力統計を返します。
double inval = getinput(current.centerObjects[1]);
廃止
説明
このコマンドは廃止されました。関数の最初のパラメータとして渡された移動レコードから、値の1つを返します。このレコードは、getmoverecord()への呼び出しで返される戻り値です。この関数の2番目のパラメータとして渡される値は、移動レコードのどの値をユーザーが取得するかを示します。
0 = レコードID。これは、移動テーブルのレコードの行番号です。
1 = レコードに移動が記録されたフローアイテムのItemID。
2 = フローアイテムが移動した時間。
3 = フローアイテムの移動元のオブジェクト。この値はintとして返され、tonode()を使用してtreenodeに変換する必要があります。
4 = フローアイテムの移動先のオブジェクト。この値はintとして返され、tonode()を使用してtreenodeに変換する必要があります。
5 = フローアイテムが移動した時点でのアイテムタイプ。
getnummoverecords()の例を参照してください。
廃止、treenode.valueを使用すること
説明
このコマンドは廃止されました。代わりにtreenode.valueを使用してください。

文字列データを持つノードの値を取得します。
廃止、Table.query()を使用すること
説明
このコマンドは廃止されました。代わりにTable.query()を使用してください。

query()を最後に呼び出したときの結果テーブル内の列数を返します。
廃止、Table.query()を使用すること
説明
このコマンドは廃止されました。代わりにTable.query()を使用してください。

query()を最後に呼び出したときの結果テーブル内の合計行数を返します。
廃止、Table.query()を使用すること
説明
このコマンドは廃止されました。代わりにTable.query()を使用してください。

最後のquery()結果で一致する行に関連付けられている、ソーステーブルの行番号を返します。

table - 文字列の場合、FROMステートメントで定義されたテーブルの名前です。エイリアスを使用した場合、テーブルのエイリアスを使用します。数値の場合、FROMステートメントのテーブルの1から始まるインデックスです。クエリにテーブルが1つしか存在しない場合、1を使用します。複数のテーブルの場合、FROMの最初のテーブルが1、2番目が2の順序です。
matchRow - クエリの結果テーブルの行で、1から始まります。

SELECT句の中でMIN()、MAX()、AVG()などの集計関数を使用している場合、このコマンドは動作しないことに注意してください。集計関数が使用されている場合、このコマンドは単にソーステーブル内の行数を返します。
廃止、Table.query()を使用すること
説明
このコマンドは廃止されました。代わりにTable.query()を使用してください。

query()を最後に呼び出したときの結果テーブルの値を返します。

row - 結果テーブルの1から始まる行番号。
col - 結果テーブルの1から始まる列番号、または結果の列の名前。selectステートメントでエイリアスを定義している場合、列名にはエイリアスを使用します。
廃止、treenode.rankを使用すること
説明
このコマンドは廃止されました。代わりにtreenode.rankを使用してください。

親ノードのサブツリーにある子ノードのランクを取得します。
廃止、treenode.valueを使用すること
説明
このコマンドは廃止されました。代わりにtreenode.valueを使用してください。

文字列データを持つノードの値を取得します。
廃止、Object.stats.state().valueを使用すること
説明
このコマンドは廃止されました。代わりにObject.stats.state().valueを使用してください。

オブジェクトの状態を数値形式で返します。
getstatenum(current);
廃止
説明
このコマンドは廃止されました。関数の最初のパラメータとして渡された状態変化レコードから、値の1つを返します。このレコードは、getstaterecord()への呼び出しで返される戻り値です。この関数の2番目のパラメータとして渡される値は、状態変化レコードのどの値をユーザーが取得するかを示します。
0 = レコードID。これは、移動テーブルのレコードの行番号です。
1 = 状態変化の時間。
2 = オブジェクトの変化後の状態。
3 = 状態が変化したオブジェクト。この値はintとして返され、tonode()を使用してtreenodeに変換する必要があります。
getnumstaterecords()の例を参照してください。
廃止、Object.stats.state().valueStringを使用すること
説明
このコマンドは廃止されました。代わりにObject.stats.state().valueStringを使用してください。

オブジェクトの状態をテキスト文字列として返します。
getstatestr(current);
廃止、Tableの[]オペレーターを使用すること
説明
このコマンドは廃止されました。代わりにTableクラスの[]オペレーターを使用してください。

テーブルのセルのテキスト値を取得します。
廃止、List("GlobalListName")を使用すること
説明
このコマンドは廃止されました。代わりにList("GlobalListName")を使用してください。

グローバルリストを名前で参照します。
廃止、Object.inObjects[]を使用すること
説明
このコマンドは廃止されました。代わりにObject.inObjects[]を使用してください。

下流オブジェクトの入力ポートに接続されている上流オブジェクトを参照します。
廃止、ユーザーライブラリを使用すること
説明
このコマンドは廃止されました。代わりにユーザーライブラリを使用してください。

サービスパック(.fpk)をインストールします。
installpackage("C:/mypak.fpk")
廃止、treenode.labels[]を使用すること
説明
このコマンドは廃止されました。代わりにtreenode.labels[]を使用してください。

オブジェクトのラベルへのノード参照を取得します。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

リストに値が出現する場所のインデックス。この関数は長さqtyのリストを検索し、値valが出現する位置を返します。
listinlist(5,3,2,1,2,3,4)

5つの数値のリストで、3は4番目の数値なので、インデックス番号4が返されます。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

最も大きな値のインデックス。この関数は長さqtyのリストを検索し、最も大きな値が出現する位置を返します。
listmax(5,2,1,2,3,4)

5つの数値のリストで、4が最も大きな値なので、5が返されます。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

最大値。この関数は長さqtyのリストを検索し、最も大きな値を返します。
listmaximum(5,2,1,2,3,4)

リストで最も大きな値が4なので、4が返されます。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

値の平均値。この関数は、長さqtyのリストから値の平均値を返します。
listmean(5,2,1,2,3,4)

2.5が返されます。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

最も小さな値のインデックス。この関数は長さqtyのリストを検索し、最も小さな値が出現する位置を返します。
listmin(5,2,1,2,3,4)

リストで最も小さな値が1で、2番目の値なので、2が返されます。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

最小値。この関数は長さqtyのリストを検索し、最も小さな値を返します。
listminimum(5,2,1,2,3,4)

リストで最も小さな値が1なので、1が返されます。
廃止、List.backOrders()[backOrderNum].remove()またはList.entries()[enterNum].remove()を使用すること
説明
このコマンドは廃止されました。代わりにList.backOrders()[backOrderNum].remove()またはList.entries()[entryNum].remove()を使用してください。

所有しているリストからエントリまたはバックオーダーを削除します。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArrayクラスを使用してください。

指定された数のローカル変数を持つ、汎用ローカル配列を割り当てます。
タイプは次のいずれかです:1 = num、2 = str、3 = coupling、4 = objflexscriptでのみ使用できます。
localarray(1,4)
対数正規分布からランダムなサンプルを返す
説明
lognormal()とlognormal2()は類似の関数ですが、パラメータの定義が異なります。lognormal()は、wikipediaや他のサイトで定義されているパラメータ定義を使用します。lognormal2()は、Expertfitの最新版で定義されているパラメータを使用します。本質的に、パラメータは次のように変換できます。

lognormal( location, normalmean, normalstdev ) = lognormal2( location, Math.exp( normalmean ), normalstdev )
lognormal2( location, scale, shape ) = lognormal( location, Math.log( scale ), shape ) (Math.exp(x)はeのx乗で、Math.log(x)はxの自然対数です)。

正しい分布を使用していることを確認してください。誤った分布を使用すると、不適切なシミュレーション結果が得られることがあります。

lognormal( location, normalmean, normalstdev, stream )は連続確率分布です。

入力:
location : ( - , )
(Math.exp( normalmean ) > 0)となるようなnormalmean
(normalstdev > 0)となるようなnormalstdev
streamは、FlexSimの乱数ストリーム{0,1,2,...}のいずれかを参照します。

出力:
range = ( location , )
mean = location + Math.exp( normalmean + normalstdev² 2)
variance = Math.exp( 2*normalmean + normalstdev² ) [ Math.exp( normalstdev² ) − 1 ]

確率密度関数:



可能な用途:
一部のタスクを実行する時間のモデル化、および多数の他の数量の積となる数量をモデル化するため使用されます。データがない場合に概略モデルとしても使用できます。

コメント:
対数正規分布の確率密度は、normalstdev > 1についてはgamma( normalstdev, normalmean )およびweibull( normalstdev, normalmean )の密度に近い形となりますが、x=0付近で大きなスパイクが発生することがあり、多くの場合にはこれが有用です。
対数正規分布からランダムなサンプルを返す
説明
このコマンドは、データが存在しないときlognormal2コマンドの代替として使用されます。平均と標準偏差を指定でき、コマンドはこれらのパラメータからlognormal2コマンド用の正しい場所、スケール、形状のパラメータを計算し、その分布からサンプルを返します。分布の形状は鐘型の曲線で、右側に妥当な長さのテール部があるよう事前定義されていることに注意してください。したがって、このコマンドはlognormal2コマンドほど柔軟ではありません。このコマンドは三角分布と同様に、データが存在せず、分布の平均値と標準偏差が判明しており、分布が右傾斜している(右側のテールの方が長い)と想定できるが、分布に一致する実際のデータセットが存在しない場合に使用します。詳細については、lognormal2を参照してください。lognormal2の分布を記述する図に関して、lognormalmeanstdevコマンドはnormalstdev/shapeに値0.75を使用して形状を定義します。分布の形状は固定されているため、平均値と標準偏差値によっては負の値が返される場合もあることに注意してください。
double cycletime = lognormalmeanstdev(10, 2);
この例は、平均値が10、標準偏差が2の右傾斜した対数正規分布に従うランダムな値を返します。
廃止、Arrayクラスを使用すること
説明
このコマンドは廃止されました。代わりにArray(qty)を使用してください。Array array = Array(4);

ローカル配列を初期化します。
廃止、Table.sort()を使用すること
説明
このコマンドは廃止されました。代わりにTable.sort()を使用してください。

テーブルを各列ごとに並べ替えます(正の列は昇順、負の列は降順)。
廃止、treenode.find()を使用すること
説明
このコマンドは廃止されました。代わりにtreenodefind()を使用してください。

ルートノードからの名前付きパスでノードを参照します。
廃止、treenode.valueを使用すること
説明
このコマンドは廃止されました。代わりにtreenode.valueを使用してください。

ノードaがノードbをポイントするようにします。
廃止、代わりにキネマティクスを使用すること
説明
このコマンドは廃止されました。代わりにキネマティクスを使用してください。

与えられたrzにオブジェクトを移動し、シミュレーションでの到着時間を返します。traveltoコマンドと似ていますが、開始および終了速度の定義が含まれます。TaskExecuterの開発に使用されます。
ntravelto(current, 0, 5, 8, 0, 1, 1, 1, 0, 1)
廃止、代わりにキネマティクスを使用すること
説明
このコマンドは廃止されました。代わりにキネマティクスを使用してください。

ntravelto()コマンドが呼び出された後で、objectのrzを更新します。TaskExecuterのOnPreDrawで、位置を更新するため使用されます。
ntraveltoupdate(current)
廃止、Object.input.open()を使用すること
説明
このコマンドは廃止されました。代わりにObject.input.open()を使用してください。

このコマンドは、以前にcloseinput()コマンドでブロックされたオブジェクトの入力のブロックを解除します。進入を許可する前に、入力ポート自体と入力全般を開く必要があります。モデラーは、senddelayedmessage()コマンドによりトリガーされたOnMessageフィールドを除いて、いかなるフィールドでもこのコマンドを使用しないことをお勧めします。これは、ポートを開くコマンドは多くの場合、トランジションイベントで行うべきでない複数の他の動作を引き起こすためです。このコマンドをresumeinput()と比較してください。
if (current.subnodes.length < maxcontent)
openinput(current);
廃止、Object.output.open()を使用すること
説明
このコマンドは廃止されました。代わりにObject.output.open()を使用してください。

このコマンドは、以前にcloseoutput()コマンドでブロックされたオブジェクトの出力のブロックを解除します。退出を許可する前に、出力ポート自体と出力全般を開く必要があります。モデラーは、senddelayedmessage()コマンドによりトリガーされたOnMessageフィールドを除いて、いかなるフィールドでもこのコマンドを使用しないことをお勧めします。これは、ポートを開くコマンドは多くの場合、トランジションイベントで行うべきでない複数の他の動作を引き起こすためです。このコマンドをresumeoutput()と比較してください。
if (current.subnodes.length > mincontent)
openoutput(current);
廃止、Object.outObjects[]を使用すること
説明
このコマンドは廃止されました。代わりにObject.outObjects[]を使用してください。

上流オブジェクトの出力ポートに接続されている下流オブジェクトを参照します。
廃止、param()を使用すること
説明
このコマンドは廃止されました。代わりにparamを使用してください。

このコマンドは、nodefunction()コマンドにより呼び出される関数の内部で使用されます。nodefunctionに渡された、indexにより指定されたパラメータを、ノード(またはツリーノード)として返します。nodefunction()に渡される最初の追加パラメータはパラメータ1、2番目はパラメータ2の順に番号が付けられます。パラメータをparval()およびparstr()で取得し、それぞれ数値と文字列にキャストすることもできます。
トリガー/フィールドが
nodefunction(thefuncnode, item)
で呼び出された場合、そのトリガー/フィールド内で、最初の追加パラメータとして渡されたアイテムへのアクセスが、次のように取得されます。
treenode item = parnode(1);
廃止、param()を使用すること
説明
このコマンドは廃止されました。代わりにparamを使用してください。

このコマンドは、nodefunction()コマンドにより呼び出される関数の内部で使用されます。nodefunctionに渡された、indexにより指定されたパラメータを、文字列として返します。nodefunction()に渡される最初の追加パラメータはパラメータ1、2番目はパラメータ2の順に番号が付けられます。パラメータをparam()コマンドで取得することもできます。
トリガー/フィールドが
nodefunction(thefuncnode, passingstr)
で呼び出された場合、そのトリガー/フィールド内で、最初の追加パラメータとして渡されたpassingstr文字列へのアクセスが、次のように取得されます。
string passedstr = parstr(1);
廃止、param()を使用すること
説明
このコマンドは廃止されました。代わりにparamを使用してください。

このコマンドは、nodefunction()コマンドにより呼び出される関数の内部で使用されます。indexにより指定されたnodefunctionに渡されたパラメータを、数値として返します。nodefunction()に渡される最初の追加パラメータはパラメータ1、2番目はパラメータ2の順に番号が付けられます。パラメータをparnode()およびparstr()で取得し、それぞれツリーノードと文字列にキャストすることもできます。
トリガー/フィールドが
nodefunction(thefuncnode, passingval)
で呼び出された場合、そのトリガー/フィールド内で、最初の追加パラメータとして渡されたpassingvalへのアクセスが、次のように取得されます。
double passedval = parval(1);
廃止、Math.piを使用すること
説明
このコマンドは廃止されました。代わりにMath.pi()を使用してください。

piの値(3.14159...)を取得します。
廃止、Object.attrs[]を使用すること
説明
このコマンドは廃止されました。代わりにtreenode.attrsの[]オペレーターを使用してください。

オブジェクトの属性サブツリーのランク付きノードについて、ランクで参照を取得します。
廃止、Table("GlobalTableName")を使用すること
説明
このコマンドは廃止されました。代わりにTableクラスを使用してください。

グローバルテーブルへの参照を取得します。
Table table = reftable("GlobalTable1")
廃止、Vec3.project()を使用すること
説明
このコマンドは廃止されました。代わりにVec3.project()を使用してください。

このコマンドは、オブジェクトのx、y、z位置を、それを包含するオブジェクトへの相対位置として返します。containerobjはそのオブジェクトを直接含むコンテナの必要はありませんが、最終的にそのオブジェクトのコンテナであることが必要です。座標値は1、2、3のいずれかで、それぞれx、y、zを意味します。
double x = relloc(current,model(),1);
double y = relloc(current,model(),2);
double z = relloc(current,model(),3);

x、y、zに、currentオブジェクトのx、y、z位置を、モデル空間への相対位置として設定します。
廃止、Object.input.resume()を使用すること
説明
このコマンドは廃止されました。代わりにObject.input.resume()を使用してください。

このコマンドはopeninput()と同様にobjectの入力を開きますが、オブジェクトに対して呼び出された以前のstopinput()コマンドの記録を保持しているため、すべての停止が再開された後でのみ入力を開きます。詳細については、openinput()のドキュメントを参照してください。
resumeinput(current.centerObjects[1]);
廃止、Object.resume()を使用すること
説明
このコマンドは廃止されました。代わりにObject.resume[]を使用してください。

objectに対して、stopobject()が呼び出される前に行っていた動作を再開するよう指示します。
id値はオプションで、stopリクエストとresumeリクエストとの一致に使用されます。詳細については、stopobject()
のドキュメントを参照してください。
resumeobject(current.centerObjects[1]);
廃止、Object.output.resume()を使用すること
説明
このコマンドは廃止されました。代わりにObject.output.resume()を使用してください。

このコマンドはopenoutput()と同様にobjectの出力を開きますが、オブジェクトに対して呼び出された以前のstopoutput()コマンドの記録を保持しているため、すべての停止が再開された後でのみ出力を開きます。詳細については、openoutput()のドキュメントを参照してください。
resumeoutput(current.centerObjects[1]);
廃止、ユーザーライブラリを使用すること
説明
このコマンドは廃止されました。代わりにユーザーライブラリを使用してください。

ノードをサービスパックファイル(.fpk)としてディスクに保存します。
ファイルの保存ダイアログボックスが表示され、ファイルのパスと名前を定義できます。サービスパックは、サブノードを持つノードです。最初のサブノードはトグルされたflexscriptで、文字列データとコードを含むと見なされます。サービスパックが[ファイル]|[サービスパックのインストール]を使用してロードされると、サービスパックの最初のサブノードが自動的に実行されます。このコードは通常、他のサブノードをMAINおよびVIEWツリーにコピーします。
savefpk(so());
廃止、Object.setLocation()を使用すること
説明
このコマンドは廃止されました。代わりにObject.setLocation[]を使用してください。

オブジェクトの回転中心のx、y、z位置を、オブジェクトのコンテナに対する相対位置に設定します。
廃止、Colorクラスを使用すること
説明
このコマンドは廃止されました。代わりにObject.colorColor()に設定してください。

オブジェクトの色の赤、緑、青コンポーネントを設定します。
廃止、Object.locationを使用すること
説明
このコマンドは廃止されました。代わりにObject.location[]を使用してください。

オブジェクトのx、y、z位置を、オブジェクトのコンテナに対する相対位置に設定します。
廃止、使用しないこと
説明
このコマンドは廃止されました。使用してはいけません。

オブジェクトのベースに割り当てられているbmpまたはjpeg画像(2D形状およびベース画像)のインデックス番号を設定します。新しいインデックスを有効にするには、オブジェクトのimagebaseノードを削除するか、名前を変更する必要があるため、このコマンドはimagebaseノードの名前を「_imagebase」に変更します。インデックス番号は、現在インポートされているbmpまたはjpeg画像の有効なインデックス番号の必要があります。現在インポートされている画像を表示する、または別のbmpやjpeg画像をインポートするには、ツールボックスの[メディアをインポート]オプションを使用してください。
setobjectimageindex(item,gettextureindex("fs3d\\BBsphere.bmp"));
廃止、Table.query()を使用すること
説明
このコマンドは廃止されました。代わりにTable.query()を使用してください。詳細については、「その他の概念」 > 「SQLクエリ」を参照してください。
廃止、treenode.rankを使用すること
説明
このコマンド。代わりにtreenode.rankを使用してください。

親ノードのサブツリーにある子ノードのランクを設定します。
説明
このコマンドは廃止されました。Object.stats.state().valueString = stateStr; を使用してください。

開発用です。状態のいずれかの実名を使用して、オブジェクトの状態を設定します。状態名は、状態円グラフに表示されるものと同じ名前にする必要があります。
setstate_s(current,"busy")
廃止、Tableの[]オペレーターを使用すること
説明
このコマンドは廃止されました。代わりにTableクラスの[]オペレーターを使用してください。

テーブルのセルのテキスト値を設定します。
廃止、Math.sin()を使用すること
説明
このコマンドは廃止されました。代わりにMath.sin()を使用してください。

角度のsinをラジアン単位で取得します。
廃止、Modelクラスを使用すること
説明
このコマンドは廃止されました。代わりにModel.statisticalTimeを使用してください。

実験でウォームアップ時間が経過した後、またはresetstats()が実行された後など、状態が最後にリセットされたときに相対的な現在のシミュレーション時間を返します。
item.TimeIn = statisticaltime();

itemで参照されるオブジェクトの「TimeIn」というラベルを、現在のシミュレーションクロック時間に設定します。
廃止、Object.input.stop()を使用すること
説明
このコマンドは廃止されました。代わりにObject.input.stop()を使用してください。

このコマンドは、closeinput()と同様にオブジェクトの入力を閉じますが、連続したstopinput()コマンドの記録が保持され、すべての停止が再開された後でのみ入力を開きます。詳細については、closeinput()のドキュメントを参照してください。
stopinput(current.centerObjects[1]);
廃止、Object.stop()を使用すること
説明
このコマンドは廃止されました。代わりにObject.stop()を使用してください。

オブジェクトに対して、現在行っている動作を停止し、指定された状態に移行して(指定されているなら状態プロファイルの状態に)、resumeobject()が呼び出されるまで待つように通知します。stopobjectコマンドは累積されます。すなわち、同じオブジェクトに対してstopobjectが2回呼び出されると、そのオブジェクトはresumeobjectが同様に2回呼び出されるまで動作を再開しません。オブジェクトの停止は、停止されるオブジェクトのタイプによって異なります。

FixedResourcesの場合、一般にイベントが無期限に遅延され、入力と出力が停止され、オブジェクトへ、およびオブジェクトからのあらゆる動作は停止されます。このため、TaskExecutersがオブジェクトへのロードやオブジェクトからのアンロードを試みるには、オブジェクトの再開まで待つ必要があります。

TaskExecutersの場合、イベントは遅延されませんが、TaskExecuter用に優先度100,000のプリエンプトのタスクシーケンスが作成され、その中に1つのTE_STOPタスクが含まれます。

同じオブジェクトに複数の停止リクエストが存在する場合、それぞれの停止リクエストの状態は記憶されないことに注意してください。オブジェクトがエンティティAにより状態12での停止を要求され、その後でエンティティBにより状態14での停止を要求された場合、オブジェクトは状態14に移行し、状態12は記憶されません。エンティティBがエンティティAより前にオブジェクトを再開させても、オブジェクトはすべての停止リクエストが再開されるまで状態14に維持されます。

最後の2つのパラメータidとpriorityはオプションで、前の段落に記載された問題を修正するために最近追加されたものです。これらのパラメータが指定されると、要求された停止の回数を増やすだけでなく、停止リクエストのレコードが保存されます。idは停止リクエストのキーと同様に扱われます。priorityは、オブジェクトが停止リクエストを優先度付けするために使用されます。たとえば、スケジュールされた停止状態用の停止リクエストと、故障状態用の停止リクエストが同時に存在する場合、オブジェクトは理論的には同時に2つの状態に置かれるべきですが、FlexSimのオブジェクトは同時に1つの状態しかとれないため、優先度の値で判断され、優先度が最も高い停止リクエストの状態に移行します。

id値は、後でresumeobject()コマンドに追加されるid値と一致する必要があります。この値は、停止リクエストと、対応する再開リクエストを一致するために使用されます。たとえば、オブジェクトをスケジュールされた保守のため、id値1で停止した場合、スケジュールされた保守が完了したら、同じ1のid値でオブジェクトを再開する必要があります。
stopobject(current.centerObjects[1], STATE_BLOCKED);
廃止、Object.output.stop()を使用すること
説明
このコマンドは廃止されました。代わりにObject.output.stop()を使用してください。

このコマンドは、closeoutput()と同様にobjectの出力を閉じますが、連続したstopoutput()コマンドの記録が保持され、すべての停止が再開された後でのみ出力を開きます。詳細については、closeoutput()のドキュメントを参照してください。
stopoutput(current.centerObjects[1]);
廃止、string.substr()を使用すること
説明
このコマンドは廃止されました。代わりにstring.substr()を使用してください。

文字列から、インデックスの開始位置(1から開始)と長さにより定義される部分文字列を返します。
廃止、string.substr()を使用すること
説明
このコマンドは廃止されました。代わりにstring.substr()を使用してください。

このコマンドは、stringの一部を返します。新しい文字列は、最初の文字番号と長さにより定義されます。開始値が0なら、元の文字列の最初の文字を意味します。
stringpart("Hello",2,3) は、部分文字列「llo」を返します。
廃止、string.replace()を使用すること
説明
このコマンドは廃止されました。代わりにstring.replace()を使用してください。

stringtosearchのコピーを返しますが、searchforが出現する部分はすべてreplacewithに置き換えられます。
廃止、Math.tan()を使用すること
説明
このコマンドは廃止されました。代わりにMath.tan()を使用してください。

ラジアン単位の角度のtanを取得します。
廃止、Modelクラスを使用すること
説明
このコマンドは廃止されました。代わりにModel.timeを使用してください。

現在のシミュレーション時間を返します。
item.TimeIn = time();

itemで参照されるオブジェクトの「TimeIn」というラベルを、現在のシミュレーションクロック時間に設定します。
廃止、treenode.upを使用すること
説明
このコマンドは廃止されました。ノードの親(コンテナ)を設定するには、treenode.upを使用してください。

このコマンドは、movenodeをcontainerノードに移動します。これはmoveobjectコマンドとほぼ同じですが、イベント(OnSend、OnReceive)が実行されない点が異なります。
transfernode(current.labels["inactivequeue"].first, current.labels["activequeue"]);
廃止、キネマティクスを使用すること
説明
このコマンドは廃止されました。代わりにキネマティクスを使用してください。

現在の移動パラメータに基づいてオブジェクトの位置を更新します。オブジェクトに対して実行されたtravelto()コマンドで計算された時間および移動パスのパラメータに基づいて、オブジェクトの位置を明示的に設定します。必要なら、パスのジオメトリとしてスプラインを使用します。
traveltoupdate(current)

以前のtraveto()コマンドで設定された移動パラメータに基づいて、currentオブジェクトの位置を更新します。このコマンドは通常、[カスタム描画コード]フィールドから実行されます。
廃止、Object.getLocation()を使用すること
説明
このコマンドは廃止されました。Object.getLocation()を使用してください。

コンテナ内にあるオブジェクトの回転中心のx位置を取得します。
廃止、Object.getLocation()を使用すること
説明
このコマンドは廃止されました。代わりにObject.getLocation()を使用してください。

コンテナ内にあるオブジェクトの回転中心のy位置を取得します。
廃止、Object.rotationを使用すること
説明
このコマンドは廃止されました。代わりにObject.rotationを使用してください。

オブジェクトのy回転(y軸周囲の回転)を取得します。
廃止、Object.getLocation()を使用すること
説明
このコマンドは廃止されました。代わりにObject.getLocation()を使用してください。

コンテナ内にあるオブジェクトの回転中心のz位置を取得します。
廃止、Object.rotationを使用すること
説明
このコマンドは廃止されました。代わりにObject.rotationを使用してください。

オブジェクトのz回転(z軸周囲の回転)を取得します。

開発

高レベルの開発コマンドで、一般にエンドユーザー向けではありません。
説明
開発者向けです。指定されたイベントコードを持つオブジェクトのeventfunctionsグループにあるノードと関連付けられているコードを実行します。イベントコードはeventfunctionsグループのノードのランクではなく、次に示す定義済みFlexSimイベントのいずれかに対応します:

OnReset 1
OnMessage 2
OnEvent 3
OnDraw 4
OnInopen 5
OnOutopen 6
OnReceive 7
OnSend 8
OnEntering 9
OnExiting 10
OnCompile 11
OnCreate 12
OnDestroy 13
OnLoad 14
OnCollision 15
OnClick 16
OnRunend 17
OnRunstart 18
OnInterrupted 19
OnCaptured 20
OnListen 21
OnPredraw 22
OnDrawplanar 23
OnPredrawplanar 24
OnPreListen 25
function_n(current,1,1,2,3)

currentオブジェクトに定義されているOnResetイベント関数を実行します。
説明
開発者向けです。保守スイッチを設定します。

最初のパラメータはオペレーションを割り当てます。2番目のパラメータは、設定する状態を割り当てます。

保守スイッチには次のものがあります。
0. このリストを出力する
1. デッドリンク
2. 属性のバインド方法(0=名前、1=インデックス、2=ブートストラップ)
3. numberprecision
4. バインディングレポートの表示
5. usercollisions
6. post-onsend
7. loadsavemode
8. disablefscheck
9. disablefspreprocess
10. splinetension
11. streamalizer
12. 拡張ドキュメントをただちにロード
13. 実験終了時にレポートを保存
14. オブジェクトライブラリのコンパイルを抑制
15. グローバルコンパイルを抑制
16. ランタイム情報の設定
17. ランタイム情報の取得
18. c++関数のバインド
19. c++関数の自動再バインドのオン/オフ
20. プレゼンテーションモードの取得
21. メインメニューの更新
22. optquestが有効か
23. flypathsの単位(秒)
24. chachedポートのオン/オフ
25. リセット時バインドのオン/オフ
26. カテゴリ名の設定(ユーザーコマンドグループは22、他のものは23、24以降は利用可能)
27. オブジェクトのsizermode 0、デフォルトは1。3軸
28. 非表示ノードをツリーに表示
29. 3dカーソルの非表示
30. simclock再描画の抑制
31. パーサー2の使用
32. グリッド描画の設定:ビット単位フィールド:0x1-グリッドを自動展開、0x2-グリッドの軸を表示、0x4-グリッドの原点を表示
1000. DDE
maintenance(0)
説明
開発者向けです。メッセージをウィンドウにポストし、Windows APIのPostMessage()コマンドに直接アクセスします。ウィンドウハンドルにアクセスするには、windowfromnode()またはgetviewhwnd()を使用してください。詳細については、Windows APIのドキュメントを参照してください。[out]パラメータとしてlParamまたはwParamを使用するメッセージ、または構造体へのポインターを渡すメッセージは使用できないことに注意してください。lParamまたはwParamに文字列を渡すことが可能ですが、これらを[out]パラメータには使用できません。FlexSimのflexscriptマクロには、可能なすべてのWM_メッセージが含まれているわけではないため、flexscriptでこれらのメッセージを使用するには、Windowsのヘッダーファイルでその定義を見つけ、flexscriptコードに定義を追加する必要があります。
postwindowmessage(windowfromnode(view), WM_COPY, 0,0);
説明
開発者向けです。Windows APIのSendMessage() コマンドに直接アクセスし、メッセージをウィンドウに送信します。ウィンドウハンドルにアクセスするには、windowfromnode()またはgetviewhwnd()を使用してください。詳細については、Windows APIのドキュメントを参照してください。[out]パラメータとしてlParamまたはwParamを使用するメッセージ、または構造体へのポインターを渡すメッセージは使用できないことに注意してください。lParamまたはwParamに文字列を渡すことが可能ですが、これらを[out]パラメータには使用できません。FlexSimのflexscriptマクロには、可能なすべてのWM_メッセージが含まれているわけではないため、flexscriptでこれらのメッセージを使用するには、Windowsのヘッダーファイルでその定義を見つけ、flexscriptコードに定義を追加する必要があります。
sendwindowmessage(windowfromnode(view), WM_COPY, 0,0);
説明
開発者向けです。このコマンドは、ジョイスティックやコントローラーの状態を照会するか、機能を設定します。

sticknoは、照会するジョイスティックやゲームパッドのidを定義します。0から32までの数値です。通常は、コンピュータに接続されているジョイスティックは1つだけなので、sticknoの値には1を使用します。ゲームパッドを使用する場合、sticknoに2を使用することが必要な場合もあります。Xboxコントローラーの場合、sticknoの値は0から3までです。VRコントローラーの場合、sticknoは0または1です。Oculusタッチコントローラーの場合、sticknoの0は左手、1は右手です。sticknoに-1を使用すると、接続されているVRヘッドセットのステータス、位置、回転を取得できます。

commandは、このコマンドで実行する動作を定義します。次のマクロのいずれかを使用します。

STICK_JOY_STATUS - ジョイスティックの接続性を照会します。ジョイスティックが正しく接続されていれば、このコマンドは0を返します。戻り値が0以外の場合、ジョイスティックの接続性に何らかのエラーがあり、どのようなエラーなのかをシステムコンソールで確認できます。次のエラーが発生する可能性があります。
    MMSYSERR_NODRIVER - ジョイスティックのドライバーが存在しません。
    MMSYSERR_INVALPARAM - ジョイスティックのIDが無効か、hwndがNULLです。
    JOYERR_NOCANDO - 必要なサービス(Windowsタイマーなど)が使用できないため、ジョイスティックの入力をキャプチャーできません。
    JOYERR_UNPLUGGED - 指定されたジョイスティックはシステムに接続されていません。
    JOYERR_PARMS - ジョイスティックのIDが無効か、hwndがNULLです。

STICK_JOY_XPOS - ジョイスティックの現在のX座標。0から65535までの数値です。0はジョイスティックが左へいっぱいまで押されていることを、65535は右へいっぱいまで押されていることを、32768は正確に中央の位置にあることを示します。ゲームパッドを使用している場合、左側のジョイスティックのx位置です。

STICK_JOY_YPOS - ジョイスティックの現在のY座標。この値も、0から65535までの数値です。0は上方向、65535は下方向を意味します。ゲームパッドを使用している場合、ゲームパッドの左側にあるジョイスティックの位置です。

STICK_JOY_ZPOS - ジョイスティックの現在のZ座標。ジョイスティックを使用している場合、これは通常、ジョイスティックのスロットルの現在の設定です。この値も、0から65535までの数値です。ゲームパッドを使用している場合、右側のジョイスティックのy位置を表します。

STICK_JOY_BUTTONS - ジョイスティックの32のボタンの現在の状態。ビット単位の整数で、各ビットは与えられたボタンの現在の状態を表します。ジョイスティックの場合、メインのトリガーボタンは通常0x00000001ビット、スティックの他のボタンは0x00000002および0x00000004、ジョイスティックのベースにあるボタンはより上位のビットで表されます。ジョイスティックごとに多少異なるので、自分でテストすることが必要です。

STICK_JOY_SET_CAPTURE - このコマンドは、ジョイスティックのキャプチャーを、指定したFlexSimウィンドウに設定します。このコマンドにはwinとpのパラメータを渡す必要があります。このコマンドを実行すると、ビューのOnStick属性にジョイスティックのメッセージが送信されます。たとえば、正投影ビューでジョイスティックのイベントをリッスンする場合、このコマンドを呼び出し、正投影ビューのHWNDハンドル(windowfromnode()を使用します)とポーリング期間を渡します。この期間は、OnStickイベントを繰り返し呼び出す時間間隔をミリ秒単位で指定します。pが0なら、ジョイスティックの状態が変化したときのみOnStickイベントが呼び出されます。pが0より大きい場合、サンプル時間間隔の終わりごとにOnStickイベントが呼び出されます。例:stick(1,5, windowfromnode(sv()), 200); は、200ミリ秒ごとにOnStickイベントが呼び出されるように設定します。このコマンドが動作するには、ビューにOnStick属性を追加する必要があります(ビューに属性を追加した後で、右クリック -> [編集]|[オブジェクトの属性を再バインドする]を使用して再バインドが必要な場合もあります)。

STICK_JOY_RELEASE_CAPTURE - このコマンドは、以前に5コマンドでキャプチャーしたウィンドウから、ジョイスティックのキャプチャーをリリースします。コマンド5と同様にwinパラメータを渡す必要があります。

STICK_JOY_RPOS - ジョイスティックのラダーまたは4番目の軸の現在の位置。ジョイスティックがz軸の周囲で回転できる場合、これは通常はジョイスティックの回転を示します。この値も、0から65535までの数値です。ゲームパッドを使用している場合、右側のジョイスティックのx位置です。

STICK_JOY_UPOS - ジョイスティックの5番目の軸の現在の位置。

STICK_JOY_VPOS - ジョイスティックの6番目の軸の現在の位置。

STICK_JOY_POV - ジョイスティックの視点コントロールの現在の位置。この値は0から35900までの数値で、度を100倍した数値を表します。ゲームパッドの場合、ゲームパッドの左側にある方向パッドを表します。上は0、右は9000、下は18000、左は27000です。方向パッドが押されていない場合、値は65535です。ジョイスティックを使用している場合、スティック自体に方向性サムコントローラがあり、上下左右に押せることがあります。このコマンドは、そのコントローラーの設定を取得します。

STICK_JOY_CURRENT_BUTTON - 現在押されているボタンの番号。

STICK_JOY_FLAGS - ジョイスティックについて有効な情報が返されていることを示すフラグ。

STICK_XBOX_STATUS - Xboxコントローラーの接続性を照会します。コントローラーが正しく接続されていれば、0を返します。

STICK_XBOX_BUTTONS - デバイスのデジタルボタンを示すビットマスク。セットされているビットは、対応するボタンが押されていることを意味します。

STICK_XBOX_LEFT_THUMB_X - 左側にあるサムスティックのx軸の値。サムスティックのそれぞれの軸メンバーは、-32768から32767までの符号付き数値で、サムスティックの位置を示します。値0は中央を示します。負の値は下または左を示します。正の値は上または右を示します。

STICK_XBOX_LEFT_THUMB_Y - 左側のサムスティックのy軸の値。値は-32768から32767までです。

STICK_XBOX_RIGHT_THUMB_X - 右側のサムスティックのx軸の値。値は-32768から32767までです。

STICK_XBOX_RIGHT_THUMB_Y - 右側のサムスティックのy軸の値。値は-32768から32767までです。

STICK_XBOX_LEFT_TRIGGER - 左側のトリガーアナログコントロールの現在の値。値は0から255までです。

STICK_XBOX_RIGHT_TRIGGER - 右側のトリガーアナログコントロールの現在の値。値は0から255までです。

STICK_VR_STATUS - Oculus Riftコントローラーがアクティブなら1を返します。HTC Viveコントローラーがアクティブなら2を返します。コントローラーが非アクティブなら0を返します。コントローラーがアタッチされていなければ、nullvarを返します。

STICK_VR_THUMB_X - サムスティックまたはトラックパッドのx軸の値で、-1から1までです。

STICK_VR_THUMB_Y - サムスティックまたはトラックパッドのy軸の値で、-1から1までです。

STICK_VR_INDEX_TRIGGER - インデックストリガーの値で、0から1までです。

STICK_VR_GRIP_TRIGGER - グリップトリガーの値で、0から1までです。HTC Viveでは、グリップボタンが押されています。

STICK_VR_BUTTON_1 - 最初のボタンが押されています。Oculus RiftではAまたはXです。HTC Viveでは使用されません。

STICK_VR_BUTTON_2 - 2番目のボタンが押されています。Oculus RiftではBまたはYです。HTC Viveでは使用されません。

STICK_VR_BUTTON_3 - 3番目のボタンが押されています。Oculus RiftではEnterまたはHomeです。HTC ViveではMenuです。

STICK_VR_BUTTON_4 - 4番目のボタンが押されています。Oculus Riftではサムスティックです。HTC Viveではトラックパッドです。

STICK_VR_TOUCH_BUTTON_1 - 最初のボタンがタッチされています。HTC Viveでは使用されません。

STICK_VR_TOUCH_BUTTON_2 - 2番目のボタンがタッチされています。HTC Viveでは使用されません。

STICK_VR_TOUCH_BUTTON_3 - 3番目のボタンがタッチされています。Oculus Riftでは使用されません。

STICK_VR_TOUCH_BUTTON_4 - 4番目のボタンがタッチされています。

STICK_VR_TOUCH_THUMB_REST - Oculus Riftのサムレストセンサーがタッチされています。HTC Viveでは使用されません。

STICK_VR_TOUCH_INDEX_TRIGGER - インデックストリガーセンサーがタッチされています。

STICK_VR_TOUCH_POINTING - Oculus Riftでハンドジェスチャがポイントされています。HTC Viveでは使用されません。

STICK_VR_TOUCH_THUMB_UP - Oculus Riftでハンドジェスチャがサムズアップされています。HTC Viveでは使用されません。

STICK_VR_HAND_POSITION - VR空間でのコントローラーの位置。

STICK_VR_HAND_ROTATION - VR回転座標でのコントローラーの回転。

STICK_VR_HAND_WORLD_POSITION - FlexSimのワールド空間でのコントローラーの位置。

STICK_VR_HAND_WORLD_ROTATION - FlexSim回転座標でのコントローラーの回転。

STICK_VR_HAND_OFFSET_POSITION - FlexSimのワールド空間でのコントローラーの位置ですが、コントローラーの回転に基づいてオフセットが適用されます。pパラメータには、オフセットベクトルとして配列を渡します。このオプションを使用して、コントローラーに対する相対ポイント、たとえば指の位置や、コントローラーのポイント先を取得できます。

STICK_VR_TARGET_FLOOR_POSITION - 床の上でコントローラーがポイントしている先の位置。pパラメータの値には、コントローラーからの最大距離を渡します。

STICK_VR_SET_VIBRATION - コントローラーを振動させます。Oculus Riftでは、pパラメータに配列を渡します。最初の要素は0から1までの値で、周波数を表します。2番目の要素は0から1までの値で、振幅を表します。HTC Viveでは、期間をミリ秒単位でpパラメータとして渡します。

STICK_VR_SUBMIT_VIBRATION - コントローラーを微振動させます。最初のOculus Touchコントローラーでは、pパラメータに振幅(0~255)の配列を渡し、この値がキューに入れられて実行されます。HTC ViveやOculus Rift Sコントローラーでは使用されません。
stick(1, STICK_JOY_YPOS); ジョイスティックid 1のy位置を取得します。

描画

平面、正投影、または透視投影ビューでのグラフィックス描画に関連するコマンドです。描画コマンドは、オブジェクトの[プロパティ]ウィンドウにある[カスタム描画コード]フィールドなど、OnDrawイベントで使用するよう設計されています。
3Dの列を描画する
説明
複数の辺と高さを持つ、正方形、五角形、ピラミッドなど任意の形状を描画できる非常に多用途なコマンドで、円筒(辺の総数が多い場合)も描画できます。

x、y、zの位置を原点(基部の中央)として、列を描画します。この列は、辺の数、下端の半径、上端の半径、高さで定義されます。列はrx、ry、rzにより各軸の周囲で度単位に回転できます。色は赤、緑、青の色コンポーネント(0~255)で定義されます。

オプションのopacityパラメータにより、列は透明(0)から不透明(1)まで変化します。有効なtextureindex番号が入力された場合、関連付けられている画像が列の各面に沿ってtextureXrepeatおよびtextureYrepeat回だけ繰り返されます。

列の位置、サイズ、回転はデフォルトで、描画の基礎となるオブジェクトに相対です。角括弧[]内に示されているパラメータは、すべて使用するか、どれも使用しないか、どちらかにする必要があります。textureindexは、gettextureindex()コマンドか、[ツール]|[メディアファイル]メニューを使用して得られる数値です。
drawcolumn(0,0,0, 5 ,4,2, 6 ,0,0,0, 175,175,175, .6, 3, 5,1);
3D立方体を描画する
説明
x、y、zの位置を原点(左下コーナー)として、立方体を描画します。長さ、幅、高さはそれぞれsx、sy、szで定義されます。rx、ry、rzを使用して、それぞれx、y、z軸の周囲に度単位で回転できます。色は赤、緑、青の色コンポーネント(0~255)で定義されます。

オプションのopacityパラメータにより、立方体は透明(0)から不透明(1)まで変化します。有効なtextureindex番号が入力された場合、関連付けられている画像が立方体の各面に沿ってtextureXrepeatおよびtextureYrepeat回だけ繰り返されます。

立方体の位置、サイズ、回転はデフォルトで、描画の基礎となるオブジェクトに相対です。角括弧[]内に示されているオプションパラメータは、すべて使用するか、どれも使用しないか、どちらかにする必要があります。textureindexは、gettextureindex()コマンドか[ツール]|[メディアファイル]メニューを使用して得られる数値です。
drawcube(0,0,0, 5,3,2, 0,0,0, 175,175,175, .6, 3, 1,1);
3Dの円柱を描画する
説明
このコマンドは、x、y、zの位置を原点(基部の中央)として、中空の円柱を描画します。円柱の寸法は、基部の半径、上端の半径、高さで定義されます。円筒の先端を飾るには、drawdisk()コマンドを使用します。円柱は、rx、ry、rzを使用して、それぞれx、y、z軸の周囲に度単位で回転できます。色は赤、緑、青の色コンポーネント(0~255)で定義されます。

オプションのopacityパラメータにより、円柱は透明(0)から不透明(1)まで変化します。有効なtextureindexの数値が入力された場合、関連付けられている画像が円柱の外周に沿ったテクスチャとして使用されます。

円柱の位置、サイズ、回転はデフォルトで、描画の基礎となるオブジェクトに相対です。角括弧[]内に示されているオプションパラメータは、すべて使用するか、どれも使用しないか、どちらかにする必要があります。textureindexは、gettextureindex()コマンドか、[ツール]|[メディアファイル]メニューを使用して得られる数値です。
drawcylinder(0,0,0, 1,1, 5, 0,0,0, 175,175,175, .6,3);
3Dの円盤を描画する
説明
x、y、zの位置を原点(半径の中央)として、平坦な円盤を描画します。円盤の寸法は内側の半径、外側の半径、開始角度、掃引角度で定義されます。掃引角度が360なら、完全な円が描画されます。innerradiusが0より大きいなら、円盤の中央に穴が開けられます。円盤は、rx、ry、rzを使用して、それぞれx、y、z軸の周囲に度単位で回転できます。色は赤、緑、青の色コンポーネント(0~255)で定義されます。

オプションのopacityパラメータにより、円盤は透明(0)から不透明(1)まで変化します。有効なtextureindexの数値が入力された場合、関連付けられている画像が円盤の表面に沿ったテクスチャとして使用されます。

円盤の位置、サイズ、回転はデフォルトで、描画の基礎となるオブジェクトに相対です。角括弧[]内に示されているオプションパラメータは、すべて使用するか、どれも使用しないか、どちらかにする必要があります。textureindexは、gettextureindex()コマンドか、[ツール]|[メディアファイル]メニューを使用して得られる数値です。
drawdisk(0,0,0, .5,2, 90,270, 0,0,0, 175,175,175, 1,3);
説明
このコマンドは、3Dビューでのみ使用できます。テクスチャマッピングされたテキスト文字列を描画します。下のオブジェクトの名前と統計情報を描画するのと同じ機能が使用されます。正しくスケーリングされれば、非常に鮮明で読み取りやすいテキストが描画されます。このコマンドをsetdrawnamefunction()と組み合わせて使用すると、オブジェクトの下のボックスに描画されるデータをカスタマイズできます。drawtext()とは異なり、このコマンドのパラメータセットは大幅に削られているため、テキストを描画する前に場所、サイズ、レンダリング設定をセットアップするにはglコマンド(fglTranslate()、fglScale()、fglColor()など)を使用します。
オブジェクトのカスタム描画コードトリガーに、次のコードを追加します。

if(!param(2)) {
	setdrawnamefunction(80, 15, c, param(1), 1);
} else {
	fglTranslate(-40, -15, 0);
	drawflattext("Hello World");
}
	
これにより、オブジェクトの下の表示ボックスに「Hello World」というテキストが描画されます。
画像を描画する
説明
ビューのimagepathに画像を描画します。scalingの値は、画像をどのように配置およびスケーリングするかを指定します。
NO_SCALE(または0):画像のサイズと同じ幅と高さで、場所x、yに画像を描画します。
SCALE_DOWN:x、y、width、heightにより作成される長方形に画像を描画します。必要なら、この長方形に収まるように比率を維持して画像を縮小します。
SCALE_UP_DOWN:x、y、width、heightにより作成される長方形に画像を描画します。必要なら、この長方形に収まるように比率を維持して画像を拡大縮小します。
SCALE_INDEPENDENT:x、yの場所に、widthとheightのサイズの画像を描画します。
drawimage(c, "buttons\\visible_eye.png", 0, 10, 0, 0, 0);
平坦な四辺形を描画する
説明
このコマンドは、x1、y1、z1、x2、y2、z2、x3、y3、z3、x4、y4、z4により定義される頂点を持つ平坦な四辺形を描画します。色は赤、緑、青の色コンポーネント(0~1)で定義されます。結果として得られる形状と照明は、頂点が定義される順序やシーケンスによって異なります。頂点がすべて同じ平面に属する場合、drawrectangle()コマンドの使用を検討してください。
drawquad(view, 0, 0, 1, 0, 0, 0, 2, 2, 2, 4, 5, 6, 1, 0, 0);

この例は、(0,0,0)、(1,0,0)、(2,2,2)、(4,5,6)の4つのポイントで定義された頂点を持つ四辺形を描画します。四辺形の色は赤です。
3Dの長方形を描画する
説明
ユーザー定義の場所、長さ、幅、回転、色を使用して、平坦な長方形を描画します。x、y、z平面と並行でない長方形を描画するには、drawquad()コマンドを使用する必要があります。

オプションのopacityパラメータにより、長方形は透明(0)から不透明(1)まで変化します。有効なtextureindex番号が入力された場合、関連付けられている画像が長方形の表面にテクスチャとして、textureXrepeatおよびtextureYrepeat回だけ繰り返されます。

長方形の場所、サイズ、回転はデフォルトで、描画の基礎となるオブジェクトに相対です。角括弧[]内に示されているオプションパラメータは、すべて使用するか、どれも使用しないか、どちらかにする必要があります。textureindexは、gettextureindex()コマンドか、[ツール]|[メディアファイル]メニューを使用して得られる数値です。
drawrectangle(0,0,0, 2,3, 0,0,0, 175,175,175, .6, 1, 2,3);
3Dの球を描画する
説明
x、y、zの場所を原点(球の中央)として、中空の球を描画します。球の寸法は、単一の半径により定義されます。色は赤、緑、青の色コンポーネント(0~255)で定義されます。

オプションのopacityパラメータにより、球は透明(0)から不透明(1)まで変化します。有効なtextureindex番号が入力された場合、関連付けられている画像が球の表面にテクスチャとして貼り付けられます。

球の場所、サイズ、回転はデフォルトで、描画の基礎となるオブジェクトに相対です。角括弧[]内に示されているオプションパラメータは、すべて使用するか、どれも使用しないか、どちらかにする必要があります。textureindexは、gettextureindex()コマンドか、[ツール]|[メディアファイル]メニューを使用して得られる数値です。
drawsphere(0,0,0,5,175,175,175,1,3);
テキストを描画する
説明
このコマンドは、x、y、zにより定義される場所にテキストを描画します。widthパラメータは使用されません。テキストの幅と高さは、heightパラメータにより決定されます。回転はrx、ry、rzにより定義されます。色は赤、緑、青の色コンポーネント(0~1)で定義されます。flagsパラメータは次のように定義できます:0x1 = 太字、0x2 = 斜体、0x4 = 下線。flagsパラメータは3d以外のビューにのみ適用されます。opacityが使用される場合、0(完全に透明)から1(不透明)までの数値です。必要なら、drawtext()の前にdrawfont()コマンドを呼び出してフォントタイプを変更できます。このコマンドは、平面、3D、グラフ、パネルのビューで使用できます。
drawtext(view, "Hello", 0,0,0, 0,.3,.1, 90,0,0, 1,0,0, .8);

この例は、場所(0,0,0)にサイズ0.3、太さ0.1、回転(90,0,0)、rgb色(1,0,0)、不透明度0.8で「Hello」と描画します。
OpenGLの描画設定を有効にする
説明
OpenGLの描画設定を有効にします。FlexSimの描画エンジンは最適化のため、与えられた設定の有効/無効の状態を自動的に復元しないので、描画機能を実行した後でこのコマンドを使用し、設定をデフォルトに戻す必要があることに注意してください。設定をデフォルトに戻さないと、モデルの他のオブジェクトが正常にレンダリングされません。

OpenGLの一般的な描画設定には次のものがあります。
GL_LIGHTING
    照明をオン/オフにします。
    ポリゴンがビューアから離れても色が変わらない場合は、オンにします。
    デフォルトは有効です。
GL_CULL_FACE
    背面の除外をオン/オフにします。
    ポリゴンの両面(前面と背面)を描画する場合はオフにします。
    デフォルトは無効です。
GL_TEXTURE_2D
    テクスチャ処理をオン/オフにします。
    テクスチャが必要ない場所に表示されている場合はオフにします。
    デフォルトは有効です。

さらに詳細な情報が必要な場合は、標準のOpenGLドキュメントでglEnable()を参照してください。
fglEnable(GL_LIGHTING);
3Dビューの描画状態についての情報を取得する
説明
このコマンドを使用して、3dビューの描画状態について各種の情報にアクセスできます。実行されるロジックや、返されるデータは、動作パラメータに基づき、次のように決定されます。

FGL_INFO_SHADERTYPE - 描画パスのどの部分が実行されているか、たとえばシャドーマップのレンダリング(SHADERTYPE_RENDER_SHADOWS)、シャドーマップのぼかし処理(SHADERTYPE_BLUR)、オブジェクトの画面へのレンダリング(SHADERTYPE_DEFAULT)などを返します。

/*シャドーマップをレンダリングするときはこのオブジェクトを描画しないこと*/
if (fglinfo(FGL_INFO_SHADERTYPE, view) == SHADERTYPE_RENDER_SHADOWS)
    return 0;
OpenGLで以後の頂点のシェーディングを行うための法線ベクトルを設定する
説明
OpenGL描画で以後の頂点のシェーディングを行うための法線ベクトルを設定します。ポリゴンは、法線が適用されない限りフラットシェーディングされます。法線はポリゴンに対して垂直なベクトルで、ポリゴンの向いている方向を指すものです。頂点が反時計回りの順序で定義されているポリゴンは、「右手の法則」に従って前方を指すことに注意してください。ポリゴンのシェーディングは、法線と光源の間の角度に基づいて行われます。法線はそれぞれの頂点に対して、色と同様な方法で適用されますが、通常は単に各ポリゴンの定義の最初で定義されます。ポリゴンの法線が光源に直接向いている場合は明るくシェーディングされ、角度が傾斜している場合は暗くシェーディングされます。さらに詳細な情報が必要な場合は、標準のOpenGLドキュメントを参照してください。
fglNormal(1,0,0);
グリッドから指定の情報を取得する
説明
meshnodeに関連付けられているグリッドから、指定の情報を取得します。indexは、要求される頂点のインデックスです(0から開始)。typeは、グリッドについて次のいずれかを指定します(indexとparamは無視されます)。
MESH_PER_VERTEX_ATTRIBS
MESH_PER_MESH_ATTRIBS
MESH_FLAGS
MESH_NR_VERTS
MESH_GET_INDEX - 与えられたインデックスについて頂点インデックスを返します(MESH_INDEXEDフラグと併用した場合のみ有効)。

次に示すのは頂点に固有のタイプです。
MESH_POSITION
MESH_TEX_COORD2
MESH_NORMAL
MESH_DIFFUSE
MESH_DIFFUSE4
MESH_AMBIENT_AND_DIFFUSE
MESH_AMBIENT_AND_DIFFUSE4

頂点を指定する場合、paramに次のものが有効です。
MESH_COLOR_RED
MESH_COLOR_GREEN
MESH_COLOR_BLUE
MESH_COLOR_ALPHA
MESH_POS_X
MESH_POS_Y
MESH_POS_Z
MESH_TEX_S
MESH_TEX_T
double xposition = meshinfo(Model.find("mesh"), MESH_POSITION, 6, MESH_POS_X)
説明
このコマンドを使用して、モデルでオブジェクトの下のボックスに情報を表示する機能に直接アクセスできます。FlexSimの3D表示メカニズムでは、モデル内のオブジェクトに対して複数の描画パスを実行します。最初に、描画が必要なデータを収集してキャッシュします。次に、各オブジェクトについてオブジェクトの形状を描画し、オブジェクトのカスタム描画機能を呼び出します。最後に、コネクターや情報ボックスなどのオーバーレイを描画します。オブジェクトのカスタム描画機能の一部、すなわちOnDrawイベントやオブジェクトのカスタム描画コードトリガーとしてsetdrawnamefunction()コマンドが呼び出された場合、そのオブジェクトの情報ボックスのステップに描画シーケンスが到達したときにコールバックが起動されます。このためには、コマンドを呼び出して描画するボックスのサイズを指定し、ボックス情報を描画するため起動されるコードを保持しているノードへの参照をnodefunctionパラメータとして渡し、最大3つのパラメータをparam(1)、param(2)、param(3)としてnodefunctionに渡します。その後で、drawflattext()コマンド、または他の任意のOpenGL描画コマンドを使用して、必要な情報を描画するnodefunctionコードを実装します。nodefunctionが呼び出されるとき、OpenGLのモデルビューマトリクスは、(0,0,0)のポイントが表示ボックスの上端中央で、長さの1単位が画面の1ピクセルに相当するよう設定されることに注意してください。
オブジェクトのカスタム描画コードトリガーに、次のコードを追加します。

if(!param(2)) {
	setdrawnamefunction(80, 15, c, param(1), 1);
} else {
	fglTranslate(-40, -15, 0);
	drawflattext("Hello World");
}
	
これにより、オブジェクトの下の表示ボックスに「Hello World」というテキストが描画されます。

イベント

イベントの作成、検索、操作に使用されるコマンド。
説明
eventtypeの凡例では、そのeventtypeで特定のパラメータに与えられた値と、文字列とを関連付けできます。「parameter」に負の数値を渡すと、パラメータの説明として、前に指定した文字列を追加できます。「parameter」が負の値で「value」が-1なら、その数値はノードへのポインターと見なされ、ノードのパスが文字列として表示されます。
addtoeventtypelegend(index,-1,-1,"resource: "); // p1について「resource: 」というテキストを表示し、オブジェクトのパスを表示する
addtoeventtypelegend(index,-2,0,"covermode: "); // p2について、「covermode: 」というテキストを表示する
addtoeventtypelegend(index,2,1,"YellowToGreen"); // p2について、値が1なら数値の1ではなく「YellowToGreen」と表示される
addtoeventtypelegend(index,2,2,"RedToGreen"); // p2について、値が2なら数値の2ではなく「RedToGreen」と表示される
addtoeventtypelegend(index,3,0,""); // p3について、0を空白にする
addtoeventtypelegend(index,4,0,""); // p4について、0を空白にする
説明
開発者向けです。このコマンドは、以後のモデルの実行中に発生するイベントを作成します。このイベントは、objectで指定されるオブジェクト用に作成されます。イベントは、このコマンドが呼び出されてからtime秒後に発生します。イベントが、作成されたのと同じシミュレーション時間で発生する必要がある場合、timeを0にします。イベントが発生すると、オブジェクトのクラスのOnTimerEventイベント関数が呼び出されます。この関数にはcode、data、involvedが渡されます。これらの値は、OnTimerEventでeventcode、eventdata、iとしてアクセスできます。一般に、作成または実行されたイベントのタイプを判定するにはeventcodeが使用されます。eventdataはイベントの説明で、ユーザーの利便性のため使用されます。通常、OnTimerEventの実行には重要でありません。イベントに関係するオブジェクト、たとえば進入や退出を行うフローアイテムなどはinvolvedとして渡され、OnTimerEventでiとして参照されます。コード用に次の値が定義済みで、ユーザーが使用できます。

1 - EVENT_OPENINPUTS
2 - EVENT_OPENOUTPUTS
3 - EVENT_PROCESSFINISH
4 - EVENT_CREATEPART
5 - EVENT_DESTROYPRODUCT
6 - EVENT_CONVEYEND
7 - EVENT_BEGINLOADTIME
8 - EVENT_BEGINUNLOADTIME
9 - EVENT_ENDLOADTIME
10 - EVENT_ENDUNLOADTIME
11 - EVENT_ENDDELAYTIME
12 - EVENT_BEGINDOWNTIME
13 - EVENT_ENDDOWNTIME
14 - EVENT_ENDWAITTIME
15 - EVENT_MEETBATCHQTY
16 - EVENT_ENDTRAVELTIME
17 - EVENT_ENDSETUP

ユーザーが独自のイベントタイプを作成する場合、100より大きな値をコードとして使用します。eventcodeとeventdataも参照してください。
if (current.subnodes.length >= current.mincontent)
{
createevent(current,5,EVENT_OPENOUTPUTS,"openoutputs",involved);
}

シミュレーションで5秒後に、currentのコンテンツがcurrentで参照されるオブジェクトのmincontentという名前のラベルより少なければ、currentとして指定されたオブジェクトの出力ポートを、involvedで指定されたフローアイテム用に開きます。
オブジェクトに関連付けられているイベントを破棄する
説明
与えられたオブジェクトに関連付けらわれているイベントを破棄します。必須パラメータは、最初のパラメータobjectのみです。他のパラメータはオプションで、次に示すように、破棄するイベントを選択するフィルタとなります。

time:コマンドが呼び出された時間と等しいか、より大きければ、このパラメータはイベントを時間でフィルタリングします。イベントの時間が渡されたtimeと等しくなければ、イベントは破棄されません。フィルタとして使用しない場合、-1を渡します。

code:このパラメータが0より大きい場合、イベントコードでイベントをフィルタリングします。イベントのコードが渡されたcodeと等しくなければ、イベントは破棄されません。

data:NULL以外なら、このパラメータを使用し、イベントに関連付けられているデータ文字列でイベントがフィルタリングされます。イベントのデータ文字列が渡された文字列と等しくなければ、イベントは破棄されません。

involved:NULL以外なら、このパラメータにより、関係するノードやオブジェクトでイベントがフィルタリングされます。イベントの関連ノードが渡されたノードと等しくなければ、イベントは破棄されません。
destroyeventsofobject(model().subnodes[2])
説明
開発者向けです。このコマンドは、createevent()コマンドにデータとして渡された文字列値を返します。ライブラリオブジェクトのOnTimerEvent関数でのみ使用されます。通常は、発生しているイベントタイプのユーザー向け説明として使用されます。速度の理由から、OnTimerEvent関数の実行時には一般に使用されません。このコマンドを呼び出すときは括弧を付けません。createevent()とeventcodeも参照してください。
if (comparetext(eventdata,"openinputs"))
{
thisobjectdata->openinputs();
}

createevent()に渡された文字列値が「openinputs」と等しい場合、thisobjectdataで参照されるオブジェクトのopeninputsというメソッドを呼び出します。
説明
開発者向けです。イベントログに関係する何かを記述する文字列値を返します。

動作は次のいずれかです。
ELI_GET_OBJECTPATH 1 - objectpaths配列から、インデックスn1にあるオブジェクトのパスを返します。
ELI_GET_INVOLVEDPATH 2 - involvedpaths配列から、インデックスn1にあるオブジェクトのパスを返します。
ELI_GET_OTHERPATH 3 - objectpaths配列から、インデックスn1にあるオブジェクトのパスを返します。
ELI_EVENTTYPE_NAME 4 - eventtypes配列から、インデックスn1にあるeventtypeの名前を返します。
ELI_LOGGEDEVENTTYPE_NAME 5 - loggedeventtypes配列から、インデックスn1にあるlogged eventtypeの名前を返します。

イベントログに関係し、数値を返す他のオペレーションには、applicationcommand()関数でアクセスできます。
「seteventlogging」- eventtype n1のログ記録を有効または無効にします。
「geteventlogging」- eventtype n1についてログ記録が有効かどうかを返します。
「getobjectpathslistsize」- objectpaths配列のサイズを返します。
「getinvolvedpathslistsize」- involvedpaths配列のサイズを返します。
「getotherpathslistsize」- objectpaths配列のサイズを返します。
「geteventtypeslistsize」- eventtypes配列のサイズを返します。
「getloggedeventtypeslistsize」- loggedeventtypes配列のサイズを返します。
「geteventtypecode」- n1として渡された名前のeventtypeのインデックスを返します。
string objectpath = eventloginfo(ELI_GET_OBJECTPATH,1);
説明
開発者向けです。このコマンドは、OnListenおよびOnPreListenイベント関数内で使用するための情報を返します。
返される情報は、リッスンしているイベントに渡された情報です。
infoが1なら、エンジンイベントコードを返します。エンジンイベントコードには、SM_MESSAGEやSM_DRAWなどのマクロがあります。
infoが2および3なら、関連付けられているツリーノードへのポインターを返します。

リスニングを設定するには、リッスン先のオブジェクト(オブジェクトA)に「listeners」属性を追加します。listeners属性は、リッスン元のオブジェクト(オブジェクトB)に結合されているサブノードを持つ必要があります。オブジェクトAでイベントが起動する前に、オブジェクトBのOnPreListenイベント関数が起動します。オブジェクトAの最初のイベントの後、オブジェクトBのOnListenイベント関数が起動します。また、オブジェクトBの結合ノードの下に数値データを持つサブノードを追加し、イベントをフィルタリングすることもできます。数値データには、リッスンするビットシフトされたイベントコードの、ビット単位の合計を使用します。結合にサブノードがない場合、オブジェクトはデフォルトですべてのイベントをリッスンします。

treenode current = c;
treenode involved = i;
int code = listenerinfo(1);
treenode associated = tonode(listenerinfo(2));
treenode coupling = tonode(listenerinfo(3));

print("OnListen");
print("current: ", current);
print("involved: ", involved);
print("code: ", code);
print("associated: ", associated);
print("coupling: ", coupling);
説明
開発者向けです。実行ファイルに対して、オブジェクトがリスナーであることを通知します。これはセッション間で継続されません。このコマンドは、実行ファイルのリスナーリストに、リスナーをポイントするノードを追加します。セッションが再ロードされるか、コンパイル後には、リスナーをリセットする必要があります。リスニングメカニズムは実行ファイルに大きな負荷をかける可能性があるため、使用は最小限にしてください。リスナーは、モデルのいずれかのオブジェクトにイベント(OnTimerEvent)がディスパッチされたとき、OnListenメッセージを受け取ります。リスナーはメッセージをフィルタリングし、OnListenメッセージに応答するかどうかを決定する必要があります。OnListenメッセージに渡されるパラメータについては、「オンラインリファレンスガイド」を参照してください。
startlisten(so())

FixedResources

FixedResourceオブジェクトに関連付けられているコマンド。これらのコマンドのほとんどは、BasicConveyorまたはBasicFRオブジェクトのカスタム動作を開発するとき使用されます。
FixedResourceオブジェクトのプル要件を再起動する
説明
FixedResourceに対して、入力ポートportnr経由で渡されたオブジェクトのアイテムのプル要件を評価するよう通知します。このコマンドは、アイテムがプル可能な場合、プル要件のフィールドにより返される値を返します。理由にかかわらずアイテムをプルできない場合(ポートが閉じている、アイテムがリリースされていないなど)、このコマンドは0を返します。bypassflagsパラメータは、BYPASS_で始まるマクロのビット単位の組み合わせで、アイテムが利用可能かどうかを判定するときに特定の基準を無視するよう指定します。
evaluatepullcriteria(current, item, 1); // [ベストアイテムからプル]ピックリストオプションも参照
アイテムのFixedResource関連の変数に保存されているオブジェクト参照を取得する
説明
アイテムのFixedResource関連の変数に保存されているオブジェクト参照を返します。
FixedResourceクラスでは、各フローアイテムに関連する1つの変数をサブクラスに保存できます。これらの変数の意味は、クラスのタイプによって異なります。
たとえば、プロセッサがプロセスまたは設定時間にオペレーターを使用するよう設定されている場合、プロセッサは関連変数を使用して、フローアイテム用に呼び出されるディスパッチャーへの参照を保存します。
モデルのオブジェクトとして明示的なFixedResourceクラスを使用している場合、このコマンドをsetitemvar、getitemvar、setiteminvolvedコマンドとともに使用して、オブジェクトが受け取るアイテムの変数を保存できます。
getiteminvolved(current.first)
アイテム用のFixedResource変数の値を取得する
説明
アイテム用のFixedResource変数の値を返します。varパラメータは1、2、3のいずれかです。FixedResourceクラスでは、各フローアイテムについて3つの数値変数をサブクラスに保存できます。これらの変数の意味は、クラスのタイプによって異なります。
たとえば、プロセッサは変数1にアイテムの処理開始時間を、変数2にアイテムの処理時間を保存できます。
モデルのオブジェクトとして明示的なFixedResourceクラスを使用している場合、このコマンドをsetitemvar、getiteminvolved、setiteminvolvedコマンドとともに使用して、オブジェクトが受け取るアイテムの変数を保存できます。
getitemvar(current.first, 3)
説明
fixedresourceに対して、入力ポートportnr経由で渡されたオブジェクトのアイテムのプル要件を評価するよう通知します。プル評価が真なら、このコマンドはただちにアイテムをプルします。このコマンドは、アイテムが正常にプルされれば1を、そうでなければ0を返します。理由にかかわらずアイテムをプルできない場合(ポートが閉じている、アイテムがリリースされていないなど)、このコマンドは0を返します。bypassflagsパラメータは、BYPASS_で始まるマクロのビット単位の組み合わせで、アイテムが利用可能かどうかを判定するときに特定の基準を無視するよう指定します。BYPASS_ALLを指定すると、利用可能性にかかわらずただちにアイテムがプルされます。
pullitem(current, item, 1); // [ベストアイテムからプル]ピックリストオプションも参照
FixedResourceに対して、入力を開きフローアイテムを受け付けるよう通知する
説明
FixedResourceステーションに対して、入力を開きフローアイテムを受け付けるよう通知します。
portパラメータはオプションで、どのポートから受信すべきかが正確に判明している場合のみ使用します。portパラメータが指定されている場合、このオブジェクトは上流オブジェクトの対応する出力ポートが開いていれば、そのオブジェクトからアイテムの受け付けを試み、アイテムの以前のsend-to戻り値を無視します(プルロジックの動作と同様です)。この関数は、アイテムを受け付けるため1回、アイテムの受け付け後に(または受け付けの確認後に)1回だけ実行します。
releaseitem()コマンドも参照してください。この関数は、BasicFRまたはBasicConveyorのコードフィールド内でのみ使用します。他のオブジェクトには独自のreceiveitem()が実装されています。
receiveitem(current)
フローアイテムを現在のオブジェクトからリリースする
説明
指定されたフローアイテムをリリースします。フローアイテムは、現在そのアイテムが含まれているオブジェクトから自由に退出可能な時にリリースされ、その時点で[ポートに送信]が評価されます。このコマンドは、フローアイテムがBasicFRオブジェクト内にあり、フローアイテムがまだリリースされていない、またはいずれかのFixedResourceでholditem()により保持されている場合のみ使用します。
2番目のパラメータportはオプションです。このパラメータが渡された場合、sendtoは評価されず、アイテムは指定のポートからリリースされます。フローアイテムが存在する場合、releaseitemは1を返します。それ以外の場合、0を返します。
receiveitem()コマンドも参照してください。
releaseitem(item)
フローアイテムのuniqueid属性を、他のフローアイテムに割り当てられていない値にリセットします。
説明
このコマンドは、フローアイテムのuniqueid属性を、他のフローアイテムに既に割り当てられていない値にリセットします。この属性は、フルレポート用の全履歴情報を収集するために必要です。このコマンドは、フローアイテムが破棄されていないが、データ取集上の目的から新規アイテムと見なす必要がある場合に使用します。たとえば、フローアイテムがモデラーによりリサイクルされる(内蔵のリサイクリング機能を使用せず)場合、フローアイテムが循環に戻されたときにこのコマンドを呼び出します。フローアイテムは通常、全履歴収集が有効なときのみuniqueid属性を持ちます。
resetuniqueid(item);
説明
BasicFRオブジェクトのトリガーからのみ実行し、通常は[オブジェクトを再開]フィールドからのみ実行します。このコマンドは、savestoppedtransportinコマンドを使用して保存されたtaskexecutersへの参照を探し、アンロード操作を再開できることをtaskexecutersに通知します。saverankパラメータは、特定の保存済み参照のツリー内でのランクを指します。saverankパラメータが指定されていない場合、すべての保存済み参照が再開されます。このパラメータが指定されている場合、指定されたランクに関連付けられているtaskexecuterのみが再開を許可されます。保存済み参照は、BasicFRのnroftransportsin変数のサブノードとして格納されます。特定の保存済みtaskexecutersへの参照は、nroftransportsinnode.subnodes[saverank].valueで参照できます。
resumetransportsin(current);
説明
BasicFRオブジェクトのトリガーからのみ実行し、通常は[オブジェクトを再開]フィールドからのみ実行します。このコマンドは、savestoppedtransportoutコマンドを使用して保存されたtaskexecutersへの参照を探し、ロード操作を再開できることをtaskexecutersに通知します。saverankパラメータは、特定の保存済み参照のツリー内でのランクを指します。saverankパラメータが指定されていない場合、すべての保存済み参照が再開されます。このパラメータが指定されている場合、指定されたランクに関連付けられているtaskexecuterのみが再開を許可されます。保存済み参照は、BasicFRのnroftransportsout変数のサブノードとして格納されます。特定の保存済みtaskexecutersへの参照は、nroftransportsoutnode.subnodes[saverank].valueで参照できます。
resumetransportsout(current);
説明
BasicFRオブジェクトの完全なトリガーの輸送からのみ実行します。
taskexecuterがアンロードしようとしているアイテムについて、BasicFRで受け付け準備が整っていない場合、BasicFRはtaskexecuterへの参照を保存してから値-1を返す必要があります。
その後でtaskexecuterはブロック状態に移行し、BasicFRで受け付け準備が整うまで待ちます。BasicFRは、アイテムの受け付け準備が整ったときresumetransportsin()コマンドを呼び出します。
これにより保存済みの参照が調べられ、対応するtaskexecutersに対して、アンロードオペレーションをすぐに再開可能であると通知されます。
if(getvarnum(current, "nrofstops") > 0)
{
savestoppedtransportin(current, transporter);
return -1;
}
説明
BasicFRオブジェクトから外への完全なトリガー輸送からのみ実行します。
taskexecuterがロードしようとしているアイテムについて、BasicFRで送る準備が整っていない場合、BasicFRはtaskexecuterへの参照を保存してから値-1を返す必要があります。
その後でtaskexecuterはブロック状態に移行し、BasicFRで送出準備が整うまで待ちます。BasicFRは、アイテムの送出準備が整ったときresumetransportsoutコマンドを呼び出します。
これにより保存済みの参照が調べられ、対応するtaskexecutersに対して、ロードオペレーションをすぐに再開可能であると通知されます。
if(getvarnum(current, "nrofstops") > 0)
{
savestoppedtransportout(current, transporter);
return -1;
}
説明
アイテムのFixedResource関連の変数に保存されているオブジェクト参照を設定します。FixedResourceクラスでは、各フローアイテムに関連する1つの変数をサブクラスに保存できます。これらの変数の意味は、クラスのタイプによって異なります。たとえば、プロセッサがプロセスまたは設定時間にオペレーターを使用するよう設定されている場合、プロセッサは関連変数を使用して、フローアイテム用に呼び出されるディスパッチャーへの参照を保存します。このコマンドは、モデルで明示的なFixedResourceクラスをandオブジェクトとして使う場合のみ使用します。このコマンドとsetitemvar、getitemvar、getiteminvolvedコマンドを併用して、オブジェクトが受け付けるアイテムに変数を保存できます。
setiteminvolved(current.first, current.centerObjects[1])
説明
アイテム用のFixedResource変数の値を設定します。varパラメータは1、2、3のいずれかで、valueパラメータには設定する値を指定します。FixedResourceクラスでは、各フローアイテムについて3つの数値変数をサブクラスに保存できます。これらの変数の意味は、クラスのタイプによって異なります。

たとえば、プロセッサは変数1にアイテムの処理開始時間を、変数2にアイテムの処理時間を保存できます。モデルのオブジェクトとして明示的なFixedResourceクラスを使用している場合、このコマンドをgetitemvar、getiteminvolved、setiteminvolvedコマンドとともに使用して、オブジェクトが受け取るアイテムの変数を保存できます。
setitemvar(current.first, 3, time())
FixedResourceオブジェクトに、アイテムが運び込まれることを通知する
説明
このコマンドは、下流のFixedResourceオブジェクトに対して、指定されたアイテムが上流のオブジェクトから運び込まれることを通知します。このコマンドは、上流オブジェクトの[輸送を使用]フィールドがチェックされており、FRLOADタスクを使用する代わりにアイテムを明示的に移動する場合のみ使用します。これにより下流のFixedResourceは、オブジェクトに進入することが予定されているが、まだ到着していないアイテムがいくつ存在するかのデータを管理できます。このコマンドは、moveobjectコマンドでアイテムを移動する直前に実行します。詳細については、FixedResourceのドキュメントを参照してください。このコマンドが0を返した場合、オブジェクトはstopobjectコマンドで停止されており、アイテムを運び込むにはアイテムが再開されるまで待つ必要があります。
transportincomplete(current.outObjects[port], item, opipno(current, port));

この例は、輸送を使用せずフローアイテムをただちに移動するとき、moveobjectコマンドの前に[輸送の要求元]フィールドから実行します。
FixedResourceオブジェクトに、アイテムが運び出されることを通知する
説明
このコマンドは、FixedResourceオブジェクトに対して、指定されたアイテムが運び出されることを通知します。このコマンドは、オブジェクトの[輸送を使用]フィールドがチェックされており、FRLOADタスクを使用する代わりにアイテムを明示的に移動する場合のみ使用します。これによりFixedResourceは、オブジェクトから退出する準備が整っているが、まだオブジェクトに存在するアイテムがいくつ存在するかのデータを管理できます。このコマンドは、moveobjectコマンドでアイテムを移動する直前に実行します。詳細については、FixedResourceのドキュメントを参照してください。このコマンドが0を返した場合、オブジェクトはstopobjectコマンドで停止されており、アイテムを運び込むにはアイテムが再開されるまで待つ必要があります。
transportoutcomplete(current, item, port);

この例は、輸送を使用せずフローアイテムをただちに移動するとき、moveobjectコマンドの前に[輸送の要求元]フィールドから実行します。

キネマティクスとスプライン

キネマティクスとスプラインの数学演算に関連するコマンド。
説明
開発者向けです。キャッシュされているスプラインからスプラインマッピングを取得します。このコマンドは、以後のsplinex()、spliney()、splinez()、splinerx()、splinery()、splinerz()、splinelength()、splineposobject()コマンドへの呼び出しにより返される値を設定します。splineで与えられるスプラインオブジェクトについて、事前に計算された値を使用します。パラメータpercは、対象のスプラインに沿った場所です。事前に計算された値は、fastsplineall()またはfastsplineupdate()コマンドが使用されたとき評価されます。
fastspline(splinestartnode,1)

最も離れたポイント(スプラインに沿って100%)でsplinestartnodeを指すスプラインをアクティブにします。
キネマティクスを定義した時間にスケーリングする
説明
キネマティクスを定義した時間にスケーリングします。このコマンドを使用して、キネマティクスの特性(加速->ピーク速度->減速)を保持しながら、キネマティクスの実行に要する合計時間を、分布など他のメカニズムで定義できます。kinematicnrが0なら、キネマティクスの組の全体が、与えられた時間にスケーリングされます。Kinematicnrが0より大きければ、そのキネマティクスのみがスケーリングされます。戻り値は、キネマティクスの新しい終了時間です。
scalekinematicstotime(kinematics, 0, exponential(0, 10));
説明
開発者向けです。スプラインマッピングを計算し、スプラインオブジェクトsplineを使用して、現在のスプラインパラメータを設定します。このコマンドは、以後のsplinex()、spliney()、splinez()、splinerx()、splinery()、splinerz()、splinelength()、splineposobject()コマンドへの呼び出しにより返される値を設定します。fastspline()とは異なり、splineで与えられたスプラインオブジェクトの事前に計算された値を設定しません。パラメータpercは、対象のスプラインに沿った場所です。このコマンドは、fastsplineall()やfastsplineupdate()コマンドが使用されたときのように、事前に計算された値をロックしません。スプラインは、出力ポートから入力ポートに接続された、オブジェクトの任意のチェーンとして定義できます。出力ポートから入力ポートへのチェーンで最初のオブジェクトを、パラメータ1として渡します。
spline(splinestartobject,0.6)

言語

FlexscriptまたはC++のキーワードと構造体。

メディア

画像、サウンド、3D形状、動画、フライパスなど、プレゼンテーションとメディアに関連付けられているコマンド。
現在再生中のサウンドを変更する
説明
現在再生中のサウンドを変更します。サウンドはオペレーティングシステムによってウィンドウに追加されるため、viewパラメータが重要になります。soundindexを取得するにはgetsoundindex()を使用します。volume、tempo、balanceは0~1の数値です。サウンドを繰り返し再生し続けるには、repeatに1を指定します。繰り返さない場合は0を指定します。オブジェクトに相対的な視点に基づいてvolumeやbalanceを変更すると、オブジェクトから音が発せられているような、おもしろい効果が得られます。
soundchange(sv(),1,1,1,1,.5)
FlexSimにサウンドをロードする
説明
ディスク上のサウンドファイルがFlexSimにロードされ、メディアリストに記録されます。FlexSimのメディアリストは、ロードされたすべてのサウンドのリストを保持します。それぞれのサウンドには、対応する名前とインデックスが存在します。このコマンドは、ロードされたサウンドに対応するインデックスを返します。Microsoft Wave Formatファイル(.wav)をロードして再生できます。サウンドの音量、バランス、周波数は動的に調整可能です。Microsoft DirectSoundインターフェイスを使用して、複数のチャンネルを管理できます。
int applauseindex = soundload("c:/My Music/APPLAUSE.WAV");
ロード済みのサウンドを再生する
説明
ロード済みのサウンドを再生します。サウンドはオペレーティングシステムによってウィンドウに追加されるため、viewパラメータが重要になります。soundindexを取得するにはgetsoundindex()を使用します。volume、tempo、balanceは0~1の数値です。サウンドを繰り返し再生し続けるには、repeatに1を指定します。繰り返さない場合は0を指定します。
soundplay(sv(),3,.75,.25,1,.5)

サウンドインデックス3を選択したビューで、3/4のボリューム、1/4のテンポ、両方のスピーカーに等しいバランスで連続して再生します。

その他

カテゴリに属さないその他のコマンド。
thenodeを指定のコンテナにコピーする
説明
containerで指定されるノードにthenodeをコピーします。このコマンドはcreateinstance()と異なり、thenodeとどのクラスとの間にもリンクの確立を試みません。インスタンスの作成が必要な場合は、この代わりにcreateinstance()を使用してください。

samenameが1なら、コピーはthenodeと同じ名前になります。

samenameが0なら、新たに作成されるノードの名前は、thenodeの名前の末尾にランダムな番号を付加したものになります。

inobjectが1なら、コンテナのオブジェクトデータ部分にコピーが作成されます。コンテナにオブジェクトデータが存在しない場合、このコマンドは何もしません。

cachedが1なら、ノードの事前キャッシュされたバージョンがコピーされます。一般に、こちらの方が高速です。

replaceが1なら、コピーはコンテナの内側に配置される代わりに、コンテナを上書きします。

これらのパラメータを指定しない場合、デフォルトは0です。
createcopy(Model.find("Tools/FlowItemBin/7/1"), current)
説明
開発者向けです。

このコマンドは、classで指定されたクラスのインスタンスを作成し、locationで指定されたオブジェクト内に配置します。インスタンスには、クラスの名前の後に番号が続いた名前が付けられます。インスタンスは、クラスおよびそのスーパークラスのすべての変数および属性を持ちます。動作ノード内のノードは、クラスのすべてのインスタンスに適用されるため、インスタンスにコピーされません。クラスとして渡されるオブジェクトは、ライブラリに存在する必要があります。一般に、locationはモデルです。ライブラリとモデルは、library()およびmodel()コマンドを使用して簡単に参照できます。
createinstance(library().find("?Source"), model());
Sourceクラスのインスタンスをモデル内に作成します。
説明
モデルの単位設定についての情報を返します。
FlexSimの標準的な単位は、時間 - 1秒、長さ - 1m、容量 - 1リットル、重量 - 1kgです。現在のモデルの単位について名前または略語を返すこともできます。
querytypeは次のいずれかの値です。
TIME_MULTIPLEは、現在のモデルの1時間単位が何秒を表すかを返します。
LENGTH_MULTIPLEは、現在のモデルの長さ単位が何メートルを表すかを返します。
FLUID_MULTIPLEは、現在のモデルの液量単位が何リットルを表すかを返します。
FLUID_TYPEは、液量単位が容積を表す場合は0、質量を表す場合は1を返します。
DATE_TIME_NODEは、モデルの単位ツリーにある日付/時刻ノードへの参照を返します。
START_TIMEは、開始時間を1601年1月1日からの秒数で返します。
START_TIME_NODEは、モデルの単位ツリーにある開始時間ノードへの参照を返します。
CURRENT_TIMEは、現在時間を1601年1月1日からの秒数で返します。
CURRENT_TIME_NODEは、モデルの単位ツリーにある現在時間ノードへの参照を返します。
STOP_TIMEは、停止時間を1601年1月1日からの秒数で返します。
STOP_TIME_NODEは、モデルの単位ツリーにある開始時間ノードへの参照を返します。
START_YEARは、開始時間に関連付けられている年を数値として返します。
START_MONTHは、開始時間に関連付けられている月を1(1月)から12(12月)までの値で返します。
START_DAYは、開始時間に関連付けられている日を返します。1が月の最初の日を示します。
START_DAYOFWEEKは、開始時間に関連付けられている曜日を数値で返します。0が日曜日です。
START_HOURは、開始時間に関連付けられている時間を0~23の数値で返します。
START_MINUTEは、開始時間に関連付けられている分を0~59の数値で返します。
START_SECONDは、開始時間に関連付けられている秒を0~59の数値で返します。
START_MILLISECONDは、開始時間に関連付けられているミリ秒を0~999の数値で返します。
CURRENT_YEARは、モデルの開始時間からの年数を返します。
CURRENT_DAYは、モデルの開始時間からの日数を返します。
CURRENT_HOURは、モデルの開始時間からの時間数を返します。
CURRENT_MINUTEは、モデルの開始時間からの分数を返します。
CURRENT_SECONDは、モデルの開始時間からの秒数を返します。
CURRENT_MILLISECONDは、モデルの開始時間からのミリ秒数を返します。
CURRENT_YEAR_OF_TIMEは、現在の時刻に関連付けられている年を数値として返します。
CURRENT_MONTH_OF_YEARは、現在の時刻に関連付けられている月を1(1月)から12(12月)までの値で返します。
CURRENT_DAY_OF_MONTHは、現在の時刻に関連付けられている日を数値で返します。1が月の最初の日を示します。
CURRENT_DAY_OF_WEEKは、現在の時刻に関連付けられている曜日を数値で返します。0が日曜日です。
CURRENT_HOUR_OF_DAYは、現在の時刻に関連付けられている時間を0~23の数値で返します。
CURRENT_MINUTE_OF_HOURは、現在の時刻に関連付けられている分を0~59の数値で返します。
CURRENT_SECOND_OF_MINUTEは、現在の時刻に関連付けられている秒を0~59の数値で返します。
CURRENT_MILLISECOND_OF_SECONDは、現在の時刻に関連付けられているミリ秒を0~999の数値で返します。
TIME_NAMEは、モデルの時間単位の名前を返します。
TIME_PLURAL_NAMEは、モデルの時間単位の複数名を返します。
TIME_ABBREVIATIONは、モデルの時間単位の略語を返します。
LENGTH_NAMEは、モデルの長さ単位の名前を返します。
LENGTH_PLURAL_NAMEは、モデルの長さ単位の複数名を返します。
LENGTH_ABBREVIATIONは、モデルの長さ単位名の略語を返します。
FLUID_NAMEは、モデルの液量単位の名前を返します。
FLUID_PLURAL_NAMEは、モデルの液量単位の複数名を返します。
FLUID_ABBREVIATIONは、モデルの液量単位名の略語を返します。
START_TIME_STRは、開始時間を日付と時刻の形式で文字列として返します。
CURRENT_TIME_STRは、現在の時刻を日付と時刻の形式で文字列として返します。
STOP_TIME_STRは、停止時間を日付と時刻の形式で文字列として返します。
TIME_FORMATは、日付と時刻の文字列のフォーマットに使用される時間形式を返します。
DATE_FORMATは、日付と時刻の文字列のフォーマットに使用される日付形式を返します。
getmodelunit(LENGTH_MULTIPLE)
オブジェクトを指定の場所に移動する
説明
このコマンドは、オブジェクトを指定のポート経由で、指定の場所へ移動します。指定されたポートが実際に存在する必要はありません。この値は受信側の場所が、オブジェクトがどのポートから来たのかを参照可能にするためのものです。オブジェクトが場所に移動するとき、その場所のOnReceiveイベント関数が実行されます。これには、OnEntryトリガー関数も含まれます。イベントがキューに置かれた状態で、フローアイテムに対して明示的にこのコマンドを呼び出すと、問題が発生することがあります。移動対象のオブジェクトについて保留中のイベントが存在しないのが明らかな場合のみ使用してください。
moveobject(current.first,current.centerObjects[1]);

currentにより参照されるオブジェクト内に存在する最初のオブジェクトを、currentの最初のセンターポートに接続されているオブジェクトに移動します。
廃止、treenode.getPath()を使用すること
説明
このコマンドは廃止されました。代わりにtreenodegetPath()を使用してください。

ノードの名前を、モデルに相対的なオブジェクトのパスに設定します。
nametomodelpath(curlistnode, current);
so()として割り当てられた最後のノードへの参照を取得する
説明
このコマンドは、選択されたオブジェクトを割り当てられた最後のノードへの参照を返します。このコマンドは、スクリプトウィンドウでのみ使用されます。ノードをsoとして割り当てるには、ツリー内のノードを右クリックし、[編集]|[このノードを指定(so)]を選択します。ツリー内のどのノードにも、選択されたオブジェクトを割り当てできます。
getnodename(so())

選択されたオブジェクトを現在割り当てられているオブジェクトの名前を返します。このコマンドは一般に、スクリプトウィンドウでのみ使用されます。スクリプトウィンドウでは、最後のセミコロン(;)は必要ありません。
説明
開発者向けです。ノードの名前をFlexSimの有効な名前にするため、無効な文字をアンダースコアに置き換え、変更が行われ場合はメッセージを表示します。isviewtextが1なら、渡されたノードは編集フィールドと見なされ、ノードの名前の代わりにフィールドのviewtextが変更されます。objectパラメータが指定された場合、コンテナに存在する他のすべてのオブジェクト名に対して、オブジェクト名がチェックされます。同じ名前が存在する場合、エラーメッセージが表示されます。このコマンドは、オブジェクトの[プロパティ]ウィンドウで[適用]または[OK]ボタンが押されたとき呼び出されます。
validatename(current, 0);

モデル実行

シミュレーションの実行を停止、開始、管理するためのコマンド。
シミュレーションの実行を開始する
説明
このコマンドは、シミュレーションの実行を開始します。イベントキューにイベントが存在する場合、クロックがそのイベントに到達したときに発生します。キューにイベントがなければ、クロックは停止します。このコマンドはシミュレーションをリセットしません。fastが1なら、開始前にオブジェクトをバインドしません。これにより、シミュレーションの停止と開始を頻繁に行うときに速度が向上します。runfunction()も参照してください。
stop();
if (msg("Model Stopped","Continue?")==1)
{
go();
}

モデルを停止してから、再開するかどうかの入力をユーザーに求めます。ユーザーが[OK]を押すと、モデルは停止した場所から続行されます。
シミュレーションの速度を設定する
説明
このコマンドは、シミュレーションの実行速度を設定します。[実行コントロール]ウィンドウのスライバーバーをクリックしてドラッグするのと同じですが、より正確です。モデルが実行を試みる速度は、実際の秒あたりのシミュレーション時間単位の数で定義されます。コンピュータのcpuがその速度に追い付けない場合、モデルが実際にその速度で実行されるとは限りません。precisionModeは、使用する精度を定義します。0なら、精度モードは呼び出し前と同じに維持されます。RUN_SPEED_LOW_PRECISIONを渡すと、低精度の実行速度に設定されます。RUN_SPEED_HIGH_PRECISIONを渡すと、高精度モードで実行されます。これは、エミュレーションの目的で使用されます。精度モードはリセットごとに低精度にリセットされるため、高精度モードを有効にするには、リセット時またはモデルの開始時に設定を高精度に戻すメカニズムが必要です。
runspeed(10);
go();

シミュレーションの速度を、実際の1秒ごとにシミュレーションの10秒に設定してから、モデルを実行します。

ネットワークノード

ネットワークノードオブジェクトとネットワークパスに関連するコマンド。
netnodeのエッジedgenrのスプラインヘッドへの参照を取得する
説明
ネットワークノードの指定されたエッジのスプラインヘッドへの参照を返します。その後でspline()コマンドを使用し、そのスプラインの場所データにアクセスできます。スプラインヘッドは、渡されるネットワークノードの中にある必要はなく、エッジの反対側のネットワークノードに存在していてもかまわないことに注意してください。isedgeforward()コマンドを使用して、スプラインがネットワークノード内に存在するかどうかを照会できます。存在しない場合、spline()コマンドに渡されるスプラインのパーセンテージ距離は逆方向になります。
treenode splinehead = getnetnodespline(netnode, 2);
ノードネットワークのtaskexecuterの現在の状態に関する情報を取得する
説明
ノードネットワークのtaskexecuterの現在の状態に関する情報を返します。有効なクエリは次のとおりです。

NETWORK_INFO_DEST_NET_NODE_RANK - TEがdestobjへの移動タスクを与えられたとき、移動する目的地のネットワークノードの列/ランクを返します。これは通常はdestobjにアタッチされているネットワークノードですが、複数のネットワークノードがdestobjにアタッチされている場合、このコマンドは最も近いものを返します。
NETWORK_INFO_ORIGIN_NET_NODE_RANK - TEがdestobjへの移動タスクを与えられたとき、開始点となるネットワークノードの列/ランクを返します。これは通常はTEが置かれている現在のネットワークノードですが、そのネットワークに仮想出口が存在する場合、このコマンドは移動距離が最も短くなる仮想出口を返します。
NETWORK_INFO_DISTANCE - ネットワーク経由で目的地オブジェクトへの最も短い移動距離を返します。
NETWORK_INFO_CUR_DIST_ALONG_EDGE - TEが移動タスクをアクティブに実行中のときのみ有効です。TEが現在のネットワークエッジに沿って移動した現在の距離を返します。このクエリでは、destobjにNULLを指定します。
NETWORK_INFO_CUR_TRAVEL_ORIGIN_RANK - TEが移動タスクをアクティブに実行中のときのみ有効です。TEが現在の移動オペレーションを開始した元のノードのランクを返します。このクエリでは、destobjにNULLを指定します。
NETWORK_INFO_CUR_TRAVEL_DEST_RANK - TEが移動タスクをアクティブに実行中のときのみ有効です。TEが現在の移動オペレーションにより移動する目的地のノードのランクを返します。このクエリでは、destobjにNULLを指定します。
int destrank = gettenetworkinfo(current, NULL, NETWORK_INFO_CUR_TRAVEL_DEST_RANK);
説明
ネットワークノードシステムを使用するTaskExecuterは、システム内の特定のネットワークノード(赤い線のグラフィックス)と常に関連付けられていますが、これは移動に伴って変化し続けます。このコマンドは、指定されたtaskexecuterをネットワークノードに再割り当てします。
警告:このコマンドは、TaskExecuterがネットワーク上に存在し、現在移動タスクを実行中でないことが明らかな場合のみ実行してください。
reassignnetnode(current, current.centrObjects[5]);

現在のTaskExecuterを、5番目のセンターポートに接続されているネットワークノードに再割り当てします。
トラフィックコントローラーについての情報を取得する
説明
このコマンドを使用して、トラフィック制御についての各種の情報にアクセスし、トラフィック制御でロジックを実行するよう指示できます。実行されるロジックや返されるデータは、infoパラメータによって次のように指定されます。

trafficcontrolinfo(tc, TCI_NR_ACTIVE_TRAVELERS) - トラフィック制御でアクティブな移動者の総数を返します。

trafficcontrolinfo(tc, TCI_ACTIVE_TRAVELER, num travelnr) - トラフィック制御でアクティブなn番目の移動者への参照を返します。

trafficcontrolinfo(tc, TCI_ACTIVE_TRAVELER_COUPLING, num travelernr) - トラフィック制御の変数ツリーに格納され、アクティブなn番目の移動者と関連付けられている結合ノードへの参照を返します。この結合を使用して、アクティブな移動者に関するカスタムユーザー情報を格納できます。このためには、nodeinsertinto()を使用して結合ノードにサブノードを追加する、データを追加するなどを行います。アクティブな移動者がトラフィック制御エリアを離れると、結合およびそのサブノードは自動的に破棄されることに注意してください。

trafficcontrolinfo(tc, TCI_ACTIVE_TRAVELER_RANK_FROM_TRAVELER, obj traveler) - このコマンドは移動者オブジェクトへの参照を取得し、トラフィック制御のアクティブな移動者のうち、どのインデックスがその移動者と関連付けられているかを返します。0が返された場合、そのオブジェクトはトラフィック制御内のアクティブな移動者ではありません。

trafficcontrolinfo(tc, TCI_NR_MEMBERS) - トラフィック制御エリアのメンバーであるネットワークノードの総数を返します。

trafficcontrolinfo(tc, TCI_MEMBER, num membernr) - トラフィック制御のn番目のネットワークノードメンバーへの参照を返します。

trafficcontrolinfo(tc, TCI_MEMBER_COUPLING, num membernr) - トラフィック制御の変数に格納され、トラフィック制御のn番目のネットワークノードメンバーと関連付けられている結合ノードへの参照を返します。TCI_ACTIVE_TRAVELER_COUPLINGと同様に、このノードを使用して、そのネットワークノードに関連するデータを格納できます。

trafficcontrolinfo(tc, TCI_MEMBER_RANK_FROM_NETWORK_NODE, obj netnode) - ネットワークノードの参照を取得し、トラフィック制御内における、そのネットワークノードのメンバーインデックスを返します。0が返された場合、そのネットワークノードはトラフィック制御のメンバーではありません。

trafficcontrolinfo(tc, TCI_NR_ENTRY_REQUESTS) - トラフィック制御エリアへの進入待ちキューに存在する進入リクエストの数を返します。

trafficcontrolinfo(tc, TCI_ENTRY_REQUEST_TRAVELER, num requestnr) - n番目の進入リクエストに関連付けられており、トラフィック制御エリアへの進入待ちである移動者への参照を返します。

trafficcontrolinfo(tc, TCI_ENTRY_REQUEST_NETWORK_NODE, num requestnr) - 移動者が待機しており、n番目の進入リクエストと関連付けられているネットワークノードへの参照を返します。

trafficcontrolinfo(tc, TCI_ENTRY_REQUEST_NODE, num requestnr) - n番目の進入リクエストに関連付けられているノードへの参照を返します。TCI_ACTIVE_TRAVELER_COUPLINGと同様に、サブノードを追加して、リクエストに関連するデータを格納できます。ただし、このノードのデータはトラフィック制御ロジックで使用されるため、変更してはいけません。
trafficcontrolinfo(tc, TCI_ALLOW_ENTRY, num requestnr) - このコマンドを呼び出すと、トラフィック制御に対して、n番目の進入リクエストと関連付けられている移動者のトラフィック制御エリアへの進入を許可するよう通知されます。

trafficcontrolinfo(tc, TCI_SET_ENTRY_REQUEST_RANK, num requestnr, num settorank) - このコマンドを呼び出すと、トラフィック制御はn番目の進入リクエストを指定されたrankにランク変更します。

また、トラフィック制御トリガーの使用に関連するノートは、トラフィック制御のデフォルトロジックに優先されます。トラフィック制御のOnEntryRequestトリガーは、移動者がトラフィック制御エリアへの進入を最初に要求したとき起動され、3つのいずれかの値を返します。

TC_ON_ENTRY_REQUEST_DEFAULT - トリガーからこの値が返された場合、トラフィック制御は通常のフィルタリングロジックを実行します。

TC_ON_ENTRY_REQUEST_ALLOW - この値が返された場合、トラフィック制御はデフォルトロジックを無視し、移動者がエリアに進入することを無条件で許可します。このオプションが使用されるとき、トラフィック制御は最大容量の変数を無視するため、定義されているロジックによっては、エリア内の移動者の数がトラフィック制御に指定した最大容量変数を超過する可能性があることに注意してください。

TC_ON_ENTRY_REQUEST_QUEUE - この値が返された場合、トラフィック制御はデフォルトロジックを無視し、リクエストをリクエストキューに追加して、その時点では移動者がエリアに進入することを許可しません。
トラフィック制御のOnExitトリガーは、2つの戻り値のどちらかを返します。

0 - この値が返された場合、トラフィック制御はデフォルトロジックを実行し、他の移動者に進入その他を許可します。

1 - この値が返された場合、トラフィック制御は何も行いません。この場合、ユーザーがトリガーを使用して、どの移動者が受け取るのかを、TCI_ALLOW_ENTRYを使用し、トラフィック制御に対して明示的に通知します。

移動者のエリア進入を許可するためカスタムロジックの実装を計画している場合は、トラフィック制御のデフォルトの「相互排除」モードを使用することをお勧めします。
treenode netnode = trafficcontrolinfo(tc, TCI_MEMBER, 2);

オブジェクトデータ

オブジェクトへのアクセスとデータの割り当てを行うコマンド。
説明
このコマンドは、thenodeで指定されたノード内のツリーのノード数と、そのレイヤーから始まるサブツリーに含まれているノードの数の合計を返します。thenodeに他のノードが含まれていない場合、このコマンドは0を返します。objectsonlyが指定されていない、または0なら、FlexSimツリー内の任意のノードをthenodeとして渡すことができます。objectsonlyが0以外なら、オブジェクト以外のノードがthenodeとして渡された場合は0が返されます。
if (contentunder(current) >= getvarnum(current,"maxcontent"))
{
current.input.close;
}

currentの下に含まれているオブジェクトの数が、thisobjectdataにより参照されるオブジェクトのmaxcontentという変数と同じか、より大きい場合、currentの入力を閉じます。
オブジェクトに描画される現在の形状フレームを取得する
説明
オブジェクトについて描画される現在の3D形状フレームを返します。オブジェクトに割り当てられている3D形状がmyshape.3dsという名前で、myshape.3dsと同じディレクトリにmyshapeFRAME1.3dsおよびmyshapeFRAME2.3dsというファイル名の2つの追加3D形状が存在するなら、myshape.3dsがロードされると同時に、2つの追加ファイルが自動的にFlexSimにロードされ、オブジェクトのフレーム0、1、2の設定により、オブジェクトの形状が、3つのファイルにより定義されるそれぞれの形状に変更されます。
if(getframe(current) == 3)) setframe(current, 5);
廃止、Object.stats.output.valueを使用すること
説明
このコマンドは廃止されました。代わりに、Object.stats.output.valueを使用してください。

関連オブジェクトの出力統計を返します。
double outval = getoutput(current.centerObjects[1]);
流体オブジェクトのティッカーを再割り当てする
説明
最初のパラメータとして渡される流体オブジェクトを、現在のティッカーの制御から、2番目のパラメータとして渡されるティッカーの制御に変更します。その後でオブジェクトは、新しいティッカーのティック時間が経過するごとに流体移動が計算されます。互いに接続されている流体オブジェクトは、常に同じティッカーで制御することをお勧めします。resorttickerが1なら、新しいティッカーは制御対象オブジェクトのリストをただちに再ソートします。これにより、一部の流体オブジェクトの評価順序が変更され、モデルの動作に副作用が起きる可能性があります。
reassignticker(current,Model.find("Ticker2",1);
オブジェクトのアニメーション変数の値を設定する
説明
オブジェクトのアニメーション変数の値を設定します。アニメーション変数は、アニメーションのサロゲート、キーフレーム間の時間、与えられたキーフレームの場所/回転/サイズの値など、アニメーションを実行するごとに動的に変更の必要がある属性です。たとえば、アニメーションの構築にサロゲートを使用できます。このためには、アニメーションを作成するときFlowitem Binから、使用するデフォルトのビジュアルを選択します。その後でシミュレーションを実行するとき、これらのサロゲートについて実際のフローアイテムを代入します。この代入を行うには、そのサロゲートと関連付けたアニメーション変数の値を、フローアイテムへの実際の参照に設定します。別の例として、アニメーション変数を使用し、キーフレームのz位置を実行時に動的に定義できます。
setanimationvar(current, "Animation1", "Item1", current.first);
オブジェクトの形状フレームを設定する
説明
オブジェクトのframe属性を、framenumberに設定します。frameは表示する3D画像を定義します。これは、オブジェクトの3D形状をその場で変更するため便利な方法です。オブジェクトにフレームを定義する方法は2つあります。最初に、各種の3Dファイルの名前付けによってこの操作を行えます。たとえば、オブジェクトにデフォルト形状としてOperator.3dsが割り当てられ、Operator.3dsと同じディレクトリにOperatorFRAME1.3ds、OperatorFRAME2.3ds、OperatorFRAME3.3dsという名前の追加ファイルが存在する場合、frame属性を0、1、2、3に設定して、表示される形状をそれぞれの3dsファイルに変更できます。次に、オブジェクトのshape属性にサブノードを追加し、そのフレームに関連付けられている3Dファイルへのパスを各サブノードに持たせることができます。その場合、フレーム1はshape属性の最初のサブノードに、以後のフレームも同様に割り当てられます。これは、FlexSimの環境内で形状フレームを定義するため使用される手法です。toframeが文字列の場合、後者の方法をお勧めします。この場合、対応する名前を持つshape属性サブノードが探されます。このコマンドの用途の1つは、「壊れた」形状を表示するためOnDownトリガーの3D形状を変更することです。
if(getframe(current) == 3)) setframe(current, 5);
ビジュアルツールオブジェクトのbillboard属性を設定する
説明
このコマンドは、ビジュアルツールオブジェクトのbillboard属性を設定します。次のモードが利用可能です。
0:ビルボードなし、ビジュアルツールは回転の設定に基づいて表示されます。
1:垂直ビルボード(平面のみ)、モデル内で平面が垂直に立ち、同じビュー平面に沿って、常にカメラの方角を向きます。
2:全体ビルボード(平面のみ)、表示角度にかかわらず平面の表面が常に存在するようになります。
3:スクリーンロック済みビルボード、ビジュアルツールをビューの前面にロックします。
setobjectbillboard(current, 1);
オブジェクトの3D形状のインデックス番号を設定する
説明
オブジェクトの3D形状のインデックス番号を設定します。新しいインデックスを有効にするには、オブジェクトのshapeノードを削除するか、名前を変更する必要があるため、このコマンドはshapeノードの名前を「_shape」に変更します。インデックス番号は、現在インポートされている3D形状の有効なインデックス番号の必要があります。現在インポートされている3D形状を表示、および追加形状をインポートするには、[ビュー]->[メディアファイル]を使用します。オブジェクトの3D形状をその場で変更する別の方法として、setframe()を参照してください。
setobjectshapeindex(item,getshapeindex("fs3d\\Processor.3ds"));
オブジェクトの3D形状のテクスチャとして割り当てられている画像のインデックス番号を設定する
説明
オブジェクトの3D形状のテクスチャとして割り当てられている、bmpまたはjpeg画像のインデックス番号を設定します。インデックス番号は、現在インポートされているbmpまたはjpeg画像の有効なインデックス番号の必要があります。現在インポートされている画像を表示する、または別のbmpやjpeg画像をインポートするには、ツールボックスの[メディアをインポート]オプションを使用してください。このコマンドはオブジェクトのimageobject属性を変更しないため、モデルがリセットされると元のテクスチャに戻ることに注意してください。
setobjecttextureindex(item,gettextureindex("bitmaps\\flowitempicture.bmp"));
オブジェクトの「Show Name」フラグを取得または設定する
説明
objectの「Show Name」フラグを取得または設定します。値が1なら、オブジェクトの名前と統計情報を画面に表示しません。値が0なら、ビューウィンドウのviewhidealllabels属性に応じて、オブジェクトの名前と、多くの場合は統計情報を表示します。値が-1なら、スイッチの現在の値を取得します。ビューウィンドウのviewhidealllabels属性は次の値のいずれかで、ウィンドウ内のすべてのオブジェクトについてラベル表示に適用されます。0=名前と統計情報を表示、1=名前と統計情報を非表示、2=名前のみを表示。
switch_hidelabel(so(),1)

オブジェクト関数

オブジェクトやノードの関数呼び出しに関係するコマンドで、ノード関数、イベント、メッセージ、およびそれらに関連するアクセス変数が含まれます。
Flexscriptでデバッグを開始するブレイクポイントとして機能する
説明
開発者向けです。このコマンドは、Flexscriptのステップデバッガーをコントロールするため使用されます。このコマンドをパラメータなしで呼び出すと、コードのその行にブレイクポイントが存在するかのように動作します。

operationは次のいずれかです。
DEBUG_STOP 0
DEBUG_STEP 1
DEBUG_CONTINUE 2
DEBUG_IS_STOPPED 3
DEBUG_GET_LINE_NR 4
DEBUG_DUMP_VARIABLES 5
DEBUG_STOP_SIMULATION 6
DEBUG_REFRESH_BREAK_POINTS 7
DEBUG_ADD_BREAK_POINT 8
DEBUG_DELETE_BREAK_POINT 9
DEBUG_GET_WATCH_VARIABLE 10
DEBUG_ENABLE_CODE_PROFILING 11
DEBUG_PRINT_CODE_PROFILING_INFO 12
DEBUG_RESET_CODE_PROFILING 13
debug();
説明
このコマンドはリスニングメカニズムを作成し、定義されたイベントがオブジェクトで呼び出されると、relayNodeも実行されるようにします。flagsは次に示す値のいずれかのビット単位マスクです。
EVENT_PRE_LISTEN:リスニング関数は、theNodeより前に呼び出されます。
EVENT_LISTEN:(デフォルト)リスニング関数は、theNodeの後で呼び出されます。
EVENT_PERSIST:リスナーは、モデルがリセットされても継続します。
EVENT_PASS_THROUGH_PARAMS:theNodeが呼び出されるときイベントに渡されるパラメータは、リスニングノードにも「引き継ぎ」で渡されます。この場合、par1、par2などのパラメータは使用されません。
EVENT_LISTEN_ONCE:最初のイベントが起動した後で、リスニングメカニズムは自動的に削除されます。
リスニングノードが呼び出され、EVENT_STOP_LISTENINGを返した場合、リスナーメカニズムは削除され、それ以後リスニングノードは呼び出されません。戻り値は、リスニングに関連付けられているノードへの参照です。このノードが後で削除されると、リスニングメカニズムは停止します。

オブジェクトでリッスンできるイベントのリストを取得するには、function_s(object, "enumerateEvents", destNode)を呼び出します。オブジェクトがdestNodeにダンプするテーブルには、そのオブジェクトでリッスンできるすべてのイベントに関する情報が含まれています。

一部のイベントには「要件」が存在します。そのイベントを正しくバインドするには、追加パラメータを渡す必要があります。列挙テーブルには、要件の数とそれらの名前についての情報が含まれています。要件が必要な場合、par1、par2などに置き換わり、パラメータの順序がずれることになります。たとえば、イベントに2つの要件が存在する場合、それらの要件がeventlisten()呼び出しのpar1とpar2を占め、par3がrelayNodeのコードでparam(1)になります。
eventlisten(current, "OnEntry", current.entrylistener);
ノードをFlexscriptとして実行する
説明
ノードをFlexscriptとして動的に実行します。ノードがまだFlexscriptでない場合、nobuildパラメータを0にします。文字列データをFlexscriptとして解析して実行するもので、たとえばグローバルテーブルやラベルから使用します。cおよびiパラメータは、関数内でcおよびiとしてアクセスできます。eventdataは、文字列であればeventdataとして、数値であればeventcode(整数)としてアクセスできます。eventdataがノードであれば、関数内でtonode(eventdata)を使用してアクセスできます。
executefsnode(current.labels["myFunc"],NULL,NULL,NULL,0)

currentのmyFuncラベルにあるスクリプトを実行し、関数のc、i、eventdataにNULLを渡します。
説明
開発者向けです。このコマンドは、thenodeに定義されている関数を実行します。thenodeはC++ノードまたはFlexscriptノードとして切り替える必要があります。ノードがC++の場合、このコマンドを呼び出す前にモデルをコンパイルする必要があります。関数に渡す必要のあるパラメータは、par1、par2などで渡します。最大10までのパラメータを渡すことができます。このコマンドを使用して渡される値はすべて数値ですが、呼び出された関数内でparam(x)コマンドを使用してアクセスおよび再キャストできます。xはパラメータの数です。
nodefunction(node_v_entrytrigger,tonum(item),portnum);
説明
開発者向けです。このコマンドはリスニングメカニズムを作成し、theNodeでnodefunction()が呼び出されると、relayNodeも実行されるようにします。flagsは次に示す値のいずれかのビット単位マスクです。
NFL_PRE_LISTEN:リスニング関数は、theNodeより前に呼び出されます。
NFL_LISTEN:(デフォルト)リスニング関数は、theNodeの後で呼び出されます。
NFL_PERSIST:リスナーは、モデルがリセットされても継続します。
NFL_PASS_THROUGH_PARAMS:theNodeが呼び出されるとき、この関数に渡されるパラメータは、リスニングノードにも「引き継ぎ」で渡されます。この場合、par1、par2などのパラメータは使用されません。
リスニングノードが呼び出され、NFL_STOP_LISTENINGを返した場合、リスナーメカニズムは削除され、それ以後リスニングノードは呼び出されません。戻り値は、リスニングに関連付けられているノードへの参照です。このノードが後で削除されると、リスニングメカニズムは停止します。
nodefunctionlisten(getvarnode(current, "entrytrigger"), current.entrylistener);
関数に渡されるパラメータを取得する
説明
このコマンドは、nodefunction()コマンドにより呼び出される関数の内部で使用されます。インデックスによりノード(またはツリーノード)、string、int、double、stringarray、intarray、doublearray、treenodearrayのいずれかとして指定され、nodefunctionに渡されたパラメータを返します。nodefunction()に渡される最初の追加パラメータはパラメータ1、2番目はパラメータ2の順に番号が付けられます。
トリガー/フィールドは
nodefunction(thefuncnode, item)
で呼び出された場合、トリガー/フィールド内で、最初の追加パラメータとして渡されたアイテムへのアクセスは
treenode item = param(1);
で取得されます。他の例として、次のものがあります。
double quantity = param(2);
var value = param(1); // この例ではどのようなタイプの値も使用できます
遅延時間の経過後にオブジェクトに遅延メッセージを送信し、OnMessageトリガーを起動する
説明
delaytimeの経過後に、fromobjectからtoobjectにメッセージ送信を引き起こします。toobjectがメッセージを受信すると、OnMessageトリガーが起動します。
OnMessageトリガーのコードでは、fromobjectをmsgsendingobjectとして参照でき、parで渡された3つの数値をmsgparam(1)、msgparam(2)、msgparam(3)として参照できます。
このコマンドは、モデルの実行時に独自のタイムイベントを作成するため非常に便利です。
senddelayedmessage(current.outObjects[1], 25, current, 0, 0, 0);

このコマンドが実行されてから25時間単位後に、currentオブジェクトから、currentオブジェクトの出力ポート1に接続されているオブジェクトへメッセージを送信します。3つのユーザー定義パラメータにはすべて0が渡されます。
オブジェクトにメッセージを送信し、OnMessageトリガーを起動する
説明
直接関数呼び出しと同様に、fromobjectからtoobjectにメッセージをただちに送信します。toobjectがメッセージを受信すると、OnMessageトリガーが起動します。
OnMessageトリガーのコードでは、fromobjectをmsgsendingobjectとして参照でき、parで渡された3つの値をmsgparam(1)、msgparam(2)、msgparam(3)として参照できます。これらのメッセージパラメータはバリアントで、数値、文字列、ツリーノードの参照、配列を使用できます。
sendmessage(current.centerObjects[1], current, item, 10);

currentの最初のセンターポートに接続されているオブジェクトにメッセージを送信します。アイテムへの参照をpar1、数値10をpar2として渡します。

オブジェクトポート

オブジェクトのポート接続に関連するコマンド。
オブジェクトのすべての入力ポートを開く
説明
objectのすべての入力ポートを開きます。結果として入力ポートがパススルー状態(接続されている両方のポートが開いている)になった場合、双方のオブジェクトに対してポートが「準備完了」になったことを示す通知メッセージが送信されます。入力ポートを持つオブジェクトはOnInOpenメッセージを、出力ポートを持つオブジェクトはOnOutOpenメッセージを受信します。ポートの走査のとき、各ポートでは1回だけパススルー評価を行えます。モデラーは、流体オブジェクトを操作するときのみこのコマンドを使用します。離散オブジェクトの内部動作はポートの開閉をコントロールするため、このコマンドはオーバーライドされることがあります。離散オブジェクトの場合、モデラーはopeninput()およびresumeinput()で参照されます。
openallip(current)
オブジェクトのすべての出力ポートを開く
説明
objectのすべての出力ポートを開きます。結果として出力ポートがパススルー状態(接続されている両方のポートが開いている)になった場合、双方のオブジェクトに対してポートが「準備完了」になったことを示す通知メッセージが送信されます。入力ポートを持つオブジェクトはOnInOpenメッセージを、出力ポートを持つオブジェクトはOnOutOpenメッセージを受信します。ポートの走査のとき、各ポートでは1回だけパススルー評価を行えます。モデラーは、流体オブジェクトを操作するときのみこのコマンドを使用します。離散オブジェクトの内部動作はポートの開閉をコントロールするため、このコマンドはオーバーライドされることがあります。離散オブジェクトの場合、モデラーはopenoutput()およびresumeoutput()で参照されます。
openallop(current)

出力

デバッグやレポートの目的でモデラーにフィードバックを送るためのコマンド。
FlexSimファイルインターフェイスを開く
説明
FlexSimファイルインターフェイスを開きます。成功した場合は1を返します。エラーが発生した場合は0を返します。

パラメータ2は書き込みなら「w」、読み取りなら「r」、追記なら「a」です。デフォルトは「w」です。開いたテキストファイルに書き込むには、fpt()、fpr()、fpf()などのコマンドを使用します。ファイルから行を読み取るには、filereadline()を使用します。このコマンドを使用して同時に開けるファイルは1つだけです。複数のファイルを同時に開くには、C標準のfopen/fcloseコマンド、C++標準のfstreamクラス、またはdllを使用してください。

書き込みモードでは、ファイルのコンテンツがクリアされ、ファイルポインターがファイルの先頭に設定されます。ファイルに書き込まれたデータを保存するには、ファイルを閉じる必要があります。
fileopen("C:/myfile.txt", "w");


処理フロー

説明
廃止されました。Token.createを使用してください。
treenode token = createtoken(node("Operator1", model()), "Start", 0);
setlabel(token, "type", 1);
releasetoken(token);
説明
処理フローのサブフローに、そのサブフローを開始するトークンを作成します。作成されたトークンがFinish Activityに到達すると、[戻り値]フィールドから評価された値を返します。
instanceObject:instanceObjectが指定された場合、サブフローのアクティビティで、instanceObjectにアクセスするためcurrentを使用できます。この機能は、複数のオブジェクトが同じサブフローを実行しながら、オブジェクト固有のデータを必要とする場合に便利です。
Start Activityが指定されていない場合、サブフローのアクティビティが検索され、最初のStart Activityが使用されます。
サブフローに複数のFinish Activityが含まれている場合、トークンが到達したFinish Activityから戻り値が評価されます。ただし、内部的なサブフローにより他のトークンがFinish Activityに到達する場合、正しい戻り値が評価されるようにFinish Activity名を指定することが必要な場合があります。

注:サブフローで使用されるアクティビティが遅延や待機を引き起こさないことが重要です。トークンが遅延や待機で中断された場合、executesubflow関数の終了時にトークンがFinish Activityに到達しません。
return executesubflow("SubFlow1", processor);
説明
廃止されました。Token.children[]、またはToken.children.lengthを使用してください。
treenode childToken = getchildtoken(token, 3);
int numChildren = getchildtoken(token);
説明
廃止されました。Token.childRankを使用してください。
int childRank = getchildtokenrank(token);
説明
廃止されました。Token.parentを使用してください。
treenode parentToken = getparenttoken(token);
説明
廃止されました。Token.byIDを使用してください。
treenode token = gettokenbyid(54);
treenode token = gettokenbyid(23, "ProcessFlow2");
説明
廃止されました。Token.idを使用してください。
int tokenID = gettokenid(token);
説明
アクティビティまたは共有アセットの「内部」にあるすべてのトークンを取得します。アクティビティの場合、そのアクティビティ内にあるトークンの現在のセットです。リソースの場合、そのリソースを取得したトークンのセットです。ゾーンの場合、そのゾーンに進入したトークンのセットです。リストの場合、そのリストにプッシュされたトークンのセットです。結果を含む配列を返します。

instanceObject - 目的の処理フローインスタンスと関連付けられているオブジェクト。一般的な処理フローの場合、処理フロー自身と同じです。タスク実行者および固定リソースの処理フローの場合、3Dオブジェクト、すなわち処理フローインスタンスと関連付けられているタスク実行者または固定リソースです。処理フローアクティビティのロジックから実行された場合、通常は単に「current」です。ここにNULLを渡すと、すべてのインスタンスのトークンが得られます。

activityOrAsset - 対象アクティビティまたは共有アセット。NULLの場合、このコマンドは処理フローインスタンス全体に含まれる、すべてのアクティブなトークンを返します。

flags - オプションフラグを定義します。共有アセットについてGET_TOKENS_REQUESTSが渡された場合、共有アセットを要求しているトークンのセットが返されます(ゾーン進入の待機中のトークン、リストでバックオーダーのトークンなど)。
Array tokensInActivity = gettokens(current, getactivity(processFlow, "Wait For Exit")); Array resourceOwners = gettokens(current, getactivity(processFlow, "Resource1"));
説明
廃止されました。Token.release()を使用してください。
releasetoken(token);
releasetoken(token, 3);
releasetoken(token, "To Start");
releasetoken(token, getactivity(processFlow, "Start"));
説明
廃止されました。Token.setShapeを使用してください。
settokenshape(token, 16);

ラックオブジェクト

ラックオブジェクトへのアクセスとデータの割り当てを行うコマンド。
rackの与えられたbayとlevelにボックスを描画する
説明
rackの与えられたbayとlevelにボックスを描画します。x、y、zは0~1の数値で、ボックスの描画をセル内のどこから開始するかを割合で表します。sx、sy、szは0~1の数値で、ボックスのサイズを割合で表します。red、green、blueはボックスの色を指定します。

ボックスが正しく描画されることを保証するため、drawトリガーでこのコマンドを呼び出す前にfglDisable(GL_TEXTURE_2D)でOpenGLテクスチャを無効にします。
fglDisable(GL_TEXTURE_2D);
for (int bay = 1; bay <= 5; bay++) {
    for (int level = 1; level <= 3; level++) {
        rackdrawfilledcell(current, bay, level, 0,0,0, 0.5,1,1, 255,0,0);
    }
}
fglEnable(GL_TEXTURE_2D);

この例は、bay 1~5、level 1~3に、各セルの容積の半分を占める(sx = 0.5, sy =1, sz = 1)赤色のボックスを描画します。
rackの仮想コンテンツを描画する
説明
rackの「仮想」コンテンツを描画します。このコマンドは通常、rackrecycleitemコマンドを使用してフローアイテムをリサイクルするときのみ使用します。このコマンドが実行されるとき、rackはコンテンツテーブルを走査し、rackのすべてのフローアイテムについて、適切なベイおよびレベルにボックスを描画します。virtualonlyが1なら、スロットが埋まっているが、フローアイテムが存在しない(フローアイテムがリサイクルされた)スポットにのみボックスを描画します。bayfillpercとlevelfillpercは0~1の値で、描画されるボックスでセルのどれだけの割合を塗りつぶすかを指定します。Item depthは、ラックの内の各アイテムが占めるサイズです。床置きラックの場合、これはアイテムのzサイズです。通常のラックの場合はアイテムのyサイズです。
rackdrawvirtualcontent(current, 0.9,0.9,3, 256,0, 0, 1);
説明
3次元のテーブルに格納されている値を返します。このテーブルの行はラックのベイを表します。
列はラックのレベルを表し、
テーブルセルのサブノードは、ラックの各セルに別々に格納されている値を表します。
これにより、ラックの各セルにカスタム情報を格納できます。
bay、level、varnumは、テーブルのベイ(行)、レベル(列)、変数番号(サブノードのランク)を参照します。
storagenodeは、このテーブルを格納したノードを参照します。これは通常、ラック上のラベルです。
int typeofcellitems = rackgetcellvar(current, 1,5,3, current.labels["storageData"]);
フローアイテムをFlowItem Binにリサイクルする
説明
フローアイテムを指定されたFlowitem Binにリサイクルします。
このコマンドは高度なユーザー向けで、デバッグを行う用意がなければ使用すべきではありません。
binrankは、Flowitem Bin内でのフローアイテムのランクです(テクスチャありの色付きボックス = 5など)。
このコマンドが呼び出されるとき、フローアイテムはリサイクルされますが、フローアイテムが配置されていたスポットは使用中として割り当てられ、
以後のフローアイテムは、そのスポットが既に使用されている場合と同様にラックに置かれます。
これにより、モデルの速度が大幅に向上する可能性があります。
rackgetbaycontent()やrackgetcellcontent()などへの以後のコマンドは、アイテムが依然としてそこに存在するものとして値を返します。
ただし、rackgetitembybaylevel()は、リサイクルされ、復元されていないアイテムについてNULLを返します。
このコマンドを呼び出す前に、アイテムがリリース済みまたは輸送の待機中でないことを確認してください。
このコマンドが使用された場合、ラックの最大コンテンツは正しく動作しないことに注意してください。また、アイテムは後でrackrestoreitem()コマンドを使用して
復元する必要があります。
rackrecycleitem(current, item, 5);

フローアイテムを、Flowitem Binのランク5のフローアイテム(通常はテクスチャありの色付きボックス)にリサイクルします。
説明
3次元のテーブルに値を設定します。このテーブルの行はラックのベイを表します。
列はラックのレベルを表し、
テーブルセルのサブノードは、ラックの各セルに別々に格納されている値を表します。
これにより、ラックの各セルにカスタム情報を格納できます。
bay、level、varnumは、テーブルのベイ(行)、レベル(列)、変数番号(サブノードのランク)を参照します。
setvalueは設定する値です。
storagenodeは、このテーブルが格納されているノードを参照します。これは通常、ラック上のラベルです。
racksetcellvar(current, 5, 3, 2, 4.6, current.labels["storageData"]);

ベイ5、レベル3の2番目の値を4.6に設定します。

統計

統計データの作成、操作、アクセスを行うコマンドで、確率分布も含まれます。
バンドルにフィールドを追加する
説明
バンドルにフィールドを、与えられたフィールド名で追加します。追加されたフィールドのフィールドランク(0から開始)を返します。エントリを追加する前に、バンドルのすべてのフィールドを追加する必要があります。typeはビット単位のフラグで、次のいずれかの値です。

BUNDLE_FIELD_TYPE_DOUBLE:64ビットのdoubleを格納します。
BUNDLE_FIELD_TYPE_FLOAT:32ビットのfloatを格納します。
BUNDLE_FIELD_TYPE_INT:32ビットのintegerを格納します。
BUNDLE_FIELD_TYPE_STR:文字列を格納します。使用する場合、文字列の最大サイズも定義します。これは各文字列エントリに割り当てられる容量です。maxstrsizeが指定されない場合、デフォルトは32バイトです。このフィールドは、最低でも指定された長さの文字列を格納でき、それより長い文字列は切り捨てられます。
BUNDLE_FIELD_TYPE_VARCHAR:文字列を格納します。このフィールドタイプでは、文字列の長さの制限はありません。文字列の長さが可変の場合、または文字列が頻繁に繰り返される場合、このフィールドタイプをお勧めします。
BUNDLE_FIELD_TYPE_NODEREF:ノードへの参照を格納します。
BUNDLE_FIELD_TYPE_BINARY:1または0を単一のビットとして格納します。ビットは32のブロック単位で割り当てられるため、1つのバイナリフィールドには32ビットが必要です。ただし、32のバイナリフィールドは1つのブロックを共有できます。

オプションとして、上記の値のどれでも(BUNDLE_FIELD_TYPE_BINARYを除く)BUNDLE_FIELD_INDEX_MAPとビット単位で組み合わせることができます。このタイプのフィールドに含まれるすべての値は、getbundleindexentries()を使用して迅速にルックアップ(O(log n))できるようインデックス付けされます。

オプションとして、BUNDLE_FIELD_TYPE_INT、BUNDLE_FIELD_TYPE_STR、BUNDLE_FIELD_TYPE_VARCHAR、またはBUNDLE_FIELD_TYPE_NODEREFをBUNDLE_FIELD_INDEX_HASHと組み合わせることができます。このタイプのフィールドに含まれるすべての値は、getbundleindexentries()を使用して迅速にルックアップ(O(1))できるようインデックス付けされます。このタイプのフィールドは、モデルの実行中にバンドルのサイズが変更することがほとんど、またはまったくない場合のみ使用することをお勧めします。

オプションとして、上記のどの値でも(BUNDLE_FIELD_TYPE_BINARYを除く)BUNDLE_FIELD_NULLABLEと組み合わせることができ、それによってフィールドにnull値を格納可能になります。フィールドにnull値が許可される場合、setbundlevalue()にnullバリアントを渡すことができ、getbundlevalue()からもnullバリアントが得られることがあります。
addbundlefield(x, "Object Name", BUNDLE_FIELD_TYPE_STR | BUNDLE_FIELD_NULLABLE, 64);
与えられた確率に基づいて、2つの可能な値のいずれかを返す
説明
bernoulli( p, a, b, stream )は離散確率分布です。

入力:
pは、aが返される確率です。ここでp∈ ( 0, 100 )
100 −pは、bが返される確率です。
a∈ ( - , )
b∈ ( - , )
streamは、FlexSimの乱数ストリーム{0,1,2,...}の1つへの参照です。

出力:
範囲 = { a , b }
平均値 = ( ap + b(100−p) ) 100
分散 = (p100)(1 −p100) a=1かつb=0の場合

可能な用途:
合格/失格テストなど、2つの結果が存在し得るランダムな状況をモデル化するため使用されます。bernoulliコマンドをネストして、2つより多くの値を生成できますが、その場合は経験的分布を使用する方が適切です。

コメント:
bernoulli(p, 1, 0)とbinomial(1, p)の分布は同一です。
treenode curoperator = current.centerObjects[bernoulli(90,1,2,1)];

この例のbernoulliコマンドは、乱数ストリーム1を使用して90%の確率で1を、それ以外は2を返します。centerObject参照の中で使用され、curoperatorは90%の確率でcurrentオブジェクトのセンターポート1に接続されたオブジェクトを、残りの確率でセンターポート2に接続されたオブジェクトを参照します。
ベータ分布からランダムなサンプルを返す
説明
beta( a, b, α1, α2, stream )は有界の連続した確率分布です。

入力:
aは下限パラメータ ∈ ( - , )
bは上限パラメータ( b > a )
α1は1番目の形状パラメータ( 0, )
α2は2番目の形状パラメータ( 0, )
streamはFlexSimの乱数ストリーム{0,1,2,...}の1つへの参照

出力:
範囲 = ( a , b )
平均値 = a + α1(ba) (α1 + α2)
分散 = α1α2(ba (α1 + α2)²(α1 + α2 + 1)

確率密度関数:



可能な用途:
ベータ分布は多くの場合、実際のデータが存在しない場合にタスクの期間をモデル化するため使用されます。この分布は必ず最小値と最大値の間に収まり、使用される2つの形状パラメータによって多くの異なる確率密度形状が得られるためです。ほとんどの現実世界でのタスク期間について、密度の形状は左側よりも右側のテールが長くなるため、平均値μと最頻値(ほとんどの場合は値)mが判明していれば、次の式を使用して適切な形状パラメータを逆計算できます。

α1 ≅ ( μa)(2mab) (mμ)(ba)

α2α1(bμ) (μa)

コメント:
beta( a, b, 1, 1)とuniform( a, b)の分布は同一です。
密度は(a + b) 2に対して対称です(α1 = α2のとき)。
α2 > α1 > 1のときは、密度に突出部があり、右側のテールが長くなります。
α1 = α2 > 1のとき、平均値と最頻値は等しくなります。
double ptime = beta(8, 12, 1.3, 3, 5);

変数ptime variableはベータ分布と等しい値に設定され、最小値は8、最大値は12で、α1α2にはそれぞれ形状係数1.3と3が使用されます。分布から変量を生成するため、FlexSimの5番目の乱数ストリームが使用されます。分布密度には突出部の曲線があり、右側のテールが長くなります。
二項分布からランダムなサンプルを返す
説明
binomial( t, p, stream )は離散確率分布で、t回の独立したベルヌーイ試行を、試行ごとの成功確率pで行った場合の成功回数を表すために使用されます。

入力:
tは独立した試行の回数{ 1, 2, ..., }
pは各試行の成功確率(0, 100)
streamは、FlexSimの乱数ストリームの1つへの参照{0,1,2,...}

出力:
範囲 = { 0, 1, 2, ..., t }
平均値 = tp 100
分散 = t ( p 100 )( 1 −p 100 )

可能な用途:
二項分布は、サイズtのバッチに含まれる不良部品の数、ランダムなサイズのグループに含まれる実際の人数、在庫から発注されたアイテムの数などをモデル化するために便利です。

コメント:
binomial(1, p )とbernoulli( p, 1, 0 )分布は同一です。
binomial( t, p )分布は、p = 50%のとき対称形になります。
int fparts = binomial(item.batchsize, 10, 5);

「batchsize」という名前のフローアイテムのラベルに定義されているバッチ数量内の部品の不良率が10%として、不良部品の数が変数fpartsに書き込まれます。分布から変量を生成するため、FlexSimの5番目の乱数ストリームが使用されます。
連続的な経験的分布からランダムなサンプルを返す
説明
連続的な経験的分布で、割合と値は指定の表で定義されます。

経験的分布は、ユーザーにより作成されたテーブルを参照し、このテーブルには値のリストと、それぞれの値に関連付けられた確率の割合が含まれています。確率の割合はテーブルの行1から開始される列1に、関連付けられている値は列2に入力する必要があります。テーブルには必要なだけ多くの値を定義でき、行数に制限はありません。割合には0~100の数値を入力し、合計は100%になるようにします。100%にならない場合、累積の割合が100を超えた後に定義される数値は決して返されません。

FlexSimでは、テーブルで定義された経験的分布からランダムな変量を生成するため、dempirical()、empirical()、cempirical()の3つのコマンドを使用できます。最初のコマンドは離散分布で、テーブルにリストされている明示的な値を返します。次の2つは有界の連続分布で、ある範囲内の連続した数値を返します。連続分布の場合、表の隣接する2つの値の間で値の補間が行われるため、列2の値は昇順にする必要があります。

テーブルに4つの行と2つの列があると想定します。列1は割合を表し、10、20、30、40で、合計は100%です。列2は値0.1、0.2、0.3、0.4です。離散的な経験的分布のコマンドと、2つの連続的な経験的分布のコマンドの違いについて考えてみます。離散的なコマンドでは、テーブルの列2に入力された値と正確に一致するランダムな変量のみが生成されます。連続的なコマンドでは、テーブルの列2で2つの隣接する数値の間で均等に分布する実数が、ランダムな変量として生成されます。2つの連続的なコマンドの間の相違は、均等な範囲の境界がどのように定義されるかです。

コマンドdempirical("mytable")は、サンプルのセットが非常に大きいと仮定して、サンプルの10%について数値0.1を、20%について0.2を、30%について0.3を、40%について0.4を返します。

コマンドempirical("mytable")は、サンプルの10%について0.1と0.2の間、20%について0.2と0.3の間、30%について0.3と0.4の間、40%について0.4と0.4の間で、それぞれ均等に分布する数値を返します。最後の40%を0.4ではなく、0.4と0.5の間の値にするには、5番目の行を追加し、列1に値0、列2に0.5(または希望する上限)を指定します。

コマンドcempirical("mytable")は、サンプルの10%について0.0と0.1の間、20%について0.1と0.2の間、30%について0.2と0.3の間、40%について0.3と0.4の間で、それぞれ均等に分布する数値を返します。最初の10%について0.0以外の下限を定義するには、行の先頭に行(行1)を追加し、列1に値0、列2に0.05(または希望する下限)を指定します。

3つの分布関数のそれぞれについて、可能な戻り値(「x」)の要約を表形式で次に示します。



「ダミーの」最初の行を追加し、cempirical()が0.0の代わりに0.05から始まるようにする例を次に示します(行1の割合は0%であることに注意してください)。



「ダミーの」最後の行を追加し、empirical()が最後の値を含むそれぞれの値の間の範囲を使用するようにする例を次に示します(最後の行の割合はどのような数値でもかまいません。前の行までで既に割合の合計が100%に達しているので、この割合は無視されます)。



ExpertFitを使用してデータに一致する経験的分布を判定するときは、データが整数として定義されているならExpertFitはdempirical()で使用するようデータを適合させ、データが実数として定義されているならempirical()で使用するようデータを適合させることに注意してください。データセットが実数で構成される場合、ExpertFitは最後の値について、最後の1つ前の値と同じ割合を表示しますが、最後の1つ前のエントリで確率の合計が100%に達していることが分かります。
cempirical("mytable", 5);

「mytable」という名前のグローバルテーブルで定義されている連続的な経験的分布から、乱数ストリーム5を使用して、ランダムな変量を返します。

cempirical(current.labels["ptime"] 5);

currentオブジェクトの「ptime」という名前のラベルで定義されるノードテーブルで定義されている、連続的な経験的分布から、乱数ストリーム5を使用してランダムな変量を返します。
説明
開発者向けです。このコマンドを使用して、ヒストグラム、x/yチャート、または連続したデータの作成、リセット、データの追加を行えます。最初の3つのパラメータは、ツリー内の関連するノードや、行うべき動作を定義します。最後の3つのパラメータx、y、zは、動作に使用される適切なデータを定義します。最初のパラメータは、グラフやヒストグラムのデータを保持するツリーのメインノードです。2番目のパラメータは1、2、3のいずれかで、ノードの保持するデータタイプを定義します。1はgraphxデータを意味します。このデータタイプでは、ノードにサブノードのリストが含まれ、各サブノードには連続したデータの固有のポイントである数値が含まれます。2はgraphxyを意味します。このデータタイプでも、ノードには同様にサブノードのリストが含まれますが、サブノードはx/yペアとして組み合わせられます。ランク1および2のノードには1つのデータポイントのxとyの値が保持され、3と4には次のデータポイントのxとyの値が保持され、以下同様にデータが保持されます。typeパラメータが3なら、ヒストグラムデータを意味します。ここでは、ノードにはヒストグラムに関連付けられているデータが保持されます。actionパラメータは1、2、3のいずれかで、行うべきアクションを定義します。1は作成操作です。この操作は、ノードのサブツリー構造のセッアップが必要な、ヒストグラムタイプのデータでのみ必要となります。ヒストグラムプロットを作成するには、ヒストグラムの最小値をx、最大値をy、分割数(バケット数)をzのパラメータとして渡します。actionパラメータの値が2なら、データのリセットを行います。これにより、graphxまたはgraphxyデータではノードのコンテンツがクリアされ、ヒストグラムデータではヒストグラムの値がリセットされます。actionパラメータの値が3なら、データポイントを追加します。graphxおよびヒストグラムデータでは、データポイントをxパラメータとして渡します。graphxyデータでは、xおよびyパラメータとして渡します。要約すると次のようになります。タイプ:1-graphx/2-graphxy/3-ヒストグラム
アクション:1-作成(ヒストグラムデータでのみ必要)/2-リセット/3-ポイントの追加
データ:xとyはデータポイント(ヒストグラム作成の場合、x=開始、y=終了、z=分割数)
dataplot(stats_contentgraph(model.find("Processor2")),2,3,8.6,5,0); Processor2のコンテンツグラフに、timeが8.6、contentが5のポイントを追加します。この例は、使用法を紹介するためだけのものです。Processorはコンテンツグラフを自動的に保守するため、実際にこのコマンドを使用する必要はありません。
離散的な経験的分布からランダムなサンプルを返す
説明
離散的な経験的分布。

参照されるテーブルには、値と、それぞれの値に関連付けられている確率の割合のリストが含まれている必要があります。確率の割合はテーブルの行1から開始される列1に、関連付けられている値は列2に入力する必要があります。テーブルには必要なだけ多くの値を定義でき、行数に制限はありません。割合には0~100の数値を入力し、合計は100%になるようにします。100%にならない場合、累積の割合が100を超えた後に定義される数値は決して返されません。

FlexSimでは3つの経験的分布が使用されます。それらの相違点と詳細については、cempirical()コマンドの説明を参照してください。
int ptype = dempirical("prodtypes", 5);

「prodtypes」という名前のグローバルテーブルで定義されている離散的な経験的分布を使用し、乱数ストリーム5を使って、変数ptypeに値を割り当てます。

dempirical(current.labels["route"], 5);

currentオブジェクトの「route」という名前のラベルに定義されているノードテーブルで定義される離散的な経験的分布から、乱数ストリーム5を使用して、ランダムな変量を返します。
minとmaxの間のランダムな整数を返す
説明
duniform( a, b, stream ) は有界な離散的確率分布です。

入力:
aは下限を指定するパラメータです。
bは上限を指定するパラメータです。
abは整数で、a < bです。
baはスケーリングのパラメータとなります。
streamは、FlexSimの乱数ストリーム{0,1,2,...}のいずれかへの参照です。

出力:
範囲 = { a, a+1, ..., b }
平均値 = ( a + b ) 2
分散 = ( (ba + 1)²− 1 ) 12

可能な用途:
abとの間でランダムに分布し、他の特性がほぼ未知の数量を概算するため使用されます。

コメント:
ab、またはその間に存在する任意の離散的な(整数の)数値が等しい確率で返されます。
duniform(1, 6, 3);

最小値が1、最大値が6の離散的な一様分布から、乱数ストリーム3を使用してランダムな変量を生成します。これは、サイコロを振った結果をシミュレートします。
説明
連続的な経験的分布。

参照されるテーブルには、値と、それぞれの値に関連付けられている確率の割合のリストが含まれている必要があります。確率の割合はテーブルの行1から開始される列1に、関連付けられている値は列2に入力する必要があります。テーブルには必要なだけ多くの値を定義でき、行数に制限はありません。割合には0~100の数値を入力し、合計は100%になるようにします。100%にならない場合、累積の割合が100を超えた後に定義される数値は決して返されません。

FlexSimでは3つの経験的分布が使用されます。それらの相違点と詳細については、cempirical()コマンドの説明を参照してください。
empirical("mytable", 5);

「mytable」という名前のグローバルテーブルで定義されている連続的な経験的分布から、乱数ストリーム5を使用して、ランダムな変量を返します。

empirical(current.labels["ptime"], 5);

currentオブジェクトの「ptime」という名前のラベルで定義されるテーブルで定義されている、連続的な経験的分布から、乱数ストリーム5を使用してランダムな変量を返します。
アーラン分布からランダムなサンプルを返す
説明
erlang( γ, β, m, stream )は非負の連続的な確率分布です。

入力:
γは位置パラメータです ∈ ( - , )。
βはスケーリングパラメータです( β > 0 )。
mは形状パラメータです ∈ {1, 2, ...}。
streamは、FlexSimの乱数ストリーム{0,1,2,...}のいずれかへの参照です。

出力:
範囲 = ( γ , )
平均値 = γ + mβ
分散 = mβ²

可能な用途:
組み立て、顧客サービス、機械の修理などのタスクが完了するまでの時間をモデル化するために使用されます。

コメント:
γ = 0のとき、この分布はm-Erlang(β)分布と呼ばれます。
exponential( γ, β )とerlang( γ, β, 1 )分布は同一です。
正の整数mについて、gamma( γ, β, m )とerlang( γ, β, m )分布は同一です。
double servicetime = erlang(60, 2, 4, 5);

変数servicetimeは、位置パラメータが60、スケールパラメータが2、形状パラメータが4のアーラン分布に従い、5番目の乱数ストリームを使用して設定されます。平均値は100 + (2*4) = 108です。
指数分布からランダムなサンプルを返す
説明
exponential( γ, β, stream)は非負の連続的な確率分布です。

入力:
γは位置パラメータです ∈ ( - , )。
βはスケールパラメータです( 0, )。
streamは、FlexSimの乱数ストリーム{0,1,2,...}のいずれかへの参照です。

出力:
範囲 = ( γ, )
平均値 = γ + β
分散 = β²

可能な用途:
多くの場合、顧客や、顧客からシステムへの注文の連続的なストリームの到着間の時間をモデル化するために使用されます。また、機械的装置の故障の間隔をモデル化するための一般的な分布でもあります。

コメント:
平均値より小さい変量は、平均値より大きい変量よりもはるかに頻繁に発生します。
指数分布は、メモリなしのプロパティで完全に独立した変量を生成する唯一の連続分布です。
位置パラメータ(γ)が0に設定されている場合、βは平均値となり、分布の範囲は0と無限大の間になります。
exponential( γ, β )とgamma( γ, β, 1 )分布は同一です。
exponential(0, 10, 5);

位置0、スケール10(平均値 = 10)の指数分布です。分布から変量を生成するため、FlexSimの5番目の乱数ストリームが使用されます。