属性を渡すユーティリティ
Design Data Management では、カスタマイズにおいて、すべての DB*REF 属性を使用できました。Creo Elements/Direct Model Manager では属性を渡すユーティリティがサポートされているため、DB*REF 属性は使用されなくなりました。パフォーマンス上の理由から、Creo Elements/Direct Model Manager が Creo Elements/Direct Modeling に送信するのは、必要な (設定された) 属性だけになります。属性を渡すユーティリティを使用しない限り、これまで使用できた DB*REF 属性にはアクセスできません。
* 
移行期間を提供する目的で追加されていた <TransferToModeling> タグおよび関連コードは、OneSpace Manager 2006 では削除されました。
属性を渡すユーティリティでは、Modeling 内でデータベース属性の定義と管理を簡単に行うことができます。データベースのデータ辞書を維持しつつ、データを必要な属性のみに転送することで転送量を最小化します。
<TargetAttributeName> 仕様を使用すると、同一の DB 属性を、Creo Elements/Direct Modeling に表示可能な複数の異なる擬似属性として Creo Elements/Direct Modeling に転送できます。それぞれの属性ごとに一意の名前を使用することで、異なる複数のユーザが同一の DB 属性に基づくカスタマイズを持つことが可能になります。名前の重複を回避するために、属性の名前には、会社名を基にした接頭記号を付けることをお勧めします (たとえば、デフォルトの NAME 属性の代わりに COCREATE_NAME を使用します)。
<TargetAttributeName> 仕様を使用することで、既存の DB 属性へ直接マップすることのできる新たな擬似属性を、Creo Elements/Direct Model Manager 側に定義できます。ターゲットの属性では、ローカライズされていない文字をローカライズされた属性にマップすることができます。
以下の例では、ローカライズされていない MD_NAME 属性 (擬似属性) が MASTERDATA クラスに追加され、awm_stda カタログの 200 番から DB 属性 NAME に直接マップしています。
<Attribute>
MD_NAME
<TargetAttributeName catalog="awm_stda" msg_num="200">NAME</TargetAttributeName>
<Visible>false</Visible>
<Protect>false</Protect>
<DataType>VARCHAR</DataType>
<DisplayInModeling>false</DisplayInModeling>
</Attribute>
1 つの実際の属性にマッピングできる擬似属性の数には、制限はありません。たとえば、すべてが NAME 属性を指す擬似属性を 5 つ作成できます。唯一の問題点は、属性が適用される際に、データベース内には最新の値しか存在しないという点です。単一の属性に対する複数のマッピングの作成は、属性を読み取る場合には機能しますが、属性を設定する際には、1 つのカスタマイズのみが適用されます。
擬似属性を定義するよう XML を設定した後で、擬似属性が Creo Elements/Direct Modeling 側に存在するように定義できます。この定義は、属性を渡すユーティリティを使用することで、簡単に実行できます。
(oli::sd-define-db-attribute "MD-NAME"
:class-name "_MASTERDATA"
:attachment :contents
:keys '("MD_NAME")
:allowed-owner-types :part-assembly
:master :all
:on-copy :copy
:command-name 'assign_name_attribute)
class-name の _MASTERDATA エントリに注目してください。これによって、ANY 部品クラスに基づいて属性を登録することが可能になります。特定のデータベースクラスを入力できるほか、すべての部品情報クラス (_MASTERDATA を使用) またはすべてのモデルクラス (_MODEL を使用) を対象とすることができます。
属性を渡す属性が Creo Elements/Direct Modeling 一覧ビューに表示されるよう定義する
属性を渡す値が Creo Elements/Direct Modeling 一覧ビューのいずれかに表示されるよう定義するには、以下の 3 つのステップを実行します。
1. 属性を渡す属性の定義
2. uda 列定義の定義
3. 一覧ビューの定義
1. 属性を渡す属性の定義
一覧に属性を表示するには、その属性で、属性を渡す設定が有効になっている必要があります。属性を渡すコードを使用して属性を登録するには、Creo Elements/Direct Modeling Integration Kit の sd-define-db-attribute 呼び出しを使用する必要があります。この例では、MODEL_3D クラスに DESCRIPTION2 属性を設定します。
(oli::sd-define-db-attribute "DESC2"
:class-name "MODEL_3D"
:attachment :contents
:keys
'(
("DESCRIPTION2")
)
:allowed-owner-types :part-assembly
:filing '(:db :sd-file)
:master :all
:on-split :copy
)
* 
これは、英語版のシステムでのみ動作します。
2. uda 列定義の定義
uda 列定義を作成する必要があります。定義の作成には、属性のタイプに応じて、以下のいずれかの呼び出しを使用します。
sd-create-uda-string-column-definition
sd-create-uda-integer-column-definition
sd-create-uda-float-column-definition
sd-create-uda-boolean-column-definition
sd-create-uda-enum-column-definition
この例では、sd-create-uda-string-column-definition 呼び出しを使用します。
(oli::sd-create-uda-string-column-definition :description2-column
:title "Desc2"
:attribute "DESC2"
:value-list-key "DESCRIPTION2"
:attachment :contents
)
この呼び出しで重要な部分は、:attribute および :value-list-key です。:attribute の値は、ステップ 1 の sd-define-db-attribute の値に一致させる必要があります (この例では、DESC2)。:value-list-key は、ステップ 1 の :keys の値に一致させる必要があります (この例では、DESCRIPTION2)。
3. 一覧ビューの定義
新規の一覧ビューを作成して列を表示することも、また、標準の Creo Elements/Direct Modeling ビューのいずれかをコピーして列を追加することもできます。
この例では、DESCRIPTION2 属性のみを表示する新規のビューを作成します。
(oli:sd-create-browser-view "MM-DESC2-ONLY"
:title "Desc2 Only"
:tree-config '(:instance-name " [" :mm-version "] " :mm-state)
:detail-config '(:description2-column)
:activate-detail-configuration t
:enable '(oli:sd-license-free-module-active-p "ModelManager")
)
この例では、Creo Elements/Direct Model Manager のデフォルトの詳細ビューを指定変更します。
(oli:sd-create-browser-view "MM_DETAILS"
:title "Details"
:tree-config '(:instance-name " [" :mm-version "] " :mm-state)
:detail-config '( :doc-uid-column :mm-version :description2-column
:mm-state :part-uid-column :in-packet-dms-name-column :shared
:selective-instance-context :path-name :modifiable :modified
:clip-flag)
:activate-detail-configuration t
:enable '(oli:sd-license-free-module-active-p "ModelManager")
)
これは役に立ちましたか?