snapMode 構造体

snapMode 構造体は、MAXScript からスナップ オプションにアクセスし、コントロールするためのシステム グローバルと関数を提供します。

システム グローバル:

snapMode.active

スナップがアクティブであるかどうかを取得および設定する 3ds Max システム グローバル。

ブール値です。

snapMode.type

現在のスナップ タイプを名前で取得/設定します。有効な名前は、#2D#2_5D、および #3Dです。

3ds Max 7 では、snapMode 構造は、すべてのスナップ設定とスナップ結果にアクセスできるように拡張されています。3ds Max 7 以前のリリースでは、これらのプロパティはサード パーティの Avguard 拡張機能で使用できました。

snapMode.snapPreviewRadius

[プレビュー半径をスナップ](Snap Preview Radius)の値を取得および設定するシステム グローバル。

既定値は 30 です。

3ds Max 7 以降 で使用可能です。

snapMode.snapRadius

[半径をスナップ](Snap Radius)の値を取得および設定するシステム グローバル。

既定値は 20 です。

3ds Max 7 以降 で使用可能です。

snapMode.hilite

スナップ マーカーのカラー値を取得および設定するシステム グローバル。

3ds Max 7 以降 で使用可能です。

snapMode.markSize

スナップ マーカーのサイズを取得および設定するシステム グローバル。

整数値です。

3ds Max 7 以降 で使用可能です。

snapMode.toFrozen

フリーズされたオブジェクトにスナップするかどうかを取得および設定するシステム グローバル。

ブール値です。

3ds Max 7 以降 で使用可能です。

snapMode.axisConstraint

スナップで軸コンストレイントを使用するかどうかをブール値として取得および設定するシステム グローバル。

[グリッド/スナップ設定](Grid and Snap Settings)ダイアログ ボックスの[オプション] (Options)タブにあるチェックボックスに対応します。

3ds Max 7 以降 で使用可能です。

snapMode.displayRubberBand

ラバー バンドを表示するかどうかをブール値として取得および設定するシステム グローバル。

[グリッド/スナップ設定](Grid and Snap Settings)ダイアログ ボックスの[オプション] (Options)タブにあるチェックボックスに対応します。

3ds Max 7 以降 で使用可能です。

snapMode.useAxisCenterAsStartSnapPoint

[軸中心をスナップ ポイント始点として使用](Use Axis Center As Start Snap Point)オプションの状態をブール値として取得および設定するシステム グローバル。

[グリッド/スナップ設定](Grid and Snap Settings)ダイアログ ボックスの[オプション] (Options)タブにあるチェックボックスに対応します。

3ds Max 7 and 以降3ds Max 2010以前 で使用可能です。

3ds Max 2011 で廃止。

このプロパティへのアクセスを試行すると次の結果になります。

-- ランタイム エラー: このスナップ オプションを設定できません。これは、3ds Max 2011では廃止されています。

snapMode.display

スナップ マーカーを表示するか取得および設定するシステム グローバル。

ブール値です。

3ds Max 7 以降 で使用可能です。

snapMode.strength

スナップ強度を整数値で取得および設定するシステム グローバル。

3ds Max 7 以降 で使用可能です。

snapMode.hit

マーカーが現在何かにスナップされている場合は true、スナップされていない場合は false を含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.node

現在スナップされている対象のノードを含むシステム グローバル。

ノードにスナップされていない場合、またはスナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.flags

スナップ システム フラグを整数として含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.hitPoint

最後のスナップ ポイントを Point3 座標としてスナップ対象のノードのローカル座標内に含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.worldHitpoint

最後のスナップ ポイントを Point3 ワールド座標として含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.screenHitPoint

最後のスナップ ポイントを Point3 画面座標として含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.screenHitPointUnscaled

3ds Max 2017 以降で使用可能: 前回のスナップ ポイントをスケールされていない Point3 画面座標として含むシステム グローバルです。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

スナップがアクティブでない場合は undefined が含まれます。

snapMode.OKForRelativeSnap

