(57)【特許請求の範囲】
【請求項１】
ＣＡＤ装置上で、製品中のパネル同士をスポット溶接する溶接打点データを作成するに際し、前記ＣＡＤ装置を構成するコンピュータが、
前記スポット溶接するパネルを構成する全ての面を、前記製品の各パネルとそのパネルの構成曲面との関連付けを記録したパネル管理テーブルを用いて、前記製品のＣＡＤデータ中から捜し出し、
その捜し出した全ての面について一括して画面表示して、その画面表示を用いて入力された二次元打点位置を通って所定方向へ延在する直線と前記捜し出した全ての面との交点の三次元位置から、溶接打点の三次元位置を示す溶接打点データを一括して作成し、
前記作成した溶接打点データにおける打点位置が、前記パネルの存在領域内で、かつ溶接打点を設定し得ない領域の外である、前記面の所定領域内に位置するか否かを判断し、
前記面の所定領域内に位置する場合のみその溶接打点データを有効とすることを特徴とする、溶接打点データの作成方法。
【請求項２】
一つの溶接打点の指定によって複数の溶接打点データが作成された場合に、前記ＣＡＤ装置を構成するコンピュータが、
前記二次元打点位置を通る前記直線の延在方向の所定範囲毎の前記パネルの密集度を調べ、
前記密集度が最も高い範囲の範囲内にある溶接打点データまたは、その範囲内に溶接打点データがない場合にその範囲に最も近い溶接打点データを、前記複数の溶接打点データのうちで溶接する面が重なり合っている部位にあると推定して、有効であると判定することを特徴とする、請求項１記載の溶接打点データの作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＣＡＤ（コンピュータ支援設計）装置での設計の際に、パネル同士をスポット溶接する溶接打点のデータを作成するために用いられる方法に関するものである。なお、この明細書では、特にことわらない限り、「曲面」は、曲率半径無限大の曲面として「平面」を含む面であり、また「曲線」は、曲率半径無限大の曲線として「直線」を含む線であるものとする。
【０００２】
【従来の技術】
ＣＡＤ装置での設計の際に、パネル同士をスポット溶接する溶接打点のデータを作成する方法としては従来、例えば特開平１１−１０２３８３号公報にて開示された方法が知られている。
【０００３】
この従来の方法は、スポット溶接にて接合すべき複数のパネルをＣＡＤ装置で作成した後、そのＣＡＤ装置の画面上に表示させた複数のパネルの所望の曲面上の所望の複数位置を曲面単位で溶接打点の位置として指定し、それら複数の溶接打点の位置や溶接するパネルの部品名等のデータについて曲面単位で一括して登録するものであり、このようにして作成した溶接打点データは、溶接ロボットへの溶接打点位置の教示や、自動溶接装置の溶接ガンの配置設計等に用いることができる。
【０００４】
【発明が解決しようとする課題】
しかしながら、かかる曲面単位で打点データを作成する従来の方法では、溶接するパネルが自動車の車体パネルのように複雑な曲面が多数集合した複合曲面からなる場合には、溶接打点データを作成する必要のある曲面を全て捜し出すのは困難で、手間と時間がかかってしまうという問題があり、この問題は特に、多数の溶接打点データを作成する必要がある場合に重大であった。
【０００５】
【課題を解決するための手段およびその作用・効果】
この発明は、上記課題を有利に解決した溶接打点データの作成方法を提供することを目的とするものであり、この発明の溶接打点データの作成方法は、ＣＡＤ装置上で、製品中のパネル同士をスポット溶接する溶接打点データを作成するに際し、前記ＣＡＤ装置を構成するコンピュータが、前記スポット溶接するパネルを構成する全ての面を、前記製品の各パネルとそのパネルの構成曲面との関連付けを記録したパネル管理テーブルを用いて、前記製品のＣＡＤデータ中から捜し出し、その捜し出した全ての面について一括して画面表示して、その画面表示を用いて入力された二次元打点位置を通って所定方向へ延在する直線と前記捜し出した全ての面との交点の三次元位置から、溶接打点の三次元位置を示す溶接打点データを一括して作成し、前記作成した溶接打点データにおける打点位置が、前記パネルの存在領域内で、かつ溶接打点を設定し得ない領域の外である、前記面の所定領域内に位置するか否かを判断し、前記面の所定領域内に位置する場合のみその溶接打点データを有効とすることを特徴とするものである。
【０００６】
かかる方法によれば、スポット溶接するパネルを指定するだけで、そのパネルを構成する全ての面について一括して溶接打点データを作成し得るので、溶接するパネルが自動車の車体パネルの如く複雑な面が多数集合した複合曲面からなる場合でも、溶接打点データを作成する必要のある面を一々捜し出す必要をなくすことができ、ひいては面の捜し出しのための手間と時間を省くことができる。
【０００７】
しかもこの方法によれば、作成した溶接打点データにおける打点位置が前記面の所定領域内に位置するか否かを判断し、前記面の所定領域内に位置する場合のみその溶接打点データを有効とするので、例えばピッチ曲線上等に一括して作成した打点のうちでパネルから外れたものを目視チェックに頼らず確実に排除し得て、溶接不良の発生を確実に防止することができる。
【０００８】
なお、この発明の方法においては、一つの溶接打点の指定によって複数の溶接打点データが作成された場合に、前記ＣＡＤ装置を構成するコンピュータが、前記二次元打点位置を通る前記直線の延在方向の所定範囲毎の前記パネルの密集度を調べ、前記密集度が最も高い範囲の範囲内にある溶接打点データまたは、その範囲内に溶接打点データがない場合にその範囲に最も近い溶接打点データを、前記複数の溶接打点データのうちで溶接する面が重なり合っている部位にあると推定して、有効であると判定することとしても良く、このようにすれば、密着させて配置したはずのパネル同士に隙間があったり面のデータに内外周トリム曲線が設定されていなかったりして、一つの溶接打点の指定で複数の溶接打点データが作成された場合でも、パネルの密集度に基づいて、それら複数の溶接打点データのうちで溶接するフランジが重なり合っている部位にあると推定されるものを有効と判定するので、打点データに矛盾や不都合が生ずるのを防止することができる。
【０００９】
【発明の実施の形態】
以下に、この発明の実施の形態を実施例によって、図面に基づき詳細に説明する。ここに、図１は、この発明の溶接打点データの作成方法の一実施例の概略を示すフローチャートであり、この実施例の方法は、通常の３次元ＣＡＤシステムを構成するコンピュータの作動プログラムを改変することで実施されるものである。なお、スポット溶接の打点は、パネル同士を接合する接合部の曲面上に定義され、その溶接打点を定義する曲面は通常「フランジ面」と呼ばれる。また、溶接打点データは、３次元座標値（ｘ，ｙ，ｚ）と、その打点の位置でのフランジ面の法線方向（いわゆる面直方向）を示す「法線ベクトル」と、その打点の位置への溶接ガンの接近方向を示す「アプローチベクトル」とから構成される。そして溶接打点の位置は通常、パネル位置決めゲージ等の干渉物を避けるため、設計位置に対して多少の位置変更が許される。
【００１０】
この実施例の溶接打点データの作成方法では、先ず図１のステップＳ１にて、図２（ａ）に示す如き、所望の製品に用いられる複数枚のパネルを表記したパネル管理一覧表を、上記コンピュータとともに上記ＣＡＤシステムを構成するモニタ装置の画面上に表示して、そのパネル管理一覧表中から、例えば図２（ｂ）に示す、製品としての自動車車体の一部をなすフロアパネルＰ１およびサイドメンバＰ２，Ｐ３の如き、互いにスポット溶接するため溶接打点データを作成したい複数枚のパネルを選択し、それら選択したパネルの形状を、上記製品の３次元ＣＡＤデータを用いてアウトライン表示で画面上に表示する。
【００１１】
次いでここではステップＳ２で、打点データの作成方法を上記画面上のメニューから選択して指定する。ここで、メニューには、(1) 曲線による方法と、(2)曲面による方法との二種類が表示され、(1) の方法を選択した場合には、次のステップＳ３で、従来の方法と同様、図２（ｃ）に示すように、パネル（図示例では上記サイドメンバ）Ｐのフランジ面を画成する曲線であるガイド曲線ＧＬと、フランジ面上でそのガイド曲線ＧＬに沿うピッチ曲線ＰＬとの２つのフランジ曲線（フランジ面上の曲線）を指定し、ピッチ曲線ＰＬ上に打点ＷＰを所定ピッチで指定する。
【００１２】
一方上記(2) の方法を選択すると、上記画面上にさらに、(A) １曲面とビュー（上記画面上に表示する図）との指定と、そのビューの視線方向に直交する平面上での座標値（２値）の入力とを行う従来と同様の方法と、(B) 上記選択した複数枚のパネルの各々を構成する全ての曲面を自動検索するとともに、ビューの指定と、そのビューの視線方向に直交する平面上での各打点の座標値（２値）の入力とを行うこの実施例の一つの方法と、(C) 上記選択した複数枚のパネルの各々を構成する全ての曲面を自動検索するとともに、ピッチ曲線ＰＬとビューの指定と、そのビューの視線方向に直交する平面上での開始座標値（２値）、ピッチおよび打点個数の入力とを行うこの実施例のもう一つの方法との三種類のサブメニューが表示される。
【００１３】
そして、上記(A) の方法を選択した場合は、次のステップＳ３で、従来の方法と同様、例えば図２（ｄ）に示すように、ビューとして、製品の３次元ＣＡＤデータの直角座標系の座標軸方向（座標軸の延在方向）のうち打点データを作成するパネル（図示例では上記サイドメンバ）の上記指定したフランジ面ＤＳが全体的により広く見える方向を視線方向とした図（図示例では矢印Ｖで示すＺ軸方向から見た平面図）を指定し（但し、説明の便宜のため図２（ｄ）自体は斜視図としている）、フランジ面ＤＳをその全体的により広く見える方向から見た図として画面上に表示して、溶接打点ＷＰの座標値（ｘ，ｙ）を入力する。
【００１４】
また、上記(B) の方法を選択した場合は、先に選択した複数枚のパネルの各々を構成する全ての曲面が、上記パネル管理一覧表に表記した各パネルとそのパネルの構成曲面との関連付けを記録したパネル管理テーブルにより上記製品の３次元ＣＡＤデータ中から自動検索されて画面上に表示されるので、次のステップＳ３で、例えば図２（ｅ）に示すように、ビューとして、製品の３次元ＣＡＤデータの直角座標系の座標軸方向のうち打点データを作成するパネル（図示例では上記サイドメンバ）のフランジ面が全体的により広く見える方向を視線方向とした図（図示例では矢印Ｖで示すＺ軸方向から見た平面図）を指定し（但し、説明の便宜上図２（ｅ）自体は斜視図としている）、上記フランジ面をその全体的により広く見える方向から見た図として画面上に表示して、そのフランジ面が複数の曲面からなる複合曲面の場合でも複数の溶接打点ＷＰの各々の座標値（ｘ，ｙ）を一括して入力する。
【００１５】
さらに、上記(C) の方法を選択した場合は、先に選択した複数枚のパネルの各々を構成する全ての曲面が、上記パネル管理一覧表に表記した各パネルとそのパネルの構成曲面との関連付けを記録したパネル管理テーブルにより上記製品の３次元ＣＡＤデータ中から自動検索されて画面上に表示されるので、次のステップＳ３で、例えば図２（ｆ）に示すように、ビューとして、製品の３次元ＣＡＤデータの直角座標系の座標軸方向のうち打点データを作成するパネル（図示例では上記サイドメンバ）のフランジ面が全体的により広く見える方向を視線方向とした図（図示例では矢印Ｖで示すＺ軸方向から見た平面図）を指定し（但し、説明の便宜のため図２（ｆ）自体は斜視図としている）、上記フランジ面をその全体的により広く見える方向から見た図で画面上に表示して、そのフランジ面が複数の曲面からなる複合曲面の場合でもそれらの曲面に跨がってそのフランジ面上にピッチ曲線ＰＬを指定するとともに、溶接開始打点の座標値（図示例ではｙ座標値）とピッチＰＴと打点の個数とを入力する。
【００１６】
続くステップＳ４では、上記コンピュータが、図３にフローチャートで示す処理により、現在のビューのパネル上での溶接打点の位置から、後述する曲面の突き刺し処理を行って、その溶接打点での面直方向すなわち法線方向とその溶接打点の３次元位置とを求め、さらに、後述するトリミング処理およびフランジ処理（フランジ処理を指定した場合のみ）により、その求めた打点位置の正当性の評価計算を行う。
【００１７】
図３に示す処理は、後述する前処理でのトリミングボックスおよびクロストリミングプレーンに関する入力打点位置および幅の指定以外は上記コンピュータが実行するものであり、ここではステップＳ１１で、先ず上記パネル管理テーブルによりモニタの画面上に表示されているパネルを検索してそのパネルを構成する曲面のデータを順次メモリ上に読み込み、次いで上記指定したデータを用いて曲面の突き刺し処理を行い、次いで曲面の内外周トリム曲線を用いて打点データのトリミング処理を行い、最後に、フランジ面の密集度により打点データを絞り込んで適正打点データを判別するフランジ処理の実行を上記ＣＡＤシステムのオペレータ（操作者）が指定した場合に、フランジ線を構成する点群を抽出する前処理を行う。なお、このステップＳ１１の各処理の詳細は図４〜図１４を参照して後述する。
【００１８】
続くステップＳ１２では、オペレータが上記フランジ処理の実行を指定したか否かを判断して、指定していなければ後述するステップＳ１５へ進むが、指定していれば次のステップＳ１３へ進む。そしてステップＳ１３では、上記前処理によって後述のフランジ線格納エリアに格納したフランジ線があったか否かを判断して、フランジ線がなければ後述するステップＳ１５へ進むが、フランジ線があれば次のステップＳ１４へ進む。
【００１９】
ステップＳ１４では、先のステップＳ１１で得られた打点データについて上記フランジ処理を実行して適正な打点データを抽出する。なお、このフランジ処理の詳細は図１５および図１６を参照して後述する。そして、次のステップＳ１５では、上記処理により得られた各打点データを、上記モニタ装置の画面上に表示するとともに、上記製品の３次元ＣＡＤデータを納めたデータベース上に格納する。
【００２０】
図４は、上記コンピュータが実行する図３のステップＳ１１の処理の概要を示すフローチャートであり、この処理では、ステップＳ２１で、先ず上記パネル管理テーブルによりモニタの画面上に表示されているパネルを検索して、そのパネルの番号をメモリ上に読み込む。そして、続くステップＳ２２では、読み込んだ番号のパネル単位で、そのパネルを構成する全曲面と、その全曲面の各々の、外周トリム曲線および内周トリム曲線を含む曲線とを検索して、それらのデータを順次メモリ上に読み込み、曲面の打点突き刺し処理を行い、さらに打点のトリミング処理を行う。なお、このステップＳ２２の各処理の詳細は図５および図６を参照して後述する。さらにこのステップＳ２２では、フランジ面の密集度により打点データを絞り込んで適正打点データを判別するフランジ処理が必要か否かを画面上で上記オペレータに問い合わせて、画面上で見てフランジ面が多数重なっていたりフランジ面同士が離れていたりして突き刺し処理で一本の曲面突き刺し用直線データから複数の打点データが求りそうな場合には上記オペレータがこのステップＳ２２でフランジ処理を指定する。
【００２１】
続くステップＳ２３では、オペレータによるフランジ処理の指定があったか否かを判断し、指定がなければステップＳ２５へ進むが、指定があればステップＳ２４で、フランジ処理のためにフランジ線を構成する点群を抽出する前処理を実行し、その後ステップＳ２５へ進む。なお、この前処理の詳細は図１３および図１４を参照して後述する。そしてステップＳ２５では、打点作成対象パネルが未だあるか否かを判断し、未だある場合はステップＳ２１へ戻って上記処理を繰り返すが、もうない場合は図３のステップＳ１２へ進む。
【００２２】
図５および図６は、上記コンピュータが実行する図４のステップＳ２２の処理を示すフローチャートであり、ここでは先ず図５のステップＳ３１で、一つの曲面データを上記データベース上からそのコンピュータのメモリ上に読み込み、続くステップＳ３２で、上記読み込んだ曲面データに対する外周トリム曲線および内周トリム曲線を上記データベース上より検索し、順次データを上記メモリ上に読み込み、次のステップＳ３３で、上記ビューでの上記曲面の領域を定義する曲面マスク値を抽出する。なお、通常、パネルデータは曲面と曲線とで構成され、その曲面は、基準曲面とその領域を区画する外周トリム曲線および内周トリム曲線とで定義されているが、作成費用を節約するために、基準曲面のみを作成する場合もある。
【００２３】
次のステップＳ３４では、上記曲面に対する外周トリム曲線データがあるか否かを判断し、上記のように基準曲面のみを作成していて外周トリム曲線データがなければステップＳ３６へ進むが、あればステップＳ３５でその外周トリム曲線の上記ビューでの領域を定義する外周マスク値を抽出する。そしてステップＳ３６では、上記入力された２値の打点位置（ビューがＺ軸方向から見た平面図であればｘ，ｙ座標値）あるいは一つの打点座標値およびそれとピッチ曲線とから求めたもう一つの打点座標値からなる打点位置と、上記入力されたビューを示すビューコードと、上記曲面マスク値および外周マスク値とにより、それらのマスク値が示す領域内に上記打点位置が入っているか否かを調べる事前チェック処理を行う。
【００２４】
次のステップＳ３７では、上記事前チェックの結果がＯＫか否かを判断し、ＯＫでなければ、その曲面上には打点がないと判断して上記ステップＳ３１へ戻るが、ＯＫであれば、次のステップＳ３８へ進む。かかる事前チェックにより、計算時間を短縮することができる。そしてステップＳ３８では、上記ビューコードと入力打点位置とで、その入力打点位置を通ってそのビューの視線方向へ延在する直線である曲面突き刺し用直線のデータを作成し、続くステップＳ３９では、その曲面突き刺し用直線と上記曲線との交点計算を行って、交点の３次元座標値およびその交点での上記曲面に対する法線方向ベクトルを打点データとして求める。
【００２５】
次のステップＳ４０では、上記交点が求まったか否かを判断し、求まらなければ、その曲面上には打点がないと判断して上記ステップＳ３１へ戻るが、求まれば、その交点の３次元座標値を打点の位置として、図６に示す次のステップＳ４１へ進む。このステップＳ４１では、当該パネルについて既に作成した打点との重点（ダブり）チェックを所定トレランス（例えば０．５ｍｍ）で行い、この段階ではパネル単位で処理を行っているため本来は重点はないはずであるので、今回求まった打点が既に作成した打点に対し３次元的に上記トレランス内に位置していれば重点となる。
【００２６】
次のステップＳ４２では、上記重点チェックの結果がＯＫか否かを判断し、ＯＫでなければその打点データはエラーであると判断して後述するステップＳ４８へ進むが、ＯＫ（重点でない）であれば、次のステップＳ４３へ進む。そしてステップＳ４３では、打点データの外周トリム曲線チェック処理すなわち上記打点データにおける打点が上記曲線に対する外周トリム曲線の内側に存在するかどうかのチェックを行う。なお、この外周トリム曲線チェック処理の詳細は図７〜図１０を参照して後述する。
【００２７】
次のステップＳ４４では、上記外周トリム曲線チェック処理の結果がＯＫか否かを判断し、ＯＫでなければ、その打点データはエラーであると判断して後述するステップＳ４８へ進むが、ＯＫであれば、次のステップＳ４５へ進む。そしてステップＳ４５では、打点データの内周トリム曲線チェック処理すなわち上記打点データにおける打点が上記曲線に対する内周トリム曲線の外側に存在するかどうかのチェックを行う。なお、この内周トリム曲線チェック処理の詳細も図７〜図１０を参照して後述する。
【００２８】
次のステップＳ４６では、上記内周トリム曲線チェック処理の結果がＯＫか否かを判断し、ＯＫでなければ、その打点データはエラーであると判断して後述するステップＳ４８へ進むが、ＯＫであれば、次のステップＳ４７へ進む。そしてステップＳ４７では、上記打点データをメモリ上に格納するとともに、打点データ作成ＯＫを示すコードを返す。一方、上記ステップＳ４２，４４，４６で打点データがエラーであった場合に進むステップＳ４８では、エラー処理として、打点は作成しない旨のリターンコードを返す。なお、これらリターンコードの内容はその後画面上に表示してオペレータに知らせる。
【００２９】
図７〜図９は、図６のステップＳ４３の外周トリム曲線チェック処理およびステップＳ４５の内周トリム曲線チェック処理を示すフローチャートであり、ここでは先ず図７のステップＳ５１で、上記ビューコードにより上記３次元の内外周トリム曲線をそのビューの平面上の２次元曲線に変換する２次元化ビューマトリクスを求め、続くステップＳ５２で、トリム曲線（上記ステップＳ４３であれば外周トリム曲線、上記ステップＳ４５であれば内周トリム曲線）を上記２次元化ビューマトリクスにより２次元化して閉ポリライン（閉じた一筆書きの線）に変換し、さらに次のステップＳ５３で、その２次元化閉ポリライン（トリム曲線）の進行方向を時計回りに揃えてポリラインＡとする。このように進行方向を時計回りに統一すれば、これ以降の判定チェックを容易にすることができ、この閉ポリラインの回り方向を必ず時計回りにする方法の詳細は図１１および図１２を参照して後述する。
【００３０】
次のステップＳ５４では、ポリラインＡをトリム曲線の内側に向けて０．１ｍｍオフセットさせた閉ポリラインであるポリラインＢを作成する。これは以降の判定をポリラインＡ，Ｂのダブルチェックで行ってより精度の高いチェック方法とするためであり、続くステップＳ５５では、打点データ中の打点の３次元座標値（ｘ，ｙ，ｚ）を上記ビューマトリクスにより２次元座標値に変換し、続くステップＳ５６では、その打点位置に対する、ポリラインＡの点群（ポリラインＡを構成する閉じた複合曲線の端点群）中の最近点を求め、その最近点について、上記打点位置との距離と、ラインのセグメント（上記複合曲線の構成曲線）の情報とを得る。すなわちここでは、ポリラインＡの点群中から、打点位置に対する最短距離の点を捜し出して、点間距離を求める。
【００３１】
次のステップＳ５７では、上記求めた最近点の進行方向前方側のラインセグメントである第１ラインセグメント（第１線分）に対して、打点位置がライン進行方向に対し左側か右側かを判定して、その結果をメモリ上に保存し、続くステップＳ５８では、さらに上記求めた第１ラインセグメントの進行方向一つ手前のラインセグメントである第２ラインセグメント（第２線分）に対して、打点位置がライン進行方向に対し左側か右側かを判定して、その結果をメモリ上に保存し、図８に示すステップＳ５９へ進む。
【００３２】
このステップＳ５９では、打点位置がポリラインＡの上記第１ラインセグメント内（第１線分の範囲内の法線方向）にあるかどうかをチェックし、続くステップＳ６０では、その第１線分の範囲内に打点位置があったか否かを判断して、なかった場合には後述するステップＳ６２へ進むが、あった場合には次のステップＳ６１で、第１線分と打点位置との間の距離を求め、前に求めた点間距離と比較して、その線点間距離の方が短ければ最短距離をその線点間距離に入れ換える。そして次のステップＳ６２では、さらに打点位置がポリラインＡの上記第２ラインセグメント内（第２線分の範囲内の法線方向）にあるかどうかをチェックし、続くステップＳ６３では、その第２線分の範囲内に打点位置があったか否かを判断して、なかった場合には後述するステップＳ６５へ進むが、あった場合には次のステップＳ６４で、第２線分と打点位置との間の距離を求め、前に求めた最短距離と比較して、その線点間距離の方が短ければ最短距離をその線点間距離に入れ換える。このようにするのは、可能な限り線点間距離を基準としてチェックを行うためである。
【００３３】
次のステップＳ６５では、上記ステップＳ５６と同様、上記２次元化した打点位置に対する、ポリラインＢを構成する点群（ポリラインＢを構成する閉じた複合曲線の端点群）中の最近点を求め、その最近点と上記打点位置との距離と、ラインのセグメントの情報とを得る。そして続くステップＳ６６では、ポリラインＢについてもポリラインＡと同様に上記ステップＳ５７〜Ｓ６４の処理を行い、最短距離を比較して最短距離を入れ換える。
【００３４】
このようにして、点間距離での最短距離を一応求めた後、次のステップ６７では、打点位置とポリラインＡの線分群（ポリラインＡを構成する閉じた複合曲線の曲線群）のうち最近の線分の最近点を求め、打点位置がその最近の線分内（その線分の範囲内の法線方向）にあったなら、その最近点を持つ線分について、上記打点位置との距離と、ラインのセグメント（上記複合曲線の構成曲線としてのその線分）の情報とを得る。すなわちここでは、ポリラインＡの線分群中から、打点位置に対する最短距離の線分を捜し出して、線点間距離を求める。
【００３５】
次のステップＳ６８では、上記ポリラインＡで、線点間距離でチェックできる線分が見つかったか否かを判断し、見つかった場合は次のステップＳ６９で、その線点間距離が先に求めた点間距離よりも小さいか否かを判断して、小さければ図９に示すステップＳ７０へ進む。一方、ステップＳ６８で線点間距離でチェックできる線分が見つからなかった場合および、ステップＳ６９で線点間距離が先に求めた点間距離よりも小さくなかった場合には、図９に示すステップＳ７４へ進む。
【００３６】
ステップＳ７０では、上記ステップＳ６７と同様、打点位置とポリラインＢの線分群（ポリラインＢを構成する閉じた複合曲線の曲線群）のうち最近の線分の最近点を求め、打点位置がその最近の線分内（その線分の範囲内の法線方向）にあったなら、その最近点を持つ線分について、上記打点位置との距離と、ラインのセグメント（上記複合曲線の構成曲線としてのその線分）の情報とを得る。すなわちここでは、ポリラインＢの線分群中から、打点位置に対する最短距離の線分を捜し出して、線点間距離を求める。そして次のステップＳ７１では、上記ポリラインＢで、線点間距離でチェックできる線分が見つかったか否かを判断し、見つかった場合は次のステップＳ７２で、打点位置とポリラインＡあるいはポリラインＢとの最短距離で、前に求めた最短距離を置き換え、また最近点の前方のラインセグメント（第１線分）およびその前のラインセグメント（第２線分）も今回の計算分の最近のラインセグメントおよびその前のラインセグメントで置き換え、続くステップＳ７３で、各ポリラインＡ，Ｂについての上記求めた二つのラインセグメントに対してそれぞれ、打点位置がライン進行方向に対し右側にあるか左側にあるかを判定し、その結果をメモリ上に保存する。一方、ステップＳ７１で線点間距離でチェックできる線分が見つからなかった場合には、ステップＳ７４へ進む。
【００３７】
ステップＳ７４では、今回の処理が外周トリム曲線でのチェックか否かを判断し、外周トリム曲線でのチェックでない場合はステップＳ７６へ進むが、外周トリム曲線でのチェックの場合は、次のステップＳ７５で、打点位置が外周トリム曲線の第１線分および第２線分で線分の進行方向に対して連続して右側にあり、かつ打点位置とポリラインＡとの最短距離と、打点位置とポリラインＢとの最短距離を比較して、ポリラインＢとの最短距離の方がより近ければその打点位置はチェックＯＫであると判断した後、図６のステップＳ４４へ進む。一方、ステップＳ７６では、今回の処理が内周トリム曲線でのチェックか否かを判断し、内周トリム曲線でのチェックでない場合は、図６のステップＳ４７へ進むが、内周トリム曲線でのチェックの場合は、次のステップＳ７７で、打点位置が内周トリム曲線の第１線分および第２線分で線分の進行方向に対して連続して左側にあり、かつ打点位置とポリラインＡとの最短距離と、打点位置とポリラインＢとの最短距離を比較して、ポリラインＢとの最短距離の方がより遠ければその打点位置はＯＫであると判断した後、図６のステップＳ４６へ進む。
【００３８】
図１０は、上記トリム曲線チェック処理の例を示すものであり、図１０（ａ）に示す如きパネルのフランジ曲面を含む基準曲面ＢＳに、そのフランジ曲面の外周を区画する外周トリム曲線ＯＴＬおよび、溶接打点を設定し得ない領域を区画する内周トリム曲線ＩＴＬが定義されているとき、四つの打点位置ＷＰ１〜ＷＰ４を作成しようとすると、図１０（ｂ）に示すように、打点位置ＷＰ１は、外周トリム曲線のポリラインＰＬＡ１の最近点ＥＰ１とその前方の点ＥＰ２との間の線分の範囲内にあって線点間距離が最短となっているが、その外周トリム曲線のポリラインＰＬＡ１の線分進行方向に対して左側に位置するので、打点作成ＮＧ（不可）となる。
【００３９】
また打点位置ＷＰ２は、外周トリム曲線のポリラインＰＬＡ１の最近点ＥＰ１とその前方の点ＥＰ２の間の線分の範囲内にあって線点間距離が最短となっていて、かつ内周トリム曲線のポリラインＰＬＡ２の最近点とその前方の点との間の線分の範囲内にあって線点間距離が最短となっており、しかも外周トリム曲線のポリラインＰＬＡ１の線分進行方向に対して右側に位置するとともに、内周トリム曲線のポリラインＰＬＡ２の線分進行方向に対して左側に位置するので、打点作成ＯＫ（可）となる。
【００４０】
そして打点位置ＷＰ３は、外周トリム曲線のポリラインＰＬＡ１の最近点ＥＰ１とその前方の点ＥＰ２との間の線分の範囲内にあって線点間距離が最短となっていて、その外周トリム曲線のポリラインＰＬＡ１の線分進行方向に対して右側に位置するが、内周トリム曲線のポリラインＰＬＡ２の線分進行方向に対しても右側に位置するので、打点作成ＮＧ（不可）となる。
【００４１】
さらに打点位置ＷＰ４は、外周トリム曲線のポリラインＰＬＡ１の各線分の範囲内になく、点間距離が最短となっていて、その最近点が点ＥＰ２となっているが、その前後の線分で連続して線分進行方向に対し左側に位置するので、打点作成ＮＧ（不可）となる。
【００４２】
図１０（ｃ）中の打点位置ＷＰ５は、内周トリム曲線のポリラインＡの第１線分ＬＰ１および第２線分ＬＰ２の何れについても線分の範囲内になく、点ＥＰ２に対する点間距離が最短となっているものであり、その打点位置は第２線分ＬＰ２に対しては左側に位置するが第１線分ＬＰ１に対しては右側に位置していて、連続して線分進行方向に対し右側になってはいないので、打点作成ＮＧ（不可）となる。
【００４３】
また図１０（ｄ）中の打点位置ＷＰ６は、外周トリム曲線のポリラインＡの第１線分ＬＰ１および第２線分ＬＰ２の何れについても線分の範囲内になく、点ＥＰ２に対する点間距離が最短となっているものであり、その打点位置は第１線分ＬＰ１および第２線分ＬＰ２の何れに対しても左側に位置しているので、打点作成ＮＧ（不可）となる。
【００４４】
図１１は、閉ポリラインの回り方向を必ず時計回りにする方法を示すフローチャート、図１２（ａ），（ｂ）はその方法の説明図であり、ここでは先ず図１１のステップＳ８１で、仮に与えられた閉ポリラインを＋（プラス）方向に指定量オフセットさせて閉ポリラインを作成する。ここで、＋（プラス）方向とは、図１２（ａ），（ｂ）に示すように、線分ＰＬでその始点ＳＰを中心として終点ＥＰを反時計方向に９０°回転させた点である近傍点ＮＰに始点ＳＰから向かう方向であり、この方向に線分を順次オフセットさせてオフセット閉ポリラインを作成する。そして、次のステップＳ８２では、その＋方向のオフセット閉ポリラインの面積を求める。
【００４５】
次にここでは、ステップＳ８３で、上記与えられた閉ポリラインを−（マイナス）方向に指定量オフセットさせて閉ポリラインを作成する。ここで、−（マイナス）方向とは、上記＋（プラス）方向とは逆向きの方向であり、この方向に線分を順次オフセットさせてオフセット閉ポリラインを作成する。そして次のステップＳ８４では、その−方向のオフセット閉ポリラインの面積を求める。続くステップＳ８５では、その−方向のオフセット閉ポリラインの面積の方が先の＋方向のオフセット閉ポリラインの面積よりも大きいか否かを判断する。
【００４６】
図１２（ａ）に示すように、上記与えられた閉ポリラインの進行方向が時計回りの場合は、＋方向のオフセット閉ポリラインの面積（斜線で示す）の方が−方向のオフセット閉ポリラインの面積よりも必ず大きくなり、一方図１２（ｂ）に示すように、上記与えられた閉ポリラインの進行方向が反時計回りの場合は、＋方向のオフセット閉ポリラインの面積（斜線で示す）の方が−方向のオフセット閉ポリラインの面積よりも必ず小さくなるから、上記ステップＳ８５での判断の結果、−方向のオフセット閉ポリラインの面積の方が大きい場合は、ステップＳ８６で、上記与えられた閉ポリラインの進行方向は反時計回りであると判断し、その閉ポリラインの進行方向を反転処理する。一方、−方向のオフセット閉ポリラインの面積の方が大きくはない場合は、上記与えられた閉ポリラインの進行方向は時計回りであると判断し、その閉ポリラインの進行方向をそのまま維持してこの処理を終了する。
【００４７】
図１３は、図４のステップＳ２４で行う、フランジ処理のための前処理の手順を示すフローチャートであり、ここでは先ず、ステップＳ９１で、図４のステップＳ２２と同様、モニタの画面上に表示されている全てのパネルについてパネル単位で、そのパネルを構成する全曲面の各々の曲面上の、外周トリム曲線および内周トリム曲線を含む曲線を検索して、それらのデータを順次メモリ上に読み込み、続くステップＳ９２で、その読み込んだ曲線が外周または内周トリム曲線か否かを判断し、外周または内周トリム曲線の場合は、後述するステップＳ９４へ進む。
【００４８】
一方、上記ステップＳ９２で、外周または内周トリム曲線でない場合は、フランジ曲線であると判断してステップＳ９３へ進み、ステップＳ９３でそのフランジ曲線データを保存した後、ステップＳ９４で全曲線を読み込んだか否かを判断し、読み込んでなければステップＳ９１へ戻って次の曲線を読み込み、全曲線を読み込んでいればステップＳ９５へ進む。そしてステップＳ９５では、打点作成ビューの視線方向すなわち突き刺し方向で、一つの入力打点位置に対して曲面上の打点の打点データが２点以上作成された入力打点位置があるか否かを判断し、全くない場合にはこの処理を終了するが、打点データが２点以上作成された入力打点位置が一つまたは複数ある場合には、その入力打点位置毎にステップＳ９６以下の処理を実行する。
【００４９】
これは、基準曲面に内外トリム曲線がない場合に、上述したトリム処理ができず、フランジ面を構成する同一曲面上に複数の打点データが作成される場合があり、また、複数パネルを同時に表示して上記突き刺し処理により打点計算を行うと、図１４（ａ）のパネルＰ１，Ｐ２で示すように、パネル間で、フランジ面を構成する曲面データに隙間Ｔがある場合に、一つの入力打点位置に対して二つの打点ＷＰ１，ＷＰ２が求まる場合があって、これらの場合に便宜上一つの打点を決める必要があるからであ。なお、ＢＳはフランジ面を含む基準曲面である。
【００５０】
ステップＳ９６では、打点作成ビュー上でオペレータが、図１４（ｂ）に示すように、今回対象とする入力打点位置ＩＷＰとトリミングボックス幅ＢＷとを指定し、これにより上記コンピュータが、その入力打点位置ＩＷＰを中心とするとともに２×ＢＷの幅を持つ、打点作成ビューの視線方向である座標軸方向（図１４（ｂ）に示す例ではＺ軸方向）に長い直方体状のトリミングボックスＴＢを作成する。そして続くステップＳ９７では、先にステップＳ９３で保存したフランジ曲線のうちで上記トリミングボックスＴＢ内に入っているフランジ曲線をそのトリミングボックスＴＢで３次元マスクカット処理して切り出し、その曲線をメモリ上に格納する。
【００５１】
次のステップＳ９８では、打点作成ビュー上でオペレータが、図１４（ｂ）に示すように、今回対象とする入力打点位置ＩＷＰとクロストリミングプレーン幅ＰＷとを指定し、これにより上記コンピュータが、その入力打点位置ＩＷＰを中心とするとともに２×ＰＷの幅を持ち互いに直交する、打点作成ビューの視線方向である座標軸方向（図１４（ｂ）に示す例ではＺ軸方向）に長い長方形状の二枚のクロストリミングプレーンＸＰを作成する。
【００５２】
なお、図示例ではトリミングボックス幅ＢＷとクロストリミングプレーン幅ＰＷとを同一としているが、クロストリミングプレーン幅ＰＷはトリミングボックス幅ＢＷより大きくても良い。また、入力打点位置ＩＷＰはステップＳ９６と変わらないので、図示例のようにトリミングボックス幅ＢＷとクロストリミングプレーン幅ＰＷとを同一にする場合は、ステップＳ９６のデータを援用すると指定して、このステップＳ９８でのデータ入力を省略することもできる。
【００５３】
次のステップＳ９９では、先にトリミングボックスＴＢで３次元マスクカット処理して切り出した曲線をその二枚のクロストリミングプレーンＸＰでさらにカットして、上記曲線とその二枚のクロストリミングプレーンＸＰとの交点の点群を求め、最後のステップＳ１００では、その求めた点群を、フランジ面を構成している点のデータとみなして、フランジ線格納エリアに記憶する。
【００５４】
図１５は、図３のステップＳ１４で行うフランジ処理の手順を示すフローチャートであり、ここでは先ず、ステップＳ１０１で、各入力打点位置について、打点作成ビューより、打点の深さ方向すなわちその打点作成ビューの視線方向である座標軸方向を求め、続くステップＳ１０２では、図１３のステップＳ９５と同様、打点作成ビューの視線方向で、一つの入力打点位置（同一の打点番号）に対して曲面上の打点の打点データが２点以上作成された入力打点位置があるか否かを判断し、全くない場合にはこの処理を終了するが、打点データが２点以上作成された入力打点位置が一つまたは複数ある場合には、その入力打点位置（打点番号）毎にステップＳ１０３以下の処理を実行する。
【００５５】
ステップＳ１０３では、同一の打点番号に属するフランジ面の点群を、上記フランジ線格納エリアから抽出し、続くステップＳ１０４では、その抽出した点群の、上記打点の深さ方向の座標値の一定範囲毎の個数をカウントして、上記打点番号に対する点群の深さ方向座標値と個数のテーブルを作成する。そして次のステップＳ１０５では、上記打点番号の上記２点以上の打点データのうちで、上記テーブル上で個数が最も多い深さ方向の座標値範囲に最も近い座標値を持つ１個の打点データを正規の打点位置データとして採用する。これは、図１６（ａ）に示すように、フランジ曲線から切り出した点ＦＰが密集している範囲が、パネルのフランジ面がある位置と考えられ、打点データはその位置に作成されるべきだからである。これにより、図１６（ａ）に示す打点ＷＰ１，ＷＰ２では、点群を構成する点ＦＰの個数が最も多いＺ軸方向の座標値範囲に最も近い座標値を持つ打点ＷＰ１の打点データが正規の打点位置データとして採用される。
【００５６】
また、次のステップＳ１０６では、打点データの深さ方向座標値が上記最も個数の多い深さ方向座標値の範囲内である打点データについても、正規の打点位置データとして採用する。これにより、図１６（ｂ）に示すように、深さ方向座標値が点群を構成する点ＦＰの個数が最も多いＺ軸方向の座標値範囲内である打点ＷＰの打点データも正規の打点位置データとして採用される。なお、同一打点番号について、個数の多い深さ方向座標値の範囲が２箇所以上あった場合は、最も個数の多い深さ方向座標値の範囲に対し、その範囲内のものがあればそれが先ず正規の打点位置データとして採用され、その範囲内のものがなければその範囲に最も近い座標値を持つものが正規の打点位置データとして採用される。
【００５７】
かかる実施例の方法によれば、スポット溶接するパネルを指定するだけで、そのパネルを構成する全ての曲面について一括して溶接打点データを作成し得るので、溶接するパネルが自動車の車体パネルのように複雑な曲面が多数集合した複合曲面からなる場合でも、溶接打点データを作成する必要のある曲面を一々捜し出す必要をなくすことができ、ひいては曲面の捜し出しのための手間と時間を省くことができる。
【００５８】
しかもこの実施例の方法によれば、一旦作成した溶接打点データにおける打点位置がフランジ曲面の領域内に位置するか否かを判断し、フランジ曲面の領域内に位置する場合のみその溶接打点データを有効とするので、例えばピッチ曲線上等に一括して作成した打点のうちでパネルから外れたものを目視チェックに頼らず確実に排除し得て、溶接不良を発生を確実に防止することができる。
【００５９】
さらにこの実施例の方法によれば、一つの入力打点位置に対して複数の溶接打点データが作成された場合に、それらの溶接打点データのうち、その溶接打点データにおける打点位置がパネルのフランジ曲面の密集位置に最も近い一つの溶接打点データを有効とし、正規の打点位置データとして採用するので、密着させて配置したはずのパネル同士に隙間があったり曲面のデータに内外周トリム曲線が設定されていなかったりして一つの入力打点位置に対して複数の溶接打点データが作成された場合でも、それら複数の溶接打点データのうちで溶接するフランジ曲面が重なり合っている部位にあると推定される一つを選択し得て、打点データに矛盾や不都合が生ずるのを防止することができる。
【００６０】
以上、図示例に基づき説明したが、この発明は上述の例に限定されるものでなく、例えば、上記実施例では処理の容易化のため便宜上、曲面の突き刺し方向を打点作成ビューの視線方向と一致させたが、入力打点位置を通る打点作成ビューの視線方向の直線と交差した複数の重なり合う曲面のうち、その視線方向で最も外側に位置する曲面でのその視線方向の直線との交点を求め、その交点でのその曲面の法線方向を曲面の突き刺し方向とし、その突き刺し方向を打点の深さ方向として上記トリミングボックスおよびクロストリミングプレーンでのフランジ面構成点群の抽出を行っても良く、このようにすれば、パネルのフランジ面が座標軸方向に対して大きく傾斜している場合にそのフランジ面についての上述した正規の打点位置データの判定をより正確に行うことができる。
【図面の簡単な説明】
【図１】  この発明の溶接打点データの作成方法の一実施例の概略を示すフローチャートである。
【図２】  （ａ）〜（ｆ）は、図１のフローチャートにおける処理を示す説明図である。
【図３】  図１のステップＳ４における打点データ作成処理を示すフローチャートである。
【図４】  図３のステップＳ１１における処理の概略を示すフローチャートである。
【図５】  図４のステップＳ２２における処理の前部を示すフローチャートである。
【図６】  図４のステップＳ２２における処理の後部を示すフローチャートである。
【図７】  図６のステップＳ４３，Ｓ４５におけるトリム曲線チェック処理の前部を示すフローチャートである。
【図８】  図６のステップＳ４３，Ｓ４５におけるトリム曲線チェック処理の中間部を示すフローチャートである。
【図９】  図６のステップＳ４３，Ｓ４５におけるトリム曲線チェック処理の後部を示すフローチャートである。
【図１０】  （ａ）〜（ｄ）は、図７〜図９のフローチャートにおける処理を示す説明図である。
【図１１】  図７のステップＳ５３における時計回り揃えの処理を示すフローチャートである。
【図１２】  （ａ），（ｂ）は、図１１のフローチャートにおける処理を示す説明図である。
【図１３】  図４のステップＳ２４における前処理の手順を示すフローチャートである。
【図１４】  （ａ），（ｂ）は、図１３のフローチャートにおける処理を示す説明図である。
【図１５】  図３のステップＳ１４におけるフランジ処理の手順を示すフローチャートである。
【図１６】  （ａ），（ｂ）は、図１５のフローチャートにおける処理を示す説明図である。
【符号の説明】
ＢＳ  基準曲面
ＢＷ  トリミングボックス幅
ＩＴＬ  内周トリム曲面
ＯＴＬ  外周トリム曲面
ＥＰ  終点
ＥＰ１〜ＥＰ４  点
ＦＰ  フランジ面（フランジ線）構成点
ＩＷＰ  入力打点位置
Ｐ，Ｐ１，Ｐ２  パネル
ＰＬ  ポリライン
ＰＬＡ１  外周トリム曲面のポリラインＡ
ＰＬＡ２  内周トリム曲面のポリラインＡ
ＰＬＢ１  外周トリム曲面のポリラインＢ
ＰＬＢ２  内周トリム曲面のポリラインＢ
ＬＰ１  第１線分
ＬＰ２  第２線分
ＮＰ  近傍点
ＰＴ  ピッチ
ＰＷ  クロストリミングプレーン幅
ＳＰ  始点
ＴＢ  トリミングボックス
Ｖ  ビューの視線方向
ＷＰ，ＷＰ１〜ＷＰ６  打点位置
ＸＰ  クロストリミングプレーン
【図１】
0003799976.tif 000002
【図２】
0003799976.tif 000003
【図３】
0003799976.tif 000004
【図４】
0003799976.tif 000005
【図５】
0003799976.tif 000006
【図６】
0003799976.tif 000007
【図７】
0003799976.tif 000008
【図８】
0003799976.tif 000009
【図９】
0003799976.tif 000010
【図１０】
0003799976.tif 000011
【図１１】
0003799976.tif 000012
【図１２】
0003799976.tif 000013
【図１３】
0003799976.tif 000014
【図１４】
0003799976.tif 000015
【図１５】
0003799976.tif 000016
【図１６】
0003799976.tif 000017