MQStationPluginクラス

(new in Rev2.40)

MQStationPlugin クラスは MQBasePlugin クラスを継承し、常駐型プラグインの実装に必要な関数を提供します。

この MQStationPlugin クラスを継承して、必要な仮想関数の実装を行うことにより、本体との複雑なメッセージ処理を隠ぺい化して簡便な実装で常駐型プラグインを作成することができます。

MQStationPlugin クラス内には各プラグイン・メッセージ処理関数が仮想関数として宣言されており、継承クラスで各仮想関数を実装する必要があります。

クラス
MQStationPlugin コンストラクタ
~MQStationPlugin デストラクタ
CreateNewPlugin 新しいプラグインクラスの作成
上位クラスの宣言
GetPlugInID プラグインIDの取得
GetPlugInName プラグイン名の取得
プラグイン
GetPlugInType プラグインの種類の取得
EnumString メニューまたはボタンに表示される文字列を返す
EnumSubCommand サブコマンドの列挙
GetSubCommandString サブコマンドの表示名の取得
Initialize アプリケーションの初期化
Exit アプリケーションの終了
メッセージ処理
Activate 表示・非表示切り替え要求
IsActivated 表示・非表示状態の返答
OnSubCommand サブコマンドの呼び出し
OnMinimize ウインドウの最小化への返答
OnReceiveUserMessage プラグイン独自のメッセージの受け取り
OnDraw 描画時の処理
OnNewDocument ドキュメント初期化時
OnEndDocument ドキュメント終了時
OnSaveDocument ドキュメント保存時
OnSavePastDocument クラッシュ時など、最新以外の状態のドキュメント保存時
OnUndo アンドゥ実行時
OnRedo リドゥ実行時
OnUpdateUndo アンドゥ状態更新時
OnObjectModified オブジェクトの編集時
OnObjectSelected オブジェクトの選択状態の変更時
OnUpdateObjectList カレントオブジェクトの変更時
OnMaterialModified マテリアルのパラメータ変更時
OnUpdateMaterialList カレントマテリアルの変更時
OnUpdateScene シーン情報の変更時
OnChangeEditOption 編集オプションの変更時
上位クラスの補助関数
OpenSetting 設定ファイルを開く
CloseSetting 設定ファイルを閉じる
GetResourceString リソース文字列を取得する
GetSettingValue 設定値を取得する
GetSystemColor システム色を取得する
GetResourceCursor 標準マウスカーソルを取得
GetScreenMouseCursor スクリーン用マウスカーソルを取得
SetScreenMouseCursor スクリーン用マウスカーソルを設定
SendUserMessage 他のプラグインにプラグイン独自のメッセージを送る
SetDrawProxyObject 描画代替オブジェクトを設定
GetSceneOption シーンの表示オプションを取得
GetEditOption 編集オプションを取得
補助関数
WindowClose ウインドウを閉じる
BeginCallback コールバック処理の開始
ExecuteCallback コールバックに対する実装部
CreateDrawingObject OnDraw()時に描画オブジェクトを追加
CreateDrawingObjectByClone OnDraw()時に描画オブジェクトを追加
CreateDrawingMaterial OnDraw()時に描画オブジェクト用マテリアルを追加
CreateDrawingText OnDraw()時に描画テキストを追加
DeleteDrawingObject 描画オブジェクトを削除する
DeleteDrawingMaterial 描画オブジェクト用マテリアルを削除する
DeleteDrawingText 描画テキストを削除する
GetCurrentUndoState 現在のアンドゥの状態カウンタを取得
ExecuteUndo アンドゥの実行
ExecuteRedo リドゥの実行
ClearUndoBuffer アンドゥバッファの消去
GetSnappedPos スナップ位置を取得

MQStationPlugin::MQStationPlugin();

 コンストラクタです。


virtual MQStationPlugin::~MQStationPlugin();

 デストラクタです。仮想関数として定義されます。


virtual MQBasePlugin *MQStationPlugin::CreateNewPlugin();

戻り値
プラグインクラス

別のドキュメント用に新しいプラグインクラスを作成します。

Mac版のみの関数で、純粋仮想関数として定義されます。


virtual int MQStationPlugin::GetPlugInType();

戻り値
プラグインタイプ
[MQPLUGIN_TYPE_STATION] 常駐型

MQBasePlugin::GetPlugInType() で宣言された仮想関数を実装しています。継承クラス内で新たに実装を行う必要はありません。


