snapMode 構造体
 
 
 

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

   

システム グローバル:

snapMode.active 	 

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

ブール値です。

   

snapMode.type   

現在のスナップ タイプを名前で取得/設定します。使用できる名前は、 #2D #2_5D #3D です。

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

   

snapMode.snapPreviewRadius 

[プレビュー半径をスナップ]の値を取得/設定するシステム グローバル。

既定値は 30 です。

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

   

snapMode.snapRadius 

[半径をスナップ]の値を取得/設定するシステム グローバル。

既定値は 20 です。

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

   

snapMode.hilite 

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

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

   

snapMode.markSize 

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

整数値です。

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

   

snapMode.toFrozen 

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

ブール値です。

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

   

snapMode.axisConstraint 

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

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

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

   

snapMode.displayRubberBand 

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

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

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

   

snapMode.useAxisCenterAsStartSnapPoint 

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

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

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.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 - "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
関連事項