(57)【特許請求の範囲】
【請求項１】
記録装置に記録された図面データを、前記記録装置に記録された修復プログラムとＲＯＭに書き込まれたマイクロプログラムとに従ってＣＰＵが前記図面データとは異なるデータフォーマットの図面データに、中間フォーマットであるＤＸＦデータを介して変換するに際し、前記記録装置に記録された前記中間フォーマットの図面データについて前記ＣＰＵが破損箇所を調べて修復する図面データ修復方法において、
前記記録装置には、予めグループコードを表す記述形式及びグループ値を表す記述形式が記録され、
前記ＣＰＵが、前記記録されたグループコード及びグループ値を表す記述形式に基づき、前記中間フォーマットの図面データからグループコード及びグループ値がこの順に並んでいる行を正当な形式である行が始まる開始位置として判定し、この開始位置から読み込み処理を行う
ことを特徴とする図面データ修復方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＣＡＤ（Computer Aided Design）システム等において、異なるデータフォーマット間で図面データを変換する際、中間フォーマットのデータについて破損箇所を修復する図面データ修復方法に関し、特に行ズレや欠落行の修復に最適な図面データ修復方法に関する。
【０００２】
【従来の技術】
ＣＡＤシステムは、その利用用途、機能、価格を比較検討して、ユーザが自由に選択することができる。その結果、市場には数多くのＣＡＤが流通しているが、これらのデータに互換性はない。そこで、実際に異なるＣＡＤ間で図面データを変換する場合には、中間フォーマットと呼ばれる共通のデータフォーマットが必要となる。中間フォーマットには、ＤＸＦ（Drawing Interchange Format）、ＢＭＩ（Batch Model Interface）、ＩＧＥＳ（Initial Graphics Exchange Specification）、ＳＴＥＰ（Industrial automation system-Product data representation and exchange）等が存在するが、２次元設計では、ＤＸＦが主流となっている。
【０００３】
ＤＸＦは、ＡｕｔｏＤｅｓｋ社のＡｕｔｏＣＡＤ（商標）によって使用されているＣＡＤ図面変換用の中間フォーマットであり、現在、各種ＣＡＤ間での図面データ変換で汎用的に用いられている。ＤＸＦには、各種バージョンがあるが、Ｒ１２Ｊまでのバージョンでは、奇数行目がグループコード、偶数行目がグループ値とそれぞれ呼ばれ、２行１組でグループと呼ばれている。グループコードでは、記述形式は整数であり、偶数行目の記述形式と、グループ値が表す内容分野（例えば、角度値、距離、座標）とを指定する。グループ値では、記述形式は整数、浮動小数点、文字列のいずれかであり、データ内容を記述し、その意味は他のグループの内容との総合結果で最終的に決まる（例えば、角度値において、文字の傾きか、円弧始点角度）。グループは、図１１に示すように、集合によって、ＤＸＦ変数、ＤＸＦテーブル、ＤＸＦ要素等のデータを表し、それらの群がＤＸＦ複合図形並びにＨＥＡＤＥＲセクション、ＴＡＢＬＥＳセクション、ＢＬＯＣＫＳセクション及びＥＮＴＩＴＩＥＳセクションを構成し、更にはＤＸＦファイルを構成する。どのような内容のグループがどのような順番で記述されるべきかの規則は、ＤＸＦ変数、ＤＸＦテーブル、ＤＸＦ要素及びセクション等（以下、これらを総称してＤＸＦ要素という。）によって異なる。
【０００４】
ところで、ＤＸＦは規格ではないため、その解釈がＣＡＤメーカによって違うことや変換ソフト自体の性能差により、１００％のデータ互換を保てないことがある。例えば、グループは、図１２に示すように、「無いと文法違反になる」ものと、「無ければデフォルト値を充当される」ものとに分かれるが、ＣＡＤの中には、初めの“グループ０”はＤＸＦ要素種類を示す明らかな必須データであるため作成するものの、２番目の必須な面層“グループ８”を、３番目のデフォルト可能な色番号“グループ６２”と混同して作成しないものがある。このようなグループ単位の抜け落ちが軽度のＤＸＦ破損である。従来の図面データ修復方法では、グループ単位のＤＸＦ破損が生じた場合には、抜け落ちた部分の前後の一連のグループをＣＡＤが読み続けながら、「○○○のグループが不足」として認識し、その部分がデフォルト値を持つグループならば、ＣＡＤはデフォルト値を充当している。また、その部分がデフォルト値を持たないグループならば、ＤＸＦ文法違反によるエラー処理を行っている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した図面データ修復方法では、ＤＸＦファイル出力先の空き容量不足、ＤＸＦ出力時の文字列変換エラーによる不正グループ発生及びＤＸＦ出力時のその他の計算エラーによる不正グループ発生によって行単位の抜け落ちが生じる場合がある。このような行単位の抜け落ちが重度のＤＸＦ破損である。この場合には、グループとしての規則が壊れるため、データを読み続けることができず、変換を中止して、ＤＸＦ読み込みを強制終了しているだけであるという問題がある。
【０００６】
この発明は、このような問題点に鑑みなされたもので、中間フォーマットの図面データについて行ズレや欠落行を発見し、これらを破損状況に応じて修復することができる図面データ修復方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本願に係る図面データ修復方法は、記録装置に記録された図面データを、前記記録装置に記録された修復プログラムとＲＯＭに書き込まれたマイクロプログラムとに従ってＣＰＵが前記図面データとは異なるデータフォーマットの図面データに、中間フォーマットであるＤＸＦデータを介して変換するに際し、前記記録装置に記録された前記中間フォーマットの図面データについて前記ＣＰＵが破損箇所を調べて修復する図面データ修復方法において、前記記録装置には、予めグループコードを表す記述形式及びグループ値を表す記述形式が記録され、前記ＣＰＵが、前記記録されたグループコード及びグループ値を表す記述形式に基づき、前記中間フォーマットの図面データからグループコード及びグループ値がこの順に並んでいる行を正当な形式である行が始まる開始位置として判定し、この開始位置から読み込み処理を行うことを特徴とする。
【０００８】
この発明に係る第２の図面データ修復方法は、異なるデータフォーマット間で図面データを中間フォーマットを介して変換するに際し、前記中間フォーマットの図面データについて破損箇所を調べて修復する図面データ修復方法において、前記中間フォーマットの図面データに任意に設定されたオプション情報が欠落する欠落行を発見した場合には、予め設定されたデフォルト値を当該欠落行に充当するようにしたことを特徴とする。
【０００９】
この発明に係る第３の図面データ修復方法は、異なるデータフォーマット間で図面データを中間フォーマットを介して変換するに際し、前記中間フォーマットの図面データについて破損箇所を調べて修復する図面データ修復方法において、前記中間フォーマットの図面データに必須情報が欠落する欠落行を発見した場合には、残存する必須情報に基づく情報を当該欠落行に充当するようにしたことを特徴とする。
【００１０】
また、この発明は、これら第１〜第３の方法をコンピュータに実行させるためのプログラムが記述されたコンピュータが読取可能な記憶媒体（ＣＤ−ＲＯＭ、フロッピーディスク等）であることを特徴とする。
【００１１】
この発明に係る第１の図面データ修復方法によれば、異なるデータフォーマット間で図面データを変換するに際し、中間フォーマットの図面データについて不正な形式である行を発見した場合には、正当な形式である行が始まる開始位置を調べ、この開始位置から読み込み処理をするので、前記中間フォーマットにおける図面データの行ズレを修復することができる。
【００１２】
この発明に係る第２の図面データ修復方法によれば、中間フォーマットの図面データについて任意に設定されたオプション情報が欠落する欠落行を発見した場合には、予め設定されたデフォルト値を当該欠落行に充当するので、前記中間フォーマットにおける図面データの破損を修復することができる。
【００１３】
この発明に係る第３の図面データ修復方法によれば、中間フォーマットの図面データについて必須情報が欠落する欠落行を発見した場合には、残存する必須情報に基づく情報を当該欠落行に充当するので、前記中間フォーマットにおける図面データの破損を修復することも可能となる。
【００１４】
なお、上述した第１、第２及び第３の図面データ修復方法を組み合わせれば、ＤＸＦファイル出力先の空き容量不足、ＤＸＦ出力時の文字列変換エラーによる不正グループ発生及びＤＸＦ出力時のその他の計算エラーによる不正グループ発生によって行単位のＤＸＦ破損が生じた場合でも、データを読み続け、変換を続行することができる。
【００１５】
【発明の実施の形態】
以下、図面を参照して、この発明の実施の形態を説明する。
図１は、この発明の一実施例に係る図面データ修復方法を適用したＣＡＤシステムの構成を示すブロック図である。
このシステムには、キーボード、マウス等の入力装置１を介して入力された図面データと、図示しない他のＣＡＤシステムからＬＡＮ等を介して入力された図面データとが、ハードディスク等の記録装置２に記録される。記録された図面データが異なるデータフォーマットである場合には、ＣＰＵ３は、その図面データをＲＡＭ４に一旦格納し、記録装置２にインストールされた修復プログラムとＲＯＭ５に書き込まれたマイクロプログラムとに従って中間フォーマットであるＤＸＦを介しデータ修復しながらデータ変換を実行する。データ修復は、行ズレの修復と欠落行の補充との組み合わせで行われる。行ズレが現れない場合には、奇数行目はグループコードを表し、偶数行目はグループ値を表す。記録装置２に記録された図面データは、ディスプレイ、プリンタ及びプロッタ等の出力装置６を介して画像出力される。
【００１６】
図２は、ＤＸＦのグループコードによって定められたグループ値の規則の一例を示す図である。
グループコードは、記述形式が整数であり、グループ値の記述形式や内容について規則をそれぞれ定めている。グループコード“０”では、記述形式は文字列であり、ＬＩＮＥ、ＡＲＣ等の特定語句だけが記述され、セクション毎に共通な特定語句とセクション固有の特定語句とがある。グループコード“１”では、記述形式は文字列であり、記述される語句に制限はない。グループコード“９”では、記述形式は文字列であり、先頭の文字には＄が記述され、ＨＥＡＤＥＲセクション内でだけ記述される。グループコード“５０”では、記述形式は浮動小数点であり、記述される数値に制限はない。グループコード“６２”では、記述形式は整数であり、−２５６〜２５６のいずれかが記述される。グループコード“７０”では、記述形式は整数であり、０〜２５５のいずれかが記述される。
【００１７】
次に、このように構成されたＣＡＤシステムにおけるデータ修復処理について説明する。
まず、同システムにおける行ズレの修復処理について説明する。
図３は、ＤＸＦデータのデータ構造を示す図である。
ｋ行目が、グループコード行が整数でない等、不正な形式のグループコードやグループ値であった場合には、以下に示すようにして一連の処理（以下、行判定という。）を行う。
【００１８】
▲１▼ｋ＋１行目がグループコード、ｋ＋２行目がグループ値であると仮定して、その仮定が正しいか否かを調べる。仮定が正しければ“１”と判定し、仮定が正しくなければ“０”と判定する。例えば、図３（ａ）に示す場合には、ｋ＋１行目がグループコード、ｋ＋２行目がグループ値であると仮定しても矛盾が生じないため、判定▲１▼は“１”となる。
【００１９】
▲２▼ｋ＋２行目がグループコード、ｋ＋３行目がグループ値であると仮定して、その仮定が正しいか否かを調べる。仮定が正しければ“２”判定し、仮定が正しくなければ“０”と判定する。例えば、図３（ａ）に示す場合には、ｋ＋２行目がグループコード、ｋ＋２行目がグループ値であると仮定しても矛盾が生じないため、判定▲２▼は“２”となる。
【００２０】
▲３▼上記判定▲１▼▲２▼の結果をそれぞれ加算することにより、ｍ＝判定▲１▼＋判定▲２▼を求める。その結果、図４に示すように、仮定▲１▼▲２▼が共にエラーであってその値がｍ＝０となる場合、仮定▲１▼だけが正しくその値がｍ＝１となる場合、仮定▲２▼だけが正しくその値がｍ＝２となる場合、仮定▲１▼▲２▼が共に正しくその値がｍ＝３となる場合が生じる。両者が共にエラーであるか正しい場合、即ちｍ＝０又は３の場合にはグループの読み込み位置は不明であるが、ｍ＝１又は２の場合にｋ＋ｍ行目で正当な形式の行が始まることが分かる。このため、ｍ＝０又は３ならば、ｋに１を加算してから、再度ｍ＝ｇ（ｋ）を求め、ｍ＝１又は２になるまで上記行判定を繰り返す（以下、同期合わせという。）ことにより、正当な形式の行が始まることが分かるので、ｋ＋ｍ行目からグループを読み込めば、形式や内容条件を満足した読み込みができ、行ズレを修復することができる。
【００２１】
図４に示すように、ｍ＝ｇ（ｋ）＝０はｋ＋１，ｋ＋２のどちらもグループ開始行としてはエラーであるため、ＤＸＦデータの品質の悪さを表す。また、ｍ＝ｇ（ｋ）＝３はｋ＋１，ｋ＋２のどちらもグループ開始行としては正しいため、ＤＸＦデータの品質のあいまいさを表す。同期合わせにおいてｍ＝１又は２になるまで行判定を繰り返すと、ＤＸＦデータの品質の悪さやあいまいさが累積する。このため、品質に関する指標として打ち切り反復数及び要求安全次数を用いることにより、同期合わせを適切に打ち切ることができる。いま、打ち切り反復数は何回まで行判定の繰り返しを許すかを表し、安全要求次数はｍ＝３が連続する範囲について何回遡ってグループを拾い上げるかを表すものとして、打ち切り反復数及び要求安全次数をそれぞれｒ，ｓとすると、グループの品質設定に従って同期合わせを行う場合にグループコードの行を求める関数ｈ（ｋ，ｒ，ｓ）は、次式のように表される。
【００２２】
【数１】
ｈ（ｋ，ｒ，ｓ）＝ｋ＋ｔ＋［（ｕ−１）−Ｍａｘ｛０，（ｄ−ｓ）｝］・２
【００２３】
ここで、ｋは一番初めに不正な形式のグループコードやグループ値が現れた行を表す変数、ｕは実際に行った行判定の反復数を表す変数、ｄは直前の行判定の安全次数を表す変数、ｔは直前の行判定におけるｍ＝ｇ（ｋ）の値を表す変数である。ｕはｍ＝０又は３で１だけ加算され、ｄはｍ＝３が連続する毎に１ずつ加算されるが、ｍ＝０で０クリアされる。
【００２４】
中間変数ｔ＝１又は２になったとき、上式により、グループコードの開始位置として採用すべき行数が計算される。例えば、ｈ（ｋ＝２００１，ｒ＝３０，ｓ＝３）の場合には、図３（ｂ）に示すように、行判定反復数ｕ＝４で行判定値ｔ＝１となるため、グループコードの開始位置として採用すべき行数を計算し、ｈ＝２００６が求まる。また、中間変数ｔ＝０又は３であるとき、打ち切り反復数ｒと行判定反復数ｕとを比較することにより、行判定終了のタイミングが調整される。打ち切り反復数ｒやＤＸＦファイルの最後に到達することによって同期合わせを打ち切り、グループコードの開始位置が求まらなかった場合には、ｈ（ｋ，ｒ，ｓ）＝−９とする。例えば、ｈ（ｋ＝２００１，ｒ＝３，ｓ＝４）の場合には、打ち切り反復数ｒ＝３であるため、行判定反復数ｕ＝３で同期合わせを打ち切り、ｈ＝−９となる。なお、安全要求次数ｓで表される範囲はグループコードの開始位置であるかどうかあいまいな部分であるため、ｓ＝０と設定すれば、確定したｋ＋ｍの区切りから遡らず、安全を重視することになる。
【００２５】
次に、同システムにおける欠落行の修復処理について説明する。
欠落行によるＤＸＦ要素の破損には、ＤＸＦ要素において途中から後ろが壊れる場合と、ＤＸＦ要素において前側が壊れる場合とがある。
【００２６】
まず、ＤＸＦ要素において途中から後ろが壊れる場合について考える。
図５は、ＤＸＦ要素の一例を示す図である。
この場合には、ＤＸＦ要素ＴＥＸＴ，ＶＥＲＴＥＸの種類を表す必須情報は残っているため、そのまま他の必須情報の残存状況に応じて、以下のようにして不足する情報の修復を行う。
【００２７】
▲１▼ＤＸＦ要素の必須情報は何も壊れておらず、それ以外のオプション情報だけが壊れている場合には、デフォルト値を充当する。
【００２８】
▲２▼ＤＸＦ要素の必須情報が壊れており、このうちのＤＩＭＥＮＳＩＯＮ要素である“グループ２”が壊れていない場合には、“グループ２”の値で複合図形をサーチし、本発明者によって発明された寸法図形分析の手法を用いて、ＤＩＭＥＮＳＩＯＮ要素を再生し充当する。
【００２９】
▲３▼上記以外の場合には、不足する必須情報に対して仮の情報を補い、ＤＸＦ仮要素を再生し充当する。この場合、ＤＸＦ要素種類や不足する情報毎に仮情報の記述方法を変えることにより、仮情報が他の情報と区別され、欠落データの検討を行う際に元図面と比較し易くすることができる。即ち、ＴＥＸＴ要素において座標が不足する場合には、特定領域内へ特定のレイヤや色で文字列等を画像出力させることにより、座標の不明な文字列がどれか確認することができる。また、文字列が不足する場合には、該当する座標位置へ特定のレイヤや色で特定の記号“＠＠＠＠”等を画像出力させることにより、どの文字列が記述内容不明かを示すことができる。更に、文字高さが不足する場合（字体でも未定義）には、仮の高さを与え、文字列最後には“↑”等の記号を付加して画像出力させることにより、高さの不明な文字列がどれか確認することができる。一方、ＶＥＲＴＥＸ要素においてふくらみが不足する場合には、仮のふくらみに直線を表す値“０”を充当し、特定のレイヤや色で画像出力させることにより、どの区間が本来は円弧で結ばれるべきかを示すことができる。
【００３０】
次に、ＤＸＦ要素において途中から後ろが壊れる場合について考える。
図６は、ＤＸＦ要素の他の一例を示す図である。
ＴＥＸＴ要素では、“グループ１”を必ず持ち、後ろにＳＥＱＥＮＤやＡＴＴＲＩＢを書けない。ＡＴＴＲＩＢ要素では、“グループ１”、“グループ７０”及び“グループ２”を必ず持ち、先頭側にＩＮＳＥＲＴやＡＴＴＲＩＢが書かれ、後側にＳＥＱＥＮＤやＡＴＴＲＩＢが書かれる。ＡＴＴＤＥＦ要素では、“グループ１”、“グループ７０”、“グループ３”及び“グループ２”を必ず持ち、後ろにＳＥＱＥＮＤやＡＴＴＲＩＢを書けない。なお、図中の○印はそのＤＸＦ要素では必ず持つはずのグループ、△印はそのＤＸＦ要素ではデフォルト時に書かれないことがあるグループ、×印はそのＤＸＦ要素では書かれないはずのグループをそれぞれ表す。
【００３１】
この場合には、ＤＸＦ要素ＴＥＸＴ，ＡＴＴＲＩＢ，ＡＴＴＤＥＦのうちのいずれであるか種類が不明であるため、残存するグループや修復されたグループが各ＤＸＦ要素の独自なものであるかどうかによってＤＸＦ要素の種類を推定する。即ち、図７に示すように、まず、ＤＸＦ要素の後側にＳＥＱＥＮＤやＡＴＴＲＩＢが書かれているかどうかを調べる（Ｓ１）。ＳＥＱＥＮＤやＡＴＴＲＩＢが書かれていれば（Ｓ１）、ＡＴＴＲＩＢ要素であると推定する（Ｓ２）。ＳＥＱＥＮＤやＡＴＴＲＩＢが書かれていなければ（Ｓ１）、ＤＸＦ要素に“グループ３”があるかどうかを調べる（Ｓ３）。“グループ３”があれば（Ｓ３）、ＡＴＴＤＥＦ要素であると推定する（Ｓ４）。“グループ３”がなければ（Ｓ３）、ＤＸＦ要素に“グループ７０”や“グループ２”があるかどうかを調べる（Ｓ５）。“グループ７０”や“グループ２”があれば（Ｓ５）、ＡＴＴＤＥＦ要素であると推定する（Ｓ６）。“グループ７０”や“グループ２”でなければ（Ｓ５）、ＴＥＸＴ要素かＡＴＴＤＥＦ要素であると推定する（Ｓ７）。このとき、推定結果によるＤＸＦ要素の種類が２通りとなり、どちらにも決まらないため、例えばＴＥＸＴ要素であると仮決定し（Ｓ８）、仮決定した要素種類であることを特定のレイヤや色で画像出力して他の情報と区別し易いようにするとよい。
【００３２】
なお、上述した図面データ修復方法を組み合わせれば、図８に示すように、ＤＸＦファイル出力先の空き容量不足によってＤＸＦファイルの途中から後ろがそっくり抜け落ちてしまった場合、図９に示すように、ＤＸＦテキスト要素の文字列記述行内で文字化けが発生し、余分な１行が書かれたり、その行以降にあった数行が消えてしまった場合、いわゆるＤＸＦ出力時の文字列変換エラーによる不正グループ発生の場合、及び図１０に示すように、文字列変換エラー以外の原因で形式が整数や浮動小数点であるべきグループ値が不正な形式で書かれたり、その行以降にあった数行が消えてしまった場合、いわゆるＤＸＦ出力時のその他の計算エラーによる不正グループ発生の場合でも、データを読み続け、変換を続行することができる。
【００３３】
【発明の効果】
以上述べたように、この発明によれば、異なるデータフォーマット間で図面データを変換するに際し、中間フォーマットの図面データについて不正な形式である行を発見した場合には、正当な形式である行が始まる開始位置を調べ、この開始位置から読み込み処理をするので、前記中間フォーマットにおける図面データの行ズレを修復することができる。
【００３４】
また、この発明によれば、中間フォーマットの図面データについて任意に設定されたオプション情報が欠落する欠落行を発見した場合には、予め設定されたデフォルト値を当該欠落行に充当し、前記中間フォーマットの図面データについて必須情報が欠落する欠落行を発見した場合には、残存する必須情報に基づく情報を当該欠落行に充当するので、前記中間フォーマットにおける図面データの破損を修復することができる。
【図面の簡単な説明】
【図１】  この発明の一実施例に係る図面データ修復方法を適用したＣＡＤシステムの構成を示すブロック図である。
【図２】  ＤＸＦのグループコードによって定められたグループ値の規則の一例を示す図である。
【図３】  ＤＸＦデータのデータ構造を示す図である。
【図４】  行判定の処理結果を示す図である。
【図５】  ＤＸＦ要素の一例を示す図である。
【図６】  ＤＸＦ要素の他の一例を示す図である。
【図７】  ＤＸＦ要素の種類の推定処理を説明するための図である。
【図８】  ＤＸＦファイル出力先の空き容量不足による図面データの破損を示す図である。
【図９】  ＤＸＦ出力時の文字列変換エラーによる図面データの破損を示す図である。
【図１０】  ＤＸＦ出力時のその他の計算エラーによる図面データの破損を示す図である。
【図１１】  ＤＸＦファイルのデータ構造を示す図である。
【図１２】  グループ単位での抜け落ちの一例を示す図である。
【符号の説明】
１…入力装置、２…記録装置、３…ＣＰＵ、４…ＲＡＭ、５…ＲＯＭ、６…出力装置。
【図１】
0004253045.tif 000002
【図７】
0004253045.tif 000003
【図２】
0004253045.tif 000004
【図３】
0004253045.tif 000005
【図４】
0004253045.tif 000006
【図５】
0004253045.tif 000007
【図６】
0004253045.tif 000008
【図８】
0004253045.tif 000009
【図９】
0004253045.tif 000010
【図１０】
0004253045.tif 000011
【図１１】
0004253045.tif 000012
【図１２】
0004253045.tif 000013