ブロック サイズのルールを作成する

各ポートのサイズを変更できるようになりましたが、ブロックのサイズを適切に設定できるように、最大ポートのある面を特定する必要があります。これには別の規則が必要です。

  1. block_size_rule という名前の新しいルールを追加します。

    最大ポートを特定するには、3 つのポート サイズ パラメータの値を調べ、最大値を保持します。block_shape_rule と同様に、T 形ブロックの動作はエルボ スタイル ブロックの動作とは異なる必要があります。

    T 形ブロックでは、3 つのポートすべてが使用されるため、すべてのポートのサイズを確認します。エルボスタイル ブロックでは、Port B は省略されるため、確認しません。MaxOfMany 関数を使用して、一連の入力値の最大値を取得します。

  2. block_size_rule の最初の部分は次のとおりです。テキスト領域に直接入力するか、ツールバーに用意されている汎用文から挿入します。MaxOfMany 関数を挿入するには、[スニペット]領域の[Math]ノードを展開し、[MaxOfMany]をダブルクリックします。

    コード ブロックをコピーする

    If block = "tee" Then
    port = MaxOfMany(port_a_size,port_b_size,port_c_size)
    ElseIf block = "elbow" Then
    port = MaxOfMany(port_a_size,port_c_size)
    End If

    port という新しいローカル変数では、使用可能な最大ポートのサイズが保持されています。この情報を使用して何を行うかをモデルに指示する必要があります。埋め込まれた Excel スプレッドシートを調べてモデル全体のサイズを更新できるように、モデルがスプレッドシートから情報を取得します。

  3. [Enter]を 2 回押すと、ルールにスペースが追加されます。
  4. 前に作成したルールと同様に、FindRow (埋め込み)関数のコピーを挿入します。これを変更し、埋め込まれているスプレッドシートから該当する情報の行を見つけることによって、他のパラメータの値を取得します。

    コード ブロックをコピーする

    i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port)

    参照用に port_size 列を使用し、割り当てられた変数の値を検索対象の値として使用しています。

  5. 見つかった最大ポート サイズの行を使用して、埋め込まれた Excel スプレッドシートの情報でモデルパラメータを設定します。

    コード ブロックをコピーする

    block_depth = GoExcel.CurrentRowValue("block_depth")
    port_c_depth_from_front = GoExcel.CurrentRowValue("port_c_depth_from_front")
    block_width = GoExcel.CurrentRowValue("block_width")
    port_a_hor_offset = GoExcel.CurrentRowValue("hor_offset")
    port_b_hor_offset = GoExcel.CurrentRowValue("hor_offset")
    port_c_hor_offset = GoExcel.CurrentRowValue ("hor_offset")

    最大ポートを特定したので、それに従ってブロック上部のサイズを設定します。まず、T 形かエルボかを調べて Port A 面と Port B 面のどちらのポート サイズが大きいかを特定することによって、ブロックの高さを特定します。

  6. この値を保持する別のローカル変数 porta を使用する別の文を作成します。Port B はエルボスタイル ブロックには使用されないため、文に含まれる手順はこの設定に応じて異なります。

    コード ブロックをコピーする

    If block = "tee" Then
    porta = MaxOfMany(port_a_size, port_b_size)
    ElseIf block = "elbow"
    porta = port_a_size
    End If

    エルボ スタイル ブロックの場合は、考慮する値が 1 つしかないため、MaxOfMany 関数を使用しません。その値から変数を設定できます。

  7. 別の FindRow (埋め込み)文を作成して、Excel スプレッドシートからブロックの高さの値を取得します。

    コード ブロックをコピーする

    i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", porta)
  8. CurrentRowValue 関数を使用して、ブロックの高さを設定します。

    コード ブロックをコピーする

    port_a_vert_offset = GoExcel.CurrentRowValue("vert_offset")
    port_b_vert_offset = GoExcel.CurrentRowValue("vert_offset")
  9. 最後に、2 つの追加パラメータの値を設定します。最初のパラメータは、ブロックの高さを設定します。2 番目のパラメータは、Port C の垂直オフセットを設定します。

    この値に関しては、他のポートに使用される垂直オフセットの上に追加の余白を挿入する特別なロジックを追加します。この情報は、別のスプレッドシートのセルから取得されます。この処理を行うのは、エルボスタイル ブロックの場合だけです。

    コード ブロックをコピーする

    If block = "elbow" Then
    port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") + (GoExcel.CurrentRowValue("port_dia")/4)
    Else
    port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset")
    End If
    block_height = GoExcel.CurrentRowValue("block_height")

    block_size ルールが完成しました。

  10. [ルールを編集]ダイアログ ボックスで[OK]をクリックします。
  11. [パラメータ]ダイアログ ボックスでポート サイズのいずれかを変更し、モデルの更新を確認します。

[前へ] | [次へ]