snapMode 構造体は、MAXScript からスナップ オプションにアクセスし、コントロールするためのシステム グローバルと関数を提供します。
システム グローバル:
スナップがアクティブであるかどうかを取得/設定する 3ds Max システム グローバル。
ブール値です。
現在のスナップ タイプを名前で取得/設定します。使用できる名前は、
#2D
、
#2_5D
、
#3D
です。
3ds Max 7 では、snapMode 構造は、すべてのスナップ設定とスナップ結果にアクセスできるように拡張されています。3ds Max 7 以前のリリースでは、これらのプロパティはサード パーティの Avguard 拡張機能で使用できました。
snapMode.snapPreviewRadius
[プレビュー半径をスナップ]の値を取得/設定するシステム グローバル。
既定値は 30 です。
3ds Max 7 以降 で使用可能です。
[半径をスナップ]の値を取得/設定するシステム グローバル。
既定値は 20 です。
3ds Max 7 以降 で使用可能です。
スナップ マーカのカラー値を取得/設定するシステム グローバル。
3ds Max 7 以降 で使用可能です。
スナップ マーカのサイズを取得および設定するシステム グローバル。
整数値です。
3ds Max 7 以降 で使用可能です。
フリーズされたオブジェクトにスナップするかどうかを取得および設定するシステム グローバル。
ブール値です。
3ds Max 7 以降 で使用可能です。
スナップで軸コンストレイントを使用するかどうかをブール値として取得および設定するシステム グローバル。
[グリッド/スナップ設定]ダイアログ ボックスの[オプション]タブにあるチェックボックスに対応します。
3ds Max 7 以降 で使用可能です。
snapMode.displayRubberBand
ラバー バンドを表示するかどうかをブール値として取得および設定するシステム グローバル。
[グリッド/スナップ設定]ダイアログ ボックスの[オプション]タブにあるチェックボックスに対応します。
3ds Max 7 以降 で使用可能です。
snapMode.useAxisCenterAsStartSnapPoint
[軸中心をスナップ ポイント始点として使用]オプションの状態をブール値として取得および設定するシステム グローバル。
[グリッド/スナップ設定]ダイアログ ボックスの[オプション]タブにあるチェックボックスに対応します。
3ds Max 7 and 以降3ds Max 2010以前 で使用可能です。
3ds Max 2011 で廃止。
このプロパティへのアクセスを試みると、結果は次のようになります。
-- ランタイム エラー: このスナップ オプションを設定できません。これは、3ds Max 2011では廃止されています。
スナップ マーカを表示するか取得および設定するシステム グローバル。
ブール値です。
3ds Max 7 以降 で使用可能です。
スナップ強度を整数値で取得および設定するシステム グローバル。
3ds Max 7 以降 で使用可能です。
マーカーが現在何かにスナップされている場合は true、スナップされていない場合は false を含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
現在スナップされている対象のノードを含むシステム グローバル。
ノードにスナップされていない場合、またはスナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
スナップ システム フラグを整数として含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
最後のスナップ ポイントを Point3 座標としてスナップ対象のノードのローカル座標内に含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
最後のスナップ ポイントを Point3 ワールド座標として含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
最後のスナップ ポイントを Point3 画面座標として含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
snapMode.OKForRelativeSnap
少なくとも 1 つのスナップ ポイントが記録されている場合に true を含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
最後のスナップ ポイントを Point3 ワールド座標として含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
最初のスナップ ポイントを Point3 ワールド座標として含むシステム グローバル。
スナップがアクティブでない場合は undefined が含まれます。
読み込み専用です。
3ds Max 7 以降 で使用可能です。
OSnaps の数を整数として含むシステム グローバル。
読み込み専用です。
現在、6 セットの OSnap があります(詳細については以下を参照)。
3ds Max 7 以降 で使用可能です。
メソッド:
snapMode.getOSnapName <int osnap_index>
インデックスで指定された OSnap の名前を文字列で返します。
現在の結果は次のとおりです。
1 - "Body" - 3ds Max 2011 以降で使用可能です。
2 - "NURBS"
3 - "Standard"
4 - "Standard"
5 - "Standard"
6 - "Standard"
3ds Max 7 以降 で使用可能なその他すべての結果。
注:
標準のスナップは、3 から 6 のインデックスによる 4 つのグループで公開されています。
スナップ項目とグループとの対応の詳細については、以下の表を確認してください。
また、このページの後半にある出力例も参照してください。
snapMode.getOSnapNumItems <int osnap_index>
インデックスで指定された OSnap の OSnap 項目の数を整数で返します。
3ds Max 7 以降 で使用可能です。
有効な osnap_index 値は次のとおりです。
インデックス
|
型
|
数
|
スナップ 名
|
1
|
Body
|
5
|
頂点、エッジの終点、エッジ、エッジ中点、面
|
2
|
NURBS
|
10
|
CV、ポイント、カーブの中心、カーブの法線、カーブの接線、カーブのエッジ、カーブの終点、サーフェス中心、サーフェス法線、サーフェス エッジ
|
3
|
Standard
|
2
|
グリッド ポイント、グリッド ライン
|
4
|
Standard
|
2
|
基点、バウンディング ボックス
|
5
|
Standard
|
2
|
垂直、接線
|
6
|
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 以降 で使用可能です。
スナップ オプションについて
スクリプト:
|
-- 次の例では、すべてのスナップ オプションの状態に関する情報を
-- リスナーに出力します。
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: true
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: "Standard"
1: name: "Grid Points"; tooltip: ""; state: true
2: name: "Grid Lines"; tooltip: ""; state: false
4: name: "Standard"
1: name: "Pivot"; tooltip: ""; state: false
2: name: "Bounding Box"; tooltip: ""; state: false
5: name: "Standard"
1: name: "Perpendicular"; tooltip: ""; state: false
2: name: "Tangent"; tooltip: ""; state: false
6: 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
|
スナップ オプションの変更
次の例では、since スナップ オプションへのアクセスおよび変更方法を示します。
例:
|
-- [スナップ]ダイアログ ボックスは必ずしも開いている必要はありません。
-- ただし、この例では、チェックボックスの状態を確認できるようにするため、
-- オンに切り替えます。
max drawingaids -- [スナップ]ダイアログ ボックスをオンに切り替えます。
OK -- 閉じていた場合は、ここで開く必要があります。
snapmode.getOSnapItemActive 5 1 -- オブジェクト>頂点スナップの状態を出力します。
false -- オフです。
-- ここで頂点スナップを切り替えます。
snapmode.setOSnapItemActive 5 1 (not(snapmode.getOSnapItemActive 5 1))
OK
max drawingaids; max drawingaids -- [スナップ]ダイアログ ボックスを 2 回切り替えて更新します。
OK
OK -- これで[頂点]チェックボックスが確認されます。
snapmode.getOSnapItemActive 5 1 -- 現在の頂点スナップの状態を取得します。
true -- 現在はオンです。
|
スナップ マーカ設定について
次の例では、スナップ マーカ設定に関する情報を出力します。
例:
|
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
|
スナップ結果について
次の例では、ビューポート内のスナップ操作の結果に動的にアクセスして出力する方法を示します。
例:
|
-- この関数は、RedrawViews コールバックとして登録できます。
-- 現在のスナップの状態に関する情報をリスナーに出力します。
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
|