作成者: |
|
作成日: |
2004-02-16 |
• ArchiCAD 13 |
|
プラットフォーム: |
• Mac OS X |
対象: |
• 上級ユーザー |
参照: |
• [tracking number] |
目次:
目次
ライブラリオブジェクトのグローバルユニークID(GUID)
オブジェクトライブラリは複雑になってきているので、ライブラリオブジェクトおよびその改訂版を追跡する機能がArchiCAD 8から搭載されています。つまり、72文字の英数字からなる内部コードとオブジェクト名またはオブジェクトファイル名の組み合わせで、各オブジェクトを特定しています。
GUIDとは
GUIDは2つの部分から構成されており、各部分は36文字です。最初の36文字が「メインID」、最後の36文字が「改訂ID」を表しています。
- メインIDは、ライブラリ部品を初めて保存した時に作成されます。また、[名前を付けて保存]コマンドでライブラリ部品を保存した時に変更されます。
- ライブラリ部品を初めて保存した時に改訂IDも作成されますが、[上書き保存]コマンドでライブラリ部品を保存した時に変更されます。
ライブラリ部品の識別
オブジェクトをArchiCADに配置する際、そのオブジェクトの名前より先にGUIDが参照されます。 ライブラリをロードする際、配置されているオブジェクトとロードされたライブラリ部品を一致させるために以下の条件で順番に識別されます:
- GUIDが完全に一致するものを検索します。
- 完全に一致するものがない場合、最初の部分であるメインIDが一致するものを検索します。
- ArchiCADバージョン8-11では、メインIDが一致するものがない場合、ライブラリ部品の名前が一致するものを検索します(ArchiCAD 12の変更については、この記事の最後をご覧ください)。
ArchiCAD 8より古いバージョンのライブラリ部品にはGUIDはありません。そのため、ファイル内にこのようなライブラリ部品がある場合には、そのGUIDは「0」の羅列となります。上記の1、2の識別手順では検索できませんので、名前が一致するものを検索します。
例
新規のライブラリ部品を作成するとします。テンプレートとして「Model Element」ライブラリ部品を選びます。このテンプレートのGUIDは
{103E8D2C-8230-42E1-9597-46F84CCE28C0}-{CE15CD1D-E6C8-4C6B-B919-C4E367D3983A}
です。
このライブラリ部品に「Chair1.gsm」と名前を付けて保存します。すると、GUIDは
{5E258C98-C74E-43E6-9F8A-894F2F9A3E22}-{9AD91219-5A87-4C64-8F32-84CB4DFB5E05}
になります。前の数字とは全く異なることが分かります。
これに修正を加えてから保存します。そのGUIDを調べてみると、
{5E258C98-C74E-43E6-9F8A-894F2F9A3E22}-{ACFAA215-4B96-4CA2-9277-4C613AD50AC7}
になっています。GUIDのメインIDの部分は変わっていませんが、改訂IDが変わっていることが分かります。
ここで、このライブラリ部品を[ファイル]→[名前を付けて保存]コマンドで、「Chair2.gsm」と名前を付けて保存し直すと、今度は
{463F5328-53EC-4255-AC9F-614AB6B26C10}-{7521BF5D-66E3-4A62-8FD3-E5DFA4B245B7}
という異なるGUIDになります。
この新しい「Chair2.gsm」の名前を「Chair1.gsm」に変えたい場合があるかもしれませんが、問題はありません。その理由として、第一にWindowsでもMacでも 全く同じ名前のファイルを同一フォルダに入れることはできません。したがって、ロードしたライブラリに同じ名前のライブラリ部品が2つある場合には2つの異なるフォルダに入れなければなりません。
ライブラリを2つ(1つは元の「Chair1.gsm」が入り、もう1つには「Chair2.gsm」として保存後に「Chair1.gsm」に名前を変えて保存したものが入っている) ロードした場合、ArchiCADのステータスウインドウではその2つのライブラリ部品が「名前が重複」していることを表示します。これは、2つのライブラリ部品の名前は同じですがGUIDが異なるからです。
ロードした2つのライブラリに「Chair1.gsm」ファイルが2つ、1つは元の、もう1つはコピーした後に修正し保存したもの([名前を付けて保存]ではなく)ある場合、そのメインIDは同じままなので、ステータスウインドウで[重複しているライブラリ部品]として報告されます。
同じ名前を持つ2つ以上のライブラリオブジェクトをロードした場合は、GUIDにより実際に全く同一のものか、改訂版なのか、あるいは完全に異なるのかをArchiCADが判断します。
ライブラリオブジェクトの正確なGUIDを確認する方法
要素のGUIDを確認できる唯一の場所は、[サブタイプ別にオブジェクトを開く]ダイアログです。このダイアログを開くには、[GDLライブラリ部品を編集]ツールバーを開いてください(別の方法として、作業環境でメニュー構成に[サブタイプ別にオブジェクトを開く]コマンドを追加することもできます)。
[サブタイプ階層]ダイアログで、サブタイプ階層ツリーでオブジェクトを探してください。ライブラリオブジェクトは、リスト内で緑色で表示されます。
階層でライブラリ部品がある場所が分からない場合、属している「テンプレート」を見つける必要があります。これを行うには、ライブラリ部品をエディターで開いて、[サブタイプを選択...]ボタンをクリックします。
ライブラリエディターの[サブタイプを選択...]ボタン
サブタイプ階層ダイアログが開きます。注意する点として、ここで表示されるGUIDは編集したライブラリ部品のGUIDではなく、その元になった要素(テンプレート)のGUIDです。下記の画面では選択された要素が「Armchair 01.gsm」ではなく、直接の元になった要素「Seating」であることが分かります。 その名前、バージョン、GUID、保存された場所が表示されています。
サブタイプ階層のライブラリ部品の「パス」を記録しておいて、[サブタイプ別にオブジェクトを開く]に戻って、ライブラリ部品のGUIDを表示してください。
ロードしたライブラリ内で2つのライブラリ部品のGUIDがかぶる場合は、ライブラリロードリポートがライブラリ部品の重複を警告してきます。この場合、問題のライブラリ部品のGUIDも表示されます。
逆のことも言えます:全てのライブラリ部品がきちんとロードされた後、ライブラリロードリポートによる警告表示が出なければ、ロードしたライブラリに同じGUIDのライブラリ部品はない、と思ってよいのです。
ライブラリロードレポート
4つの重要なカテゴリーがあります:
- 欠落
- 重複(理由は何であれ、ロードしたライブラリの中に同じGUIDのライブラリ部品があると、ライブラリロードレポートがライブラリ部品の重複警告を知らせます)
- 名前の重複(名前が同じ場合のみ)
- 複数のバージョン(メインIDが同じで、改訂IDが異なる場合のみ)
マクロの場合
キッチン戸棚と標準的なドアを例にとってみましょう。両方とも「ノブ」と名付けられたオブジェクトを呼び出すことがあるでしょうが、戸棚のノブとドアノブとでは全く異なるファイルになるかもしれません。世界中でソフト開発者および製品製造者が何千ものGDLを作っているのでこのような状況が起きる可能性があります。GUIDがあるおかげで、ArchiCADはGDLソフト開発者に固有の部品名の使用を強要しなくても、広範にわたるライブラリ部品を使用できるのです。それで部品名はわかり易くシンプルであること、しかもArchiCADにとっては膨大かつ複雑なライブラリを管理しやすいように内部的には緻密であることが可能になっています。また、配置したライブラリ部品を新しいバージョンに更新するための今までにない手法を容易にしてもいます (この点については次に詳しく説明します)。
ライブラリ部品のスクリプトにマクロコールが入っていると、ArchiCADが、ロードしたライブラリ内に特定マクロ名のマクロが存在するかどうか調べます。存在していれば、そのライブラリ部品を保存したときに、マクロがコール元であるライブラリ部品にそのGUID情報を組み込みます。こうして、マクロの検索対象が通常のライブラリオブジェクトのようにGUID、メインID、名前の順で識別されることになります。あるGUIDのついたマクロに対するマクロコールが入ったライブラリ部品をお持ちだとしましょう。その後、別のライブラリをロードしたら、名前は同じで、GUIDが異なるマクロが含まれていました。そのマクロをコールしているライブラリオブジェクトを修正して保存すると、ArchiCADは、ロード済みライブラリを調べて同じGUIDのマクロを探します。見つかりません。次に、同じメインIDのマクロを探します。見つかりません。こんどは同じ名前のマクロを探します。1つ見つかり、GUIDを採用します。このGUIDが、マクロ検索用に記憶したGUIDの以前の値を上書きするマクロ検索と一緒に保存されます。つまり、お持ちのライブラリ部品を修正したい場合、ライブラリと一緒に同じ名前のマクロを複数用意する必要はない、ということです。なぜなら、ライブラリ部品を保存する際、GUIDかメインIDが一致するものがない場合は、名前と一致する最初のマクロを採用します。これは、ユーザー側ではコントロールできないランダム作業となります。ライブラリ部品の変更、保存、更新に帰結する操作にはどれにもこのルールが当てはまります。
状況例
ArchiCAD8 r3で始めたプロジェクトをArchiCAD8.1 (もしくはそれ以上のバージョン)で開く
「ArchiCAD ライブラリ8」と 「ArchiCAD ライブラリ8.1」をロードする場合、8.1ライブラリに同じ名前の更新バージョンがあったとしても、プロジェクト内のライブラリ部品は引き続き8.0バージョンを参照します。「ArchiCAD ライブラリ8」はロードせずに「ArchiCAD ライブラリ8.1」をロードする場合は、プロジェクト内のライブラリ部品はその新しいライブラリにある新しいバージョンを参照します。ArchiCADの「名前を付けて保存」を使うことより、ファイルマネージャーの中で名前が変えられるために、プロジェクト内のライブラリ部品のうちいくつかは新しい名前になります。しかし、後にArchiCADライブラリを再発行するときにこのライブラリ部品の名前を変更しないようなプログラミングに変更できます。そうすれば、その新しいライブラリ部品がプロジェクト内の古いバージョンに取って代わることになり、最終的には、8.0から取ったライブラリ部品は新しい名前と新しいGUIDを持つ新しい部品に置き換えられたことになります。
ArchiCAD 7.0で始めたプロジェクトをArchiCAD 8.1 (もしくはそれ以上のバージョン)で開く
ArchiCAD 7.0のライブラリではGUIDは使われていないため、このバージョンからファイルをロードすると、バージョン8の名前による識別方法がとられます。
- 「ArchiCAD ライブラリ7.0」をロードする場合、プロジェクト内のライブラリ部品は引き続き、7.0バージョンを参照し、配置済みオブジェクトが正確に見つかります。
「ArchiCAD ライブラリ7.0」と「ArchiCAD ライブラリ8.1」をロードする場合、プロジェクト内のライブラリ部品は、重複したファイル名を持つライブラリ部品(ロードしたライブラリの両方にファイル名のあるライブラリ部品)でなければ、引き続き7.0バージョンを参照し、配置済みオブジェクトが正確に見つかります。しかし、そのライブラリ部品が両方のライブラリにあると、そのオブジェクトは可能性のある2箇所からランダムに選択されます。
「ArchiCAD ライブラリ8.1」をロードする場合、プロジェクト内のライブラリ部品は8.1バージョンにそのような名前を持つライブラリ部品が見つかれば、8.1バージョンを参照します。ライブラリ部品のパラメーターの値はそのまま残ります。その8.1ライブラリ部品に新しいパラメーターが含まれていれば、パラメーターはデフォルトの値になります。スクリプトが7.0以降に変更されていれば、その新しいスクリプトが効力を持ちます。
ArchiCAD 12のGUID
ArchiCAD 12以降、ライブラリ要素の識別は名前では行われず、GUID(個別の内部的な識別番号)で行われます。
ライブラリマネージャは、要素をGUIDで識別します。
識別にGUIDが必要な理由
多数のライブラリが同じ場所からロードされることは頻繁にあります。
その場合、要素が間違ったマクロをコールして、不正な結果になることがあります。
GUIDベースの識別により、不正なマクロへの参照を防ぎます。
失われた機能
失なわれた機能もあります。
例えば、5つのスラブで椅子を作成して新しい.gsmを保存した後に名前を変更し、6つのスラブで作成した新しい椅子を同じ名前で保存して、平面図に配置してある要素を1つ1つ変更しなくても良いようにできていました。配置した要素は新しいオブジェクトに名前で参照されていたので、このようなことが可能でした。
バージョン12以降では、新しい要素には新しいGUIDが設定され、名前のテキスト情報は識別の条件となりません。上記のような手法では、配置された椅子は5つのスラブで作成した古い椅子に参照されます(名前は変更されていますが)。
GUIDについて
要約:
GUIDは2つの部分から構成されており、各部分は36文字です。最初の36文字が「メインID」、最後の36文字が「改訂ID」を表しています。
GUIDの最初の部分は、ライブラリ部品を開いて[名前を付けて保存]コマンドを使用した時に変更されます。
GUIDの最後の部分は、ライブラリ部品を開いて[上書き保存]コマンドを使用した時に変更されます。
ライブラリ部品を参照する際、まずGUIDが完全に一致するものを検索します。
完全に一致するものがない場合、最初の部分であるメインIDが一致するものを検索します。
どちらも一致するものがない場合、検索は中止されます。
注記: ArchiCAD 12以前のバージョンでは、最後の方法として名前のテキスト情報で検索を継続します。
