[ブログに戻る](/ja/blog) # LabelUtilsプロトコル拡張

Yury Lebedev 11月 24, 2022 [\#rfa](/ja/blog/tag/rfa) [\#rvt](/ja/blog/tag/rvt) [\#getting started](/ja/blog/tag/getting-started)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

LabelUtilsPEは、ラベル関連の機能をBimRvのコア機能から切り離すことを目的としたプロトコル拡張（PE）です。これにより、BimRvユーザーは、異なるロケールをサポートするために独自のPEバージョンを実装できます。

#### LabelUtilsインターフェース

利用可能なメソッドの完全なリストはAPIリファレンスで確認できますが、ここではラベルを取得できるいくつかのメソッドを紹介します。

getLabelFor(enum\_value)メソッドは、組み込みの列挙値のラベルを返します。以下の列挙値がサポートされています。

- OdBm::BuiltInParameter::Enum
- OdBm::BuiltInParameterGroup::Enum
- OdBm::BuiltInCategory::Enum
- OdBm::ParameterType::Enum
- OdBm::FamilyName::Enum
- OdBm::SystemType::Enum
- OdBm::AreaSpaceType::Enum
- OdBm::ColorSchemeMessage::Enum
- OdBm::CurveElemNameType::Enum
- OdBm::PipeJointType::Enum
- OdBm::BuiltInCircuitNamingScheme::Enum
- OdBm::CableTrayShapeType::Enum
- OdBm::ScheduleFieldMultipleValuesDisplayType::Enum
- OdBm::LabelResource::Enum
- OdBm::PartitionType::Enum

getLabelForUnit() メソッドは、単位のラベルを返します。

getLabelForSymbol() メソッドは、単位記号のラベルを返します。

getLabelForSpec() メソッドは、単位仕様 (タイプ) のラベルを返します。

#### LabelUtilsPE メソッドを使用する

PE メソッドを使用するには、まず PE 実装を含むライブラリをロードします。たとえば、英語の実装を使用するには、次のコマンドを呼び出します。

```
::odrxDynamicLinker()->loadModule(L"TB_ExLabelUtils");
```

異なるロケールをサポートするには、代わりに必要なリソースを使用して LabelUtilsPE 実装を記述し、登録します。

```
// Load custom LabelUtils implementation
MyLabelUtils::rxInit();
s_MyLabelsUtils = MyLabelUtils::createObject();
// Register MyLabelUtils instance as global OdBmLabelUtilsPE one
OdBmObject::desc()->addX(OdBmLabelUtilsPE::desc(), s_MyLabelUtils);
```

カスタム実装は、SDK の初期化中に一度だけ登録します。LabelUtils インスタンスは実行時に置き換えることはできません。また、SDK のシャットダウン中に実装の登録を解除します。

```
// Unregister and release LabelUtils instance
OdBmObject::desc()->delX(OdBmLabelUtilsPE::desc());
s_MyLabelUtils.release();
MyLabelUtils::rxUninit();
```

次に、PE 実装を OdBmElement クラスにリンクし、次の呼び出しを使用してアクセスします。

```
OdBmLabelUtilsPEPtr pLabelUtils = OdBmElement::desc()->getX(OdBmLabelUtilsPE::desc());
```

カスタム実装は、同じ方法で、またはグローバルポインタ (ここでは s\_MyLabelUtils) を直接使用してアクセスできます。PE モジュールがロードされていない場合、pLabelUtils は結果としてヌルポインタを取得します。

#### BimRv での使用

LabelUtilsPE 機能は、組み込みパラメータ (ParamDef.caption) および組み込みカテゴリ (Category.name) のテーブルを構築するために使用されます。データベースが開かれたときに LabelUtilsPE モジュールがロードされていない場合、組み込みパラメータおよびカテゴリ要素は、その列挙要素名に対応する名前を取得します。また、OdBmElement::getParamValueAsString() メソッドは、LabelUtilsPE の getParamValueAsString() を暗黙的に呼び出します。

#### 例

TB\_ExLabelUtils モジュールは、英語をサポートする OdBmLabelUtilsPE インターフェースのサンプル実装です。

このモジュールには2つのモードがあります。

- 通常モード — CSV ファイルは、シンプルなテキストエディタを使用して、ソースコードをビルドすることなく変更できます。変更は実行時でも可能です (コンテンツへの最初のアクセス前。その後は値がキャッシュされ、変更は影響しません)。CSV フォルダは TB\_ExLabelUtils バイナリの近くにある必要があり、これらの CSV ファイルを削除すると実行時エラーが発生する可能性があります。通常モードは BimRv の初期実装でしたが、現在はデフォルトではありません。
- 組み込みモード (デフォルト) — CSV ファイルは TB\_ExLabelUtils に組み込まれているため、CSV フォルダを維持する必要はありません。ただし、各変更には TB\_ExLabelUtils モジュールのビルドが必要となるため、CSV ファイルを迅速に変更することはできません。

開発中はいつでもモードを変更できます。BimRv/Extensions/TB\_ExLabelUtils/CMakeLists.txt ファイルで、ENV{EMBEDED\_CSV} 変数を使用して TB\_ExLabelUtils のビルドモードを制御します。

- 1 ("SET(ENV{EMBEDED\_CSV} 1)") に設定されている場合、組み込みモードが使用されます。
- 0 ("SET(ENV{EMBEDED\_CSV} 0)") に設定されている場合、通常モードが使用されます。

サンプル実装は、Extensions/TB\_ExLabelUtils/BmSampleLabelUtilsPE.h および Extensions/TB\_ExLabelUtils/BmSampleLabelUtilsPE.cpp ファイルにあります。

## 今すぐ始める

**ODAソフトウェアを60日間無料でお試しください。  
リスクなし、クレジットカード不要。**

[無料で試す](https://www.opendesign.com/ja/free-trial)