virtual const char *MQStationPlugin::EnumString();

戻り値
メニューまたはボタンに表示する文字列

メニュー(常駐型)またはボタン(コマンド)上に表示する文字列を返します。

純粋仮想関数として宣言されており、継承クラスで実装することにより MQEnumString() を隠ぺい化します。


virtual const char *MQStationPlugin::EnumSubCommand(int index);

index
サブコマンドのインデックス
戻り値
サブコマンドの識別文字列

ショートカットキーの割り当てが可能なサブコマンドの名前を返します。

indexが0から順に一つずつ増加しながらこの関数が繰り返し呼び出されます。戻り値にNULLを指定すると、サブコマンドの列挙が終了します。

仮想関数として宣言されており、MQStationPlugin内ではそのままNULLを返してサブコマンドの登録は行いません。サブコマンドが必要な場合は、継承クラスでEnumSubCommand()、GetSubCommandStringOnSubCommand()をオーバーライドして実装してください。

また、MQWidgetBase::RegisterSubCommandButton()でボタンとの対応付けを行うと、サブコマンドに割り当てられたショートカットキーがボタン上に表示されるようになります。


virtual const wchar_t *MQStationPlugin::GetSubCommandString(int index);

index
サブコマンドのインデックス
戻り値
サブコマンドの表示文字列

指定されたインデックスのサブコマンドの表示文字列を取得します。


virtual BOOL MQStationPlugin::Initialize();

戻り値
初期化に成功したかどうか
[TRUE] 初期化に成功
[FALSE] 初期化に失敗

メタセコイア起動時、または「プラグインについて」でインストールまたは使用状態が指定され、プラグインDLLがロードされた直後に呼び出されます。

純粋仮想関数として宣言されており、継承クラスで実装を行う必要があります。

実装すべき内容に決まりはありませんが、一般的にはメニューから呼び出されたときに表示されるウインドウの作成などを行います。

注意:Ver2.4.3またはそれ以前のバージョンでは、実装上の不具合のためDLLロード直後以外にも「プラグインについて」から Initialize() が多重に呼び出されます。Ver2.4.4以降ではDLLロード直後以外では呼び出されません。


virtual void MQStationPlugin::Exit();

メタセコイア終了時、または「プラグインについて」で非使用状態が指定され、DLLがアンロードされる前に呼び出されます。

純粋仮想関数として宣言されており、継承クラスで実装を行う必要があります。

実装すべき内容に決まりはありませんが、一般的には Initialize() で確保されたリソースの解放を行います。


virtual BOOL MQStationPlugin::Activate(MQDocument doc, BOOL flag);

doc
ドキュメント
flag
要求されるアクティブ状態
[TRUE] アクティブ化が要求された
[FALSE] 非アクティブ化が要求された
戻り値
アクティブ状態
[TRUE] アクティブ状態にある
[FALSE] 非アクティブ状態にある

メニューがクリックされたときに、アクティブ・非アクティブ状態を切り替えるために呼び出されます。

純粋仮想関数として宣言されており、継承クラスで実装を行う必要があります。

実装すべき内容に決まりはありませんが、一般的には Initialize() 内で作成したウインドウを、要求された状態に応じて表示または非表示状態にします。

要求されたアクティブ状態に関わらず、関数呼び出し後のアクティブ状態を戻り値として返す必要があります。


virtual BOOL MQStationPlugin::IsActivated(MQDocument doc);

doc
ドキュメント
戻り値
アクティブ状態かどうか
[TRUE] アクティブ状態にある
[FALSE] 非アクティブ状態にある

Activate() で操作されるオブジェクトがアクティブ状態にあるかどうかを返します。

純粋仮想関数として宣言されており、継承クラスで実装を行う必要があります。

実装すべき内容に決まりはありませんが、一般的にはプラグイン内部で管理されているウインドウが表示中ならTRUEを、非表示状態ならFALSEを返します。


virtual BOOL MQStationPlugin::OnSubCommand(MQDocument doc, int index);

doc
ドキュメント
index
サブコマンドのインデックス
戻り値
[TRUE] ドキュメントに何らかの変更が行われた
[FALSE] ドキュメントは何も変更されなかった

EnumSubCommand() で返したサブコマンドに割り当てたショートカットキーが押されたとき、この関数が呼び出されます。

仮想関数として宣言されており、MQStationPlugin内では何も行いません。継承クラス内でサブコマンドへの処理を実装してください。


