(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下に、本発明の実施の形態に係る図形データ生成装置について、図面を参照して説明する。
【0012】
1.図形データ生成装置の構成
本発明の実施の形態に係る図形データ生成装置1は、
図1に示すように、カット図形を予め用意された閉図形に合わせて複数の部品に分割する分割部11と、カット図形のうち予め用意された閉図形からはみ出た部品をその閉図形内の余白内に収まるように配置するネスティング部12と、閉図形内に収められた複数の部品を表す図形データを生成する生成部13とを備えている。
なお、本明細書では、ある部品を閉図形内の余白内に収まるように配置することを「ネスト(nest)」または「ネスティング(nesting)」という。
【0013】
本実施の形態に係る図形データ生成装置1は、さらに、その動作を制御する各種パラメータの値等を設定するための設定部14と、設定されたパラメータの値を参照しながらネスティング部12の処理を制御する制御部15と、カット図形を表す図形データや、カット図形を分割して得られた部品の形状や大きさに関するデータ、さらには閉図形内にネスティングされた部品の状態(位置および角度)等の情報を記憶する記憶部16を備えている。
【0014】
このような図形データ生成装置1は、
図2に示すような、入力装置21、CPU(Central Processing Unit:中央演算装置)22、主記憶装置23、補助記憶装置24、出力装置25等のハードウェア構成を有するコンピュータ2と、このコンピュータ2にインストールされた図形データ生成プログラムとが協働することによって実現される。ここで入力装置21には、例えばキーボードやマウスなどが含まれる。また、出力装置25には、ディスプレイ等の表示装置の他、図形データに基づいてシート状媒体を切断するカッティングプロッタを含めることもできる。
【0015】
(1)分割部
分割部11は、外部から与えられた図形データによって表されるカット図形を予め用意された閉図形に合わせて複数の部品に分割する機能部である。
ここで「カット図形」は、例えば看板や標識に張り付ける文字や模様を表す所望の形状である。また、分割部11に与えられる図形データは、グラフィックス描画アプリケーションツール等を用いて別途作成された図形データである。このような図形データは、例えば、図形を点の座標と複数の点を結ぶ線(ベクター、ベクトル)等を表す数値データによって表現する「ベクター形式」で記述されているものの他、図形を画素の集合として表現する「ラスタ形式」で記述されているものでもよい。
【0016】
また、予め用意された「閉図形」としては、一定の形状と大きさを有する閉図形であれば、円や矩形等の任意の閉図形を用いることができる。例えば、カッティングプロッタを用いてシート状媒体を切断する場合には、切断するシート状媒体そのものの形状(例えば、矩形)と大きさ、または、シート状媒体のうち使用されるカッティングプロッタによって実際に文字や模様等の形状を切り出すことが可能なエリアの形状と大きさによって「閉図形」を規定することができる。
このように規定された「閉図形」は記憶部16に予め記憶しておけばよい。また、記憶部16に形状や大きさの異なる複数種類の閉図形を予め登録しておき、図形データ生成装置1のユーザがそれらの中から選択するようにしてもよい。
以下、このような閉図形をこの明細書においては「タイル(tile)」といい、カット図形を複数の部品に分割するためにこの閉図形(タイル)をカット図形に重ね合わせることを「タイリング(tiling)」ということがある。
【0017】
本実施の形態に係る図形データ生成装置1の分割部11は、タイリングをサポートする機能として、外部から与えられた図形データによって表されるカット図形と予め用意されたタイルとをディスプレイ等の出力装置25上で重ね合わせて表示する機能を備えている。図形データ生成装置1のユーザは、マウス等の入力装置21を操作して一方を他方に対して移動および回転させ、ディスプレイ上に表示されたカット図形とタイルの重なり具合を観察しながらタイルによるカット図形の分割状態を決定することができる。
【0018】
もし、カット図形とタイルとを重ね合わせた結果、カット図形をタイルの内側に収めることができれば、カット図形を複数の部品に分割することなく、そのカット図形の図形データをカッティングプロッタ用の図形データとすることができる。これに対し、カット図形がタイルからはみ出しているときは、そのカット図形をタイルの内側の部分と外側の部分とに分割する。これらの部分は、それぞれカット図形の部品となる。例えば、
図6Aは、矩形のタイルによって、1つのカット図形がタイルの内側の部品Aと外側の部品B、Cとに分割されることを示している。カット図形を分割して得られた複数の部品それぞれの形状と大きさ(面積)は、記憶部16に記憶される。また、タイル内の余白部分を識別するために、タイルの内側に位置する部品(例えば、
図6Aにおいては、部品A)については、そのタイル内における位置も記憶される。
なお、本明細書においては、このようにタイルにあわせてカット図形を複数の部品に分割することを「スライス(slice)」ということがある。
【0019】
(2)ネスティング部
ネスティング部12は、カット図形をスライスして得られた部品のうち、タイルからはみ出した部品をタイルの余白内に収まるように配置する機能部である。
本実施の形態に係る図形データ生成装置1において、ネスティング部12は、タイルの外側にはみ出した部品がタイル内の余白部分に配置できるか否か(ネスティングできるか否か)を判断するテスト部121と、その部品がネスティングできなかった場合には、その部品を断片化する断片化部122とを備えている。
【0020】
(2−1)テスト部
テスト部121によるテスト処理は、次のようなものである。
まず、記憶部16から読みだした部品を二値化した後に所定の方向(本実施の形態においては左から右)に走査してランレングス符号化(Run Length Encoding:RLE)する。このランレングス符号化は、部品を所定方向に走査したときに同じ値の画素がいくつ連続しているかを、その値と個数で表す符号化方法である。同様に、タイル内の余白部分もランレングス符号化する。そして、タイル内を所定の方向、例えば、左上を起点として左から右に、上から下へと移動しながら、部品のランレングス符号化データと余白のランレングス符号化データとを比較することによって、その部品がタイルの余白部分に配置できるか否かを判断する。これは、タイル内で部品を平行移動させながら、その部品を配置できる余白部分を探索する処理に他ならない。
以下、部品をタイル内で平行移動させながらネスティング可能な余白を探索する動作を「スキャン(scan)」ということがある。ランレングス符号化は、このスキャン処理の速度を、画素ごとにスキャンする場合と比較して格段に向上させる。
【0021】
また、テスト部121は、最適なネスティング状態を見つけ出すために、部品を所定の回転角度単位で回転させた上で、スキャンによる余白部分の探索を繰り返す。
一般的に、1回の回転操作で部品を回転させる回転角度単位を小さくした方が、様々な回転角度でスキャンを繰り返すことになるので、演算時間が長くなってしまうが、より効果的なネスティングを行うことが可能となる。
【0022】
本実施の形態に係る図形データ生成装置1において、ユーザは、テスト処理において1回の回転操作で部品を回転させる回転角度単位を、設定部14を介して設定することができる。
なお、部品を回転させる際の回転角度単位は、1回の回転操作で部品を回転させる回転角度(°)で表してもよいが、部品を1周360°回転させるための回転操作数(N:Nは自然数。)で表してもよい。以下に、回転操作数Nと利用可能な回転角度との関係の一例を示す。
【0023】
回転操作数(N):利用可能な回転角度(°)
1 :0
2 :0、180
4 :0、90、180、270
8 :0、45、90、135、180、225、270、315
… :…
【0024】
また、複数の部品が存在するときは、それらの部品はそれぞれの面積に応じた順序で並べられ(ソートされ)、制御部15は、面積の大きいものから順にテスト部121によるテスト処理の対象としていく。
テスト部121によるテスト処理の結果、ある部品がタイル内の余白部分に配置できる(ネスティングできる)と判断された場合は、テスト部121は、その部品のタイル内の位置と回転角度を記憶部16に記憶する。
【0025】
(2−2)断片化部
断片化部122は、部品をさらに複数に分割して、その部品を複数の断片に断片化(fragment)する機能部である。断片化部122は、テスト部121によるテスト処理の結果、利用可能なすべての回転角度において部品をネスティングできなかった場合に、その部品を断片化する。
本実施の形態においては、断片化によって、部品はほぼ等しい面積を持つ2つの新たな部品に分割される。
テスト部121は、断片化部122によって断片化された部品の断片を新たな部品としてテスト処理を実行する。
【0026】
一般的に、部品を断片化することによって、部品の大きさが小さくなるため、部品をネスティングできる可能性が高くなると考えられる。しかしながら、複数の部品が存在する場合に1つの部品について断片化を繰り返すと、テスト部121によるネスティングアルゴリズムの実行回数が飛躍的に増大して演算効率が低下する。さらに、部品を繰り返し断片化してとても小さな小片とすることは、しばしばシート状媒体を経済的に利用することにつながるものの、切断後に大量の断片を再構成することは、ユーザにとって複雑で大変時間がかかる作業となる。したがって、これら2つの優先事項、すなわち、シート状媒体の有効利用と再構成作業の効率との間の効果的なバランスを実現するために、さらなる閾値を導入することは有益である。
そこで、本実施の形態に係る図形データ生成装置1においては、部品の面積に閾値Athを設定し、部品の面積が予め設定された閾値Athよりも大きいときにのみ、断片化部122によって部品を断片化するようにして、1つの部品について断片化が深くなりすぎないようにしている。ユーザは、設定部14を介して、部品の面積に関する閾値Athを設定することができる。
【0027】
(3)生成部
生成部13は、ネスティング部12によってタイル内に収められた複数の部品を表す図形データを生成する機能部である。生成部13によって生成された図形データは、例えばカッティングプロッタに与えられ、シート状媒体を切断する際の制御データとして用いることができる。
ラスタ形式で記述された図形データは、ベクター形式で記述された部品をそれらがネスティングされる位置に移動および回転する変換を計算するために用いられる。これらの変換された部品は、生成部13によって生成される。
【0028】
2.図形データ生成装置の動作
次に本実施の形態に係る図形データ生成装置の動作について説明する。
図3は、本実施の形態に係る図形データ生成装置1の全体的な処理手順を示すフローチャートである。
まず、図形データ生成装置1のユーザは、設定部14において各種パラメータの値を設定または変更することができる(S10)。ここで設定するパラメータとしては、次のようなものがある:
(a)部品を回転させる回転角度単位、または部品の回転操作数(N:Nは自然数。);
(b)断片化を行うか否かの判断に用いられる部品の面積に関する閾値(Ath);
(c)ネストされる部品同士の最小の隙間。
【0029】
各種パラメータを設定した後、分割部11によって、与えられた図形データによって表されるカット図形をタイルに合わせて複数の部品に分割(スライス)する(S20)。複数の部品をそれぞれの面積の大きい順に順序付け(ソート)する(S30)。
【0030】
ネスティング部12は、制御部15による制御の下で、カット図形をスライスした際に、タイルの内部に位置する部品以外の部品、すなわち、タイルからはみ出している部品の中から面積が最も大きい部品をネスティングの候補として選択し(S40)、テスト部121によるテスト処理と断片化部122による断片化とを含むネスティング処理を実行する(S50)。なお、断片化を含むネスティング処理の詳細については後述する。
【0031】
1つの部品に対するネスティング処理(S50)が完了したときに、まだネスティング処理を試みていない他の部品があれば、その他の部品をネスティングの候補として選択し(S40)、ネスティング処理(S50)を実行する。もし、すべての部品についてネスティング処理を実行したならば(S60:Yes)、生成部13によりタイル内に複数の部品がネスティングされた図形データを生成して(S70)、一連の処理を終了する。
【0032】
[ネスティング処理とテスト処理]
次に
図4および
図5を参照して、ネスティング処理とこのネスティング処理に含まれるテスト処理について詳細に説明する。
まず、部品の大きさに応じて、ネスティングの候補となる部品が決まると(
図3、S40)、テスト部121によるテスト処理を実行し、その部品をタイルの余白にネスティングできるか否かを判断する(
図4、NS01)。
【0033】
テスト部121によるテスト処理の手順を
図5に示す。
まず、部品の回転操作回数nをリセットしてn=0とする(TS01)。その後、この回転操作回数nの値をインクリメントして(TS02)、候補となる部品およびタイルのランレングス符号化とスキャンを実行して、タイル内を移動しながらのランレングス符号化データを比較してネスティングの可否を判断する(TS03)。もし、その部品をネスティングすることができれば(TS04:Yes)、その部品のタイル内の位置および回転角度を記憶部16に記憶し、タイル内の余白に関するデータを更新する(TS05)。そして、まだスキャンを行っていない利用可能な回転角度があれば(TS06:No)、部品を予め設定された回転角度単位だけ回転させて(TS07)、再度、ランレングス符号化とスキャンを実行する(TS02、TS03)。一方、すでにすべての利用可能な回転角度についてスキャンを行っていれば(TS06:Yes)、
図4のNS02の処理に進む。
【0034】
上述したテスト処理(
図4、NS01)の結果、その部品をタイル内にネスティングすることができるならば(NS02:Yes)、候補となる次の部品を選択し(
図3、S40)、ネスティング処理を実行する(
図3、S50)。
【0035】
一方、上述したテスト処理(
図4、NS01)の結果、その部品をタイル内にネスティングすることができなかった場合には(
図4、NS02:No)、その部品を断片化する処理を実行する(
図4、NS05、NS06)。
【0036】
なお、本実施の形態に係る図形データ生成装置1においては、ネスティング処理のより一層の効率化を図る観点から、タイルの外側にはみ出した部品が複数ある場合、これらの部品のうち最も大きな面積を持つものについては、例外的に断片化を行わないようにしている。したがって、タイルの外側にはみ出した部品のうち最も大きな部品については、利用可能な回転角度のいずれにおいてもネスティングできない場合(
図4、NS02:No、NS03:Yes)は、その部品を断片化することなくネスティングの候補から除外する(
図4、NS04)。候補から除外された部品は、例えばカッティングプロッタにあっては、別の(2枚目の)シート状媒体を切断するためのカット図形とする。
【0037】
ネスティング処理の対象となっている部品が最大の面積を有する部品ではない場合(
図4、NS03:No)には、その部品の面積が予め設定された断片化のための閾値Athよりも大きければ(
図4、NS05:Yes)、その部品をさらに互いの面積がほぼ等しい複数の断片に断片化し、それぞれを新たな部品とする(
図4、NS06)。
【0038】
次に、断片化後の新たな部品の中からネスティング処理の対象となる候補を選択し(
図4、NS07)、選択された部品に対して上述したテスト処理を実行し(
図4、NS08)、ネスティングすることができれば(
図4、NS09:Yes)、NS07に戻ってもうひとつの部品を候補に選択してテスト処理を実行する(
図4、NS08)。
一方、テスト処理(
図4、NS08)の結果、ネスティングに成功しなければ(
図4、NS09:No)、閾値Athを下回らない限り(
図4、NS05:Yes)、断片化(
図4、NS06)とテスト処理(
図4、NS08)とを繰り返す。一方、閾値Athを下回ってしまった部品については、その部品のみならず、その部品の親となる断片化前の部品もネスティングの候補から除外する(
図4、NS04)。
【0039】
次に、図面を参照して、具体例について説明する。
[ケース1]
図6Aに示すように、カット図形は、分割部11におけるスライス処理の結果、長方形のタイルによってタイル内の部品Aとタイル外の部品B、Cとに分割される(
図3、S20)。
次に、タイル外の部品B、Cのうち、より大きい方の部品Bがネスティングの候補として選択され(
図3、S40)、ネスティングプロセス(
図3、S50)によって、
図6Bに示すように、タイルの余白部分にネスティングすることができる。
続いて部品Cについても、タイルの余白部分に配置される。
その結果、1枚のシート状媒体を切断するための図形データとして、
図6Bに示すような図形データが、生成部13によって生成される。
この例においては、部品B、Cは、いずれもテスト処理の過程で回転しただけで、断片化の必要はなかった。
【0040】
[ケース2]
上述したケース1が部品の断片化を伴わない例であったのに対し、ケース2は、断片化を伴う例である。
まず、カット図形はタイル1によって部品A、B、Cの三つに分割される(
図7A)。
タイルの外側にはみ出した部品B、Cのうち、まず、面積のより大きい部品Cがネスティング処理の対象候補として選択される(
図3、S30、S40)。しかしながら、ネスティング処理(
図3、S50)においては、テスト処理(
図4、NS01)の結果、部品Cは大きすぎて、部品Aとともにタイル1内にネスティングすることはできない(
図4、NS02:No)。また、部品Cは最も面積の大きい部品でもあるので(同、NS03:Yes)、断片化も行われず、タイル内にネスティング処理する対象からは除外される(
図4、NS04)。
【0041】
次に、2番目に大きい部品Bがネスティング処理の対象候補として選択される(
図3、S40)。ネスティング処理(
図3、S50)において、テスト処理(
図4、NS01)の結果、部品Bはそのままの形状ではネスティングできないため(同、NS02:No)、断片化部122により、まず部品B1、B2の2つに断片化される(同、NS06、
図7B)。このうち、部品B1は、テスト処理(
図4、NS08)の結果、タイル1内にネスティングすることができることがわかる(同、NS09:Yes、
図7C)。
【0042】
一方、部品B2については、テスト処理(
図4、NS01)の結果、すでに部品Aと部品B1とを含むタイル1内にネスティングすることができないことがわかるので(
図4、NS02:No)、再度断片化されて、部品B2aと部品B2bとになる(
図4、NS06、
図7B)。これら2つの新たな部品B2aと部品B2bとは、テスト処理(
図4、NS08)の結果、それぞれタイル1にネスティングすることができる(
図4、NS09:Yes、
図7C)。
【0043】
タイル1内にネスティングする対象から除外された部品Cについては、2枚目のシート状媒体に収めるために用意された新たなタイル2によってスライスされ、部品C1と部品C2に分割される(
図3、S20、
図7D)。
次に、タイル2からはみ出した部品C2についてネスティング処理を実行すると(
図3、S50)、部品C2はそのままではタイル2の余白部分にネストすることができない。ここで、タイル2からはみ出した部品は部品C2のみである。さらには、部品C2の面積は閾値Athよりも大きい(
図4、NS05:Yes)。したがって、部品C2は、断片化部122によって、
図7Eに示すように、部品C2aと部品C2bとに断片化される(
図4、NS06)。部品C2aと部品C2bとに、それぞれにテスト処理(同、NS08)を実行すると、
図7Fに示すように、両者とも部品C1と共にタイル2内にネスティングすることができる。
【0044】
3.実施の形態の効果
以上のように、本実施の形態に係る図形データ作成装置1は、与えられた図形データによって表されるカット図形が1枚のシート状媒体の形状と大きさを表すタイルに収まりきらない場合は、カット図形をそのタイルに合わせて複数の部品に分割し、そのタイルからはみ出した部分の部品をそのタイルの余白部分にネスティングして新たな図形データを生成する。したがって、1つのカット図形を分割して得られる部品をシート状媒体の余白に収めることができる。
【0045】
また、本実施の形態に係る図形データ作成装置1のネスティング部12は、ある部品がタイルの余白部分にネスティングできないときには、その部品を断片化部122によって複数の断片に断片化 し、その部品の断片を新たな部品としてタイルの余白内に収めるように配置するので、シート状媒体をより有効に利用することができる。
さらに、この断片化については、部品の面積が予め設定された閾値Athよりも大きいときにのみその部品を断片化するので、より効果的なネスティングが可能となる。
【0046】
また、本実施の形態に係る図形データ作成装置1は、制御部15を備えることによって、カット図形がタイルからはみ出た部品が複数あるときは、それらの部品それぞれの面積に応じた順序でネスティングプロセスを実行していくので、より効果的なネスティングを実現することができる。
【0047】
また、本実施の形態に係る図形データ作成装置1は、テストプロセスにおいてタイルの余白内で部品を回転させる回転角度単位を外部から設定可能とするための設定部を備えている。したがって、部品を回転させる回転角度単位を変更することによって、より効率的にネスティングプロセスを実行することができる。