(new in Rev2.40)
MQBasePlugin クラスはすべての種類のプラグインの基底となるクラスで、MQBasePlugin.cpp および MQBasePlugin.h をプロジェクトに追加することでクラスライブラリとして利用します。MQBasePluginから派生したクラスを GetPluginClass() で返すことにより、本体との複雑なメッセージ処理を隠ぺい化して簡便な実装で各プラグインを作成することができます。
MQBasePlugin クラス内には各プラグイン関数が仮想関数として宣言されており、継承クラスで各仮想関数を実装する必要があります。
クラス | |
MQBasePlugin | コンストラクタ |
~MQBasePlugin | デストラクタ |
プラグイン | |
GetPlugInID | プラグインIDの取得 |
GetPlugInName | プラグイン名の取得 |
GetPlugInType | プラグインの種類の取得 |
補助関数 | |
OpenSetting | 設定ファイルを開く |
CloseSetting | 設定ファイルを閉じる |
GetResourceString | リソース文字列を取得する |
GetSettingValue | 設定値を取得する |
GetSystemColor | システム色を取得する |
GetResourceCursor | 標準マウスカーソルを取得 |
GetScreenMouseCursor | スクリーン用マウスカーソルを取得 |
SetScreenMouseCursor | スクリーン用マウスカーソルを設定 |
GetLUTCount | LUTの数を取得 |
GetLUTName | LUT名を取得 |
GetLUTData | LUTデータを取得 |
GetDefaultLUTData | 標準LUTデータを取得 |
GetSceneOption | シーンの表示オプションを取得 |
GetEditOption | 編集オプションを取得 |
GetDisplayUnit | 表示単位を取得 |
GetDisplayUnitString | 表示単位の文字列とスケールを取得 |
GetFilename | ファイル名を取得 |
SaveDocument | ドキュメントの保存 |
InsertDocument | ドキュメントの挿入 |
EnumLoadableImages | 読み込み可能な画像ファイルの種類を取得 |
SendUserMessage | 他のプラグインにプラグイン独自のメッセージを送る |
SetDrawProxyObject | 描画代替オブジェクトを設定 |
MQBasePlugin::MQBasePlugin();
コンストラクタです。
virtual MQBasePlugin::~MQBasePlugin();
デストラクタです。仮想関数として定義されます。
virtual void MQBasePlugin::GetPlugInID(DWORD *Product, DWORD *ID);
プロダクト名(制作者名)とIDを、全部で64bitの値として返します。
Product および ID の値は他と重複しないような適当にランダムなもので構いません。
純粋仮想関数として宣言されており、継承クラスで実装することにより MQGetPlugInID() を隠ぺい化します。
virtual const char *MQBasePlugin::GetPlugInName();
[プラグインについて]ダイアログ上で表示するプラグイン名を返します。
純粋仮想関数として宣言されており、継承クラスで実装することにより MQGetPlugInName() を隠ぺい化します。
virtual int MQBasePlugin::GetPlugInType();
プラグインの種類を返します。
純粋仮想関数として宣言されており、継承クラスで実装することにより MQGetPlugInType() を隠ぺい化します。
MQSetting *MQBasePlugin::OpenSetting();
Metasequoia が各種設定を保存する metaseq.setting.xml ファイルへのアクセスを行うためのクラスを取得します。
取得した設定クラスを操作することにより、プラグイン独自の設定情報を読み込み・保存することができます。
取得した MQSetting クラスは CloseSetting() で削除する必要があります。
(in Rev4.00)
アクセスするファイルは metaseq.ini から metaseq.setting.xml へ変更されました。
void MQBasePlugin::CloseSetting(MQSetting *setting);
OpenSetting() で開いた設定オブジェクトを閉じます。
std::wstring MQBasePlugin::GetResourceString(const char *id);
(new in Rev4.00)
現在の言語のcommand.xml内で定義される文字列を取得します。
std::wstring MQBasePlugin::GetSettingValue(MQSETTINGVALUE_TYPE type);
(new in Rev4.02)
システム内で設定されている値を取得します。
MQColor MQBasePlugin::GetSystemColor(MQSYSTEMCOLOR_TYPE color_type);
(new in Rev4.02)
システム内で設定されている色を取得します。
HCURSOR MQBasePlugin::GetResourceCursor(MQCURSOR_TYPE cursor_type);
(new in Rev2.46)
指定された種類のマウスカーソルを取得します。
取得したカーソルはSetScreenMouseCursor()やMQCommandPlugin::SetMouseCursor()で利用します。
HCURSOR MQBasePlugin::GetScreenMouseCursor();
(new in Rev4.30)
現在のスクリーン用マウスカーソルを取得します。
void MQBasePlugin::SetScreenMouseCursor(HCURSOR cursor);
(new in Rev4.30)
スクリーン用マウスカーソルを設定します。
設定するカーソルはGetResourceCursor()で取得したものか、またはWin32APIのLoadCursor()で得られるDLLのインスタンスが保持するリソースカーソルを指定して下さい。LoadCursor()でインスタンスにNULLを指定して得られる定義済みカーソルを指定した時の動作は保証されません。
3Dビューにカーソルを設定する場合はMQCommandPlugin::SetMouseCursor()を呼び出してください。
ウィジェットにカーソルを設定する場合はMQWidgetBase::SetCursor()を呼び出してください。
int MQBasePlugin::GetLUTCount();
(new in Rev4.40)
システムで用意されているLUT(カラーマップ)の数を取得します。
const unsigned char *MQBasePlugin::GetLUTData(int index);
(new in Rev4.40)
システムで用意されているLUT(カラーマップ)データを取得します。
戻り値のポインタ内にはRGB順に256色分、計768バイトのデータが格納されています。
const unsigned char *MQBasePlugin::GetDefaultLUTData();
(new in Rev4.40)
システムの標準LUT(カラーマップ)を取得します。
戻り値のポインタ内にはRGB順に256色分、計768バイトのデータが格納されています。
void MQBasePlugin::GetSceneOption(MQScene scene, SCENE_OPTION& option);
シーンの表示オプションを取得します。
struct SCENE_OPTION { BOOL ShowVertex; BOOL ShowLine; BOOL ShowFace; BOOL FrontOnly; BOOL ShowBkimg; };
|
void MQBasePlugin::GetEditOption(EDITOPTION& option);
編集オプションの状態を取得します。
取得された編集オプションは option に格納されます。
struct EDIT_OPTION { BOOL EditVertex; // 頂点を編集可 BOOL EditLine; // ラインを編集可 BOOL EditFace; // 面を編集可 BOOL SelectRect; // 矩形選択 BOOL SelectRope; // 投げ縄選択 BOOL SnapX; // X軸に沿った編集 BOOL SnapY; // Y軸に沿った編集 BOOL SnapZ; // Z軸に沿った編集 COORDINATE_TYPE CoordinateType; // 座標軸の種類 SNAP_GRID_TYPE SnapGrid; // グリッドへの吸着 BOOL Symmetry; // 対称編集 float SymmetryDistance; // 対称とみなす距離 BOOL CurrentObjectOnly; // カレントオブジェクトのみを編集 SNAP_PLANE_TYPE SnapPlane; // 平面への吸着 (new in Rev 4.20) MQPoint SnapPlanePos; // 吸着する平面の位置 (new in Rev 4.20) MQPoint SnapPlaneDir; // 吸着する平面の向き (new in Rev 4.20) BOOL SnapVertex; // 頂点への吸着 (new in Rev 4.20) BOOL SnapLine; // 辺への吸着 (new in Rev 4.20) BOOL SnapFace; // 面への吸着 (new in Rev 4.20) };
|
MQDISPLAYUNIT MQBasePlugin::GetDisplayUnit();
(new in Rev4.59)
長さの表示単位を取得します。
static const wchar_t *MQBasePlugin::GetDisplayUnitString(MQDISPLAYUNIT unit, double *scale)
(new in Rev4.60)
長さの表示単位の文字列とスケールを取得します。
std::wstring MQBasePlugin::GetFilename(MQDocument doc);
(new in Rev4.59)
ドキュメントの読み込み元・保存先のファイル名を取得します。ファイル名が付けられていない場合、空文字列が返ります。
bool MQBasePlugin::SaveDocument(MQDocument doc, const wchar_t *filename, const SAVE_DOCUMENT_OPTION& option);
(new in Rev4.59)
ドキュメントをファイルに保存します。
保存オプション内でプラグインIDを指定すると、指定したIDに対応するExportプラグインによる保存が行われます。プラグインIDを指定しない場合、拡張子によってファイル形式が自動的に判別されます。
struct SAVE_DOCUMENT_OPTION { DWORD ExportProductID; DWORD ExportPluginID; int ExportIndex; };
|
std::vector<std::wstring> MQBasePlugin::EnumLoadableImages()
(new in Rev4.60)
読み込み可能な画像ファイルの種類を取得します。
bool MQBasePlugin::InsertDocument(MQDocument doc, const wchar_t *filename, const OPEN_DOCUMENT_OPTION& option);
(new in Rev4.71)
ファイルを読み込んで、オブジェクト・材質などをドキュメントに挿入します。
読み込みオプション内でプラグインIDを指定すると、指定したIDに対応するImportプラグインによる読み込みが行われます。プラグインIDを指定しない場合、拡張子によってファイル形式が自動的に判別されます。
struct OPEN_DOCUMENT_OPTION { DWORD ImportProductID; DWORD ImportPluginID; int ImportIndex; MERGE_MODE MergeMode; };
|
std::vector<std::wstring> MQBasePlugin::EnumLoadableImages()
(new in Rev4.60)
読み込み可能な画像ファイルの種類を取得します。
int MQBasePlugin::SendUserMessage(MQDocument doc, DWORD target_product, DWORD target_id, const char *description, void *param);
(new in Rev2.41)
他の常駐型・コマンドプラグインに任意のメッセージを送ります。
プラグインに渡すデータは任意のものを message にポインタとして与えることができます。
target_product と target_id に 0 を指定すると、すべてのプラグインに通知されます。
送出されたメッセージは受け取り側のプラグイン側の MQStationPlugin::OnReceiveUserMessage() で受け取ります。
注意:Ver2.4.4または以前のバージョンでは、戻り値が正しく取得できません。
void MQBasePlugin::SetDrawProxyObject(MQObject obj, MQObject proxy, bool sync_select = false);
(new in Rev4.30)
描画代替オブジェクトは通常のオブジェクトの頂点・辺・面の代わりに別のオブジェクトに差し替えて表示します。代替されるのは表示のみで、各操作には影響しません。
通常objはドキュメントに登録されているオブジェクトを、proxyにはMQ_CreateObject()またはCreateDrawingObject() で作成したオブジェクトを指定します。
OnDraw()内でCreateDrawingObject()でinstantをTRUEにして作成したオブジェクトを描画代替オブジェクトとして指定すると、その呼び出し1回のみに必要なオブジェクトを用意することができ、OnDraw()の呼び出し後に描画代替オブジェクトは自動的に削除されます。
instantをFALSEにしたり、MQ_CreateObject()で作成したオブジェクトを描画代替オブジェクトとして指定すると、描画代替オブジェクトを削除するか別の描画代替オブジェクト(NULLも可)を指定するまでその描画代替オブジェクトでの表示が行われます。
sync_selectにtrueを指定すると、元のオブジェクトの頂点・辺・面の選択状態が代替オブジェクトに反映されます。選択状態の同期には、頂点・面数が一致している必要があります。