virtual BOOL MQStationPlugin::OnMinimize(MQDocument doc, BOOL flag);

doc
ドキュメント
戻り値
最小化されるかどうか
[TRUE] 最小化される
[FALSE] 最小化以外の状態に戻る

メタセコイア本体のウインドウが最小化されるときに呼び出されます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラスで必要に応じて何らかの実装を行うことができます。


virtual int MQStationPlugin::OnReceiveUserMessage(MQDocument doc, DWORD src_product, DWORD src_id, const char *description, void *message);

doc
ドキュメント
src_product
送出元プラグインのプロダクトID
src_id
送出元プラグインのプラグインID
description
メッセージの内容を表す任意の文字列
message
メッセージの内容
戻り値
送出元プラグインに返す任意の値

(new in Rev2.41)

他のプラグインから MQBasePlugin::SendUserMessage() によりメッセージが送出された場合に呼び出されます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラスおよび送出元プラグインに実装を行うことにより、プラグイン間でのデータ交換などの処理を行うことができます。


virtual void MQStationPlugin::OnDraw(MQDocument doc, MQScene scene, int width, int height);

doc
ドキュメント
scene
シーン
width
描画領域の横幅
description
描画領域の縦幅

描画時に呼び出されます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて実装を行うことにより、プラグイン独自のオブジェクトをシーン内に描画することができます。

描画に用いるオブジェクト・マテリアルは補助関数 CreateDrawingObject(), CreateDrawingMaterial() によって作成する必要があります。


virtual void MQStationPlugin::OnNewDocument(MQDocument doc, const char *filename, NEW_DOCUMENT_PARAM& param);

doc
ドキュメント
filename
ファイル名
[NULL以外] MQOファイルが読み込まれた場合のファイル名
[NULL] 新規ドキュメントとして生成された
param
初期化パラメータ

ドキュメント初期化時に呼び出されます。

filename はMQOファイルが読み込まれたときにのみセットされ、他の形式がインポートされた場合はNULLとなります。

param.elem にはファイル保存時に OnSaveDocument() でXML要素を登録した場合に、そのXML要素がセットされています。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて何らかの実装を行うことができます。

struct NEW_DOCUMENT_PARAM {
    MQXmlElement elem;
};
elem
[NULL以外] ファイル保存時に付加されたXML要素
[NULL] 新規ドキュメントとして生成された、またはXML要素は保存されていない。

virtual void MQStationPlugin::OnEndDocument(MQDocument doc);

doc
ドキュメント

ドキュメント終了時に呼び出されます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて何らかの実装を行うことができます。

CreateDrawingObject(), CreateDrawingMaterial() で instant をFALSE にして生成した描画オブジェクトを保持したままになっている場合、DeleteDrawingObject(), DeleteDrawingMaterial() で削除して下さい。


virtual void MQStationPlugin::OnSaveDocument(MQDocument doc, const char *filename, SAVE_DOCUMENT_PARAM& param);

doc
ドキュメント
filename
MQOファイル名
param
保存パラメータ

ドキュメントがMQOファイルに保存される直前に呼び出されます。

param.elem にはXML要素がセットされており、子要素を登録することによりプラグイン独自のデータをMQOファイルに付随させて保存することができます。XML要素はMQOファイルとは別の外部XMLファイルとして保存され、MQOファイル内からリンクする形となります。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて実装を行うことができます。

struct SAVE_DOCUMENT_PARAM {
    MQXmlElement elem;
    BOOL bSaveUniqueID;
    int PastState;
};
elem
[NULL以外] ファイル保存時に付加されたXML要素
[NULL] 新規ドキュメントとして生成された、またはXML要素は保存されていない。
bSaveUniqueID
MQOファイル内にユニークIDを保存するかどうか
PastState (new in Rev4.60)
過去のアンドゥの状態カウンタ

virtual void MQStationPlugin::OnSavePastDocument(MQDocument doc, const char *filename, SAVE_DOCUMENT_PARAM& param);

doc
ドキュメント
filename
MQOファイル名
param
保存パラメータ

(new in Rev4.60)

クラッシュ時など、最新以外の状態のMQOファイルが保存される前に呼び出されます。

OnSaveDocument()と同様にプラグイン独自のデータを保存することができ、 基本的に、param.PastStateに対応するデータを保存します。

保存のため以外にも、ユニークIDを保存する必要があるかどうかを調べるために param.elemがnullptrで呼び出されることがあります。この場合、必要に応じてparam.bSaveUniqueIDを書き換えます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて実装を行うことができます。


