development of

Tieghaに関する備忘録とおまけ

【AutoCAD Mechanical】部品表にデータを読み込む

部品表にデータを読み込むには

部品表 ダイアログボックス から部品表にデータを読み込ませることができますが、前回の記事と同じように API を使用して部品表にデータを読み込ませることが可能です。

【AutoCAD Mechanical】部品表のデータを書き出す - development of

部品表の読み込みには、AcmBOMManager::importBOM メソッドを使用します。

サンプルコード

#define IMPORT_EXT _T("Microsoft Access(*.mdb)|*.mdb|Microsoft Excel 97(*.xls)|*.xls|Microsoft Excel 95(*.xls)|*.xls|dBase 5(*.dbf)|*.dbf|dBase IV(*.dbf)| *.dbf|dBase III(*.dbf)|*.dbf|タブ区切りのテキスト形式(*.txt)|*.txt|セミコロン区切りのテキスト形式(*.csv)|*.csv|HTML書き出し(*.html)|*.html||")
void ImportBOM()
{
    // ファイルダイアログを表示
    CFileDialog dlg(
        TRUE,
        _T("mdb"),
        NULL, OFN_CREATEPROMPT,
        IMPORT_EXT);
    if (dlg.DoModal() != IDOK) return;

    AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase();
    AcDbObjectId bomId;
    CString bomTableName;

    // 部品表[MAIN]を取得
    acmBomMgr->getBomTable(bomId, bomTableName, pDb->currentSpaceId());

    // 部品表に選択したデータを読み込む
    if (acmBomMgr->importBOM(
        (AcmBOMManager::ImportBOMType)(dlg.m_ofn.nFilterIndex > 6 ? dlg.m_ofn.nFilterIndex + 3 : dlg.m_ofn.nFilterIndex),
        bomId, 
        dlg.GetPathName(), 
        bomTableName, 
        true) == Acad::eOk)
    {
        acutPrintf(_T("\n部品表[%s]の内容を[%s]に基づいて更新しました。"), bomTableName, dlg.GetFileName());
    }
    else
    {
        acutPrintf(_T("\n部品表[%s]の内容のロードに失敗しました。"), bomTableName);
    }
}