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 | ポイント クラウド | 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 |