PrintAllElements 変数およびコンテキスト

3ds Max 7 より前のバージョンでは、Array 値、VertexSelection 値、FaceSelection 値、EdgeSelection 値、BigMatrix、および BigMatrixRowArray値を文字列に出力または強制的に置き換える場合、最初の 20 要素しか変換されませんでした。

3ds Max 7 以降、MAXScript 変数と新しいコンテキストが導入されました。これらは、上記の値タイプをすべて文字列に出力または強制的に置き換えるか、最初の 20 要素だけにするかをコントロールします。

変数は次のとおりです。

options.printAllElements

true に設定した場合、Array 値、MeshSelection 値、BigMatrix 値、および BigMatrixRowArray 値のすべての要素が、文字列に出力または強制的に置き換えられます。false に設定した場合、これらの値タイプの最初の 20 要素だけが出力されます。

コンテキストは次のとおりです。

with printAllElements <boolean> <expr>

<boolean> が true の場合、<expr> が実行されるときに printAllElements が true になります。これは例外に対処しています。例外が <expr> で起きた場合、printAllElements が初期値に戻されます。

例:

    a = for i = 1 to 30 collect i
    --> #(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...)

    with printAllElements off (print a #nomap;ok)
    --> #(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...)
    --> OK

    with printAllElements on (print a #nomap;ok)
    --> #(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
    --> OK

    with printAllElements off a as string
    --> "#(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...)"

    with printAllElements on a as string
    --> "#(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)"

    (
    -- note that the following is not exception safe!
    local oldPrintAllElements = options.printAllElements
    options.PrintAllElements = true
    print a #nomap
    options.printAllElements = oldPrintAllElements
    ok
    )
    --> #(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
    --> OK