3Dマイホームデザイナーをご利用いただき、ありがとうございます。3DマイホームデザイナーSDKを使って、間取り画面の操作ができます。
目次
はじめに
使用条件と免責事項
- このSDKは、無償で提供されますが、なんら欠陥がないことを保証をするものではありません。
- SDKに含まれるドキュメントやサンプルは、「現状のまま(as is)」の状態で提供されるものであり、誤り、抜け落ち、不正確な記述等がある可能性があり、それらについてメガソフトは明示的、黙示的、その他いかなる保証もいたしかねます。
- SDKは、サポートセンターのサポート対象外です。質問に対してお答えすることはできません。
- 予告無く、仕様を変更することがあります。
- SDKのご利用および使用結果につきましては、お客様の責任とさせていただきます。ご利用によって生じたあらゆる損害に対して、メガソフトは一切の責任を負いません。
動作要件
3DマイホームデザイナーPRO7 Ver.7.0.11以降で対応しています。それ以前の3DマイホームデザイナーPRO7をお使いの場合は、リビジョンアップしてください。
使い方
アプリケーションの登録
[プログラムインストール先]\Wizard\madori\Program\madori.exe を、管理者権限で実行します。
プログラムのインストール先の初期値は、
32bit OSの場合、C:\Program Files\3DMHPRO7
64bit OSの場合、C:\Program Files (x86)\3DMHPRO7
です。
アプリケーションでの使い方
COM クライアント アプリケーションより先に3DマイホームデザイナーPRO7を起動しておきます。
Running Object Table(ROT)からオブジェクトを探して、接続します。
3DマイホームデザイナーPRO7は、複数のexeやdllで構成されています。CreateObject などで、madori.exe単体を起動した場合、
3DマイホームデザイナーPRO7の全機能が使えません。ご注意ください。
Visual Basicの場合
プロジェクトの設定
- [プロジェクト]メニュー/[参照の追加]を実行してください。
- 参照の追加ダイアログの[参照設定]タブを選択します。
- [プログラムインストール先]\Wizard\madori\Program\madori.exeを選択します。
- [OK]をクリックして、ダイアログを閉じます。
madori.exeへ接続
GetObjectで、Running Object Table(ROT)からオブジェクトを探して、接続します。
Dim madoriDoc As MyHomeDesignerMadori.MadoriDoc
Private Sub GetMadoriDoc()
If madoriDoc Is Nothing Then
madoriDoc = GetObject(,
"MyHomeDesignerMadori.MadoriDoc")
End If
End Sub
Private Sub Func()
Dim nRet As Integer
nRet = madoriDoc.AddPart(
"C:\Users\Public\Documents\3DMHPRO7\PARTS\Kagu\01キッチン\04食器棚\DKボードL02.m3d",
_
1000, 2000, 0, True, 0, 0, 0, False,
0, 0, 0, 0, True, False)
If nRet <> 0 Then
MsgBox("OK")
Else
MsgBox("失敗")
End If
End Sub
Visual C++の場合
プロジェクトの設定
- [プロジェクト]メニュー/[クラスの追加]を実行してください。
- [TypeLib からの MFC クラス]を選択して、[追加]ボタンをクリックします。
- レジストリ/MyHomeDesignerMadori、または、ファイル/[プログラムインストール先]\Wizard\madori\Program\madori.exeを選択します。
- 使用するインターフェースを選択します。
- [完了]をクリックして、ダイアログを閉じます。
madori.exeへ接続
GetActiveObjectで、Running Object Table(ROT)からオブジェクトを探して、接続します。
// 接続
BOOL CMyApp::CreateMadoriDoc()
{
LPUNKNOWN pUnk = NULL;
LPDISPATCH pDisp = NULL;
CLSID clsid;
BOOL bRet = TRUE;
if(!m_MadoriDoc){
// 1回だけオブジェクト作成
m_MadoriDoc = new CMadoriDoc();
}
if (m_MadoriDoc->m_lpDispatch == NULL){
// 未接続なら、接続する
// CLSIDを取得
if (S_OK != CLSIDFromProgID
(L"MyHomeDesignerMadori.MadoriDoc", &clsid))
{
// MadoriDoc が未登録
return FALSE;
}
// Running Object Table (ROT) から、madoriをさがす
if (S_OK == GetActiveObject (clsid, NULL, &pUnk))
{
// 見つかった
pUnk->QueryInterface (IID_IDispatch, (void**)(&pDisp));
}
if (pDisp)
{
// 接続
m_MadoriDoc->AttachDispatch (pDisp);
}
else
{
// MadoriDoc
は見つかりませんでした
// 新規作成。インメニューに戻ったり、立体化など3Dと連携する機能は使えません。
COleException* pe = new COleException;
try{
if(m_MadoriDoc->CreateDispatch (clsid, pe)){
}else{
throw pe;
}
}
catch(COleDispatchException* pe)
{
CString cStr;
if (!pe->m_strSource.IsEmpty())
cStr = pe->m_strSource + _T(" - ");
if (!pe->m_strDescription.IsEmpty())
cStr += pe->m_strDescription;
else
cStr += _T("unknown error");
AfxMessageBox(cStr, MB_OK,
(pe->m_strHelpFile.IsEmpty()) ? 0 : pe->m_dwHelpContext);
pe->Delete();
bRet = FALSE;
}
catch(COleException* pe)
{
pe->Delete();
bRet = FALSE;
}
catch (CException* pe)
{
pe->Delete();
bRet = FALSE;
}
pe->Delete();
}
if(pUnk) pUnk->Release();
}
return bRet;
}
void
CMyApp::AddPart()
{
CreateMadoriDoc();
BOOL bRet =
m_MadoriDoc->AddPart(
_T("C:\\Users\\Public\\Documents\\3DMHPRO7\\PARTS\\Kagu\\01キッチン\\04食器棚\\DKボードL02.m3d"),
1000,2000,0,TRUE,0,0,0,FALSE, 0,0,0,0,TRUE,FALSE);
if(bRet) AfxMessageBox("OK", MB_ICONINFORMATION);
else AfxMessageBox("失敗");
}
その他の言語の場合
COMサーバーの使い方については、各言語やツールのリファレンスを参照してください。
アプリケーションより先に3DマイホームデザイナーPRO7を起動しておき、Running Object Table(ROT)からオブジェクトを探して、接続する点は、
Visual BasicやVisual C++と同様です。
リファレンス
サンプル
トラブルシューティング
参考資料
サポート
サポートセンターでは、SDKのサポートは行なっておりません。
3Dマイホームデザイナーのユーザー間の情報交換の場として、3Dマイホームデザイナーフォーラムがございます。
ご活用ください。
※記載されている会社名、商品名は、各社の商標または登録商標です。