【AutoCAD Mechanical】パーツ参照のデータを取得する
パーツ参照のデータを取得するには
パーツ参照のコンポーネントのプロパティの各値を取得するには、 AcmBOMManager::getPartData
メソッドを使用します。
サンプルコード
// オブジェクトを選択 ads_name entname; ads_point pickPoint; if (acedEntSel(_T("\nパーツ参照を選択"), entname, pickPoint) != RTNORM) return; AcDbObjectId partrefId; if (acdbGetObjectId(partrefId, entname) != Acad::eOk) return; AcDbObject *pObj; if (acdbOpenObject(pObj, partrefId, AcDb::kForRead) != Acad::eOk) return; CString className = pObj->isA()->name(); pObj->close(); // パーツ参照を選択したかどうかを確認 if (className != _T("AcmPartRef")) { acutPrintf(_T("\nパーツ参照が選択されませんでした。")); return; } // パーツ参照のプロパティを取得 CMapStringToString valueMap; if (getAcmBomMgr()->getPartData(partrefId, valueMap) != Acad::eOk) return; POSITION pos = valueMap.GetStartPosition(); while (pos != NULL) { CString key, value; valueMap.GetNextAssoc(pos, key, value); acutPrintf(_T("\n %s : %s"), key, value); }
※サンプルコードについての補足
getPartData
メソッドにパーツ参照の ID と、値を格納する CMapStringToString
のみを渡していますが、あわせて Adesk::UInt32
型の numOfItems
を渡すことで、設定されているパーツ参照の数量も取得できます。