virtual BOOL MQStationPlugin::OnUndo(MQDocument doc, int undo_state);

doc
ドキュメント
undo_state
アンドゥの状態カウンタ
戻り値
プラグイン独自のアンドゥ処理を行ってドキュメント内データを操作したかどうか
[FALSE] 操作を行わなかった

アンドゥ実行時に呼び出されます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて何らかの実装を行うことができます。

現段階では、プラグインでドキュメント内のデータ操作を行う独自のアンドゥ処理を行うことは認めておりません。ドキュメント内のデータの参照を行ったり、状態カウンタに応じてプラグイン内部のデータ処理を行うことはできますが、ドキュメントの操作は行わず必ずFALSEを返してください。戻り値は今後のバージョンのために予約されています。


virtual BOOL MQStationPlugin::OnRedo(MQDocument doc, int redo_state);

doc
ドキュメント
redo_state
アンドゥの状態カウンタ
戻り値
プラグイン独自のリドゥ処理を行ってドキュメント内データを操作したかどうか
[FALSE] 操作を行わなかった

リドゥ実行時に呼び出されます。

仮想関数として宣言されており、標準動作は何も行いませんが、継承クラス内で必要に応じて何らかの実装を行うことができます。

現段階では、プラグインでドキュメント内のデータ操作を行う独自のリドゥ処理を行うことは認めておりません。ドキュメント内のデータの参照を行ったり、状態カウンタに応じてプラグイン内部のデータ処理を行うことはできますが、ドキュメントの操作は行わず必ずFALSEを返してください。戻り値は今後のバージョンのために予約されています。


virtual void MQStationPlugin::OnUpdateUndo(MQDocument doc, int undo_state, int undo_size);

doc
ドキュメント
undo_state
アンドゥの状態カウンタ
undo_size
アンドゥ可能な回数

アンドゥの状態が更新されたときに呼び出されます。

この関数内ではオブジェクトの内容を更に変更してはいけません。


virtual void MQStationPlugin::OnObjectModified(MQDocument doc);

doc
ドキュメント

オブジェクトが編集された時に呼び出されます。

この関数内ではオブジェクトの内容を更に変更してはいけません。


virtual void MQStationPlugin::OnObjectSelected(MQDocument doc);

doc
ドキュメント

オブジェクトの頂点・辺・面・UVが選択された時に呼び出されます。

この関数内ではオブジェクトの内容・選択状態を更に変更してはいけません。


virtual void MQStationPlugin::OnUpdateObjectList(MQDocument doc);

doc
ドキュメント

カレントオブジェクトの変更や、オブジェクトの追加・削除が行われた時に呼び出されます。

この関数内ではオブジェクトの内容・選択状態を更に変更してはいけません。


virtual void MQStationPlugin::OnMaterialModified(MQDocument doc);

doc
ドキュメント

マテリアル内のパラメータが変更された時に呼び出されます。

この関数内ではオブジェクト・マテリアルの内容を更に変更してはいけません。


virtual void MQStationPlugin::OnUpdateMaterialList(MQDocument doc);

doc
ドキュメント

カレントマテリアルの変更や、マテリアルの追加・削除が行われた時に呼び出されます。

この関数内ではマテリアルの内容を更に変更してはいけません。


virtual void MQStationPlugin::OnUpdateScene(MQDocument doc, MQScene scene);

doc
ドキュメント
scene
シーン

カメラの向きやズームなど、シーン情報が変更された時に呼び出されます。

この関数内ではシーンを更に変更してはいけません。


virtual void MQStationPlugin::OnChangeEditOption(MQDocument doc, EDITOPTION_TYPE trigger);

doc
ドキュメント
trigger
変更された項目
[EDITOPTION_SCREEN] スクリーン座標系で編集
[EDITOPTION_WORLD] ワールド座標系で編集
[EDITOPTION_LOCAL] ローカル座標系で編集

(new in Rev4.40)

編集オプションが変更された時に呼び出されます。


void MQStationPlugin::WindowClose();

プラグインが管理しているウインドウが閉じられたときにこの関数を呼び出すと、本体側に通知されメニュー上のチェックが外れるようになります。


void MQStationPlugin::BeginCallback(void *option);

option
コールバック関数に渡す任意のデータ

