3Dマイホームデザイナーをご利用いただき、ありがとうございます。3DマイホームデザイナーSDKを使って、間取り画面の操作ができます。

目次

はじめに

COM

COM オートメーション機能により、3Dマイホームデザイナーの間取り画面が操作できます。

使用条件と免責事項

  • この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の場合

プロジェクトの設定
  1. [プロジェクト]メニュー/[参照の追加]を実行してください。
  2. 参照の追加ダイアログの[参照設定]タブを選択します。
  3. [プログラムインストール先]\Wizard\madori\Program\madori.exeを選択します。
  4. [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++の場合

プロジェクトの設定
  1. [プロジェクト]メニュー/[クラスの追加]を実行してください。
  2. [TypeLib からの MFC クラス]を選択して、[追加]ボタンをクリックします。
  3. レジストリ/MyHomeDesignerMadori、または、ファイル/[プログラムインストール先]\Wizard\madori\Program\madori.exeを選択します。
  4. 使用するインターフェースを選択します。
  5. [完了]をクリックして、ダイアログを閉じます。
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マイホームデザイナーフォーラムがございます。 ご活用ください。

※記載されている会社名、商品名は、各社の商標または登録商標です。