少なくとも 1 つのスナップ ポイントが記録されている場合に true を含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.refPoint

最後のスナップ ポイントを Point3 ワールド座標として含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.topRefPoint

最初のスナップ ポイントを Point3 ワールド座標として含むシステム グローバル。

スナップがアクティブでない場合は undefined が含まれます。

読み込み専用です。

3ds Max 7 以降 で使用可能です。

snapMode.numOSnaps

OSnaps の数を整数として含むシステム グローバル。

読み込み専用です。

現在、6 セットの OSnap があります(詳細については以下を参照)。

3ds Max 7 以降 で使用可能です。

メソッド:

snapMode.getOSnapName <int osnap_index>

インデックスで指定された OSnap の名前を文字列で返します。

現在の結果は次のとおりです。

1 - "Body" - 3ds Max 2011 以降で使用可能です。

2 - "NURBS"

3 - "Point Cloud Objects" - 3ds Max 2015 以降で使用可能です。

4 - "Standard"

5 - "Standard"

6 - "Standard"

7 - "Standard"

3ds Max 7 以降で使用可能なその他すべての結果。

注:

標準のスナップは、4 から 7 のインデックスによる 4 つのグループで公開されています。

スナップ項目とグループとの対応の詳細については、以下の表を確認してください。

また、このページの後半にある出力例も参照してください。

snapMode.getOSnapNumItems <int osnap_index>

インデックスで指定された OSnap の OSnap 項目の数を整数で返します。 .

3ds Max 7 以降 で使用可能です。

有効な osnap_index 値は次のとおりです。

インデックス スナップ 名
1 Body 5 頂点、エッジの終点、エッジ、エッジ中点、面
2 NURBS 10 CV、ポイント、カーブの中心、カーブの法線、カーブの接線、カーブのエッジ、カーブの終点、サーフェス中心、サーフェス法線、サーフェス エッジ
3 Point Cloud 1 ポイント クラウド頂点
4 Standard 2 グリッド ポイント、グリッド ライン
5 Standard 2 基点、バウンディング ボックス
6 Standard 2 垂直、接線
7 Standard 6 頂点、終点、エッジ/セグメント、中点、面、面の中心
snapMode.getOSnapItemName <int osnap_index> <int osnap_item_index>

インデックスで指定された OSnap のインデックスで指定された OSnap 項目の名前を文字列で返します。

現在実装されている名前については上のテーブルを参照してください。

3ds Max 7 以降 で使用可能です。

snapMode.getOSnapItemToolTip <int osnap_index> <int osnap_item_index>

インデックスで指定された OSnap のインデックスで指定された OSnap 項目のツールチップを文字列で返します。

3ds Max 7 以降 で使用可能です。

snapMode.getOSnapItemActive <int osnap_index> <int osnap_item_index>

インデックスで指定された OSnap のインデックスで指定された OSnap 項目がアクティブの場合は true を返し、それ以外の場合は false を返します。

3ds Max 7 以降 で使用可能です。

snapMode.setOSnapItemActive <int osnap_index> <int osnap_item_index> <boolean>

インデックスで指定された OSnap のインデックスで指定された OSnap 項目がアクティブかどうかを設定します。

3ds Max 7 以降 で使用可能です。

スナップ オプションについて

スクリプト:

    --The following example prints information about the state of
    --all Snap options to the Listener:
    for i = 1 to snapmode.numOSnaps do
    (
    format "%: name: \"%\"\n" i (snapmode.getOSnapName i)
    for j = 1 to (snapmode.getOSnapNumItems i) do
    format " %: name: \"%\"; tooltip: \"%\"; state: %\n" j \
    (snapmode.getOSnapItemName i j) \
    (snapmode.getOSnapItemToolTip i j) \
    (snapmode.getOSnapItemActive i j)
    )