Windowsメッセージに対する応答をプラグイン内で処理する場合、この関数を呼び出すと必要な初期化処理が行われた後に ExecuteCallback() が呼び出され、MQDocumentに対する処理を行うことができます。


virtual bool MQStationPlugin::ExecuteCallback(MQDocument doc, void *option);

doc
ドキュメント
option
BeginCallback()から渡された任意のデータ
戻り値
[TRUE] ドキュメントに何らかの変更が行われた
[FALSE] ドキュメントは何も変更されなかった

BeginCallback() によって呼び出されるコールバック関数を実装します。

純粋仮想関数として宣言されており、継承クラスで実装を行う必要があります。


MQObject MQStationPlugin::CreateDrawingObject(MQDocument doc, DRAW_OBJECT_VIISIBILITY visibility, BOOL instant=TRUE);

doc
ドキュメント
visibility
[DRAW_OBJECT_POINT] 頂点を表示
[DRAW_OBJECT_LINE] 辺を表示
[DRAW_OBJECT_FACE] 面を表示
instant
一時的なオブジェクトとして生成するか
戻り値
作成された描画用オブジェクト

OnDraw()時に描画するオブジェクトを追加します。

作成されたオブジェクトは MQObject::DeleteThis()MQDocument::DeleteObject() で削除してはいけません。

instant に TRUE を指定して作成されたオブジェクトは描画が完了すると自動的に破棄されます。

instant に FALSE を指定して作成したオブジェクトは、不要になった時点で DeleteDrawingObject() で削除してください。また、オブジェクトが保持されたまま OnEndDocument() が呼び出されたら、その時点で削除してください。


MQObject MQStationPlugin::CreateDrawingObjectByClone(MQDocument doc, MQObject clone_source, DRAW_OBJECT_VISIBILITY visibility, BOOL instant=TRUE);

doc
ドキュメント
clone_source
複製元オブジェクト
visibility
[DRAW_OBJECT_POINT] 頂点を表示
[DRAW_OBJECT_LINE] 辺を表示
[DRAW_OBJECT_FACE] 面を表示
instant
一時的なオブジェクトとして生成するか
戻り値
作成された描画用オブジェクト

OnDraw()時に描画するオブジェクトを元となるオブジェクトを複製して追加します。

作成されたオブジェクトは MQObject::DeleteThis()MQDocument::DeleteObject() で削除してはいけません。

instant に TRUE を指定して作成されたオブジェクトは描画が完了すると自動的に破棄されます。

instant に FALSE を指定して作成したオブジェクトは、不要になった時点で DeleteDrawingObject() で削除してください。また、オブジェクトが保持されたまま OnEndDocument() が呼び出されたら、その時点で削除してください。


MQMaterial MQStationPlugin::CreateDrawingMaterial(MQDocument doc, int& index, BOOL instant=TRUE);

doc
ドキュメント
index
生成されたマテリアルのインデックス
instant
一時的なマテリアルとして生成するか
戻り値
作成された描画用マテリアル

OnDraw() 時の CreateDrawingObject() で作成したオブジェクト描画に使用するマテリアルを追加します。

index には MQObject::SetFaceMaterial() に指定するインデックスが返されます。

作成されたマテリアルは MQMaterial::DeleteThis() で削除してはいけません。

instantにTRUEを指定して作成されたマテリアルは描画が完了すると自動的に破棄されます。

instantにFALSEを指定して作成したマテリアルは、不要になった時点で DeleteDrawingMaterial() で削除してください。また、マテリアルが保持されたまま OnEndDocument() が呼び出されたら、その時点で削除してください。


MQDrawingText MQStationPlugin::CreateDrawingText(MQDocument doc, const wchar_t *text, DRAWING_TEXT_PARAM& param, BOOL instant=TRUE);

doc
ドキュメント
str
表示文字列
param
各パラメータ
instant
一時的なテキストとして生成するか
戻り値
作成された描画テキスト

(new in Rev4.50)

OnDraw()時に描画するテキストを追加します。

instant に TRUE を指定して作成されたテキストは描画が完了すると自動的に破棄されます。

instant に FALSE を指定して作成したテキストは、不要になった時点で DeleteDrawingText() で削除してください。また、オブジェクトが保持されたまま OnEndDocument() が呼び出されたら、その時点で削除してください。

