【AutoCAD Mechanical】部品表のデータを書き出す
部品表のデータを書き出すには
一般的には部品表 ダイアログ ボックス から部品表の内容を書き出すと思いますが、 API を使用して指定したファイル形式で書き出すことも可能です。
部品表の書き出しには、AcmBOMManager::exportBOM
メソッドを使用します。
書き出せるファイル形式は、Microsoft Access (.mdb)、Microsoft Excel (.xls)、テキスト形式 (*.txt) などがあります。
サンプルコード
#define EXPORT_EXT _T("Microsoft Access(*.mdb)|*.mdb|Microsoft Access 97(*.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 ExportBOM() { // ファイルダイアログを表示 CFileDialog dlg( FALSE, _T("mdb"), NULL, OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT, EXPORT_EXT); if (dlg.DoModal() != IDOK) return; AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase(); AcDbObjectId bomId; CString bomTableName; // 部品表[MAIN]を取得 acmBomMgr->getBomTable(bomId, bomTableName, pDb->currentSpaceId()); // 部品表を書き出す if (acmBomMgr->exportBOM( (AcmBOMManager::ExportBOMType)(dlg.m_ofn.nFilterIndex > 7 ? 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); } }
※サンプルコードについての補足
AcmBOMManager::exportBOM
メソッドに渡す書き出すファイルの形式として、AcmBOMManager::ExportBOMType
列挙体を使用して指定します。
列挙子 | 値 | ファイル形式 |
---|---|---|
eEXPORT_MDB | 1 | Microsoft Access |
eEXPORT_MDB97 | 2 | Microsoft Access 97 |
eEXPORT_EXCEL97 | 3 | Microsoft Excel 97 |
eEXPORT_EXCEL95 | 4 | Microsoft Excel 95 |
eEXPORT_DB5 | 5 | dBASE 5 |
eEXPORT_DBIV | 6 | dBASE IV |
eEXPORT_DBIII | 7 | dBASE III |
eEXPORT_FOXVIS | 8 | Microsoft Visual Foxpro 3.0 |
eEXPORT_FOX26 | 9 | Microsoft Foxpro 2.6 |
eEXPORT_FOX25 | 10 | Microsoft Foxpro 2.5 |
eEXPORT_TXT | 11 | タブ区切りのテキスト形式 |
eEXPORT_CSV | 12 | セミコロン区切りのテキスト形式 |
eEXPORT_HTML | 13 | HTML形式 |
eEXPORT_ALLFILE | 14 |
サンプルコードでは Foxpro 形式以外の形式で書き出せるようにしています。