【AutoCAD Mechanical】パーツ参照を作成する その3
パーツ参照の情報を設定する
これまでの記事では作成したパーツ参照のプロパティは空欄でした。
【AutoCAD Mechanical】パーツ参照を作成する その1 - development of
パーツ参照を作成する その2 - development of
今回はパーツ参照のコンポーネントのプロパティに値を追加していきます。
サンプルコード
// パーツ参照を選択 AmiPickObj PickObj; if (amiPick( _T("\nパーツ参照を選択"), AmiKeyType::partKey, NULL, PickObj, Adesk::kFalse) != Acm::eOk) return; AcDbFullSubentPath subentPath; AcGePoint3d pickPoint; AcGeVector3d pickVector; AcGeMatrix3d viewTrans; Adesk::Boolean isGhost; // 選択したときの情報を取得 if (amiGetPickInfo( &PickObj, subentPath, pickPoint, pickVector, viewTrans, isGhost) != Acm::eOk) return; // パーツ参照のObjectIdを取得 AcDbObjectId partRefId = subentPath.objectIds().first(); // パーツ参照のプロパティの値を入力 ACHAR name[512]; if (acedGetString(0, _T("\n名前を入力"), name) != RTNORM) return; ACHAR descr[512]; if (acedGetString(0, _T("\n説明を入力"), descr) != RTNORM) return; ACHAR standard[512]; if (acedGetString(0, _T("\n規格を入力"), standard) != RTNORM) return; ACHAR material[512]; if (acedGetString(0, _T("\n材料を入力"), material) != RTNORM) return; ACHAR dim[512]; if (acedGetString(0, _T("\n寸法を入力"), dim) != RTNORM) return; ACHAR units[512]; if (acedGetString(0, _T("\n単位を入力"), units) != RTNORM) return; ACHAR qty[512]; if (acedGetString(0, _T("\n数量を入力"), qty) != RTNORM) return; // パーツ参照のプロパティ const LPCTSTR keyName = _T("NAME"); // 名前 const LPCTSTR keyDescr = _T("DESCR"); // 説明 const LPCTSTR keyStabdard = _T("STANDARD"); // 規格 const LPCTSTR keyMaterial = _T("MATERIAL"); // 材料 const LPCTSTR keyDim = _T("DIM"); // 寸法 const LPCTSTR keyUnits = _T("BOM_UNITS"); // 単位 const LPCTSTR keyQty = _T("QTY"); // 数量 Adesk::UInt32 numOfItems; CMapStringToString valueMap; // 入力した値をセット valueMap.SetAt(keyName, name); valueMap.SetAt(keyDescr, descr); valueMap.SetAt(keyStabdard, standard); valueMap.SetAt(keyMaterial, material); valueMap.SetAt(keyDim, dim); valueMap.SetAt(keyUnits, units); valueMap.SetAt(keyQty, qty); numOfItems = _ttoi(qty); // 部品表にパーツ参照のデータをセット if(acmBomMgr->setPartData( partRefId, numOfItems, valueMap) != Acm::eOk) return;
※サンプルコードについての補足
パーツ参照には次の表のようなプロパティがあり、各プロパティに対してのキー名が割り振られています。
プロパティ名 | キー名 |
---|---|
名前 | NAME |
説明 | DESCR |
規格 | STANDARD |
材料 | MATERIAL |
寸法 | DIM |
単位 | BOM_UNITS |
数量 | QTY |
パーツ参照にパーツの情報を割り当てるには、CMapStringToString
クラスを使用して、これらのプロパティのキー名と値のマップを作成し、AcmBOMManager::setPartData
メソッドを使用してパーツ参照に値を設定します。