(57)【要約】【課題】異なるファイル形式で出力されたＣＡＤデータの同一性を検証すること。【解決手段】ｐ２１形式で出力されたＣＡＤデータ（以下ｐ２１データ）とｓｆｃ形式で出力されたデータ（以下ｓｆｃデータ）について、ｓｆｃデータの図面要素データと、ｐ２１データの図面要素データをそれぞれ配列ａ、配列ｂにパラメータと共に格納する。そして、パラメータを比較することにより、配列ａの要素と配列ｂの要素を対応（マッチング）する。配列ａの要素と配列ｂの要素が１対１に対応した場合、ｓｆｃデータとｐ２１データは、同一であると判断し、１対１に対応しない場合は同一でないと判断する。【選択図】  図４
2004259087.tif 000002
【特許請求の範囲】
【請求項１】
ＣＡＤ図面上での属性を特定するパラメータが付属した図面要素データを用いて構成されたＣＡＤデータの同一性を検証するＣＡＤデータ同一性検証装置であって、
第１のＣＡＤデータと、第２のＣＡＤデータを取得するＣＡＤデータ取得手段と、
前記取得した第１のＣＡＤデータ、及び第２のＣＡＤデータから、図面要素データをパラメータが比較可能な状態で取得する図面データ取得手段と、
座標値に関するパラメータについて所定の誤差の範囲内での一致を比較することにより、前記取得した第１のＣＡＤデータの図面要素データに、前記取得した第２のＣＡＤデータの図面要素データを重複を許して対応付ける対応付け手段と、
前記対応付け手段による重複の範囲の中で前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データとの組み合わせを更新しながら、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データが１対１に対応するような、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データの組み合わせを探索する探索手段と、
前記探索手段で、前記第１のＣＡＤデータの図面要素データと、前記第２のＣＡＤデータの図面要素データが１対１に対応した場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一であると判断し、前記第２のＣＡＤデータの図面要素データが１対１に対応しなかった場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと判断する判断手段と、
を具備したことを特徴とするＣＡＤデータ同一性検証装置。
【請求項２】
前記対応付け手段は、座標値に関するパラメータ以外のパラメータに関しては、全て一致する場合に、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素を対応付けることを特徴とする請求項１に記載のＣＡＤデータ同一性検証装置。
【請求項３】
前記対応付け手段で対応付けを行った結果、前記第２のＣＡＤデータの図面要素データが対応しない前記第１のＣＡＤデータの図面要素データが存在するか、又は、前記第１のＣＡＤデータの図面要素データが対応しない前記第２のＣＡＤデータの図面要素データが存在する場合、前記探索手段は探索を行わず、前記判断手段は、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと判断することを特徴とする請求項１、又は請求項２に記載のＣＡＤデータ同一性検証装置。
【請求項４】
前記対応付け手段は、前記図面要素データの対応付け処理を、対応する図面要素の種類ごとに行うことを特徴とする請求項１、請求項２、又は請求項３に記載のＣＡＤデータ同一性検証装置。
【請求項５】
ＣＡＤ図面上での属性を特定するパラメータが付属した図面要素データを用いて構成されたＣＡＤデータの同一性を検証するＣＡＤデータ同一性検証方法であって、
ＣＡＤデータ取得手段と、図面データ取得手段と、対応付け手段と、探索手段と、判断手段と、を備えたコンピュータにおいて、
第１のＣＡＤデータと、第２のＣＡＤデータを前記ＣＡＤデータ取得手段で取得するＣＡＤデータ取得ステップと、
前記図面データ取得手段で、前記取得した第１のＣＡＤデータ、及び第２のＣＡＤデータから、図面要素データをパラメータが比較可能な状態で取得する図面データ取得ステップと、
座標値に関するパラメータについて所定の誤差の範囲内での一致を比較することにより、前記取得した第１のＣＡＤデータの図面要素データに、前記取得した第２のＣＡＤデータの図面要素データを前記対応付け手段で重複を許して対応付ける対応付けステップと、
前記対応付け手段による重複の範囲の中で前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データとの組み合わせを更新しながら、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データが１対１に対応するような、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データの組み合わせを前記探索手段で探索する探索ステップと、
前記探索手段で、前記第１のＣＡＤデータの図面要素データと、前記第２のＣＡＤデータの図面要素データが１対１に対応した場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一であると前記判断手段で判断し、前記第２のＣＡＤデータの図面要素データが１対１に対応しなかった場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと前記判断手段で判断する判断ステップと、
から構成されたことを特徴とするＣＡＤデータ同一性検証方法。
【請求項６】
ＣＡＤ図面上での属性を特定するパラメータが付属した図面要素データを用いて構成されたＣＡＤデータの同一性を検証するＣＡＤデータ同一性検証機能をコンピュータで実現するためのＣＡＤデータ同一性検証プログラムであって、
第１のＣＡＤデータと、第２のＣＡＤデータを取得するＣＡＤデータ取得機能と、
前記取得した第１のＣＡＤデータ、及び第２のＣＡＤデータから、図面要素データをパラメータが比較可能な状態で取得する図面データ取得機能と、
座標値に関するパラメータについて所定の誤差の範囲内での一致を比較することにより、前記取得した第１のＣＡＤデータの図面要素データに、前記取得した第２のＣＡＤデータの図面要素データを重複を許して対応付ける対応付け機能と、
前記対応付け機能による重複の範囲の中で前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データとの組み合わせを更新しながら、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データが１対１に対応するような、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データの組み合わせを探索する探索機能と、
前記探索機能で、前記第１のＣＡＤデータの図面要素データと、前記第２のＣＡＤデータの図面要素データが１対１に対応した場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一であると判断し、前記第２のＣＡＤデータの図面要素データが１対１に対応しなかった場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと判断する判断機能と、
をコンピュータで実現するためのＣＡＤデータ同一性検証プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＣＡＤデータ同一性検証装置などに関し、例えば、ｓｆｃ形式で構成されたＣＡＤデータとｐ２１形式で構成されたＣＡＤデータの同一性を検証するものに関する。
【０００２】
【従来の技術】
近年のコンピュータの急激な発展に伴い、従来はドラフタなどを用いて手作業で行っていた設計図面の作成をＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）を用いて行うようになってきた。
ＣＡＤは、コンピュータを用いた設計支援技術であって、マウス、タブレット、キーボードなどの入力装置を用いてディスプレイ上で作図を行うことができる。
ディスプレイ上には座標系が設定してあり、ユーザは、この座標系上に、点、直線、円などの各種の描画要素を配置していき、設計図面を作成する。
ＣＡＤには、汎用のものから建築用、機械設計用、電子回路設計用などの特定の分野に特化したものまで様々な製品が提供されており、ユーザは、自分の業務に適したものを選択して利用している。
【０００３】
これらＣＡＤを用いて設計作業を支援するＣＡＤ装置は、作成した設計図面をＣＡＤデータとして出力する。そして、出力されたＣＡＤデータのファイル形式は、各種のものが存在し、異なるファイル形式間での互換性が無い場合がある。
その場合、あるＣＡＤ装置で作成されたファイルを他のＣＡＤで利用するためには、ファイル形式を変換することになる。
また、ＣＡＤ装置の中には、複数のファイル形式でＣＡＤデータを出力でき、ユーザがファイル形式を選択できるようになっているものもある。
このようにして、同一の設計図面に対して、複数のファイル形式のＣＡＤデータが存在する場合がある。
【０００４】
ところで、通常ＣＡＤでは、同一の点と見なされる座標の範囲（以下、許容座標誤差範囲と呼ぶ）が設定してあり、この範囲に含まれる点は同一の点として処理する。これは、数値計算により生じる誤差などを吸収し、設計図面に整合性を持たせるためである。
そのため、同じ設計図面に描かれた同一の図面要素であっても、その座標値が出力するファイル形式により、許容座標誤差範囲内で異なる場合がある。
また、複数のファイル形式に係るＣＡＤデータを処理する発明として、次の図面編集装置がある。
【０００５】
【特許文献１】特開平１１−０３１１６７
【０００６】
この装置は、異なるファイル形式（ファイルフォーマット）に係るＣＡＤデータを、そのまま編集することができるものである。このため、各種のファイル形式を単一の中間フォーマットに変換する必要が無く、変換に伴って発生するＣＡＤデータの劣化（データ落ちなどにより生じる）を防止するものである。
【０００７】
【発明が解決しようとする課題】
以上に説明したように、同一の設計図面のＣＡＤデータが複数のファイル形式で存在する場合がある。
そして、このような場合、これら異なるファイル形式のＣＡＤデータが同一の設計図面を構成するか確認したい場合がある。
このような場合として、例えば次のようなものがある。
公共事業の受注者が発注者に設計図面を第１のファイル形式で出力された第１のＣＡＤデータで電子納品したとする。また、受注者は、同一の設計図面を第２のファイル形式で出力した第２のＣＡＤデータを原図として保管していたとする。
この場合、発注者は、提出されている第１のＣＡＤデータが電子納品される過程（あるいは電子納品された後）改竄・変更されていないかを、第２のＣＡＤデータとの同一性を検証することにより確認することができる。
【０００８】
しかし、従来は、許容座標誤差範囲内の点は同一の点として処理するというＣＡＤ特有の事情により、異なるファイル形式のＣＡＤデータの同一性を検証することは困難であった。
より詳細に述べると次のようになる。第１のＣＡＤデータと第２のＣＡＤデータの同一性を比較して確認する場合、第１のＣＡＤデータに含まれている図面要素（点マーカ、線分、円など）と第２のＣＡＤデータに含まれている図面要素を対応付ける（マッチング）ことにより行う。
図面要素が１対１に対応すれば同一であり、１対１に対応しなければ同一でないと判断することができる。
【０００９】
ところが、許容座標誤差範囲が存在するために、異なる点が同一の点として判断されて、第１のＣＡＤデータのある１つの図面要素に、複数の第２のＣＡＤデータの図面要素が対応する可能性がある。
例えば、両端点の座標値が許容座標誤差範囲に含まれる第１の直線と第２の直線があった場合、第１のＣＡＤデータの第１の直線に、第２のＣＡＤデータの第１の直線と第２の直線を対応させることができる。
【００１０】
そこで、本発明の目的は、異なるファイル形式で出力されたＣＡＤデータの同一性を容易に検証することができるＣＡＤデータ同一性検証装置、ＣＡＤデータ同一性検証方法、及びＣＡＤデータ同一性検証プログラムを提供することである。
【００１１】
【課題を解決するための手段】
請求項１に記載した発明では、ＣＡＤ図面上での属性を特定するパラメータが付属した図面要素データを用いて構成されたＣＡＤデータの同一性を検証するＣＡＤデータ同一性検証装置であって、第１のＣＡＤデータと、第２のＣＡＤデータを取得するＣＡＤデータ取得手段と、前記取得した第１のＣＡＤデータ、及び第２のＣＡＤデータから、図面要素データをパラメータが比較可能な状態で取得する図面データ取得手段と、座標値に関するパラメータについて所定の誤差の範囲内での一致を比較することにより、前記取得した第１のＣＡＤデータの図面要素データに、前記取得した第２のＣＡＤデータの図面要素データを重複を許して対応付ける対応付け手段と、前記対応付け手段による重複の範囲の中で前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データとの組み合わせを更新しながら、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データが１対１に対応するような、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データの組み合わせを探索する探索手段と、前記探索手段で、前記第１のＣＡＤデータの図面要素データと、前記第２のＣＡＤデータの図面要素データが１対１に対応した場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一であると判断し、前記第２のＣＡＤデータの図面要素データが１対１に対応しなかった場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと判断する判断手段と、を具備したことを特徴とするＣＡＤデータ同一性検証装置を提供する。請求項２に記載の発明では、前記対応付け手段は、座標値に関するパラメータ以外のパラメータに関しては、全て一致する場合に、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素を対応付けることを特徴とする請求項１に記載のＣＡＤデータ同一性検証装置を提供する。
請求項３に記載の発明では、前記対応付け手段で対応付けを行った結果、前記第２のＣＡＤデータの図面要素データが対応しない前記第１のＣＡＤデータの図面要素データが存在するか、又は、前記第１のＣＡＤデータの図面要素データが対応しない前記第２のＣＡＤデータの図面要素データが存在する場合、前記探索手段は探索を行わず、前記判断手段は、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと判断することを特徴とする請求項１、又は請求項２に記載のＣＡＤデータ同一性検証装置を提供する。
請求項４に記載の発明では、前記対応付け手段は、前記図面要素データの対応付け処理を、対応する図面要素の種類ごとに行うことを特徴とする請求項１、請求項２、又は請求項３に記載のＣＡＤデータ同一性検証装置を提供する。
請求項５に記載の発明では、ＣＡＤ図面上での属性を特定するパラメータが付属した図面要素データを用いて構成されたＣＡＤデータの同一性を検証するＣＡＤデータ同一性検証方法であって、ＣＡＤデータ取得手段と、図面データ取得手段と、対応付け手段と、探索手段と、判断手段と、を備えたコンピュータにおいて、第１のＣＡＤデータと、第２のＣＡＤデータを前記ＣＡＤデータ取得手段で取得するＣＡＤデータ取得ステップと、前記図面データ取得手段で、前記取得した第１のＣＡＤデータ、及び第２のＣＡＤデータから、図面要素データをパラメータが比較可能な状態で取得する図面データ取得ステップと、座標値に関するパラメータについて所定の誤差の範囲内での一致を比較することにより、前記取得した第１のＣＡＤデータの図面要素データに、前記取得した第２のＣＡＤデータの図面要素データを前記対応付け手段で重複を許して対応付ける対応付けステップと、前記対応付け手段による重複の範囲の中で前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データとの組み合わせを更新しながら、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データが１対１に対応するような、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データの組み合わせを前記探索手段で探索する探索ステップと、前記探索手段で、前記第１のＣＡＤデータの図面要素データと、前記第２のＣＡＤデータの図面要素データが１対１に対応した場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一であると前記判断手段で判断し、前記第２のＣＡＤデータの図面要素データが１対１に対応しなかった場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと前記判断手段で判断する判断ステップと、から構成されたことを特徴とするＣＡＤデータ同一性検証方法を提供する。
請求項６に記載の発明では、ＣＡＤ図面上での属性を特定するパラメータが付属した図面要素データを用いて構成されたＣＡＤデータの同一性を検証するＣＡＤデータ同一性検証機能をコンピュータで実現するためのＣＡＤデータ同一性検証プログラムであって、第１のＣＡＤデータと、第２のＣＡＤデータを取得するＣＡＤデータ取得機能と、前記取得した第１のＣＡＤデータ、及び第２のＣＡＤデータから、図面要素データをパラメータが比較可能な状態で取得する図面データ取得機能と、座標値に関するパラメータについて所定の誤差の範囲内での一致を比較することにより、前記取得した第１のＣＡＤデータの図面要素データに、前記取得した第２のＣＡＤデータの図面要素データを重複を許して対応付ける対応付け機能と、前記対応付け機能による重複の範囲の中で前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データとの組み合わせを更新しながら、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データが１対１に対応するような、前記第１のＣＡＤデータの図面要素データと前記第２のＣＡＤデータの図面要素データの組み合わせを探索する探索機能と、前記探索機能で、前記第１のＣＡＤデータの図面要素データと、前記第２のＣＡＤデータの図面要素データが１対１に対応した場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一であると判断し、前記第２のＣＡＤデータの図面要素データが１対１に対応しなかった場合に、前記第１のＣＡＤデータと前記第２のＣＡＤデータが同一でないと判断する判断機能と、をコンピュータで実現するためのＣＡＤデータ同一性検証プログラムを提供する。
【００１２】
【発明の実施の形態】
以下、本発明の好適な実施の形態について詳細に説明する。
［実施の形態の背景］
近年の電子政府化の推進により、公共事業（建築分野）に関する設計図面の電子納品が行われるようになってきた。電子納品とは、発注者（公的機関など）に設計図面のＣＡＤデータをオンラインで（又は記憶媒体に記憶して）納品することである。
そのため、受注者が提出するＣＡＤデータに関し、交換フォーマットの標準仕様を定める必要が生じ、各種のＣＡＤ間で正確にデータ交換ができる交換標準であるＳＸＦ標準仕様が定められた。
【００１３】
ＳＸＦ標準に適合したファイル形式として、ｐ２１形式とｓｆｃ形式がある。ｐ２１形式は、主に電子納品に用いられ、ｓｆｃ形式は、主に関係者間でＣＡＤデータ交換のために用いられる。
このように、ＳＸＦ標準では２つのファイル形式を用いるため、同一の設計図面に関するＣＡＤデータが２つのファイル形式で存在することある。
そこで、ｐ２１形式のファイルとｓｆｃ形式のファイルの同一性を検証する（同一の設計図面を表しているかどうかを検証する）方法があると様々な応用が考えられている。
例えば、設計図面の原本としてｓｆｃ形式のファイルが保存してあり、電子納品をｐ２１形式のファイルで行った場合、このｓｆｃ形式のファイルのＣＡＤデータとｐ２１形式のファイルのＣＡＤデータの同一性を確認することにより、電子納品したｐ２１形式のファイルが第三者によって改竄されていないか確認することができる。
【００１４】
［実施形態の概要］
本実施の形態では、ｐ２１形式で出力されたＣＡＤデータ（以下ｐ２１データ）とｓｆｃ形式で出力されたデータ（以下ｓｆｃデータ）が同一の設計図面を表したものか否かを以下の手法により検証する。
ＣＡＤデータは、仮想的な用紙、レイヤ、点マーカ、線分、円、シンボル、寸法線といった、図面要素を表す図面要素データを用いて構成されている。これら図面要素データには、図面要素が設計図面においてどのように表現されているかを規定するパラメータ（例えば、線分であれば、始点終点の座標値、線の太さ・色、配置されているレイヤなど）が付属している。
そこで、ｓｆｃデータの図面要素データと、ｐ２１データの図面要素データをそれぞれ配列ａ、配列ｂにパラメータと共に格納し、パラメータを比較することにより、配列ａの要素と配列ｂの要素を対応（マッチング）する。
【００１５】
配列ａの要素と配列ｂの要素が１対１に対応した場合、ｓｆｃデータとｐ２１データは、同一であると判断され、１対１に対応しない場合は同一でないと判断される。
また、配列ａと配列ｂの対応付けは、仮想的な用紙、レイヤ、線分、円など図面要素の種類ごとに行う。これにより、例えば、線分の図面要素と円の図面要素を対応付けるといった、無駄な対応付けを行わなくて済む。
更に対応付けは、まず、配列ａの要素をソートしておき、配列ａの各要素に配列ｂの要素を対応付ける。そして、配列ａの要素に複数の配列ｂの要素が対応している場合、配列ａの要素と配列ｂの要素の組み合わせを更新しながら、配列ａの要素と配列ｂの要素が１対１に対応するような配列ａの要素と配列ｂの要素の組み合わせを探索する。
【００１６】
［実施形態の詳細］
まず、本実施の形態で扱うＣＡＤデータの構成について説明する。このＣＡＤデータの構成は、ＣＡＤデータのファイル形式に関わらず同じである。
また、本実施の形態では、ＣＡＤデータのファイル形式として、ｐ２１形式とｓｆｃ形式を用いて説明する。なお、これは、ＣＡＤデータのファイル形式をｐ２１形式とｓｆｃ形式に限定するものではなく、他の形式のファイル形式に対して適用することもできる。
【００１７】
図１は、ＣＡＤで描かれた設計図面の構成を説明するための概念図である。
ＣＡＤでは、仮想上の用紙の上に、点マーカ、線分、円、寸法線、などを配置していくことにより設計図面を描く。
この仮想的な用紙１０には、座標系１９が設定してあり、この用紙１０上に図形を描くことにより、座標空間中に図形を配置することができる。
また、この仮想の用紙１０はレイヤと呼ばれる複数の層（レイヤ１１ａ、１１ｂ、１１ｃ…）から構成されており、ユーザは、レイヤを選択して、そのレイヤ上に設計図面を描くことができる。
レイヤは、選択的に操作することができるようになっている。そのため、例えば、幾何学的な形状をレイヤ１に描き、寸法線をレイヤ２に描いておき、レイヤ１とレイヤ２を同時に表示して寸法線が描かれた図面を表示したり、あるいは、レイヤ２を非表示にしてレイヤ１に描かれた幾何学的な形状のみを表示したりすることができ、製図作業や図面の利用効率を高めることができる。
【００１８】
用紙上に描かれる図面要素は、例えば、線分１２ａ、１２ｂ、１２ｃ、円１５ａ、１５ｂ、といった幾何学的な形状を持ったものや、点マーカ１７のような座標空間中での位置を示すもの、また、寸法線、角度寸法線、テキストデータ、シンボル（例えば、屋根の傾きを表す記号表記）など各種のものがある。
このように、ＣＡＤデータは、仮想上の用紙、レイヤといった図面構造を表す図面要素や、点マーカ、線分といった幾何学的な形状や表記を表す図面要素、及びシンボル、記号といった構造化された（例えば、バルーンは円、矢線、円中のテキストデータが構造化されて構成されている）図面要素から構成されている。
そして、本実施の形態のＣＡＤデータは、次に説明するフィーチャという概念を用いてこれら図面要素を管理している。
【００１９】
図２は、フィーチャの構成を説明するための図である。
フィーチャは、図面要素の管理単位である。フィーチャは、フィーチャ名を持つと共に、設計図面上で図面要素の表現を特定するパラメータが付属している。
例えば、線分を表す図面要素は線分フィーチャと呼ばれ、線分が描かれているレイヤ、線分の始点終点の座標値、線種、線幅などの、設計図面におけるその線分の表現を特定するパラメータが付属している。
パラメータの種類は、例えば、線分フィーチャであれば始点終点の座標値、…、円フィーチャであれば中心点の座標値、…などと、フィーチャごとに設定されている。
以下、これらフィーチャについてより詳細に説明する。
【００２０】
フィーチャは大きく分類して、図面構造フィーチャ群、幾何表記要素フィーチャ群、構造化要素フィーチャ群の３種類に区分される。
図面構造フィーチャ群は、ＣＡＤデータを構成する上で基本となる情報を規定するフィーチャから構成されている。
図面構造フィーチャ群は、用紙フィーチャ、レイヤフィーチャ、既定義線種フィーチャ、ユーザ定義線種フィーチャ、既定義色フィーチャ、ユーザ定義色フィーチャ、線幅フィーチャ、文字フォントフィーチャなどから構成されている。
【００２１】
用紙フィーチャは、設計図面が描かれている仮想的な用紙を指定する用紙フィーチャであり、図面名、用紙サイズなどを規定している。用紙フィーチャを参照することにより、そのＣＡＤデータで用いられている仮想的な用紙を特定することができる。
レイヤフィーチャは、後述する幾何表記要素、構造化要素から参照されるテーブル要素であって、各レイヤを特定するレイヤコードと、そのレイヤの名称、表示・表示状態などが対応付けられている。
レイヤフィーチャは、パラメータとしてレイヤ名や、レイヤの表示・非表示状態を示すフラグなどを持つ。
レイヤフィーチャを参照することにより、各レイヤのレイヤ名や状態を特定することができる。
【００２２】
既定義線種フィーチャは、幾何表記要素、構造化要素から参照されるテーブル要素であって、例えば、既定義線種コード１は実線、既定義線種コード２は点線などと、既定義線種コードにより線種が特定できるようになっている。なお、これら各線種はシステム側で予め定義されている線である。
既定義線種フィーチャはパラメータとして線種名を持ち、線種コードと線種名が対応付けられている。
【００２３】
同様に、以下のフィーチャは幾何表記要素、構造化要素から参照されるテーブル要素であって、ユーザ定義線種フィーチャは、ユーザ定義線種コードとユーザが定義した線種を対応付けており、ユーザ定義線種コードを指定すると線種を特定することができる。
既定義色フィーチャは、既定義色コードとシステム側で予め設定された色を対応付けており、既定義色コードを指定すると色を特定することができる。色はパラメータで表されている。
ユーザ定義色フィーチャは、ユーザ定義色コードとユーザが定義した色とを対応付けており、ユーザ定義色コードを指定するとユーザが定義した色を特定することができる。色はパラメータで表されている。
線幅フィーチャは線幅コードと線幅を対応付けており、線幅コードを指定すると線幅を特定することができる。線幅は、パラメータで表されている。
文字フォントフィーチャは、文字フォントコードと文字フォントを対応付けており、文字フォントコードを指定すると文字フォントを特定することができる。文字フォントはパラメータにより表されている。
【００２４】
幾何表記要素フィーチャ群は、基本的な幾何図形などを表現するフィーチャから構成されている。
幾何表記要素フィーチャ群を構成するフィーチャとしては、例えば、点マーカフィーチャ、線分フィーチャ、折れ線フィーチャ、円フィーチャ、円弧フィーチャ、楕円フィーチャ、楕円弧フィーチャ、文字フィーチャ、スプラインフィーチャなどがある。
以下に、点マーカフィーチャと線分フィーチャを用いて、幾何表記要素フィーチャ群を構成するフィーチャについて詳細に説明する。
【００２５】
図３（ａ）は、点マーカフィーチャのデータ構成を示した図である。
なお、点マーカとは、座標位置をディスプレイ上に表示するために便宜的に図面上に打たれる点である。ディスプレイ上には表示されるが印刷はされない。例えば、ユーザが円を描き、作図の都合上、円の中心点の位置を表示しておきたい場合は、円の中心位置に点マーカを配置する。
仮想的な用紙上に配置された各マーカ点は、図に示したように、レイヤコード、色コード、配置点Ｘ座標、配置点Ｙ座標、マーカコード、回転角、尺度などのパラメータにより特定される。
【００２６】
レイヤコードは、この点マーカが配置されているレイヤのレイヤコードであり、レイヤコードをレイヤフィーチャのテーブル要素で参照することにより、この点マーカが配置されているレイヤを特定することができる。
色コードは、この点マーカの色を特定するコードであり、このコードを既定義色フィーチャ、又はユーザ定義色フィーチャで参照することにより、この点マーカの色を特定することができる。
配置点Ｘ座標、配置点Ｙ座標は、この点マーカが配置されている位置のＸ座標値、Ｙ座標値である。
【００２７】
マーカコードは、マーカの形状を特定するコードであり、例えば、コード１はアスタリスク型、コード２は円型、コード３はドットなどと予めテーブルが用意されている。
回転角、尺度は、それぞれ点マーカが配置されている回転角、尺度を表している。
このように、ＣＡＤデータに含まれる各点マーカフィーチャ（データ１、データ２、…）には、それぞれパラメータが設定されており、これらパラメータによって各点マーカフィーチャの属性（レイヤ、位置、形状、色など設計図面上での表現）が特定されるようになっている。
データ１、データ２、…の各データは、それぞれ図面上に表示される点マーカに対応し、それぞれが図面要素データを構成している。
【００２８】
図３（ｂ）は、線分フィーチャのデータ構成を示した図である。
線分フィーチャは、設計図面上に配置された線分に対応する。仮想的な用紙上に配置された線分フィーチャには、レイヤコード、色コード、線種コード、線幅コード、始点Ｘ座標、始点Ｙ座標、終点Ｘ座標、終点Ｙ座標などのパラメータが設定され、これらのパラメータにより各線分フィーチャの属性が特定される。
レイヤコードは、この線分フィーチャが配置されてるレイヤのコードでありレイヤフィーチャで規定されている。
色コードは、この線分フィーチャの色を特定するコードであり、既定義色フィーチャ、又はユーザ定義色フィーチャで規定されている。
【００２９】
線種コードは、線分フィーチャの線種（実線、点線、…）を特定するコードであり、既定義線種フィーチャ、又はユーザ定義線種フィーチャで規定されている。
線幅コードは、線分フィーチャの線幅を特定するコードであり、線幅定義フィーチャで規定されている。
始点Ｘ座標、始点Ｙ座標は、線分の始点のＸＹ座標値であり、終点Ｘ座標、終点Ｙ座標は、線分の終点のＸＹ座標値である。
このように、ＣＡＤデータに含まれる各線分フィーチャ（データ１、データ２、…）には、それぞれパラメータが設定されており、これらパラメータによって各線分フィーチャの属性が特定されるようになっている。
同様に、幾何表記フィーチャ群を構成する他の各フィーチャもパラメータにより属性が特定されるようになっている。
【００３０】
図２に戻り、構造化要素フィーチャ群を構成する各フィーチャは、複数の幾何表既要素フィーチャで構成されるフィーチャで、複数のデータを特定の単位データとして扱えるように定義したフィーチャである。例えば、寸法線は、線分フィーチャや文字フィーチャなどが組み合わされて構成されている。
構造化要素フィーチャ群を構成するフィーチャには、複合図形定義フィーチャ、複合図形配置フィーチャ、既定義シンボルフィーチャ、直線寸法フィーチャ、角度寸法フィーチャ、半径寸法フィーチャ、直径寸法フィーチャ、引出線フィーチャ、バルーンフィーチャ、ハッチング（既定義）フィーチャ、ハッチング（塗り）フィーチャ、ハッチング（ユーザ定義）フィーチャ、ハッチング（パターン）フィーチャ、複合曲線定義フィーチャなどがある。
【００３１】
複合図形定義フィーチャは、複合図形を定義するための要素である。複合図形とは、線分、円弧などの複数の幾何表記要素から構成される図名を１つの図形として定義したものである。パラメータとして複合図形名と複合図形種別フラグを持つ。このフィーチャは部分図などに用いられる。
複合図形配置フィーチャは、複合図形を配置する位置などを特定するための要素である。複合図形配置フィーチャは、パラメータとしてレイヤコード、複合図形名、ＸＹ座標値、回転角、Ｘ方向縮尺、Ｙ方向縮尺などを持つ。
以下、同様に、既定義シンボルフィーチャは、システム側で定義されているシンボルを表す要素であり、パラメータにより、シンボルの種類や、配置位置、色などの属性が規定される。
【００３２】
直線寸法フィーチャ、角度寸法フィーチャ、半径寸法フィーチャ、直径寸法フィーチャ、引出線フィーチャは、ＣＡＤデータ中の各寸法線や引出線を表すフィーチャであり、各フィーチャに設定されたパラメータによりレイヤや配置位置、表示寸法値などが規定される。
バルーンフィーチャは、ＣＡＤデータ中のバルーンを表すフィーチャであり、パラメータによりレイヤ、配置位置などが規定される。
ハッチング（既定義）フィーチャ、ハッチング（塗り）フィーチャ、ハッチング（ユーザ定義）フィーチャ、ハッチング（パターン）フィーチャは、それぞれハッチングを表すフィーチャであり、レイヤ、ハッチング領域、ハッチングが規定される。
複合曲線定義フィーチャは、複数の線分や円弧などで構成された曲線を１つの要素として表したものである。これもパラメータにより一義的に規定される。
【００３３】
図４は、本実施の形態に係るＣＡＤデータ同一性検証システム１の機能的な構成の一例を示した図である。
なお、ＣＡＤデータ同一性検証システム１は、後述するように、コンピュータでＣＡＤデータ同一性検証機能を発揮させるＣＡＤデータ同一性検証プログラムを実行することにより実現することができる。
ＣＡＤデータ同一性検証システム１は、ｐ２１データに含まれるフィーチャとｓｆｃデータに含まれるフィーチャをパラメータの比較をすることによりマッチングさせ、両データのフィーチャが１対１に対応するか否かを調べる。
上に説明したように、ＣＡＤデータを構成する各フィーチャにより設計図面が規定されるため、ｐ２１データを構成するフィーチャとｓｆｃデータを構成するフィーチャが１対１に対応した場合、両データから同じ設計図が再現できるので、両データは同一であると言えるのである。
【００３４】
ＣＡＤデータ同一性検証システム１は、ＣＡＤファイル選択部２５、ｓｆｃデータ読込部２６、ｐ２１データ読込部２７、データソート部２８、データマッチング部２９、結果出力部３０などから構成されている。
ＣＡＤファイル選択部２５は、同一性を検証するファイルを選択する機能部である。
ＣＡＤファイル選択部２５を起動すると、記憶装置に格納されているＣＡＤデータファイルの一覧が表示され、ユーザがこれらのうち同一性を検証したいｐ２１形式のファイル又はｓｆｃ形式のファイルを選択することができるようになっている。
また、ＣＡＤファイル選択部２５は、選択されたＣＡＤデータファイルの拡張子により、選択されたファイルがｐ２１形式及びｓｆｃ形式の何れであるかを判別し、選択されたファイルのファイル形式に応じてｓｆｃデータ読込部２６又はｐ２１データ読込部２７を起動する。
【００３５】
ｓｆｃデータ読込部２６（ＣＡＤデータ取得手段）は、ＣＡＤファイル選択部２５でｓｆｃ形式のファイルが選択された場合に、そのファイルからｓｆｃデータを読み込んで記憶する。
ｐ２１データ読込部２７（ＣＡＤデータ取得手段）は、ＣＡＤファイル選択部２５でｐ２１形式のファイルが選択された場合に、そのファイルからｐ２１データを読み込んで記憶する。
【００３６】
データソート部２８（図面データ取得手段）は、ｓｆｃデータ読込部２６で読み込んだｓｆｃデータに含まれるフィーチャを配列（配列ａとする）に格納（代入）すると共に、ｐ２１データ読込部２７で読み込んだｐ２１データに含まれるフィーチャを配列（配列ｂとする）に格納する。そして、フィーチャが複数の要素から構成されている場合（例えば、線分フィーチャは、一般にデータ１、データ２、…といったように複数のデータから構成されているので配列ａの要素は複数存在する）、データソート部２８は、データごとに配列ａ、ｂの要素に格納する。
【００３７】
図５は、フィーチャを配列に格納する手順を説明するための図である。
ｓｆｃデータ３５は、例えば家屋などの設計図面を構成するＣＡＤデータであり、表３７に示したような各フィーチャから構成されている。データソート部２８は、ｓｆｃデータ３５を構成する各フィーチャを配列ａに格納する。
配列ａの各要素には、フィーチャを特定する情報とそのフィーチャに設定されたパラメータが格納される。なお、マッチングは、パラメータの一部か全部を用いて行うので、マッチングに必要なパラメータだけ配列ａ、ｂに格納してもよい。
また、用紙フィーチャのように、１つの要素から構成されるものは、１つの配列要素に格納され、点マーカフィーチャや線分フィーチャのように、複数のデータから構成されるものは、データごとにフィーチャ及びデータを特定する情報、及びそのデータに設定されたパラメータを格納する。
【００３８】
同様に、ｐ２１データ４０も表４２に示したような各フィーチャから構成されている。データソート部２８は、ｓｆｃデータ３５と同様にして、ｐ２１データ４０を構成する各フィーチャを配列ｂに代入する。
また、パラメータの構成は、フィーチャの種類ごとに異なるので、これらフィーチャの種類ごとに配列ａ、ｂの要素の型を定義しておいてもよい。
この場合、配列ａ、ｂとしてフィーチャの種類をクラスとする構造体を定義することになる。
【００３９】
図４に戻り、データマッチング部２９（対応付け手段、探索手段、判断手段）は、データソート部２８から配列ａと配列ｂを受け取り、これらのパラメータを比較して配列ａ、ｂの要素を対応付ける（マッチングする）。
対応付けは、フィーチャの種類ごとに行う。即ち、まず用紙フィーチャに関して配列ａ、ｂをマッチングし、一致したら次のフィーチャについて配列ａ、ｂをマッチングする。これを全ての配列ａ、ｂについて行う。
マッチングしない要素があった場合、その時点でマッチング処理を終了し、ｓｆｃデータとｐ２１データは同一でないと判断する。
配列ａ、ｂの全ての要素が１対１にマッチングした場合、ｓｆｃデータとｐ２１データは同一であると判断する。
【００４０】
配列ａ、ｂの要素の一致を判断する基準は、フィーチャごとに設定されている。
例えば、点マーカフィーチャには７種類のパラメータが存在するが、これら全てのパラメータが一致した場合に配列ａ、ｂの要素が一致したと判断する。
また、線分フィーチャには８種類のパラメータが存在するが、これら全てのパラメータが一致した場合に、配列ａ、ｂの要素が一致したと判断する。
なお、パラメータの一致は、許容座標誤差範囲内の点の座標を同一とすることにより行う。
そのため、配列ａに格納された点マーカフィーチャの座標値と、配列ｂに格納された点マーカフィーチャの座標値が、数値の上で異なっていても、その差異が許容座標誤差範囲内にある場合、同一の点マーカフィーチャとして判断される。
そのため、配列ａのある要素に配列ｂの要素が対応する場合がでてくるが、この場合を処理するアルゴリズムについては後述する。
【００４１】
図４に戻り、結果出力部３０は、データマッチング部２９のマッチング結果を用いて、ｓｆｃデータとｐ２１データが同一であるか否かの判断結果を出力する。
【００４２】
次に、配列ａの１つの要素に対して配列ｂの複数の要素がマッチングする場合の処理について図６を用いて説明する。
まず、データソート部２８は、配列ａの要素をソートする。ソートの方法は、例えば点マーカフィーチャの場合は、Ｘ座標の小さい順にソートするなどとフィーチャごとに決められている。また、円フィーチャの場合は中心の座標、線分フィーチャの場合は始点の座標を用いるなどしてソートすることができる。
ソートした後、データマッチング部２９は、配列ａの要素のパラメータと配列ｂの要素のパラメータを比較することにより、配列ａの各要素に対して対応する配列ｂの要素を特定していく。このようにして生成された対応関係は、例えば、図６の適合配列５０のように表される。ここで、配列ｂの要素の重複を許して、配列ａ、ｂの要素を対応された組み合わせを適合配列と呼ぶことにする。
なお図６では、配列ａの要素を区別するために、各要素をａ（０）、ａ（１）、…などと表し、升目の中にその数字を記してある。配列ｂの要素に関しても同様である。
適合配列５０では、ａ（０）に対してｂ（０）がマッチし、ａ（１）に対してはｂ（１）、ｂ（２）が対応している。以下同様である。
【００４３】
次に、このようにして生成された適合配列５０から、配列ａ、ｂの要素を１対１に対応させる手順について説明する。
まず、ａ（０）にマッチするものはｂ（０）だけであるので、データマッチング部２９では、ａ（０）はｂ（０）に対応するものとして仮確定し、仮確定配列５５を生成する。
仮確定配列５５では、ａ（０）にｂ（０）が対応しているが、他の配列ａの要素に対しては、対応する配列ｂの要素が未確定となっている。ここで、配列ａ、ｂの要素を仮に１対１に組み合わせた組み合わせを仮確定配列と呼ぶことにする。仮確定配列は、後の更新処理により、組み合わせを解除される場合がある。
【００４４】
次に、データマッチング部２９は、ａ（１）に対応する配列ｂの要素を仮確定する。適合配列５０において、ａ（１）にはｂ（１）、ｂ（２）が対応しているが、このうちの何れかを仮確定する。ここでは、ｂ（１）を仮確定するものとする。このようにしてデータマッチング部２９は、仮確定配列５５を仮確定配列５６に更新する。
【００４５】
次に、データマッチング部２９は、ａ（２）に対応する配列ｂの要素を確定する。適合配列５０で、ａ（２）にマッチしている配列ｂの要素はｂ（１）のみであるので、データマッチング部２９は、ａ（２）に対してｂ（１）を仮確定し、仮確定配列５６を仮確定配列５７に更新する。しかし、ここでｂ（１）は、既にａ（１）との対応関係が仮確定しているので、ａ（２）にｂ（１）を対応付けてしまうと、配列ａと配列ｂの要素を１対１に対応付けることができない。そのため、データマッチング部２９は、ａ（１）、ａ（２）の対応関係を解消し、一段階前の、ａ（１）の対応関係を仮確定する段階に戻る。
適合配列５０で、ａ（１）に対応しているものは、ｂ（１）の他にｂ（２）があるので、データマッチング部２９は、ａ（１）に対してｂ（２）を対応付ける。このようにしてデータマッチング部２９は、仮確定配列５７を仮確定配列５８に更新する。
【００４６】
次に、データマッチング部２９は、ａ（２）に対応する要素としてｂ（１）を対応付け、仮確定配列５８を仮確定配列５９に更新する。
次に、データマッチング部２９は、ａ（３）にｂ（２）を対応付けるが、ｂ（２）は既にａ（１）に対応付けられているので、ｂ（２）の仮確定を解消し、ｂ（４）を仮確定する。そして、仮確定配列６０が得られる。
以下、このようにデータマッチング部２９は配列ａ、ｂの要素を順に対応付けていき、矛盾が生じた場合は、前の段階に戻って新たな対応関係を探索する。この処理を再帰的に繰り返すと、配列ａ、ｂの要素が１対１に対応する場合は、最後の要素であるａ（ｎ）まで対応関係が１対１に決めることができ、確定配列６５が得られる。ここで、配列ａ、ｂの要素が１対１に対応付けられる配列ａ、ｂの要素の組み合わせを確定配列と呼ぶことにする。
【００４７】
また、１対１に対応しない場合は、ａ（０）に対応する配列ｂの要素を決定する段階まで処理が戻り、適合配列５０でａ（０）に対応している配列ｂの要素の中で、矛盾無くａ（０）に対応する配列ｂの要素を見いだすことができないことになる。システム的にはａ（０）の前の段階のａ（−１）に処理を戻ろうとする。
以上の手順により、配列ａ、ｂの要素を１対１に対応させる組み合わせを総当たり的に探索することにより、そのフィーチャに関してＣＡＤデータが一致するか否かを検証することができる。
【００４８】
以上の組み合わせの探索は、図７に示した数学的なモデルで表すことができる。
即ち、０からｎまでの番号を付した容器を１つずつ用意し、その中に、０からｎまでの番号を付したボールを単数又は複数入れる。ボールの番号は複数の容器に渡って重複していてもよい。
そして、各容器から１つずつボールを取り出し一列に並べ、しかも番号が重複しないような容器と取り出したボールの組み合わせを探索する。
ここで、容器は配列ａの要素に対応し、ボールは配列ｂの要素に対応する。ボールを並べる順列を総当たり的に探索し（即ち、所望の順列が見つかるまで全ての順列を試みる）、番号が重複しないような組み合わせがあった場合、容器とボールは１対１に対応付けられ、番号が重複しないような組み合わせが無かった場合、容器とボールは１対１に対応付けられなかったことになる。
【００４９】
次に、ＣＡＤデータ同一性検証システム１の詳細なデータ処理手順をフローチャートを用いて説明する。
図８は、ＣＡＤデータ同一性検証システム１が行うマッチング処理手順を示したフローチャートである。
まずＣＡＤファイル選択部２５でｓｆｃ形式のファイルを読み込む（ステップ５）。
次に、ｓｆｃデータ読込部２６でこのｓｆｃ形式のファイルからｓｆｃデータを読み込み、フィーチャを配列ａに格納する（ステップ１０）。
次に、ＣＡＤファイル選択部２５でｐ２１形式のファイルを読み込み（ステップ１５）、ｐ２１データ読込部２７がフィーチャを配列ｂに格納する（ステップ２０）。そして、データソート部２８が、各フィーチャに対して配列ａをソートする。
次に、データマッチング部２９がフィーチャをカウントするためのカウンタｋを０に初期化する（ステップ２５）。
【００５０】
フィーチャには、例えば、用紙フィーチャはｋ＝０、レイヤフィーチャはｋ＝１、・・・などと、番号でフィーチャの種類を特定することができるようになっている。
次に、データマッチング部２９がｋ番目のフィーチャに対して配列ａ、ｂの要素をマッチング処理する（ステップ３０）。この処理の手順は後に示す。
なお、ｋ番目のフィーチャに対応する配列ａ、ｂが存在しない場合は（例えば、楕円フィーチャを用いないで作成されたＣＡＤデータには、楕円フィーチャに対応する配列ａ、ｂは存在しない）、配列ａ、ｂの要素がマッチしたものとして処理する。
配列ａ、ｂの要素が１対１にマッチしなかった場合（ステップ３５；Ｎ）、ｓｆｃデータとｐ２１データは同一でないと判断し（ステップ５５）、ＣＡＤデータ同一性検証システム１は、処理を終了する。
【００５１】
配列ａ、ｂの要素が１対１にマッチした場合は（ステップ３５；Ｙ）、ｋに１をインクリメントする（ステップ４０）。次に、データマッチング部２９は、ｋがＭ未満か否かを判断する（ステップ４５）。ここで、Ｍは全てのフィーチャの数である。
ｋがＭ未満でない場合（即ち、ｋがＭ以上の場合）（ステップ４５；Ｎ）、全てのフィーチャに対して配列ａ、ｂのマッチングが成功したことになり、データマッチング部２９は、ｓｆｃデータとｐ２１データが同一であると判断し（ステップ５０）、処理を終了する。
ｋがＭ未満である場合は（ステップ４５；Ｙ）、まだマッチング処理していないフィーチャが存在するため、データマッチング部２９は、ステップ３０の処理に戻る。
【００５２】
図９は、ステップ３０（図８）のマッチング処理の手順を示したフローチャートである。
この処理は、適合配列（図６）から確定配列を探索する作業である。
まず、データマッチング部２９は、配列ａ、ｂの要素の数を確認する（ステップ１０５）。
配列の要素の数が同じでない場合（ステップ１１０；Ｎ）、配列ａ、ｂの要素は１対１に対応しないので、データマッチング部２９は不適合（マッチしない）と判断し（ステップ１４５）、ステップ３０（図８）にリターンする。
配列の要素の数が同じであった場合（ステップ１１０；Ｙ）、データマッチング部２９は、パラメータを比較することにより、配列ａの各要素に配列ｂを対応付ける（ステップ１１５）。その結果、図６に示したような適合配列が得られる。
次に、データマッチング部２９は、配列ａの全ての要素に、配列ｂの要素が少なくとも１つは対応付けられているか確認する（ステップ１２０）。配列ｂの要素が１つも対応付けられていない配列ａの要素があった場合（ステップ１２０；Ｎ）、配列ａ、ｂの要素を１対１に対応付けることはできないので、データマッチング部２９は、不適合と判断し（ステップ１４５）、ステップ３０（図８）にリターンする。
【００５３】
配列ａの全ての要素に、配列ｂの要素が少なくとも１つは対応付けられていた場合（ステップ１２０；Ｙ）、データマッチング部２９は、配列ｂの各要素に対しても、少なくとも１つは、配列ａの要素が対応付けられているか確認する（ステップ１２５）。
配列ａの要素が１つも対応付けられていない配列ｂの要素があった場合（ステップ１２５；Ｎ）、データマッチング部２９は、不適合と判断し（ステップ１４５）、ステップ３０にリターンする。
配列ｂの全ての要素に対して少なくとも１つは配列ａの要素が対応付けられていた場合（ステップ１２５；Ｙ）、ステップ１３０で配列要素のマッチング処理を行う（ステップ１３０）。この処理については後に図１０のフローチャートを用いて説明する。この処理で配列ａ、ｂの要素が１対１に対応付けられた場合、図６に示したような確定配列が得られる。
マッチング処理の結果、配列ａ、ｂの要素が１対１に対応付けられた場合（ステップ１３５；Ｙ）、適合と判断し（即ち、マッチすると判断し）（ステップ１４０）、処理をステップ３０（図８）にリターンする。
一方、配列ａ、ｂの要素が１対１に対応付けられなかった場合（ステップ１３５；Ｎ）、不適合と判断し（ステップ１４５）、処理をステップ３０にリターンする。
【００５４】
図１０は、ステップ１３０（図９）のマッチング処理の手順を示したフローチャートである。この処理で行う作業は、図６において仮確定配列を更新する作業である。
まず、データマッチング部２９は、カウンタｉを０に初期化する。
次に、データマッチング部２９は、配列ａの要素のうち、ａ（ｉ）に関して、ａ（ｉ）に対応付けられた配列ｂの要素のうち、未確定のもの（即ち仮確定されていないもの）があるか確認する（ステップ２１０）。
配列ｂの要素のうち、未確定のものがあった場合（ステップ２１０；Ｙ）、その中から配列ｂの要素を選択して仮確定し、この配列ｂの要素をａ（ｉ）に対応付ける（ステップ２１５）。
【００５５】
次に、データマッチング部２９は、ｉに１を加えてインクリメントする（ステップ２２５）。
次に、データマッチング部２９は、ｉがＮより大きいか判断する（ステップ２３０）。ここで、Ｎは、配列ａ及び配列ｂの要素の個数である。
ｉがＮより大きくない場合（ｉがＮ以下の場合）は（ステップ２３０；Ｎ）、まだ配列ｂの要素が対応付けられていない配列ａの要素があるので、データマッチング部２９は、処理をステップ２１０に戻す。
ｉがＮより大きい場合（ステップ２３０；Ｙ）、配列ａの全ての要素に対して配列ｂの要素が対応付けられたので、データマッチング部２９は、マッチング成功と判断し（ステップ２３５）、処理をステップ１３０（図９）にリターンする。
【００５６】
また、ステップ２１０において、ａ（ｉ）に対応付けられた配列ｂの要素のうち、未確定のものが無い場合は（ステップ２１０；Ｎ）、データマッチング部２９は、ｉから１を減算してデクリメントする（ステップ２４５）。
そして、データマッチング部２９は、ｉが負か否か（より詳細にはｉから１を減算した結果−１になったか否か）を確認する（ステップ２５０）。
ｉが負であった場合（ステップ２５０；Ｙ）、データマッチング部２９は、マッチング不成功と判断し（ステップ２６０）、処理をステップ１３０（図９）にリターンする。
【００５７】
ｉが負でない場合（ステップ２５０；Ｎ）、データマッチング部２９は、ａ（ｉ）にマッチした配列ｂの要素のうち、一度も仮確定したことの無いものがあるか否かを確認する（ステップ２２５）。一度も仮確定したことの無いものがある場合（ステップ２５５；Ｙ）、データマッチング部２９は、処理をステップ２１５に戻し、その中から配列ｂの要素を選択して仮確定する。
一度も仮確定したことの無い配列ｂの要素が無い場合（ステップ２５５；Ｎ）、データマッチング部２９は、ａ（ｉ）で仮確定している配列ｂの要素の仮確定状態を解除し（ステップ２４０）、処理をステップ２４５に戻す。
【００５８】
以上に、ｓｆｃデータとｐ２１データの同一性の判断手順について説明したが、これは一例であって種々の変形が可能である。
例えば、本実施の形態では、配列ａをソートして、これに配列ｂの要素を対応付けたが、逆に配列ｂをソートしておき、これに配列ａの要素を対応付けるように構成することもできる。
また、本実施の形態では、フィーチャを配列に格納して、配列の要素単位でマッチングしたが、マッチングするためにはフィーチャのパラメータを比較することができればよく、必ずしも配列を使用する必要は無い。
【００５９】
図１１は、ＣＡＤデータ同一性検証システム１のハードウェア的な構成の一例を示した図である。
ＣＡＤデータ同一性検証システム１は、制御部７６にバスライン７７を介して入力部８２、出力部８３、通信制御部８４、記憶部８５、記憶媒体駆動部８８、入出力Ｉ／Ｆ（インターフェース）８９などが接続して構成されている。
【００６０】
制御部７６は、ｓｆｃ形式のファイル、ｐ２１形式のファイルを開いて、それぞれｓｆｃデータ、ｐ２１データを読み込んだり、フィーチャを配列に格納したり、配列の要素のマッチング処理を行ったりする他、ＣＡＤデータ同一性検証システム１全体の制御などを行う。
制御部７６は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７８、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１などから構成されている。
【００６１】
ＣＰＵ７８は、所定のプログラムに従って、情報処理やＣＡＤデータ同一性検証システム１の制御を行ったりする。ＣＰＵ７８は、レジスタと呼ばれる記憶部を有しており、このレジスタにＲＯＭ８０やＲＡＭ８１などからプログラムを読み込んで、このプログラムに従って動作することにより制御部７６の各種機能が発揮される。
【００６２】
ＲＯＭ８０は、ＣＰＵ７８が各種演算や制御を行うための各種プログラム、データ及びパラメータなどを格納したリードオンリーメモリである。ＣＰＵ７８は、ＲＯＭ８０からプログラムやデータ、パラメータなどを読み込むことはできるが、これらを書き換えたり消去することは行わない。
【００６３】
ＲＡＭ８１は、ＣＰＵ７８にワーキングメモリとして使用されるランダムアクセスメモリである。ＣＰＵ７８は、ＲＡＭ８１にプログラムやデータなどを書き込んだり消去したりすることができる。本実施の形態では、ＲＡＭ８１には、ｓｆｃ形式のファイル、ｐ２１形式のファイルを用いて入力されたｓｆｃデータ、ｐ２１データを記憶したり、配列ａ、ｂを記憶したり、あるいは、適合配列、仮確定配列、確定配列（図６）を記憶したりなどし、ｓｆｃデータとｐ２１データの同一性を検証するためのエリアが確保可能となっている。
【００６４】
入力部８２は、例えばキーボードやマウスなどの入力装置から構成されている。入力部８２は、ＣＡＤデータ同一性検証システム１に対して文字や数字などの各種データを入力するための装置であり、ユーザがＣＡＤデータ同一性検証システム１にコマンドを入力したり、同一性を検証するファイルを選択したりなど、ＣＡＤデータ同一性検証システム１に対して所定の入力操作を行う際に使用する。
キーボードは、カナや英文字などを入力するためのキーや数字を入力するためのテンキー、各種機能キー、カーソルキー及びその他のキーによって構成されている。
【００６５】
マウスは、ポインティングデバイスである。ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）などを用いてＣＡＤデータ同一性検証システム１を操作する場合、表示装置上に表示されたボタンやアイコンなどをマウスでクリックすることにより、所定の情報の入力を行うことができる。
【００６６】
出力部８３は、例えば表示装置、印刷装置などから構成されており、ＣＡＤデータ同一性検証システム１が検証した検証結果を出力する際に使用する。
表示装置は、例えば例えばＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ、液晶ディスプレイ、プラズマディスプレイなどで構成された情報を画面上に提示するための装置である。
表示装置には、同一性を検証するファイルを選択するためのファイル選択画面や、検証結果を表示する結果表示画面などが表示される。
印刷装置は、例えば、インクジェットプリンタ、レーザプリンタ、熱転写プリンタ、ドットプリンタなどの各種プリンタ装置によって構成されている。
【００６７】
通信制御部８４は、ＣＡＤデータ同一性検証システム１をインターネットなどのネットワークに接続するための装置であって、モデム、ターミナルアダプタ、その他の接続装置によって構成されている。
ＣＡＤデータ同一性検証システム１は、通信制御部８４を用いて、外部の端末やサーバにアクセスすることが可能である。
そのため、他のコンピュータに格納されているＣＡＤデータを通信制御部８４を介して受信し、これに対して同一性を検証することもできる。
【００６８】
記憶部８５は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータを読み書きするための駆動装置によって構成されている。当該記憶媒体として主にハードディスクが使用されるが、その他に、例えば、光磁気ディスク、磁気ディスク、半導体メモリなどの他の読み書き可能な記憶媒体によって構成することも可能である。
【００６９】
記憶部８５には、プログラム格納部８６、データ格納部８７などが形成されており、それぞれ、プログラム、データが格納されている。
プログラム格納部８６には、ＣＡＤデータ同一性検証システム１にＣＡＤデータ同一性検証機能を発揮させるためのＣＡＤデータ同一性検証プログラムや、メモリ管理や入出力管理などＣＡＤデータ同一性検証システム１を動作させるための基本的なプログラムであるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、通信制御部８４を制御する通信プログラム、その他の各種プログラムが記憶されている。
また、プログラム格納部８６には、ｓｆｃデータ、ｐ２１データを操作するためのツール群がライブラリ（共通ライブラリと呼ばれる）として格納されており、ＣＡＤデータ同一性検証システム１は、共通ライブラリを利用してｓｆｃデータ、ｐ２１データの読み込みその他の処理を行う。
データ格納部８７には、同一性を検証するためのｓｆｃ形式のファイル、ｐ２１形式のファイルなどのＣＡＤデータが格納されている。
【００７０】
記憶媒体駆動部８８は、着脱可能な記憶媒体を駆動してデータの読み書きを行うための駆動装置である。着脱可能な記憶媒体としては、例えば、光磁気ディスク、磁気ディスク、磁気テープ、半導体メモリ、データをパンチした紙テープ、ＣＤ−ＲＯＭなどがある。なお、ＣＤ−ＲＯＭや紙テープは、読み込みのみ可能である。
記憶媒体駆動部８６から、記憶媒体に記憶されたＣＡＤデータを読み込んで同一性を判断することもできる。
【００７１】
入出力Ｉ／Ｆ８９は、例えば、シリアルインターフェースやその他の規格のインターフェースにより構成されている。入出力Ｉ／Ｆ８９に当該インターフェースに対応した外部機器を接続することにより、ＣＡＤデータ同一性検証システム１の機能を拡張することができる。
【００７２】
本実施の形態のＣＡＤデータ同一性検証システム１を適用した電子納品システムの一例について説明する。
この電子納品システムは、公共事業などの発注元に電子納品されたＣＡＤデータを、他のファイル形式で出力されたＣＡＤデータとの同一性を検証することにより、電子納品されたＣＡＤデータが変更・改竄されたかどうかを確認するものである。
図１２は、電子納品システム１０１のシステム構成の一例を示した図である。
電子納品システム１０１は、受注者端末１０３、発注者端末１０４、ｓｆｃサーバ１０２がネットワークにより接続されて構成されている。このネットワークは例えば、インターネットを用いることができる。
【００７３】
受注者端末１０３は、ＣＡＤデータをネットワークを介して送信して電子納品するための端末であって、例えばパーソナルコンピュータにより構成されている。
受注者端末１０３は、記憶装置から電子納品に係るｓｆｃデータとｐ２１データを読み取り、別経路で発注者端末１０４に送信することができる。
また、受注者端末１０３は、発注者端末１０４に電子納品したｓｆｃデータを、ｓｆｃサーバ１０２にもアップロードする。
なお、電子納品で基準となるＣＡＤデータはｐ２１データであり、ｓｆｃデータは同一性検証用に送信するものである。
【００７４】
発注者端末１０４は、受注者端末１０３から電子納品されたｓｆｃデータとｐ２１データを受信する端末である。
また、発注者端末１０４は、ｓｆｃサーバ１０２にアクセスして、受注者端末１０３がｓｆｃサーバ１０２にアップロードしたｓｆｃデータを参照することができる。
また、発注者端末１０４は、ＣＡＤデータ同一性検証システム１を備えている。
ｓｆｃサーバ１０２は、受注者端末１０３から受信したｓｆｃデータを保管すると共に、発注者端末１０４から要求があった場合、このｓｆｃデータを発注者端末１０４のダウンロードする。
【００７５】
以上のように構成された電子納品システム１０１で、発注者端末１０４は、受注者端末１０３から送信されてきたｓｆｃデータとｐ２１データの同一性を確認することができる。
これらデータの少なくとも一方が、受注者端末１０３から発注者端末１０４に送信される過程で改竄されたり、データが壊れたりして、送信時から変化した場合、発注者端末１０４は、受信したｓｆｃデータとｐ２１データが一致しないことを確認してこれを検証することができる。
受注者端末１０３から発注者端末１０４にＣＡＤデータが送信される過程でこれを改竄する場合、改竄者は異なる経路を通って発注者端末１０４に送信される、形式の異なる２つのＣＡＤデータを同様に改竄する必要がある。そのため、改竄が困難になり、電子納品システム１０１は、改竄抑制効果を発揮することができる。
【００７６】
更に、発注者端末１０４は、ｓｆｃサーバ１０２から受注者端末１０３がアップロードしたｓｆｃデータをダウンロードして、ｐ２１データとの同一性を検証することにより、電子納品されたｐ２１データが受注者端末１０３から送信されたオリジナルなものと同一であることをより確かにすることができる。
【００７７】
以上に説明した電子納品システム１０１は、ＣＡＤデータとしてｐ２１データ、ｓｆｃデータの双方を扱い、公共事業などの公的機関への電子納品に対応している。
電子納品システム１０１は、設計、施工、積算、維持管理といった製品のライフサイクル全般に渡って利用することができる。
例えば、発注者がｐ２１データを管理し、受注者がｓｆｃデータを用いて橋梁の修理を行う場合を考える。修理作業の開始前と開始後にｓｆｃデータとｐ２１データの同一性を確認することにより、修理業務中にｓｆｃデータが改竄・変更されていないか確認することができる。この場合、ファイル形式が異なるので、どちらがオリジナルのＣＡＤデータであるか容易に判別することができる。
【００７８】
この他に、ＣＡＤデータ同一性検証システム１の適用例として、図面改訂管理に用いることもできる。
ｓｆｃデータとｐ２１データなど、複数のファイル形式に係るＣＡＤデータが混在する場合、例えば、品質管理用に図庫で保管しているＣＡＤデータと、設計現場で利用しているＣＡＤデータのファイル形式が異なることがあり得る。
そして、設計現場で図面改訂を行った場合、これに対応して図庫のＣＡＤデータも更新する必要があるが、必ずしも更新されていない場合がある。
この場合、ＣＡＤデータ同一性検証システム１を用いることにより、設計現場での最新のＣＡＤ図面データと、図庫に保管されているＣＡＤ図面データが同一であるか否かを判断することができる。
【００７９】
以上、本発明の１実施形態について説明したが、本発明は説明した実施形態に限定されるものではなく、各請求項に記載した範囲において各種の変形を行うことが可能である。
例えば、本実施の形態では、ＣＡＤデータのファイル形式としてｐ２１形式、ｓｆｃ形式を用いるが、これはファイル形式を限定するものではなく、例えば、Ａ社のＣＡＤが採用しているファイル形式とＢ社のＣＡＤが採用しているファイル形式といったように、異なるファイル形式に係るＣＡＤデータ間の比較を行うことができる。
即ち、ファイル形式に関わらず、図面要素単位でパラメータが比較できればＣＡＤデータ同一性検証システム１で同一性を検証することができる。
【００８０】
また、例えば、２つのｐ２１データ、あるいは２つのｓｆｃデータを比較するといったように、同一のファイル形式のＣＡＤデータを比較することもできる。
この場合、例えば、第１のｐ２１データの図面要素データを配列ａに格納し、第２のｐ２１データの図面要素データを配列ｂに格納し、配列ａ、ｂの要素を対応付ける。
なお、同じ設計図面を同じファイル形式によるＣＡＤデータで保存した場合、同じファイル形式のＣＡＤデータであるにも関わらず内部構造が異なる場合があるので、異なるファイル形式のＣＡＤデータの同一性を検証する場合と、同じファイル形式のＣＡＤデータの同一性を検証する場合で、難易度は同程度である。
【００８１】
同一性の判別が必要とされる具体的な状況としては、例えば、次の場合がある。
（１）同一の図面のＣＡＤデータを同一のＣＡＤ装置からｓｆｃ形式とｐ２１形式で出力し、両者を比較する場合。
（２）同一の図面のＣＡＤデータをあるＣＡＤ装置からｓｆｃ形式で出力し、他のＣＡＤ装置からｐ２１形式形式で出力し、両者を比較する場合。
（３）同一の図面のＣＡＤデータをあるＣＡＤ装置からｓｆｃ形式で出力し、他のＣＡＤ装置からもｓｆｃ形式で出力し、両者を比較する場合。
（４）同一の図面のＣＡＤデータをあるＣＡＤ装置からｐ２１形式で出力し、他のＣＡＤ装置からｐ２１形式で出力し、両者を比較する場合。
【００８２】
【発明の効果】
本発明によれば、ファイル形式の異なるＣＡＤデータの同一性を検証することができる。
【図面の簡単な説明】
【図１】ＣＡＤで描かれた設計図面の構成を説明するための概念図である。
【図２】フィーチャの構成を説明するための図である。
【図３】幾何表記要素フィーチャのデータ構成を説明するための図である。
【図４】本実施の形態に係るＣＡＤデータ同一性検証システム１の機能的な構成の一例を示した図である。
【図５】フィーチャを配列に代入する手順を説明するための図である。
【図６】配列ａの１つの要素に対して配列ｂの複数の要素がマッチングする場合の処理について説明するための図である。
【図７】組み合わせの探索の数学的なモデルを説明するための図である。
【図８】マッチング処理の手順を示したフローチャートである。
【図９】ステップ３０のマッチング処理の手順を示したフローチャートである。
【図１０】ステップ１３０のマッチング処理の手順を説明するためのフローチャートである。
【図１１】ＣＡＤデータ同一性検証システムのハードウェア的な構成の一例を示した図である。
【図１２】電子納品システム１０１のシステム構成の一例を示した図である。
【符号の説明】
１  ＣＡＤデータ同一性検証システム
２５  ＣＡＤファイル選択部
２６  ｓｆｃデータ読込部
２７  ｐ２１データ読込部
２８  データソート部
２９  データマッチング部
３０  結果出力部３０
１０１  電子納品システム
１０２  ｓｆｃサーバ
１０３  受注者端末
１０４  発注者端末
【図１】
2004259087.tif 000003
【図２】
2004259087.tif 000004
【図３】
2004259087.tif 000005
【図４】
2004259087.tif 000006
【図５】
2004259087.tif 000007
【図６】
2004259087.tif 000008
【図７】
2004259087.tif 000009
【図８】
2004259087.tif 000010
【図９】
2004259087.tif 000011
【図１０】
2004259087.tif 000012
【図１１】
2004259087.tif 000013
【図１２】
2004259087.tif 000014