(57)【特許請求の範囲】
【請求項１】
第一の部品、第二の部品、および前記第一の部品と前記第二の部品との拘束関係に関する情報を記憶する記憶部と、
前記記憶部に記憶された前記拘束関係に基づいて、前記第一の部品に対して駆動する前記第二の部品について、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と垂直である場合には、該第二の部品を、該軸を回転軸として回転する駆動部品として検出する検出部と、
前記検出部により前記軸を回転軸として回転する駆動部品として検出された前記第二の部品を、前記回転軸周りに回転させた場合の該第二の部品の可動線を生成する生成部と、
を有することを特徴とする生成装置。
【請求項２】
第一の部品、第二の部品、および前記第一の部品と前記第二の部品との拘束関係に関する情報を記憶する記憶部と、
前記記憶部に記憶された前記拘束関係に基づいて、前記第一の部品に対して駆動する前記第二の部品について、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と平行である場合には、該第二の部品を、該軸をスライド軸としてスライドする駆動部品として検出する検出部と、
前記検出部により前記軸をスライド軸としてスライドする駆動部品として検出された前記第二の部品を、前記スライド軸の方向にスライドさせた場合の該第二の部品の可動線を生成する生成部と、
を有することを特徴とする生成装置。
【請求項３】
前記生成部は、前記検出部により検出された前記第二の部品を、前記第一の部品との干渉が発生しない範囲で駆動させた場合の該第二の部品の可動線を生成する
ことを特徴とする請求項１または２に記載の生成装置。
【請求項４】
コンピュータに、
第一の部品、第二の部品、および前記第一の部品と前記第二の部品との拘束関係に関する情報を記憶する記憶部に記憶された前記拘束関係に基づいて、前記第一の部品に対して駆動する前記第二の部品について、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と垂直である場合には、該第二の部品を、該軸を回転軸として回転する駆動部品として検出し、
前記軸を回転軸として回転する駆動部品として検出された前記第二の部品を、前記回転軸周りに回転させた場合の該第二の部品の可動線を生成する
各処理を実行させるための生成プログラム。
【請求項５】
コンピュータに、
第一の部品、第二の部品、および前記第一の部品と前記第二の部品との拘束関係に関する情報を記憶する記憶部に記憶された前記拘束関係に基づいて、前記第一の部品に対して駆動する前記第二の部品について、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と平行である場合には、該第二の部品を、該軸をスライド軸としてスライドする駆動部品として検出し、
前記軸をスライド軸としてスライドする駆動部品として検出された前記第二の部品を、前記スライド軸の方向にスライドさせた場合の該第二の部品の可動線を生成する
各処理を実行させるための生成プログラム。
【請求項６】
コンピュータが実行する生成方法であって、
第一の部品、第二の部品、および前記第一の部品と前記第二の部品との拘束関係に関する情報を記憶する記憶部に記憶された前記拘束関係に基づいて、前記第一の部品に対して駆動する前記第二の部品について、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と垂直である場合には、該第二の部品を、該軸を回転軸として回転する駆動部品として検出し、
前記軸を回転軸として回転する駆動部品として検出された前記第二の部品を、前記回転軸周りに回転させた場合の該第二の部品の可動線を生成する
ことを特徴とする生成方法。
【請求項７】
コンピュータが実行する生成方法であって、
第一の部品、第二の部品、および前記第一の部品と前記第二の部品との拘束関係に関する情報を記憶する記憶部に記憶された前記拘束関係に基づいて、前記第一の部品に対して駆動する前記第二の部品について、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と平行である場合には、該第二の部品を、該軸をスライド軸としてスライドする駆動部品として検出し、
前記軸をスライド軸としてスライドする駆動部品として検出された前記第二の部品を、前記スライド軸の方向にスライドさせた場合の該第二の部品の可動線を生成する
ことを特徴とする生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成プログラムおよび生成方法に関する。
【背景技術】
【０００２】
従来、ドアなどの駆動部品の可動可能な範囲の線分である可動線を生成し、生成した可動線を表示する装置がある。例えば、可動線を生成する装置は、駆動部品の可動線に関する情報が登録されたＤＢ（Data  Base）を保持する。そして、可動線を生成する装置は、ＤＢに登録された駆動部品の可動線に関する情報を取得し、取得した情報に基づいて可動線を生成し、表示する。
【０００３】
また、従来、ユーザによって指定された駆動部品の点の軌跡を一定時間表示する装置がある。駆動部品の点の軌跡を表示する装置は、ユーザによって指定された移動距離に応じて駆動部品を移動させた場合の点の軌跡を一定時間表示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２２４２７４号公報
【特許文献２】特開２００５−２８４３９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来の装置では、ユーザにとって面倒であるという問題がある。具体例を挙げて説明すると、上記の可動線を生成する装置では、ユーザによる、駆動部品の可動線に関する情報をＤＢに登録する作業が発生する。そのため、ユーザにとって面倒である。また、駆動部品の点の軌跡を表示する装置では、ユーザが駆動部品の移動距離および点を指定するため、ユーザにとって面倒である。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、簡易に可動線を生成することができる生成装置、生成プログラムおよび生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願の開示する生成装置は、記憶部と、検出部と、生成部とを有する。記憶部は、第一の部品、第二の部品、および第一の部品と第二の部品との拘束関係に関する情報を記憶する。検出部は、記憶部に記憶された拘束関係に基づいて、第一の部品に対して駆動する第二の部品を検出する。生成部は、検出部により検出された第二の部品を所定の条件に従って駆動させた場合の第二の部品の可動線を生成する。
【発明の効果】
【０００８】
本願の開示する生成装置、生成プログラムおよび生成方法の一つの態様によれば、簡易に可動線を生成することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係る生成装置の機能構成の一例を示す図である。
【図２Ａ】図２Ａは、親部品と、子部品との関係の一例を説明するための図である。
【図２Ｂ】図２Ｂは、親部品と、子部品との関係の一例を説明するための図である。
【図３Ａ】図３Ａは、拘束関係の一例を説明するための図である。
【図３Ｂ】図３Ｂは、拘束関係の一例を説明するための図である。
【図３Ｃ】図３Ｃは、拘束関係の一例を説明するための図である。
【図３Ｄ】図３Ｄは、拘束関係の一例を説明するための図である。
【図３Ｅ】図３Ｅは、拘束関係の一例を説明するための図である。
【図３Ｆ】図３Ｆは、拘束関係の一例を説明するための図である。
【図４】図４は、図３Ａ、図３Ｂ、図３Ｃの例における「面一致」という拘束関係、および「軸一致」という拘束関係を有する３次元モデルの一例を示す図である。
【図５】図５は、図３Ｄ、図３Ｅ、図３Ｆの例における「面一致」という拘束関係、および「軸一致」という拘束関係を有する３次元モデルの一例を示す図である。
【図６】図６は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図７】図７は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図８】図８は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図９】図９は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１０Ａ】図１０Ａは、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１０Ｂ】図１０Ｂは、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１１】図１１は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１２】図１２は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１３】図１３は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１４】図１４は、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１５Ａ】図１５Ａは、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１５Ｂ】図１５Ｂは、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１５Ｃ】図１５Ｃは、実施例１に係る生成装置で実行される処理を説明するための図である。
【図１６】図１６は、実施例１に係る生成処理の手順を示すフローチャートである。
【図１７】図１７は、実施例１に係る第一の可動線生成処理の手順を示すフローチャートである。
【図１８】図１８は、実施例１に係る第二の可動線生成処理の手順を示すフローチャートである。
【図１９】図１９は、生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する生成装置、生成プログラムおよび生成方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
実施例１に係る生成装置について説明する。図１は、実施例１に係る生成装置の機能構成の一例を示す図である。本実施例に係る生成装置１０は、３次元ＣＡＤ（Computer  Aided  Design）データが示す３次元モデルの部品の中から、駆動部品を検出し、駆動部品を可動可能な範囲で可動させた場合の可動線を生成する。すなわち、本実施例に係る生成装置１０は、自動的に駆動部品を検出し、駆動部品を可動可能な範囲で可動させた場合の可動線を生成する。したがって、本実施例に係る生成装置１０によれば、簡易に可動線を生成することができる。
【００１２】
［生成装置の機能構成］
図１に示すように、生成装置１０は、入力部１１と、表示部１２と、記憶部１３と、制御部１４とを有する。
【００１３】
入力部１１は、各種情報を制御部１４に入力する。例えば、入力部１１は、ユーザから、後述の生成処理を実行する指示を受け付けて、受け付けた指示を制御部１４に入力する。また、入力部１１は、ユーザから、可動線を含む図面を表示させる指示を受け付けて、受け付けた指示を制御部１４に入力する。入力部１１のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスなどが挙げられる。
【００１４】
表示部１２は、各種の情報を表示する。例えば、表示部１２は、後述の表示制御部１４ｃによって、駆動部品の可動線を含む画像であって、３次元モデルの正面図、背面図、右側面図、左側面図、上面図、底面図などの画像を表示する。表示部１２のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
【００１５】
記憶部１３は、各種情報を記憶する。例えば、記憶部１３は、３次元ＣＡＤデータ１３ａと、画像１３ｂとを記憶する。
【００１６】
３次元ＣＡＤデータ１３ａは、３次元モデルを示すＣＡＤデータである。ここで、３次元モデルは、複数の部品を含む。すなわち、３次元ＣＡＤデータ１３ａには、各部品に関する情報が含まれる。例えば、３次元ＣＡＤデータ１３ａには、各部品を識別するＩＤ（IDentification）が含まれる。また、３次元ＣＡＤデータ１３ａには、部品のそれぞれの面を識別するＩＤが含まれる。さらに、３次元ＣＡＤデータ１３ａには、面のそれぞれの辺に対応する線を識別するＩＤが含まれる。また、３次元ＣＡＤデータ１３ａには、線の両端の位置を示す３次元の位置情報が含まれる。すなわち、３次元ＣＡＤデータ１３ａに含まれる両端の位置情報によって、３次元空間上の線分が定義される。また、各辺に対応する線分、および法線ベクトルによって３次元空間上の面が定義される。また、各面によって、３次元空間上の部品が定義される。また、３次元ＣＡＤデータ１３ａが示す３次元モデルでは、３次元空間おいて互いに直交するＸ軸、Ｙ軸、Ｚ軸の３軸が定義されている。例えば、３次元モデルでは、ＸＹ平面が水平面となるようにＸ軸、Ｙ軸が定義され、Ｚ軸が水平面に対して鉛直上向きとなるように定義される。このように定義された場合には、３次元モデルの各面を特定することができる。例えば、法線ベクトルの方向が、ＸＹ平面の法線ベクトルの方向と同一または許容誤差の範囲内であって、他の面よりもＺ軸上での値が小さい面を特定することで、底面を特定することができる。これは、３次元モデルにおける底面は、ＸＹ平面と同様な水平面であり、また、他の面よりＺ軸上での値が小さいからである。
【００１７】
また、３次元ＣＡＤデータ１３ａには、複数の部品のうち、親と子との関係にある部品を特定する情報が含まれる。例えば、部品が、親の部品である親部品である場合には、この部品に対して、親部品であることを示す情報が付加される。また、部品が、子の部品である子部品である場合には、この部品に対して、子部品であることを示す情報が付加される。ここで、親の部品である親部品と子の部品である子部品との関係の一例について説明する。図２Ａおよび図２Ｂは、親部品と、子部品との関係の一例を説明するための図である。図２Ａの例では、親部品２０に対して、子部品２１が回転軸２２周りの方向に回転する。また、図２Ｂの例では、親部品２５に対して、子部品２６がスライド軸２７方向にスライドする。このように、図２Ａおよび図２Ｂの例では、親部品に対して、子部品が駆動するような関係にある。すなわち、図２Ａおよび図２Ｂの例では、子部品は、駆動部品であると言える。
【００１８】
さらに、３次元ＣＡＤデータ１３ａには、親部品の面または線と、子部品の面または線との拘束関係を示す情報が含まれる。図３Ａ、図３Ｂ、図３Ｃ、図３Ｄ、図３Ｅ、図３Ｆは、拘束関係の一例を説明するための図である。図３Ａ、図３Ｂの例では、親部品２０は、面３０、面３１など複数の面を有する。図３Ａ、図３Ｂの例では、面３０は、線４０など複数の線を有する。図３Ａ、図３Ｂの例では、面３１は、線４０、線４１など複数の線を有する。また、図３Ａ、図３Ｃの例では、子部品２１は、面３２、面３３など複数の面を有する。図３Ａ、図３Ｃの例では、面３２は、線４２など複数の線を有する。図３Ａ、図３Ｃの例では、面３３は、線４２、線４３など複数の線を有する。
【００１９】
また、図３Ａ、図３Ｂ、図３Ｃの例では、親部品２０の面３０と、子部品２１の面３２とが同一平面上である。このため、面３０と面３２とは、同一平面上であることを示す「面一致」という拘束関係を有する。
【００２０】
また、図３Ａ、図３Ｂ、図３Ｃの例では、親部品２０の線４１と、子部品２１の線４３とは、子部品２１が駆動する場合の同一の駆動軸であることを示す「軸一致」という拘束関係を有する。
【００２１】
図４は、図３Ａ、図３Ｂ、図３Ｃの例における「面一致」という拘束関係、および「軸一致」という拘束関係を有する３次元モデルの一例を示す図である。図４の例では、親部品２０に対して、子部品２１は、線４１および線４３を回転軸として、回転軸周りの方向に可動することができる。このように、駆動軸が回転軸である場合には、「面一致」という拘束関係を有する面３０および面３２に対して、「軸一致」という拘束関係を有する線４１および線４３が示す駆動軸の方向は、垂直となる。したがって、「面一致」という拘束関係を有する面に対して、「軸一致」という拘束関係を有する線が示す駆動軸の方向が垂直である場合には、子部品は、駆動軸を回転軸として、回転軸周りの方向に可動することができる。
【００２２】
また、図３Ｄ、図３Ｅの例では、親部品２５は、面３４など複数の面を有する。図３Ｄ、図３Ｅの例では、面３４は、線４４など複数の線を有する。また、図３Ｄ、図３Ｆの例では、子部品２６は、面３５、面３６、面３７など複数の面を有する。図３Ｄ、図３Ｆの例では、面３７は、線４６、線４７など複数の線を有する。
【００２３】
また、図３Ｄ、図３Ｅ、図３Ｆの例では、親部品２５の面３４と、子部品２６の面３７とが同一平面上である。ここで、面３４と面３７との距離が閾値より小さい場合には、面３４と面３７との距離が同一平面上であるとみなされる。よって、面３４と面３７とは、同一平面上であることを示す「面一致」という拘束関係を有する。
【００２４】
また、図３Ｄ、図３Ｅ、図３Ｆの例では、親部品２５の線４４と、子部品２６の線４７とは、子部品２６が駆動する場合の同一の駆動軸であることを示す「軸一致」という拘束関係を有する。
【００２５】
図５は、図３Ｄ、図３Ｅ、図３Ｆの例における「面一致」という拘束関係、および「軸一致」という拘束関係を有する３次元モデルの一例を示す図である。図５の例では、親部品２５に対して、子部品２６は、線４４および線４７をスライド軸として、スライド軸の方向に可動することができる。このように、駆動軸がスライド軸である場合には、「面一致」という拘束関係を有する面３４および面３７の法線ベクトルに対して、「軸一致」という拘束関係を有する線４４および線４７が示す駆動軸の方向は、垂直となる。したがって、「面一致」という拘束関係を有する面の法線ベクトルに対して、「軸一致」という拘束関係を有する線が示す駆動軸の方向が垂直である場合には、子部品は、駆動軸をスライド軸として、スライド軸の方向に可動することができる。すなわち、「面一致」という拘束関係を有する面に対して、「軸一致」という拘束関係を有する線が示す駆動軸の方向が平行である場合には、子部品は、駆動軸をスライド軸として、スライド軸の方向に可動することができる。
【００２６】
画像１３ｂは、駆動部品の可動線を含む画像であって、３次元モデルの正面図、背面図、右側面図、左側面図、上面図、底面図などの画像である。画像１３ｂは、後述の生成部１４ｂにより、生成される。そして、画像１３ｂは、生成部１４ｂにより、記憶部１３に格納される。
【００２７】
記憶部１３は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１３は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。
【００２８】
制御部１４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部１４は、検出部１４ａと、生成部１４ｂと、表示制御部１４ｃとを有する。
【００２９】
検出部１４ａは、記憶部１３に記憶された３次元ＣＡＤデータ１３ａに含まれる拘束関係に基づいて、親部品に対して駆動する駆動部品である子部品を検出する。検出部１４ａは、拘束関係に基づいて、親部品の面と子部品の面とが同一平面上に存在し、かつ、親部品の線と子部品の線とが同一の軸を示すとともに、軸の方向が、平面と垂直である場合には、子部品を、軸を回転軸として回転する駆動部品として検出する。検出部１４ａは、拘束関係に基づいて、親部品の面と子部品の面とが同一平面上に存在し、かつ、親部品の線と子部品の線とが同一の軸を示すとともに、軸が、平面と平行である場合には、子部品を、軸をスライド軸としてスライドする駆動部品として検出する。
【００３０】
具体例を挙げて説明する。検出部１４ａは、まず、記憶部１３から、３次元ＣＡＤデータ１３ａを取得する。続いて、検出部１４ａは、３次元ＣＡＤデータ１３ａから親部品と子部品との拘束関係を検索する。図３Ａの例では、検出部１４ａは、検索の結果、面３０と面３２とが同一平面上であることを示す「面一致」という拘束関係を得ることができる。また、図３Ａの例では、検出部１４ａは、検索の結果、線４１と線４３とが、子部品２１が駆動する場合の同一の駆動軸であることを示す「軸一致」という拘束関係を得ることができる。また、図３Ｄの例では、検出部１４ａは、検索の結果、面３４と面３７とが同一平面上であることを示す「面一致」という拘束関係を得ることができる。また、図３Ｄの例では、検出部１４ａは、検索の結果、線４４と線４７とが、子部品２６が駆動する場合の同一の駆動軸であることを示す「軸一致」という拘束関係を得ることができる。
【００３１】
そして、検出部１４ａは、検索の結果、拘束関係が得られたか否かを判定する。拘束関係が得られた場合には、検出部１４ａは、拘束関係がある親部品と子部品との全てのペアのそれぞれに対して、下記の処理を行う。すなわち、検出部１４ａは、まず、親部品の面と子部品との面とが「面一致」という拘束関係を有するか否かを判定する。判定の結果、「面一致」という拘束関係を有する場合には、検出部１４ａは、親部品の線と子部品の線とが「軸一致」という拘束関係を有するか否かを判定する。判定の結果、「軸一致」という拘束関係を有する場合には、検出部１４ａは、次のような処理を行う。すなわち、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸の方向が、「面一致」という拘束関係を有する面と垂直であるか否かを判定する。なお、検出部１４ａは、許容誤差を加味して、駆動軸の方向が、面と垂直であるか否かを判定することができる。図４の例では、検出部１４ａは、「軸一致」という拘束関係を有する線４１，４３が示す駆動軸の方向が、「面一致」という拘束関係を有する面３０，３２と垂直であると判定する。判定の結果、垂直であると判定した場合には、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸を、回転軸として検出する。図４の例では、検出部１４ａは、線４１，４３が示す駆動軸を回転軸として検出する。また、判定の結果、垂直であると判定した場合には、検出部１４ａは、子部品を、「軸一致」という拘束関係を有する線が示す駆動軸を回転軸として、回転軸周りに回転する駆動部品として検出する。図４の例では、検出部１４ａは、子部品２１を、線４１，４３が示す駆動軸を回転軸として、回転軸周りに回転する駆動部品として検出する。このように、検出部１４ａは、自動的に、回転軸、回転軸周りに回転する駆動部品を検出することができる。
【００３２】
一方、「軸一致」という拘束関係を有する線が示す駆動軸の方向が、「面一致」という拘束関係を有する面と垂直でないと判定した場合、検出部１４ａは、次のような処理を行う。すなわち、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸の方向が、「面一致」という拘束関係を有する面と平行であるか否かを判定する。なお、検出部１４ａは、許容誤差を加味して、駆動軸の方向が、面と平行であるか否かを判定することができる。図５の例では、検出部１４ａは、「軸一致」という拘束関係を有する線４４，４７が示す駆動軸の方向が、「面一致」という拘束関係を有する面３４，３７と平行であると判定する。判定の結果、平行であると判定した場合には、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸を、スライド軸として検出する。図５の例では、検出部１４ａは、線４４，４７が示す駆動軸をスライド軸として検出する。また、判定の結果、平行であると判定した場合には、検出部１４ａは、子部品を、「軸一致」という拘束関係を有する線が示す駆動軸をスライド軸として、スライド軸方向にスライドする駆動部品として検出する。図４の例では、検出部１４ａは、子部品２６を、線４４，４７が示す駆動軸をスライド軸として、スライド軸方向にスライドする駆動部品として検出する。このように、検出部１４ａは、自動的に、スライド軸、スライド軸方向にスライドする駆動部品を検出することができる。上述した処理を、検出部１４ａは、拘束関係がある親部品と子部品との全てのペアのそれぞれに対して行う。
【００３３】
生成部１４ｂは、検出部１４ａにより駆動部品として検出された子部品を所定の条件に従って駆動させた場合の子部品の可動線を生成する。生成部１４ｂは、検出部１４ａにより駆動部品として検出された子部品を、親部品との干渉が発生しない範囲で駆動させた場合の子部品の可動線を生成する。
【００３４】
具体例を挙げて説明する。検出部１４ａにより、子部品が回転軸周りに回転する駆動部品として検出された場合には、生成部１４ｂは、まず、次のような処理を行う。すなわち、生成部１４ｂは、３次元モデルの正面図、背面図、右側面図、左側面図、上面図、底面図などの各図に対応する面のうち、回転軸と垂直な方向の面を投影面として決定する。なお、生成部１４ｂは、許容誤差を加味して、回転軸と垂直な方向の面を投影面として決定することができる。図６は、実施例１に係る生成装置で実行される処理を説明するための図である。図６の例では、親部品２０および子部品２１を有する３次元モデルが示されている。図６の例では、生成部１４ｂは、正面５１、右側面５２、上面５３、図示しない背面、図示しない左側面、図示しない底面の６つの面のうち、線４１，４３が示す回転軸と垂直な方向の上面５３を投影面として決定する。なお、図６の例では、生成部１４ｂは、６つの面のうち、線４１，４３が示す回転軸と垂直な方向の、底面を投影面として決定することもできる。
【００３５】
そして、生成部１４ｂは、回転軸から最も遠い子部品上の点を駆動点として検出する。図７は、実施例１に係る生成装置で実行される処理を説明するための図である。図７の例では、先の図４の例に示した子部品２１が示されている。図７の例では、生成部１４ｂは、線４１，４３が示す回転軸から最も遠い子部品２１上の点５５を駆動点として検出する。
【００３６】
続いて、生成部１４ｂは、親部品との干渉が発生するか、または、駆動部品である子部品が１回転するまで、子部品を回転軸周りの所定方向に所定量ずつ回転させる。例えば、生成部１４ｂは、上面から３次元モデルを見た場合に、回転軸の右回りの方向に子部品を５度ずつ回転させる。そして、生成部１４ｂは、子部品を５度回転させるごとに、親部品との干渉が発生したか否か、および、子部品が１回転したか否かを判定する。子部品と親部品とで干渉が発生した場合には、生成部１４ｂは、干渉が発生した位置から、子部品の回転を１つ戻した場合の駆動点の位置、すなわち、回転軸の左回りの方向に子部品を５度戻した場合の駆動点の位置を記憶部１３に格納する。図８は、実施例１に係る生成装置で実行される処理を説明するための図である。図８の例では、先の図４の例に示した親部品２０および子部品２１を有する三次元モデルが示されている。図８の例では、上面から３次元モデルを見た場合に、線４１，４３が示す回転軸の右回りの方向に子部品２１を５度ずつ回転させたときに、箇所５６において、子部品２１と親部品２０との干渉が発生した場合が示されている。図８の例では、生成部１４ｂは、干渉が発生したときの子部品２１の位置から、回転軸の左回りの方向に、子部品２１の位置を５度戻し、位置を戻した子部品２１の駆動点５５の位置を記憶部１３に格納する。また、親部品と子部品との干渉が発生した場合には、生成部１４ｂは、記憶部１３に設けられた図示しないフラグの値を、干渉が発生したことを示す所定値、例えば、「０」に設定する。
【００３７】
また、生成部１４ｂは、子部品が１回転したと判定した場合には、１回転したときの駆動点５５の位置を記憶部１３に格納する。また、生成部１４ｂは、子部品が１回転したと判定した場合には、上述したフラグの値を、子部品が１回転したことを示す所定値、例えば、「１」に設定する。
【００３８】
また、生成部１４ｂは、子部品を回転軸周りの所定方向に所定量ずつ回転させた場合に、親部品との干渉が発生した場合には、次のような処理を行う。すなわち、生成部１４ｂは、親部品との干渉が発生するまで、子部品を回転軸周りの、上述した所定方向とは逆方向に所定量ずつ回転させる。例えば、生成部１４ｂは、上面から３次元モデルを見た場合に、回転軸の左回りの方向に子部品を５度ずつ回転させる。そして、生成部１４ｂは、子部品を５度回転させるごとに、親部品との干渉が発生したか否かを判定する。子部品と親部品とで干渉が発生した場合には、生成部１４ｂは、干渉が発生した位置から、子部品の回転を１つ戻した駆動点の位置、すなわち、回転軸の右回りの方向に子部品を５度戻した場合の駆動点の位置を記憶部１３に格納する。図９は、実施例１に係る生成装置で実行される処理を説明するための図である。図９の例では、先の図４の例に示した親部品２０および子部品２１を有する三次元モデルが示されている。図９の例では、上面から３次元モデルを見た場合に、線４１，４３が示す回転軸の左回りの方向に子部品２１を５度ずつ回転させたときに、箇所５７において、子部品２１と親部品２０との干渉が発生した場合が示されている。図９の例では、生成部１４ｂは、干渉が発生したときの子部品２１の位置から、回転軸の右回りの方向に、子部品２１の位置を５度戻し、位置を戻した子部品２１の駆動点５５の位置を記憶部１３に格納する。
【００３９】
そして、生成部１４ｂは、投影面として決定した全ての面について、下記の処理を行う。すなわち、生成部１４ｂは、まず、投影面として決定した面と、回転軸との交点を円の中心として決定する。そして、生成部１４ｂは、上述したフラグの値を取得する。続いて、取得したフラグの値が、干渉が発生したことを示す所定値である場合には、生成部１４ｂは、記憶部１３に記憶された駆動点５５の２つの位置を取得し、取得した２つの位置を投影面として決定した面の図面に投影する。図１０Ａおよび図１０Ｂは、実施例１に係る生成装置で実行される処理を説明するための図である。図１０Ａおよび図１０Ｂの例では、先の図６に示した３次元モデル、および、投影面として決定された上面５３が示されている。図１０Ａの例では、生成部１４ｂは、上面５３と、線４１，４３が示す回転軸との交点５８を円の中心として決定する。また、図１０Ａの例では、生成部１４ｂは、記憶部１３に記憶された駆動点５５の２つの位置５９，６０を上面５３の上面図に投影する。図１０Ａの例では、位置５９，６０が投影された上面５３の上面図の点６１，６２が示されている。
【００４０】
そして、生成部１４ｂは、円の中心として決定された点を円の中心として、図面に投影した２つの点をそれぞれ始点と終点とする円弧を図面に描画することにより、可動線を生成する。図１０Ｂの例では、点５８を円の中心として、上面図に投影した２つの点６１，６２をそれぞれ始点と終点とする円弧６３を上面図に描画することにより、可動線６３を生成する。
【００４１】
一方、取得したフラグの値が、１回転したことを示す所定値である場合には、生成部１４ｂは、記憶部１３に記憶された駆動点５５の１つの位置を取得し、取得した１つの位置を投影面として決定した面の図面に投影する。そして、生成部１４ｂは、円の中心として決定された点を円の中心として、図面に投影した１つの点と円の中心とを半径とする円を図面に描画することにより、可動線を生成する。生成部１４ｂは、投影面として決定した全ての面について、上述した処理を行う。このように、生成部１４ｂは、駆動部品を可動可能な範囲で可動させた場合の可動線を生成する。したがって、生成部１４ｂによれば、簡易に可動線を生成することができる。
【００４２】
その後、生成部１４ｂは、生成された可動線を含む図面の画像１３ｂを記憶部１３に格納する。
【００４３】
また、検出部１４ａにより、子部品がスライド軸方向にスライドする駆動部品として検出された場合には、生成部１４ｂは、まず、次のような処理を行う。すなわち、生成部１４ｂは、３次元モデルの正面図、背面図、右側面図、左側面図、上面図、底面図などの各図に対応する面のうち、スライド軸と垂直な方向の面以外の面を投影面として決定する。図１１は、実施例１に係る生成装置で実行される処理を説明するための図である。図１１の例では、親部品２５および子部品２６を有する３次元モデルが示されている。図１１の例では、生成部１４ｂは、正面５１、右側面５２、上面５３、背面、左側面、底面の６つの面のうち、線４４，４７が示すスライド軸と垂直な方向の右側面５２および左側面以外の正面５１、上面５３などを投影面として決定する。なお、図１１の例では、生成部１４ｂは、６つの面のうち、底面や背面を投影面として決定することもできる。
【００４４】
そして、生成部１４ｂは、子部品のスライド軸方向の両端の点のうち少なくとも１つの点を駆動点として検出する。図１２は、実施例１に係る生成装置で実行される処理を説明するための図である。図１２の例では、先の図５の例に示した子部品２６が示されている。図１２の例では、生成部１４ｂは、線４４，４７が示すスライド軸から最も遠い子部品２６上のスライド軸方向の両端の点６４，６５のうち少なくとも１つの点を駆動点として検出する。
【００４５】
続いて、生成部１４ｂは、親部品との干渉が発生するか、または、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えるまで、子部品をスライド軸方向に、所定量ずつスライドさせる。例えば、生成部１４ｂは、スライド軸の一方の方向を正方向、他の方向を負方向とした場合に、正方向に子部品を１ｃｍずつスライドさせる。そして、生成部１４ｂは、子部品を１ｃｍスライドさせるごとに、親部品との干渉が発生したか否か、および、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えたか否かを判定する。子部品と親部品とで干渉が発生した場合には、生成部１４ｂは、干渉が発生した位置から、子部品のスライドを１つ戻した場合の駆動点の位置、すなわち、負方向に子部品を１ｃｍ戻した場合の駆動点の位置を記憶部１３に格納する。図１３は、実施例１に係る生成装置で実行される処理を説明するための図である。図１３の例では、先の図５の例に示した親部品２５および子部品２６を有する三次元モデルが示されている。図１３の例では、スライド軸の正方向に子部品２６を１ｃｍずつスライドさせたときに、箇所６６において、子部品２６と親部品２５との干渉が発生した場合が示されている。図１３の例では、生成部１４ｂは、干渉が発生したときの子部品２６の位置から、スライド軸の負方向に、子部品２６の位置を１ｃｍ戻し、位置を戻した子部品２６の駆動点６５の位置を記憶部１３に格納する。なお、図１３の例では、生成部１４ｂが、図１２の例における両端の点６４，６５のうち点６５を駆動点として検出した場合が示されている。
【００４６】
また、生成部１４ｂは、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えたと判定した場合には、領域を超えたときの子部品の位置を、負方向に１ｃｍ戻した場合の駆動点の位置を記憶部１３に格納する。
【００４７】
また、生成部１４ｂは、子部品をスライド軸の正方向に所定量ずつスライドさせた場合に、親部品との干渉が発生した場合、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えた場合には、次のような処理を行う。すなわち、生成部１４ｂは、親部品との干渉が発生するか、または、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えるまで、子部品をスライド軸の負方向に所定量ずつスライドさせる。例えば、生成部１４ｂは、スライド軸の負方向に子部品を１ｃｍずつスライドさせる。そして、生成部１４ｂは、子部品を１ｃｍスライドさせるごとに、親部品との干渉が発生したか否か、および、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えたか否かを判定する。子部品と親部品とで干渉が発生した場合には、生成部１４ｂは、干渉が発生した位置から、子部品のスライドを１つ戻した駆動点の位置、すなわち、スライド軸の正方向に子部品を１ｃｍ戻した場合の駆動点の位置を記憶部１３に格納する。また、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えた場合には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、領域を超えた位置から、子部品のスライドを１つ戻した場合の駆動点の位置を記憶部１３に格納する。図１４は、実施例１に係る生成装置で実行される処理を説明するための図である。図１４の例では、先の図５の例に示した親部品２５および子部品２６を有する三次元モデルが示されている。図１４の例では、線４４，４７が示すスライド軸の負方向に子部品２６を１ｃｍずつスライドさせたときに、箇所６７において、子部品２６と親部品２５との干渉が発生した場合が示されている。図１４の例では、生成部１４ｂは、干渉が発生したときの子部品２６の位置から、スライド軸の正方向に、子部品２６の位置を１ｃｍ戻し、位置を戻した子部品２６の駆動点６５の位置を記憶部１３に格納する。
【００４８】
そして、生成部１４ｂは、記憶部１３に記憶された駆動点６５の２つの位置を取得し、取得した２つの位置を投影面として決定した面の図面に投影する。図１５Ａ、図１５Ｂおよび図１５Ｃは、実施例１に係る生成装置で実行される処理を説明するための図である。図１５Ａ、図１５Ｂおよび図１５Ｃの例では、先の図１１に示した３次元モデル、および、投影面として決定された正面５１、上面５３が示されている。図１５Ａの例では、生成部１４ｂは、記憶部１３に記憶された駆動点６５の２つの位置７０，７１を上面５３の上面図および正面５１の正面図に投影する。図１５Ａの例では、位置７０，７１が投影された正面５１の正面図の点７２，７３が示されている。また、図１５Ａの例では、位置７０，７１が投影された上面５３の上面図の点７４，７５が示されている。
【００４９】
そして、生成部１４ｂは、図面に投影した２つの点をそれぞれ始点と終点とする矢印の線分を図面に描画することにより、可動線を生成する。図１５Ｂの例では、上面図に投影した２つの点７５，７４をそれぞれ始点と終点とする矢印の線分７６を上面図に描画することにより、可動線７６を生成する。図１５Ｃの例では、正面図に投影した２つの点７３，７２をそれぞれ始点と終点とする矢印の線分７７を正面図に描画することにより、可動線７７を生成する。生成部１４ｂは、投影面として決定した全ての面について、上述した処理を行う。このように、生成部１４ｂは、駆動部品を可動可能な範囲で可動させた場合の可動線を生成する。したがって、生成部１４ｂによれば、簡易に可動線を生成することができる。
【００５０】
その後、生成部１４ｂは、生成された可動線を含む図面の画像１３ｂを記憶部１３に格納する。
【００５１】
表示制御部１４ｃは、表示部１２の表示内容を制御する。例えば、表示制御部１４ｃは、入力部１１から可動線を含む図面を表示させる指示を受け付けると、記憶部１３から画像１３ｂを取得し、取得した画像１３ｂを表示するように表示部１２を制御する。
【００５２】
制御部１４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００５３】
［処理の流れ］
次に、本実施例に係る生成装置１０の処理の流れを説明する。図１６は、実施例１に係る生成処理の手順を示すフローチャートである。生成処理が実行されるタイミングの一例としては、入力部１１を介して、ユーザから生成処理を実行する指示を制御部１４が受け付けた場合などが挙げられる。
【００５４】
図１６に示すように、検出部１４ａは、記憶部１３から、３次元ＣＡＤデータ１３ａを取得する（ステップＳ１０１）。続いて、検出部１４ａは、３次元ＣＡＤデータ１３ａから親部品と子部品との拘束関係を検索する（ステップＳ１０２）。
【００５５】
そして、検出部１４ａは、検索の結果、拘束関係が得られたか否かを判定する（ステップＳ１０３）。拘束関係が得られなかった場合（ステップＳ１０３否定）には、処理を終了する。一方、拘束関係が得られた場合（ステップＳ１０３肯定）には、検出部１４ａは、拘束関係がある親部品と子部品との全てのペアのうち、下記のステップＳ１０５で未選択のペアがあるか否かを判定する（ステップＳ１０４）。
【００５６】
未選択のペアがない場合（ステップＳ１０４否定）には、処理を終了する。未選択のペアがある場合（ステップＳ１０４肯定）には、検出部１４ａは、未選択のペアを処理対象のペアとして選択する（ステップＳ１０５）。検出部１４ａは、親部品の面と子部品との面とが「面一致」という拘束関係を有するか否かを判定する（ステップＳ１０６）。「面一致」という拘束関係を有しない場合（ステップＳ１０６否定）には、ステップＳ１０４へ戻る。一方、「面一致」という拘束関係を有する場合（ステップＳ１０６肯定）には、検出部１４ａは、親部品の線と子部品の線とが「軸一致」という拘束関係を有するか否かを判定する（ステップＳ１０７）。
【００５７】
「軸一致」という拘束関係を有しない場合（ステップＳ１０７否定）には、ステップＳ１０４へ戻る。一方、「軸一致」という拘束関係を有する場合（ステップＳ１０７肯定）には、検出部１４ａは、次のような処理を行う。すなわち、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸の方向が、「面一致」という拘束関係を有する面と垂直であるか否かを判定する（ステップＳ１０８）。
【００５８】
垂直であると判定した場合（ステップＳ１０８肯定）には、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸を、回転軸として検出する（ステップＳ１０９）。そして、検出部１４ａは、子部品を、「軸一致」という拘束関係を有する線が示す駆動軸を回転軸として、回転軸周りに回転する駆動部品として検出する（ステップＳ１１０）。続いて、生成部１４ｂは、第一の可動線生成処理を実行し（ステップＳ１１１）、ステップＳ１０４へ戻る。第一の可動線生成処理については、後述する。
【００５９】
一方、垂直でないと判定した場合（ステップＳ１０８否定）には、検出部１４ａは、次のような処理を行う。すなわち、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸の方向が、「面一致」という拘束関係を有する面と平行であるか否かを判定する（ステップＳ１１２）。平行であると判定した場合（ステップＳ１１２肯定）には、検出部１４ａは、「軸一致」という拘束関係を有する線が示す駆動軸を、スライド軸として検出する（ステップＳ１１３）。そして、検出部１４ａは、子部品を、「軸一致」という拘束関係を有する線が示す駆動軸をスライド軸として、スライド軸方向にスライドする駆動部品として検出する（ステップＳ１１４）。続いて、生成部１４ｂは、第二の可動線生成処理を実行し（ステップＳ１１５）、ステップＳ１０４へ戻る。第二の可動線生成処理については、後述する。
【００６０】
図１７は、実施例１に係る第一の可動線生成処理の手順を示すフローチャートである。
【００６１】
図１７に示すように、生成部１４ｂは、３次元モデルの正面図、背面図、右側面図、左側面図、上面図、底面図などの各図に対応する面のうち、回転軸と垂直な方向の面を投影面として決定する（ステップＳ２０１）。
【００６２】
そして、生成部１４ｂは、回転軸から最も遠い子部品上の点を駆動点として検出する（ステップＳ２０２）。
【００６３】
続いて、生成部１４ｂは、子部品を回転軸周りの所定方向に所定量回転させる（ステップＳ２０３）。そして、生成部１４ｂは、子部品と親部品とで干渉が発生したか否かを判定する（ステップＳ２０４）。干渉が発生しない場合（ステップＳ２０４否定）には、生成部１４ｂは、子部品が１回転したか否かを判定する（ステップＳ２０５）。一回転していない場合（ステップＳ２０５否定）には、ステップＳ２０３へ戻る。
【００６４】
一方、干渉が発生した場合（ステップＳ２０４肯定）には、生成部１４ｂは、フラグの値を干渉が発生したことを示す所定値、例えば、「０」に設定する（ステップＳ２０６）。そして、生成部１４ｂは、干渉が発生した位置から、子部品の回転を１つ戻した場合の駆動点の位置を記憶部１３に格納し（ステップＳ２０７）、ステップＳ２０８へ進む。
【００６５】
また、子部品が１回転した場合（ステップＳ２０５肯定）には、生成部１４ｂは、上述したフラグの値を、子部品が１回転したことを示す所定値、例えば、「１」に設定する（ステップＳ２１１）。そして、生成部１４ａは、１回転したときの駆動点の位置を記憶部１３に格納し（ステップＳ２１２）、ステップＳ２１３へ進む。
【００６６】
また、生成部１４ｂは、子部品を回転軸周りの、上述した所定方向とは逆方向に所定量回転させる（ステップＳ２０８）。そして、生成部１４ｂは、子部品と親部品とで干渉が発生したか否かを判定する（ステップＳ２０９）。干渉が発生しない場合（ステップＳ２０９否定）には、ステップＳ２０８へ戻る。一方、干渉が発生した場合（ステップＳ２０９肯定）には、生成部１４ｂは、干渉が発生した位置から、子部品の回転を１つ戻した場合の駆動点の位置を記憶部１３に格納する（ステップＳ２１０）。
【００６７】
そして、生成部１４ｂは、ステップＳ２０１で投影面として決定された面のうち、下記のステップＳ２１４で未選択の面があるか否かを判定する（ステップＳ２１３）。
【００６８】
未選択の面がない場合（ステップＳ２１３否定）には、生成部１４ｂは、処理結果を制御部１４の内部メモリに格納し、リターンする。未選択の面がある場合（ステップＳ２１３肯定）には、生成部１４ｂは、未選択の面を処理対象の面として１つ選択する（ステップＳ２１４）。生成部１４ｂは、投影面として決定した面と、回転軸との交点を円の中心として決定する（ステップＳ２１５）。そして、生成部１４ｂは、上述したフラグの値を取得する（ステップＳ２１６）。続いて、生成部１４ｂは、取得したフラグの値が、干渉が発生したことを示す所定値、例えば、「０」であるか否かを判定する（ステップＳ２１７）。取得したフラグの値が、干渉が発生したことを示す所定値である場合（ステップＳ２１７肯定）には、生成部１４ｂは、記憶部１３に記憶された駆動点の２つの位置を取得し、取得した２つの位置を投影面として決定した面の図面に投影する（ステップＳ２１８）。
【００６９】
そして、生成部１４ｂは、円の中心として決定された点を円の中心として、図面に投影した２つの点をそれぞれ始点と終点とする円弧を図面に描画することにより、可動線を生成する（ステップＳ２１９）。その後、生成部１４ｂは、生成された可動線を含む図面の画像１３ｂを記憶部１３に格納し（ステップＳ２２０）、ステップＳ２１３へ戻る。
【００７０】
一方、取得したフラグの値が、干渉が発生したことを示す所定値でない場合、すなわち、子部品が１回転したことを示す所定値である場合（ステップＳ２１７否定）には、生成部１４ｂは、次のような処理を行う。すなわち、生成部１４ｂは、記憶部１３に記憶された駆動点の１つの位置を取得し、取得した１つの位置を投影面として決定した面の図面に投影する（ステップＳ２２１）。そして、生成部１４ｂは、円の中心として決定された点を円の中心として、図面に投影した１つの点と円の中心とを半径とする円を図面に描画することにより、可動線を生成する（ステップＳ２２２）。その後、生成部１４ｂは、生成された可動線を含む図面の画像１３ｂを記憶部１３に格納し（ステップＳ２２３）、ステップＳ２１３へ戻る。
【００７１】
図１８は、実施例１に係る第二の可動線生成処理の手順を示すフローチャートである。
【００７２】
図１８に示すように、生成部１４ｂは、３次元モデルの正面図、背面図、右側面図、左側面図、上面図、底面図などの各図に対応する面のうち、スライド軸と垂直な方向の面以外の面を投影面として決定する（ステップＳ３０１）。そして、生成部１４ｂは、子部品のスライド軸方向の両端の点のうち少なくとも１つの点を駆動点として検出する（ステップＳ３０２）。続いて、生成部１４ｂは、スライド軸の一方の方向を正方向、他の方向を負方向とした場合に、正方向に子部品を所定量スライドさせる（ステップＳ３０３）。
【００７３】
そして、生成部１４ｂは、子部品と親部品とで干渉が発生したか否かを判定する（ステップＳ３０４）。干渉が発生しない場合（ステップＳ３０４否定）には、生成部１４ｂは、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えたか否かを判定する（ステップＳ３０５）。超えていない場合（ステップＳ３０５否定）には、ステップＳ３０３へ戻る。
【００７４】
一方、干渉が発生した場合（ステップＳ３０４肯定）には、生成部１４ｂは、干渉が発生した位置から、子部品のスライドを１つ戻した場合の駆動点の位置を記憶部１３に格納し（ステップＳ３０６）、ステップＳ３０８へ進む。
【００７５】
また、超えた場合（ステップＳ３０５肯定）には、生成部１４ｂは、駆動点が図の領域を超えた位置から、子部品のスライドを１つ戻した場合の駆動点の位置を記憶部１３に格納する（ステップＳ３０７）。
【００７６】
また、生成部１４ｂは、スライド軸の負方向に子部品を所定量スライドさせる（ステップＳ３０８）。
【００７７】
そして、生成部１４ｂは、子部品と親部品とで干渉が発生したか否かを判定する（ステップＳ３０９）。干渉が発生しない場合（ステップＳ３０９否定）には、生成部１４ｂは、投影面として決定した面に駆動点を投影した点が、投影面として決定した面に対応する図の領域を超えたか否かを判定する（ステップＳ３１０）。超えていない場合（ステップＳ３１０否定）には、ステップＳ３０８へ戻る。
【００７８】
一方、干渉が発生した場合（ステップＳ３０９肯定）には、生成部１４ｂは、干渉が発生した位置から、子部品のスライドを１つ戻した場合の駆動点の位置を記憶部１３に格納し（ステップＳ３１１）、ステップＳ３１３へ進む。
【００７９】
また、超えた場合（ステップＳ３１０肯定）には、生成部１４ｂは、駆動点が図の領域を超えた位置から、子部品のスライドを１つ戻した場合の駆動点の位置を記憶部１３に格納する（ステップＳ３１２）。
【００８０】
そして、生成部１４ｂは、ステップＳ３０１で投影面として決定された面のうち、下記のステップＳ３１４で未選択の面があるか否かを判定する（ステップＳ３１３）。
【００８１】
未選択の面がない場合（ステップＳ３１３否定）には、生成部１４ｂは、処理結果を制御部１４の内部メモリに格納し、リターンする。未選択の面がある場合（ステップＳ３１３肯定）には、生成部１４ｂは、未選択の面を処理対象の面として１つ選択する（ステップＳ３１４）。
【００８２】
そして、生成部１４ｂは、記憶部１３に記憶された駆動点の２つの位置を取得し、取得した２つの位置を投影面として決定した面の図面に投影する（ステップＳ３１５）。
【００８３】
そして、生成部１４ｂは、図面に投影した２つの点をそれぞれ始点と終点とする矢印の線分を図面に描画することにより、可動線を生成する（ステップＳ３１６）。その後、生成部１４ｂは、生成された可動線を含む図面の画像１３ｂを記憶部１３に格納し（ステップＳ３１７）、ステップＳ３１３へ戻る。
【００８４】
［実施例１の効果］
上述してきたように、本実施例に係る生成装置１０は、親部品、子部品、および親部品と子部品との拘束関係に関する情報を記憶する。本実施例に係る生成装置１０は、記憶部１３に記憶された記憶内容に基づいて、親部品に対して駆動する子部品を検出する。本実施例に係る生成装置１０は、検出された子部品を、所定の条件、例えば、親部品との干渉が発生しない範囲、または、駆動点が投影図を超えない範囲で駆動させた場合の親部品の可動線を生成する。このように、本実施例に係る生成装置１０は、自動的に駆動部品を検出し、駆動部品を可動可能な範囲で可動させた場合の可動線を生成する。したがって、本実施例に係る生成装置１０によれば、簡易に可動線を生成することができる。
【００８５】
また、本実施例に係る生成装置１０は、拘束関係に基づいて、親部品の面と子部品の面とが同一平面上に存在し、かつ、親部品の線と子部品の線とが同一の駆動軸を示す場合には、次のような処理を行う。すなわち、本実施例に係る生成装置１０は、駆動軸が、平面と垂直である場合には、子部品を、駆動軸を回転軸として回転する駆動部品として検出する。また、本実施例に係る生成装置１０は、駆動軸を回転軸として回転する駆動部品として検出された子部品を、回転軸周りに回転させた場合の子部品の可動線を生成する。したがって、本実施例に係る生成装置１０によれば、回転軸周りを回転する駆動部品の可動線を簡易に生成することができる。
【００８６】
また、本実施例に係る生成装置１０は、拘束関係に基づいて、親部品の面と子部品の面とが同一平面上に存在し、かつ、親部品の線と子部品の線とが同一の軸を示す場合には、次のような処理を行う。すなわち、本実施例に係る生成装置１０は、さらに、駆動軸が、平面と平行である場合には、子部品を、駆動軸をスライド軸としてスライドする駆動部品として検出する。また、本実施例に係る生成装置１０は、駆動軸をスライド軸としてスライドする駆動部品として検出された子部品を、スライド軸の方向にスライドさせた場合の子部品の可動線を生成するしたがって、本実施例に係る生成装置１０によれば、スライド軸をスライドする駆動部品の可動線を簡易に生成することができる。
【００８７】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００８８】
たとえば、実施例１において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。例えば、図１７に示すステップＳ２２０、ステップＳ２２３、図１８に示すステップＳ３１７において、それぞれ、画像を記憶部１３に格納する処理をユーザが入力部１１を介して記憶部１３に格納してもよい。
【００８９】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。例えば、図１６に示すステップＳ１０６、Ｓ１０７をまとめて１つの処理にしてもよい。
【００９０】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。例えば、図１６に示すステップＳ１０６の処理を行う前に、ステップＳ１０７の処理を行うこともできる。
【００９１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図１に示す生成部１４ｂと、表示制御部１４ｃとが統合されてもよい。
【実施例２】
【００９２】
［生成プログラム］
また、上記の実施例で説明した生成装置１０の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１９を用いて、上記の実施例で説明した生成装置１０と同様の機能を有する生成プログラムを実行するコンピュータの一例を説明する。図１９は、生成プログラムを実行するコンピュータを示す図である。
【００９３】
図１９に示すように、実施例２におけるコンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０とを有する。これら３００〜３４０の各部は、バス３５０を介して接続される。
【００９４】
ＲＯＭ３２０には、上記の実施例１で示す検出部１４ａと、生成部１４ｂと同様の機能を発揮する生成プログラム３２０ａが予め記憶される。なお、生成プログラム３２０ａについては、適宜分離しても良い。例えば、検出部１４ａと同様の機能を発揮するプログラムと、生成部１４ｂと同様の機能を発揮するプログラムとに分離しても良い。
【００９５】
そして、ＣＰＵ３１０が、生成プログラム３２０ａをＲＯＭ３２０から読み出して実行する。
【００９６】
そして、ＨＤＤ３３０には、３次元ＣＡＤデータが設けられる。この３次元ＣＡＤデータは、図１に示した３次元ＣＡＤデータ１３ａに対応する。
【００９７】
そして、ＣＰＵ３１０は、３次元ＣＡＤデータを読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納された３次元ＣＡＤデータを用いて、生成プログラム３２０ａを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。
【００９８】
なお、上記した生成プログラムについては、必ずしも最初からＲＯＭ３２０に記憶させておく必要はない。
【００９９】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。  
【０１００】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１０１】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【０１０２】
（付記１）第一の部品、第二の部品、および第一の部品と第二の部品との拘束関係に関する情報を記憶する記憶部と、
前記記憶部に記憶された拘束関係に基づいて、前記第一の部品に対して駆動する第二の部品を検出する検出部と、
前記検出部により検出された第二の部品を所定の条件に従って駆動させた場合の該第二の部品の可動線を生成する生成部と、
を有することを特徴とする生成装置。
【０１０３】
（付記２）前記検出部は、前記拘束関係に基づいて、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と垂直である場合には、該第二の部品を、該軸を回転軸として回転する駆動部品として検出し、
前記生成部は、前記検出部により前記軸を回転軸として回転する駆動部品として検出された第二の部品を、前記回転軸周りに回転させた場合の該第二の部品の可動線を生成する
ことを特徴とする付記１に記載の生成装置。
【０１０４】
（付記３）前記検出部は、前記拘束関係に基づいて、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と平行である場合には、該第二の部品を、該軸をスライド軸としてスライドする駆動部品として検出し、
前記生成部は、前記検出部により前記軸をスライド軸としてスライドする駆動部品として検出された第二の部品を、前記スライド軸の方向にスライドさせた場合の該第二の部品の可動線を生成する
ことを特徴とする付記１または２に記載の生成装置。
【０１０５】
（付記４）前記生成部は、前記検出部により検出された第二の部品を、前記第一の部品との干渉が発生しない範囲で駆動させた場合の該第二の部品の可動線を生成する
ことを特徴とする付記１、２、３のいずれか１つに記載の生成装置。
【０１０６】
（付記５）コンピュータに、
第一の部品、第二の部品、および第一の部品と第二の部品との拘束関係に関する情報を記憶する記憶部に記憶された拘束関係に基づいて、前記第一の部品に対して駆動する第二の部品を検出し、
検出された第二の部品を所定の条件に従って駆動させた場合の該第二の部品の可動線を生成する
各処理を実行させるための生成プログラム。
【０１０７】
（付記６）前記第二の部品を検出する処理は、前記拘束関係に基づいて、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と垂直である場合には、該第二の部品を、該軸を回転軸として回転する駆動部品として検出し、
前記可動線を生成する処理は、前記軸を回転軸として回転する駆動部品として検出された第二の部品を、前記回転軸周りに回転させた場合の該第二の部品の可動線を生成する
ことを特徴とする付記５に記載の生成プログラム。
【０１０８】
（付記７）前記第二の部品を検出する処理は、前記拘束関係に基づいて、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と平行である場合には、該第二の部品を、該軸をスライド軸としてスライドする駆動部品として検出し、
前記可動線を生成する処理は、前記軸をスライド軸としてスライドする駆動部品として検出された第二の部品を、前記スライド軸の方向にスライドさせた場合の該第二の部品の可動線を生成する
ことを特徴とする付記５または６に記載の生成プログラム。
【０１０９】
（付記８）前記可動線を生成する処理は、前記検出された第二の部品を、前記第一の部品との干渉が発生しない範囲で駆動させた場合の該第二の部品の可動線を生成する
ことを特徴とする付記５、６、７のいずれか１つに記載の生成プログラム。
【０１１０】
（付記９）コンピュータが実行する生成方法であって、
第一の部品、第二の部品、および第一の部品と第二の部品との拘束関係に関する情報を記憶する記憶部に記憶された拘束関係に基づいて、前記第一の部品に対して駆動する第二の部品を検出し、
検出された第二の部品を所定の条件に従って駆動させた場合の該第二の部品の可動線を生成する
ことを特徴とする生成方法。
【０１１１】
（付記１０）前記第二の部品を検出する処理は、前記拘束関係に基づいて、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と垂直である場合には、該第二の部品を、該軸を回転軸として回転する駆動部品として検出し、
前記可動線を生成する処理は、前記軸を回転軸として回転する駆動部品として検出された第二の部品を、前記回転軸周りに回転させた場合の該第二の部品の可動線を生成する
ことを特徴とする付記９に記載の生成方法。
【０１１２】
（付記１１）前記第二の部品を検出する処理は、前記拘束関係に基づいて、前記第一の部品の面と前記第二の部品の面とが同一平面上に存在し、かつ、該第一の部品の線と該第二の部品の線とが同一の軸を示すとともに、該軸が、前記平面と平行である場合には、該第二の部品を、該軸をスライド軸としてスライドする駆動部品として検出し、
前記可動線を生成する処理は、前記軸をスライド軸としてスライドする駆動部品として検出された第二の部品を、前記スライド軸の方向にスライドさせた場合の該第二の部品の可動線を生成する
ことを特徴とする付記９または１０に記載の生成方法。
【０１１３】
（付記１２）前記可動線を生成する処理は、前記検出された第二の部品を、前記第一の部品との干渉が発生しない範囲で駆動させた場合の該第二の部品の可動線を生成する
ことを特徴とする付記９、１０、１１のいずれか１つに記載の生成方法。
【符号の説明】
【０１１４】
１０      生成装置
１３      記憶部
１３ａ    ３次元ＣＡＤデータ
１３ｂ    画像
１４      制御部
１４ａ    検出部
１４ｂ    生成部
【図１】
0005957827.tif 000002
【図２Ａ】
0005957827.tif 000003
【図２Ｂ】
0005957827.tif 000004
【図３Ａ】
0005957827.tif 000005
【図３Ｂ】
0005957827.tif 000006
【図３Ｃ】
0005957827.tif 000007
【図３Ｄ】
0005957827.tif 000008
【図３Ｅ】
0005957827.tif 000009
【図３Ｆ】
0005957827.tif 000010
【図４】
0005957827.tif 000011
【図５】
0005957827.tif 000012
【図６】
0005957827.tif 000013
【図７】
0005957827.tif 000014
【図８】
0005957827.tif 000015
【図９】
0005957827.tif 000016
【図１０Ａ】
0005957827.tif 000017
【図１０Ｂ】
0005957827.tif 000018
【図１１】
0005957827.tif 000019
【図１２】
0005957827.tif 000020
【図１３】
0005957827.tif 000021
【図１４】
0005957827.tif 000022
【図１５Ａ】
0005957827.tif 000023
【図１５Ｂ】
0005957827.tif 000024
【図１５Ｃ】
0005957827.tif 000025
【図１６】
0005957827.tif 000026
【図１７】
0005957827.tif 000027
【図１８】
0005957827.tif 000028
【図１９】
0005957827.tif 000029