出力:

    1: name: "Body Snaps"
     1: name: "Vertex"; tooltip: ""; state: false
     2: name: "End Edge"; tooltip: ""; state: false
     3: name: "Edge"; tooltip: ""; state: false
     4: name: "Edge Midpoint"; tooltip: ""; state: false
     5: name: "Face"; tooltip: ""; state: false
    2: name: "NURBS"
     1: name: "CV"; tooltip: ""; state: false
     2: name: "Point"; tooltip: ""; state: false
     3: name: "Curve Center"; tooltip: ""; state: false
     4: name: "Curve Normal"; tooltip: ""; state: false
     5: name: "Curve Tangent"; tooltip: ""; state: false
     6: name: "Curve Edge"; tooltip: ""; state: false
     7: name: "Curve End"; tooltip: ""; state: false
     8: name: "Surf Center"; tooltip: ""; state: false
     9: name: "Surf Normal"; tooltip: ""; state: false
     10: name: "Surf Edge"; tooltip: ""; state: false
    3: name: "Point Cloud Objects"
     1: name: "Point Cloud Vertex"; tooltip: ""; state: false
    4: name: "Standard"
     1: name: "Grid Points"; tooltip: ""; state: true
     2: name: "Grid Lines"; tooltip: ""; state: false
    5: name: "Standard"
     1: name: "Pivot"; tooltip: ""; state: true
     2: name: "Bounding Box"; tooltip: ""; state: false
    6: name: "Standard"
     1: name: "Perpendicular"; tooltip: ""; state: false
     2: name: "Tangent"; tooltip: ""; state: false
    7: name: "Standard"
     1: name: "Vertex"; tooltip: ""; state: false
     2: name: "Endpoint"; tooltip: ""; state: false
     3: name: "Edge/Segment"; tooltip: ""; state: false
     4: name: "Midpoint"; tooltip: ""; state: false
     5: name: "Face"; tooltip: ""; state: false
     6: name: "Center Face"; tooltip: ""; state: false
    OK

スナップ オプションの変更

次の例では、スナップ オプションへのアクセスおよび変更方法を示します。

例:

    --The Snaps dialog must not necessarily be open,
    --but in this example we will toggle it on to be able to see
    --what is happening to the checkboxes:
    max drawingaids --toggle on the Snaps dialog
    -->OK --if it was closed, it should be open now
    snapmode.getOSnapItemActive 7 1 --print the state of the Object>Vertex snap
    -->false --it is off
    --now toggle the vertex snap:
    snapmode.setOSnapItemActive 7 1 (not(snapmode.getOSnapItemActive 5 1))
    -->OK
    max drawingaids; max drawingaids --toggle the Snaps dialog twice to refresh
    -->OK
    -->OK --the Vertex checkbox should be checked now
    snapmode.getOSnapItemActive 7 1 --get the current Vertex snap state
    -->true --it is now on

スナップ マーカー設定について

次の例では、スナップ マーカー設定に関する情報を出力します。

例:

    format "type: %; hilite: %; marksize: %; toFrozen: %\n" snapmode.type snapmode.hilite \
    snapmode.markSize snapmode.toFrozen
    format "axisConstraint: %; active: %; strength: %\n" snapmode.axisConstraint snapmode.active \
    snapmode.strength

スナップ結果について

次の例では、ビューポート内のスナップ操作の結果にダイナミックにアクセスして出力する方法を示します。

例:

    --This function can be registered as a RedrawViews Callback
    --It will print information about the current snap state to the Listener
    fn snapinfo =
    (
    local snapinfo
    if snapmode.active do
    (
    struct snapinfo (hit, flags, hitpoint, worldhitpoint, screenHitPoint, OKForRelativeSnap, topRefPoint, refPoint, node)
    local out = snapinfo snapmode.hit (bit.intAsHex snapmode.flags) snapmode.hitPoint \
    snapmode.worldHitpoint snapmode.screenHitPoint snapmode.OKForRelativeSnap \
    snapmode.refPoint snapmode.topRefPoint snapmode.node
    print out
    )
    ok
    )
    unregisterRedrawViewsCallback snapinfo
    registerRedrawViewsCallback snapinfo