(57)【特許請求の範囲】
【請求項１】
三次元モデルを生成する手段と、該手段により生成された三次元モデルの角部に丸め又は面取りする手段を備えた三次元モデル生成装置において、
前記丸め又は面取りする面と、立体の角部を形成する稜線との干渉を検出する干渉検出手段と、
該干渉検出手段により検出された干渉が生じる部分の情報を表示する干渉情報表示手段とを設け、
前記干渉検出手段が、立体の角部を形成する稜線に直交する複数の各断面内において、該稜線を共有する二つの面又はこれらの面と連続な面若しくは該二つの面を延長した面のいずれかに接する円弧を求め、該各円弧と前記各面との接点群を構成する隣接する二つの接点が同一面上にあるか否かを判定することにより、前記干渉を検出するように構成され、
前記干渉を生じる部分の情報は、前記干渉検出手段により同一平面上にないと判定された隣接する二つの接点の情報であることを特徴とする三次元モデル生成装置。
【請求項２】
前記干渉情報表示手段が、前記干渉検出手段により検出された干渉が生じる部分の情報を、前記同一平面上にないと判定された隣接する二つの接点及びその隣接する周辺の接点をつなぐ曲線により表示するように構成されていることを特徴とする請求項１記載の三次元モデル生成装置。
【請求項３】
請求項１又は２に記載の三次元モデル生成装置において、
前記干渉検出手段が、前記丸め又は面取りする面と、立体の角部を形成する稜線との干渉を検出しないときに、該丸め又は面取りする面を該立体に埋め込む手段を設けたことを特徴とする三次元モデル生成装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の三次元モデル生成装置において、
前記干渉検出手段により干渉が検出された場合に、
ａ）前記同一平面上にないと判定された隣接する二つの接点の一方が前記稜線を共有する二つの面うちの一方の面上にあり、該二つの接点の他方が該一方の面と連続な面上にある場合、該二つの接点と対応する円弧又はその二つの接点を結ぶ直線線分をつないで丸め面又は面取り面を生成する際、その丸め面又は面取り面の端部（Ｅ２）が、前記一方の面と該面と連続な面との境界（Ｅ３）と交差する点で頂点（Ｋ）ができるように前記丸め面又は面取り面を生成して前記立体に埋め込み、
ｂ）前記同一平面上にないと判定された隣接する二つの接点の一方が前記稜線を共有する二つの面うちの一方の面上にあり、該二つの接点の他方が該一方の面を延長した面上にある場合、該二つの接点と対応する円弧又はその二つの接点を結ぶ直線線分をつないで丸め面又は面取り面を生成し、その丸め面又は面取り面の端部を切断して前記立体に埋め込むか、あるいはその丸め面又は面取り面と前記立体との集合演算を行うことによりその丸め面又は面取り面を前記立体に埋め込む
ことにより、前記干渉検出手段により検出された干渉の起こらない三次元モデルを生成する手段を設けたことを特徴とする三次元モデル生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、三次元モデルを生成する三次元モデル生成装置に関し、より詳細には、計算機を利用して三次元モデルを生成する境界表現ソリッドモデリングシステムにおいて、その三次元モデルを構成する任意の稜線を挟んで隣接する連続していない二面間におさまるようなフィレット面もしくは角落し面を生成する技術に関する。
【０００２】
【従来の技術】
計算機を利用した設計・生産のための手段として、計算機の支援によって設計を行うＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）や、計算機の支援によって生産を行うＣＡＭ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｍａｎｕｆａｃｔｕｒｉｎｇ）が広く普及している。
ＣＡＤに必要な装置（ＣＡＤ装置という）の中でも、特に三次元図形(形状)をモデル化して扱う三次元ＣＡＤ装置においては、立体の面だけでなく、面で囲まれる中身のデータも備え、中身のデータが詰まったものとして扱うソリッドモデルによる手法（ソリッドモデリング）が主流になっている。そのソリッドモデルの他に、立体を線の集まりとして表現する針金細工のようなワイヤーフレーム・モデルや、それにさらに面のデータを加えて面の集まりとして表現するサーフェスモデルなどがあるが、ソリッドモデルはほかの手法に比べると解析・加工等の自動的な処理が可能になる等の優れた特徴をもっている。
【０００３】
ソリッドモデリングを機械設計等に応用する際に重要な形状変形処理として、立体の角部に施す丸め処理と面取り処理がある。丸め処理とは、立体の角部を丸める処理をいい、その処理により丸められた角部にフィレット面と呼ばれる面を埋め込む処理である。面取り処理とは、立体の角部を切り落とす処理をいい、面取りした角部に角落し面と呼ばれる面を埋め込む処理である。
その丸め処理の操作は一般に次のような手順で行われる。まず、フィレット面の大きさを指定して、立体の角部を形成する対をなす二つの面に共通する稜線を指定する。そして、その稜線に直交する複数の断面を考え、各断面内において、その断面とその稜線を形成する面とが交差してできる断面線に接する上記指定した大きさの半径をもつ接円弧を求め、その各断面内の接円弧同士を滑らかにつなぐことによってフィレット面を生成するというものである。なお、フィレット面の大きさは必ずしも上記接円弧の半径を表すものでなくてもよく、フィレット面の幅や、共通の稜線から上記接円弧の接点までの距離として指定してもよい。この場合は、指定された条件を満たすようにして接円弧の半径が調整される。
【０００４】
一方、面取り処理の操作は一般に次のような手順で行われる。まず、角落し面の大きさを指定して、立体の角部を形成する対をなす二つの面に共通する稜線を指定する。そして、その稜線に直交する複数の断面を考え、各断面内において、その断面とその稜線を形成する面とが交差してできる断面線に接する上記指定した大きさの半径をもつ接円弧を求めた上で、各断面内の二つの接点を結ぶ直線線分を求め、この直線線分同士をつなぐことによって角落し面を生成するというものである。なお、角落し面の大きさは必ずしも上記接円弧の半径を表すものでなくてもよく、角落し面の幅や、共通の稜線から上記接円弧の接点までの距離として指定してもよい。この場合は、指定された条件を満たすようにして接円弧の半径が調整される。
【０００５】
以上のようにして指定したフィレット面または角落し面の大きさが、対をなして立体の角部を形成する二つの面に比べて大きすぎると、接円弧の接点がすべて若しくは一部求められなくなり、丸めおよび角落し面を生成することができないことになる。
【０００６】
【発明が解決しようとする課題】
従来の丸め処理や面取り処理によると、上記指定した大きさで生成したフィレット面や角落し面を元の立体に埋め込む際に、そのフィレット面や角落し面の境界を形成する曲線（境界曲線）が、立体内の既存の稜線と交差して干渉してしまう場合があった。このような場合は、埋め込み操作を一旦取消した上で、埋め込み前の元の立体を変形させたり、フィレット面や角落し面の大きさを変更するなどして改めて埋め込み操作を行うことによって、そのような不具合を回避するようにしていた。そのため、対話的な設計作業という側面からみると、フィレット面や角落し面の境界曲線が立体内の既存の稜線と干渉するか否かの判断（干渉チェック）を自動的に行うことが必要となる。
【０００７】
ところが、上述のような干渉が起こり、その干渉が生じる部分（以下「干渉部分」という）を含む形状（以下「干渉形状」という）が生成されるか否かは、埋め込もうとするフィレット面や角落し面の境界曲線を一旦生成した上で、各境界曲線と、既存の立体の稜線とが交差するか否かの判定（交差判定）をしなければならない。しかも、その境界曲線が複数の曲線で表されていれば、その干渉チェックは各曲線ごとに行わねばならないため対話的な設計作業に支障をきたす恐れがある。また、干渉することが判明した場合は、その時点で、干渉部分の形状を設計者の意図に応じて適切な形状に変形させる必要がある。
これらの問題は、従来のフィレット面を埋め込む丸め処理と、角落し面を埋め込む面取り処理の双方について同様に当てはまる問題である。
この発明は、上記の問題点を解決するためになされたものであり、計算機を利用して三次元モデルを生成する境界表現ソリッドモデリングシステムにおいて、干渉形状の生成を回避しながら、対話的設計作業に支障をきたすことなく、丸め処理および面取り処理をおこなうことを目的とする。
【０００８】
【課題を解決するための手段】
この発明は、上記の目的を達成するため、三次元モデルを生成する手段と、該手段により生成された三次元モデルの角部に丸め又は面取りする手段を備えた三次元モデル生成装置において、上記丸め又は面取りする面と、立体の角部を形成する稜線との干渉を検出する干渉検出手段と、該干渉検出手段により検出された干渉が生じる部分の情報を表示する干渉情報表示手段とを設け、上記干渉検出手段を、立体の角部を形成する稜線に直交する複数の各断面内において、その稜線を共有する二つの面又はこれらの面と連続な面若しくはその二つの面を延長した面のいずれかに接する円弧を求め、その各円弧と上記各面との接点群を構成する隣接する二つの接点が同一面上にあるか否かを判定することにより、上記干渉を検出するように構成し、上記干渉を生じる部分の情報を、上記干渉検出手段により同一平面上にないと判定された隣接する二つの接点の情報としたものである。
この三次元モデル生成装置は、立体の角部の丸め処理または面取り処理において、フィレット面または角落し面の境界曲線が他の稜線と干渉してしまう場合には、その干渉部分の場所を特定することができ、効率的なフィレット面または角落し面の埋め込み操作を支援することができる。
【０００９】
この場合、上記干渉情報表示手段が、上記干渉検出手段により検出された干渉が生じる部分の情報を、上記同一平面上にないと判定された隣接する二つの接点及びその隣接する周辺の接点をつなぐ曲線により表示するように構成されているとよい。
さらに、上記干渉検出手段が、上記丸め又は面取りする面と、立体の角部を形成する稜線との干渉を検出しないときに、該丸め又は面取りする面を該立体に埋め込む手段を設けたものが好ましい。
【００１０】
さらに、上記干渉検出手段により干渉が検出された場合に、ａ）上記同一平面上にないと判定された隣接する二つの接点の一方が上記稜線を共有する二つの面うちの一方の面上にあり、その二つの接点の他方がその一方の面と連続な面上にある場合、その二つの接点と対応する円弧又はその二つの接点を結ぶ直線線分をつないで丸め面又は面取り面を生成する際、その丸め面又は面取り面の端部（Ｅ２）が、上記一方の面とその面と連続な面との境界（Ｅ３）と交差する点で頂点（Ｋ）ができるように上記丸め面又は面取り面を生成して上記立体に埋め込み、ｂ）上記同一平面上にないと判定された隣接する二つの接点の一方が上記稜線を共有する二つの面うちの一方の面上にあり、その二つの接点の他方がその一方の面を延長した面上にある場合、その二つの接点と対応する円弧又はその二つの接点を結ぶ直線線分をつないで丸め面又は面取り面を生成し、その丸め面又は面取り面の端部を切断して上記立体に埋め込むか、あるいはその丸め面又は面取り面と上記立体との集合演算を行うことによりその丸め面又は面取り面を上記立体に埋め込むことにより、上記干渉検出手段により検出された干渉の起こらない三次元モデルを生成する手段を設けるとよい。
【００１１】
【発明の実施の形態】
以下、この発明の実施の形態を図面に基づいて詳細に説明する。
この発明による三次元モデル生成装置は、図１に示すように構成されたＣＡＤ装置９によって実現される。このＣＡＤ装置９は、ＣＰＵ１と、メモリ２と、キーボード３と、プリンタ４と、ディスプレイ５と、マウス６と、補助記憶装置７と、バスライン８とを有している。ＣＰＵ１は入力データ等の演算処理などを行う中央処理ユニットであって、三次元モデルの生成手段、丸め又は面取りする手段として動作するとともに、この発明の特徴とする干渉検出手段、干渉しない三次元モデルを生成する手段として動作する。メモリ２はプログラムやデータ等を記憶する装置であり、キーボード３は所定の入力キーを有し、それらの操作に基いてデータを入力する装置である。
【００１２】
プリンタ４は、プログラムやデータ等を印字して出力する装置である。ディスプレイ５は、生成された立体や、その他の図形及び文字を画面上に表示する画像表示装置であって、この発明の特徴とする干渉情報表示手段として動作するＣＲＴ又は液晶表示装置からなっている。マウス６は、ディスプレイ５の画面上に表示した記号（マウスポインタ）を人の操作に基づき移動させると共に、その移動に応じてデータや指示を入力する入力装置である。補助記憶装置７は、フロッピーディスクやハードディスク等の補助記憶媒体を収容する。バスライン８は、ＣＰＵ１から補助記憶装置７までを相互に接続する。
【００１３】
そして、ＣＡＤ装置９は、キーボード３やマウス６等の操作入力の内容や指示内容に基づき、メモリ２に記憶されている三次元モデル生成用のプログラムに従って演算処理やデータ処理を行い、それによって三次元の立体形状やその他の図形を生成してディスプレイ５の画面上に表示するようになっている。
続いて、この発明による三次元モデル生成装置の動作内容について説明する。その動作内容は、ソリッドモデルとして生成した図５（ａ）に示す立体Ｂの角部Ｂ１に、ある指定した大きさによって、同図（ｂ）に示すように他の稜線Ｅ１と干渉する（交差する）部分をもつフィレット面Ｔを埋め込む場合の動作を例にとって説明する。
【００１４】
上述したＣＡＤ装置９をこの発明による三次元モデル生成装置として動作させるときは、図２に示す手順にしたがって処理を実行する。図２は、ＣＡＤ装置９により干渉形状の生成を回避しながら三次元モデルを生成するための各工程を示すフローチャートである。この図２に示すように、干渉形状の生成を回避しながら三次元モデルを生成するには、接点算出工程１０と、干渉検出工程２０と、干渉情報提示工程３０及び干渉除去工程４０とを図２に示す順序で順に実行する必要がある。その各工程の具体的な内容は、図３及び図４に示すフローチャートの各ステップに対応しているので、接点算出工程１０と、干渉検出工程２０と、干渉情報提示工程３０及び干渉除去工程４０の各工程を図３及び図４のフローチャートに沿って説明する。図３及び図４は、操作者（以下適宜「設計者」ともいう）がＣＡＤ装置９を動作させて干渉形状の生成を回避しながら三次元モデルを生成するときの操作者の操作内容及びＣＰＵ１が実行するプログラムによる処理の手順を示すフローチャートである。なお、図３及び図４において、Ｓはステップを略記したものである。
【００１５】
まず、ステップ１では、ＣＡＤ装置９の操作者がフィレット面Ｔの生成位置と大きさを指定する。これは、操作者がキーボード３とマウス６を操作することによって行われる。例えば、生成位置の指定は、図６に示すようにフィレット面Ｔを生成する立体Ｂの角部Ｂ１を形成する対をなす２つの曲面Ｆ１、Ｆ２に共通する稜線Ｅ０を指定することによって行い、フィレット面Ｔの大きさは、具体的な数値の入力によって指定する。このとき指定された稜線Ｅ０の情報と、フィレット面Ｔの大きさの情報は後にＣＰＵ１によって処理される。この場合、フィレット面Ｔの大きさはフィレット面Ｔを生成する元になる接円弧の半径によって指定する。なお、このとき指定される半径を以下「丸め半径」という。
【００１６】
続く、ステップ２では、稜線Ｅ０の長さを等しくｎ個に分割して、その分割された各点（以下「分割点」という）の座標ＥＰ（ｉ）を求め、その各分割点を稜線Ｅ０上に始点から終点に向かい順次配置する。ここにｉは断面を形成する位置を特定するための断面番号であって、ｉ＝０，１，２，３……ｎ（０及び正の整数）とする。次に、ステップ３に進み、現在着目している断面番号ｉを０に設定して初期化する。すなわち、稜線Ｅ０の始点に最初の断面Ｈ（ｉ）を設定する。その断面Ｈ（ｉ）とは、各分割点の座標ＥＰ（ｉ）を通り、稜線Ｅ０に垂直な平面をいう。
続いてステップ４に進み、断面番号が等しい次のような２つの接点Ｐ１（ｉ），Ｐ２（ｉ）を求め、両者をその求めた順序とともに保存する。これは、以下のような方法によって行われるが、詳しくは、下記文献１に記載されている。この文献１には、立体の角部を形成する対になる二面に接する球や円弧の接点を求めて、これらの補完曲線を求めることによって、フィレット面の境界の形状を算出し、フィレット面の埋め込み形状を生成する方法について記載されている。
Ｔ．Ｈａｒａｄａ，  ｅｔ．ａｌ,  Ｖａｒｉａｂｌｅ−Ｒａｄｉｕｓ  Ｂｌｅｎｄｉｎｇ  ｂｙ  Ｕｓｉｎｇ  Ｇｒｅｇｏｒｙ  Ｐａｔｃｈｅｓ  ｉｎ  Ｇｅｏｍｅｔｒｉｃ  Ｍｏｄｅｌｉｎｇ，  ＥＵＲＯＧＲＡＰＨＩＣＳ’９１，  Ｅｕｒｏｇｒａｐｈｉｃｓ  Ａｓｓｏｃｉａｔｉｏｎ，ｐｐ．５０７−５１６，１９９１：文献１
【００１７】
まず、分割点の座標ＥＰ（ｉ）を通る稜線Ｅ０に垂直な平面である断面Ｈ（ｉ）上に乗り、半径がステップ１で指定した丸め半径の円弧Ｃ（ｉ）を考える。そして、この円弧Ｃ（ｉ）を稜線Ｅ０で隣接する二つの曲面Ｆ１，Ｆ２に接するように配置したときの２つの接点をそれぞれ接点Ｐ１（ｉ），Ｐ２（ｉ）として求める。この接点Ｐ１（ｉ），Ｐ２（ｉ）を求めた状態を図示すると、図７に示すようになる。
ここで、曲面Ｆ１，Ｆ２の面上で接点Ｐ１（ｉ），Ｐ２（ｉ）が求まらない場合には、その代わりに曲面Ｆ１，Ｆ２にＧ１連続に接続する曲面上に接点を求めることとし、その曲面Ｆ１，Ｆ２にＧ１連続に接続する曲面がない場合には、曲面Ｆ１，Ｆ２を延長した仮想の曲面（以下「仮想曲面」という）を設け、その仮想曲面上に接点Ｐ１（ｉ），Ｐ２（ｉ）を求めることとする。なお、「Ｇ１連続に接続する」とは、隣接する二つの曲面が、双方の共有する境界の稜線上に存在するすべての点で一致していることを意味していて、例えば図８に示すように、曲面Ｆ１’と曲面Ｆ１との接する部分が稜線Ｅ１上のすべての点で一致している状態を意味している。その曲面Ｆ１’は稜線Ｅ１において、Ｆ１に隣接する曲面であり、曲面Ｆ１とＧ１連続に接続している。
【００１８】
次にステップ５に進み、現在着目している断面番号を１つ進めてｉ＋１に設定してステップ６に進み、その設定後の断面番号ｉがｎと等しいかを調べてステップ４の処理を稜線Ｅ０の終点で実行したか否かを調べる。そのｉがｎと等しい場合、すなわち、ステップ４の処理を稜線Ｅ０の終点で実行したときはステップ７に進み、そうでなければステップ４に戻ってステップ４及びステップ５の処理を繰り返す。
以上の各ステップのうち、ステップ２〜６までが接点算出工程１０に対応している。この接点算出工程１０では、稜線Ｅ０をｎ等分した各分割点において稜線Ｅ０と直交する断面Ｈ（ｉ）上の２つの接点Ｐ１（ｉ），Ｐ２（ｉ）を算出している。これは、上述した文献１に記載された方法のうち、フィレット面の境界の形状算出部分におけるフィレット球の接点を求める方法を利用したものである。上述の通りこの方法を利用する場合には、指定した稜線Ｅ０を共有する２つの曲面Ｆ１，Ｆ２上に接点を求めることとなるが、その求める接点がこれらの２つの曲面Ｆ１，Ｆ２からはみだした位置に求まる場合も考慮するように拡張して利用している。
【００１９】
ステップ６を終えるとステップ７に進む。ステップ７では、稜線Ｅ０を形成する２つの曲面Ｆ１，Ｆ２のうち、片側の曲面Ｆ１をカレント面Ｆに設定し、上述した接点算出工程１０において曲面Ｆ１上で求められた各接点Ｐ１（ｉ）（ｉ＝０，１，２…ｎ）のまとまりをカレント接点群Ｐと設定する。続くステップ８ではチェックする断面番号ｉを初期値０に設定する。
ステップ９では、カレント面Ｆ上の隣接する接点Ｐ（ｉ），Ｐ（ｉ＋１）について、接点Ｐ（ｉ），Ｐ（ｉ＋１）のいずれか一方がカレント面ＦとＧ１連続に接続する曲面または仮想曲面上に求められている場合があり得るため、双方の接点Ｐ（ｉ）とＰ（ｉ＋１）が同一面上にあるか否かを調べる。ここで、同一面上にあると判断したときはステップ１１に進み、そうでなければステップ１０に進む。
ステップ１０は、双方の接点Ｐ（ｉ）とＰ（ｉ＋１）とが同一面上にない場合に実行される。ここでは、現在着目している接点Ｐ（ｉ）とそれに隣接する接点Ｐ（ｉ＋１）とが同一面上にないとして、これらの接点を干渉部分を示す接点ペア（以下「干渉接点ペア」という）として保存する。その接点Ｐ（ｉ）と接点Ｐ（ｉ＋１）とが同一面上にないということは、両者の間に既存の稜線Ｅ０が存在し、両者を含む接点群を滑らかにつなぐ曲線を生成すると、干渉形状が生成されてしまうことを意味している。
【００２０】
続くステップ１１では、現在着目している断面番号ｉをひとつ移動してｉ＋１に設定する。ステップ１２では、断面番号ｉがｎと等しいかを調べて、ステップ９〜１１までの処理を稜線Ｅ０の終点で実行したか否かを調べる。そのｉがｎと等しい場合、すなわち、ステップ９〜１１までの処理を稜線Ｅ０の終点で実行したときはステップ１３に進み、そうでなければステップ９に戻ってステップ９〜１１までの処理を繰り返す。
ステップ１３では、カレント面ＦがＦ１かどうかをチェックする。この条件が成り立つ場合、すなわちカレント面ＦがＦ１である場合はステップ１４に進み、そうでない場合はステップ１５に進む。ステップ１４はカレント面ＦがＦ１である場合に実行される。その場合は曲面Ｆ２をカレント面Ｆに設定するとともに、Ｐ２をカレント接点群Ｐに設定してステップ８に戻り、曲面Ｆ２を対象にして上述したステップ８以降の処理を繰り返し、隣接する接点Ｐ（ｉ）と接点Ｐ（ｉ＋１）とが同一のカレント面Ｆ上にあるか否かを調べた上で、干渉接点ペアを保存する処理を曲面Ｆ２上を対象にして行う。
【００２１】
以上のステップ７〜１４までが干渉検出工程２０に対応する。上述の通り、この干渉検出工程２０は、ＣＰＵ１が干渉検出手段として動作することによって行われ、その際に接点算出工程１０で算出された曲面Ｆ１，Ｆ２のそれぞれにおける各接点群を構成する各接点を接点算出工程１０で保存しておいた順序で滑らかにつなぐ曲線を生成したときに、その曲線が曲面Ｆ１，Ｆ２の共有する稜線Ｅ０と干渉するか否かを判定する。その判定は、接点算出工程１０で算出されたカレント接点群Ｐの各接点がそれぞれ立体Ｂを構成するどの面に存在するかの判定によって行われ、これによって既存の稜線と後述するフィレット面境界曲線が干渉するか否かを検出することができる。
ステップ１４を終えるとステップ１５に進む。そのステップ１５は、カレント面Ｆが曲面Ｆ１の場合とＦ２の場合の双方において干渉検出工程２０を終えた場合に実行されるもので、接点算出工程１０で算出した各接点を滑らかにつなぐ曲線を生成し、その生成された曲線をディスプレイ５に表示させる。このとき生成される曲線は、フィレット面境界曲線として設計者に提示されることとなる。
【００２２】
続くステップ１６では、ステップ１０における干渉接点ペアが保存されているか否かをチェックする。ここで、干渉接点ペアが保存されていると判断した場合は、ステップ１７に進み、保存されていないと判断した場合はステップ２０に進む。
そのステップ１７は、ステップ１０における干渉接点ペアが保存されている場合、すなわち、同一面上になくて干渉形状を形成し得る２つの接点Ｐ（ｉ）及び接点Ｐ（ｉ＋１）が存在する場合に実行される。この場合、保存されている干渉接点ペア、たとえば接点Ｐ１（ｉ）及び接点Ｐ１（ｉ＋１）と、その隣接する周辺の接点Ｐ１（ｉ−１）,Ｐ１（ｉ＋２）を用いてこれらの各接点を滑らかにつなぐ曲線を生成する。この曲線は干渉部分を表す情報を表示するための曲線（以下「干渉曲線」という）とされ、ステップ１５において表示したフィレット面境界曲線とともにディスプレイ５に表示される。この場合、例えば双方の曲線に異なる色彩を施すなどして、両者の区別が明確になるようにするとよい。この場合の接点Ｐ１（ｉ）と接点Ｐ１（ｉ＋１）とは、干渉接点ペアであるから、それぞれ異なる曲面上にあるか若しくはいずれか一方が仮想面上に求められており、接点Ｐ１（ｉ）と接点Ｐ１（ｉ＋１）とは同一面になく双方の間にはかならず稜線（以下「干渉稜線」という）が存在しているはずである。そのため、その干渉稜線（例えば図９の干渉稜線Ｅ２）を、立体Ｂのそれ以外の稜線と区別し得るように、例えば両者に異なる色彩を施す等して表示するとよい。その場合の表示例を図９に示す。
【００２３】
以上の各ステップ１５〜１７が干渉情報提示工程３０に対応している。上述の通り、干渉情報提示工程３０では、接点算出検出工程１０で得られた接点の情報から、フィレット面境界曲線を仮に生成し、ディスプレイ５を通じて操作者に提示しており、干渉検出工程２０で干渉が検出されているときは、その干渉稜線を他の稜線とは区別し得るようにして表示している。この干渉情報提示工程３０を経ることにより、操作者は生成しようとするフィレット面又は角落し面が、立体の既存の稜線と干渉するか否かとともに、干渉するとしたらどの個所で干渉が発生するのかを確認することができる。
【００２４】
ステップ１７に続いてステップ１８に進む。ステップ１８では、ステップ４において求められた接点群Ｐ１（ｉ）（ｉ＝０，１，２…ｎ）、Ｐ２（ｉ）（ｉ＝０，１，２…ｎ）から、それぞれの断面Ｈ（ｉ）における各接点を通る円弧Ｃ（ｉ）を表す曲線を発生させ、各曲線を滑らかにつないでフィレット面Ｔを仮に生成する。面取り処理の場合には、ステップ４において求められた接点群Ｐ１（ｉ）（ｉ＝０，１，２…ｎ），Ｐ２（ｉ）（ｉ＝０，１，２…ｎ）から、それぞれの断面Ｈ（ｉ）における二つの接点を結ぶ直線線分を求め、求めた各直線線分を滑らかにつなぐことにより角落し面を仮に生成する。ここで生成されるフィレット面Ｔや角落し面の形状は、指定した稜線Ｅ０を共有する二つの曲面Ｆ１，Ｆ２からはみだしていたり、立体Ｂの他の部位と干渉したりしているはずである。それは、このステップ１８がステップ１６により、干渉接点ペアが保存され、フィレット面Ｔを埋め込むと干渉を引き起こすことが想定されている場合に実行されるからである。
【００２５】
続くステップ１９では、ステップ１８で生成した仮のフィレット面Ｔまたは角落し面の形状と、既存の立体Ｂとの間で干渉部分を除去する処理を行う。すなわち、干渉接点ペアＰ（ｉ），接点Ｐ（ｉ＋１）のいずれかがカレント面ＦとＧ１連続に接続する曲面上にある場合において、フィレット面Ｔの境界曲線Ｅ３と、干渉稜線Ｅ２とが接点Ｐ（ｉ）と接点Ｐ（ｉ＋１）との間で干渉しているので、その干渉する点（交差する点）を頂点Ｋとしてフィレット面Ｔまたは角落し面を埋め込む処理を行う。この処理を行うことにより、干渉を引き起こした不正な形状を生成せずに済ませることができる。また、接点Ｐ（ｉ）、接点Ｐ（ｉ＋１）のいずれかがカレント面Ｆを延長した仮想曲面上に求められていた場合、仮に生成したフィレット面を切断したり、立体との集合演算を行うことにより、干渉部分を除去した上でフィレット面または角落し面を埋め込むことができる。このステップ１９を実行したら処理を終了する。
【００２６】
ステップ２０は、ステップ１６で干渉接点ペアが保存されていない場合に実行される。このステップ２０は、フィレット面Ｔをそのまま埋め込んでも干渉形状が生成されない場合に実行されるので、ステップ４において求められた接点群Ｐ１（ｉ）（ｉ＝０，１，２…ｎ），Ｐ２（ｉ）（ｉ＝０，１，２…ｎ）から、それぞれの断面Ｈ（ｉ）における各接点を通る円弧Ｃ（ｉ）を表す曲線を発生させ、各曲線を滑らかにつないでフィレット面Ｔを生成して立体Ｂに埋め込む。面取り処理の場合には、ステップ４において求められた接点群Ｐ１（ｉ）（ｉ＝０，１，２…ｎ）から、それぞれの断面Ｈ（ｉ）における二つの接点をむすぶ直線線分を求めて、これらを滑らかにつないだ角落し面を生成して立体Ｂに埋め込むことになる。
【００２７】
以上の各ステップ１８〜２０が干渉除去工程４０に対応する。この干渉除去工程４０では、干渉情報提示工程３０により求められた干渉する位置の情報から、立体Ｂについて適切な形状変形処理を行ない、干渉を除去したフィレット面または角落し面の埋め込み済みの立体を自動的に生成している。なお、干渉除去工程４０において生成される形状が、操作者の意図通りでない場合には、干渉除去工程４０の処理を行わずに、上述した接点算出工程１０から干渉情報提示工程３０までを試行錯誤的に繰り返すことにより、干渉しないような丸め処理ができるパラメータを求めたり、干渉情報提示工程３０において提示された情報を元にしてフィレット面Ｔや角落し面を埋め込む形状を予め変形することにより、三次元モデルの生成方法を検討するようにしてもよい。
【００２８】
上述したように、この発明によるＣＡＤ装置９によれば、フィレット面または角落し面を生成したときに、その境界曲線が他の稜線と干渉してしまう場合にはその干渉部分を引き起こす位置を含む情報を設計者に提示したり、干渉を除去した上でフィレット面または角落し面を生成することができる。
以上、上述した実施例の説明では丸め処理を中心に説明したが、この発明はその丸め処理に限定されるものではなく面取り処理においても適用されるのはもとよりである。すなわち、面取り処理を行うに際して、上記実施例と同様に上記接点算出工程１０〜干渉除去工程４０を適用して角落し面の境界曲線が他の稜線と干渉するかどうかの情報を提示したり、その干渉を除去した上で角落し面を生成することもできる。
また、ＣＡＤ装置９により、上記実施例におけるステップ１〜１７の処理を試行錯誤的に繰り返し適用して、操作者の意図どおりの形状を生成するための支援を行うこととしてもよい。
【００２９】
【発明の効果】
以上説明してきたように、この発明によれば、フィレット面又は角落し面の境界曲線が他の稜線と干渉する場合に、その旨を操作者に、干渉する位置の情報とともに提示することができ、これによって、不正なフィレット面または角落し面の形状の生成を回避することができる。また、干渉形状が生成され得る場合でもその干渉が除去され干渉を生じない三次元モデルを生成することができる。
【図面の簡単な説明】
【図１】この発明によるＣＡＤ装置のシステム構成図である。
【図２】図１のＣＡＤ装置により干渉形状の生成を回避しながら三次元モデルを生成するための各工程を示すフローチャートである。
【図３】操作者がＣＡＤ装置を動作させて三次元モデルを生成するときの操作者の操作内容及びＣＰＵが実行するプログラムによる処理の手順を示すフローチャートである。
【図４】図３の後続の処理の手順を示すフローチャートである。
【図５】（ａ）はソリッドモデルとして生成した立体の一例を示す斜視図、（ｂ）は他の稜線と干渉するフィレット面を埋め込んだ立体の一例を示す斜視図である。
【図６】ソリッドモデルとして生成した立体の一例を示す図４（ａ）と同様の斜視図である。
【図７】隣接する２つの曲面上に接点及び断面を求めた状態を示す斜視図である。
【図８】Ｇ１連続に接続している２つの曲面Ｆ１’と曲面Ｆ１を示す斜視図である。
【図９】この発明により三次元モデルを生成する過程で得られる干渉する箇所をもつ立体を示す斜視図である。
【符号の説明】
１：ＣＰＵ                        ２：メモリ
３：キーボード                    ４：プリンタ
５：ディスプレイ                  ６：マウス
７：補助記憶装置                  ８：バスライン
９：ＣＡＤ装置
１０：接点算出工程              ２０：干渉抽出工程
３０：干渉情報提示工程          ４０：干渉除去工程
Ｂ：立体                        Ｅ０：稜線
Ｔ：フィレット面
【図１】
0003898466.tif 000002
【図２】
0003898466.tif 000003
【図３】
0003898466.tif 000004
【図４】
0003898466.tif 000005
【図５】
0003898466.tif 000006
【図６】
0003898466.tif 000007
【図７】
0003898466.tif 000008
【図８】
0003898466.tif 000009
【図９】
0003898466.tif 000010