struct DRAWING_TEXT_PARAM {
    MQPoint ScreenPos;
    MQColor Color;
    float FontScale;
    DRAWING_TEXT_ALIGNMENT HorzAlign;
    DRAWING_TEXT_ALIGNMENT VertAlign;
};
ScreenPos
スクリーン座標での位置
Color
表示色
FontScale
フォントの拡大率
HorzAlign
横方向の位置
[TEXT_ALIGN_LEFT] 左寄せ
[TEXT_ALIGN_CENTER] 中央
[TEXT_ALIGN_RIGHT] 右寄せ
VertAlign
縦方向の位置
[TEXT_ALIGN_TOP]
[TEXT_ALIGN_CENTER] 中央
[TEXT_ALIGN_RIGHT]

void MQStationPlugin::DeleteDrawingObject(MQDocument doc, MQObject obj);

doc
ドキュメント
obj
描画オブジェクト

CreateDrawingObject() で instant を FALSE にして作成したオブジェクトを削除します。


void MQStationPlugin::DeleteDrawingMaterial(MQDocument doc, MQMaterial mat);

doc
ドキュメント
mat
描画マテリアルオブジェクト

CreateDrawingMaterial() で instant を FALSE にして作成したマテリアルを削除します。


void MQStationPlugin::DeleteDrawingText(MQDocument doc, MQDrawingText text);

doc
ドキュメント
text
描画テキスト

(new in Rev4.50)

CreateDrawingText() で instant を FALSE にして作成したテキストを削除します。


int MQStationPlugin::GetCurrentUndoState(MQDocument doc);
bool GetCurrentUndoState(MQDocument doc, UNDO_STATE& undo_state)

doc
ドキュメント
state
受け取り用のアンドゥ状態
戻り値
(int)アンドゥの状態カウンタ, (bool)取得に成功したか

現在のアンドゥの状態カウンタを取得します。

(new in Rev4.59)

struct UNDO_STATE {
	int state;
	bool can_undo;
	bool can_redo;
};
state
状態カウンタ
can_undo
アンドゥ可能かどうか
can_redo
リドゥ可能かどうか

bool MQStationPlugin::ExecuteUndo(MQDocument doc);

doc
ドキュメント
戻り値
アンドゥに成功したかどうか

(new in Rev4.59)

アンドゥを実行します。


bool MQStationPlugin::ExecuteRedo(MQDocument doc);

doc
ドキュメント
戻り値
成功したかどうか

(new in Rev4.59)

リドゥを実行します。


bool MQStationPlugin::ClearUndoBuffer(MQDocument doc);

doc
ドキュメント
戻り値
成功したかどうか

(new in Rev4.59)

アンドゥバッファの内容を消去します。


[旧型式]
MQPoint MQStationPlugin::GetSnappedPos(MQScene scene, const MQPoint& p, SNAP_GRID_TYPE type);

(new in Rev4.20)
MQPoint MQStationPlugin::GetSnappedPos(MQScene scene, const MQPoint& p, const EDIT_OPTION& option, const GET_SNAP_PARAM& snap_param);

scene
シーン
p
スナップ前の位置
type
スナップ方向を以下から一つまたは複数を選択
[SNAP_GRID_X] X軸方向に吸着
[SNAP_GRID_Y] Y軸方向に吸着
[SNAP_GRID_Z] Z軸方向に吸着
option
編集オプション
snap_param
スナップ用パラメータ
戻り値
スナップ後の位置

編集オプションで指定されているグリッド・平面・頂点・辺・面などへのスナップが行われたときの位置を取得します。

編集オプションで指定している状態以外へのスナップを行う場合、optionの内容を変更してください。

 

注意:旧型式の関数は互換性のため残されていますが、グリッド以外へのスナップを有効にするため新しい形式へ置換してくだい。

struct GET_SNAP_PARAM {
    BOOL SnapEyeDir;                // 視線方向へのスナップ
    BOOL IgnoreSelected;            // 選択部を無視
    BOOL IgnoreCurObj;              // カレントオブジェクトを無視
};
SnapEyeDir
視線方向へのスナップを有効にするかを指定します。
一般的には頂点を直接操作したり、ハンドルの中心を操作する場合にTRUEを指定します。ハンドルのX/Y/Z軸を操作する場合はFALSEを指定します。
IgnoreSelected
スナップ時に選択された頂点・辺・面を無視するかを指定します。
選択された箇所を移動する際には、移動対象自身にスナップされないようTRUEを指定します。
IgnoreCurObj
スナップ時にカレントオブジェクトを無視するかを指定します。。
カレントオブジェクトを移動する際には、移動対象自身にスナップされないようTRUEを指定します。