以下、本発明を実施するための最良の形態について図面を用いて説明する。
(実施例1)
図1は、本発明の実施形態に係るシステム構成およびネットワーク構成の一例を示す図である。
ネットワーク101は、イントラネットまたはローカルエリアネットワーク(以下、LANと呼ぶ)などである。3Dプリンター102は、特殊なモデルデータをもとに立体(3次元のオブジェクト)を造形する制御装置の一例である。コンピューター103は、造形制御ソフトウェアがインストールされているクライアントコンピューターである。コンピューター104は、3Dプリンター管理アプリケーションが動作する管理サーバーである。コンピューター103および104としては、パーソナルコンピューター(PC)、タブレットコンピューター、スマートフォンなどの種別が存在する。
本実施例の管理システムを構成する3Dプリンター102とコンピューター103および104とは、ネットワーク101を介して、相互に情報の送受信が可能である。なお、ネットワーク101は、無線LANなどの無線ネットワークでも構わない。また、ネットワーク101は、情報の送信・受信が可能であれば、インターネットなどのパブリックネットワークでもよい。
図2は、3Dプリンター102、コンピューター103、104の情報処理機能のハードウェア構成例を示す図である。なお、3Dプリンター102においては、後述する図3に示す組み込みコンピューター312の構成が、図2で示す情報処理機能のハードウェアに相当する。
ユーザーインターフェース(以下、UIと呼ぶ)201は、ディスプレイ、キーボード、マウス、タッチパネル、ボタンなどによる、情報や信号の入出力を行う。これらのハードウェアを備えないコンピューターは、リモートデスクトップやリモートシェルなどにより、他のコンピューターから接続・操作することも可能である。
ネットワークインターフェース202は、LANなどのネットワークに接続して、他のコンピューターやネットワーク機器との通信を行う。ROM204には、組込済みプログラムおよびデータが記録されている。RAM205は一時メモリ領域である。二次記憶装置206は、HDDやフラッシュメモリなどである。CPU203は、ROM204、RAM205、二次記憶装置206などから読み込んだプログラムを実行する。以上の各部201乃至206は、入出力インターフェース207を介して接続されている。
3Dプリンター102に関しては、さらに、造形方式に応じたハードウェア構成を備える。造形方式に応じたハードウェア構成とは、具体的には、3Dプリンター102のエンジン部である。エンジン部はCPUやROM、RAMなどの記憶装置に加え、当該CPUにより制御される造形方式に応じたハードウェアをもつ。例えば、熱溶解積層法(FDM:Fused Deposition Modeling)の場合、そのハードウェアは、プリントヘッドやステージ、プリントヘッドのノズルを過熱するヒーター、冷却のためのファン、モーターなどから構成される。モーターは、プリントヘッドをX、Y、Z軸方向に駆動するために3Dプリンターに備えられる。他の造形方式としては、例えば、光造形方式(STL:Stereo lithography)、粉末燃結方式(SLS:Selective Laser Sintering)、インクジェット方式などがある。
図3は、本システムのソフトウェア構成(一部ハードウェア構成を含む)を例示する図である。
まず、コンピューター103の構成について説明する。
造形制御ソフトウェア301は、コンピューター103にインストールされて実行されるソフトウェアである。造形制御ソフトウェア301は、例えば、スライサーと呼ばれる造形に係る出力設定や制御命令を生成するための機能などを含むソフトウェアである。
設定情報302は、造形制御ソフトウェア301の造形に関する設定項目およびその設定値などを含む情報である。造形に関する設定項目には、例えば、使用する3Dプリンターの機種名、プリントヘッドの移動速度や温度、使用するマテリアルの種別や色、名前、充填パターンなどが含まれる。
3Dモデルデータ303は、造形対象のオブジェクトを3次元形状で表す3次元モデルデータである。例えば、3次元形状を表現するデータを保存するファイルフォーマットのひとつであるSTL(STereo Lithography)などがある。
制御命令304は、3Dモデルデータ303を元にして造形制御ソフトウェア301によって生成される3Dプリンターの制御命令であり、例えば、Gコード(G-code)という工作機械の命令を3Dプリンター用に拡張した形式が広く用いられている。造形制御ソフトウェア301は、3Dモデルデータで表される造形部分であるオブジェクトの造形に関する制御命令だけでなく、造形に必要なサポート(support structures)の造形に関する制御命令も合わせて生成する。なお、STLファイルには、サポートの造形に関する情報が含まれない。STLファイルがGコードに変換される際に、サポートの造形に関する情報が追加される。
実行結果305は、3Dプリンター102から送られる後述の造形結果317を造形制御ソフトウェア301で処理したデータである。例えば、ログ形式の造形結果317は、造形制御ソフトウェア301の扱い易い形式に変換される。
さらに、造形制御ソフトウェア301は、設定情報302および制御命令304などを含むジョブ履歴を作成し、コンピューター104に送信する機能を有している。なお、ジョブ履歴の作成機能、及び、コンピューター104へのジョブ履歴の送信機能については、一般的な造形制御ソフトウェアに対して、プラグインプログラムといった形式で追加されるものであってもよい。または、ジョブ履歴の作成機能、及び、コンピューター104へのジョブ履歴の送信機能を有する別のアプリケーション(不図示のプログラム)をコンピューター103にインストールして、それら機能を実現することも可能である。該アプリケーションは、造形制御ソフトウェア301からのジョブに係る情報や3Dプリンター102からの実行結果などの情報を収集して、ジョブ履歴を作成する。
次に、3Dプリンター102の構成について説明する。
ハードウェア311は、3Dプリンター102のエンジン部である。3Dプリンターを構成するハードウェアは造形方式によって異なる。例えば、熱溶解積層法(FDM)の場合、ハードウェア311は、プリントヘッド、ステージやプリントヘッドをX、Y、Z軸方向に駆動するモーター、プリントヘッドのノズルを過熱するヒーター、冷却のためのファンなどから構成される。
組み込みコンピューター312は、3Dプリンター102に組み込まれたコンピューターである。組み込みコンピューター312は、汎用のコンピューターに比べ、必要な機能に特化し、不必要な機能・性能・部品を削って、安価なコストで製造される。なお、3Dプリンターに要求される機能・性能によっては、組み込みコンピューター312は、汎用のコンピューターであっても構わない。
3Dプリンター制御アプリケーション313は、組み込みコンピューター312上で実行されるアプリケーションである。3Dプリンター制御アプリケーション313は、UI314と、API(Application Programming Interface)315と、ハードウェア制御部316とを備える。
UI314は、廉価なものでは文字のみを数行表示するディスプレイとハードウェア操作ボタンの組み合わせや、他にはタッチパネル付きディスプレイなどがある。UI314の表示内容によって、3Dプリンターの状態を確認し、UI314を操作することによって、所望の処理を3Dプリンターに命令する。
API315は、外部のコンピューター103や104から、命令やデータの送受信を受け付ける。API315を介して、外部のコンピューター103や104から、3Dプリンター制御アプリケーション313に命令を送信し、3Dプリンター102を制御する。
ハードウェア制御部316は、UI314、API315を介して受信した命令や、3Dプリンター制御アプリケーション313自体が発行した命令に従い、ハードウェア311を構成する各部を動作させ、造形物の出力や出力の前処理・後処理などを実行する。
前述の造形制御ソフトウェア301が生成した制御命令304は、ネットワーク101およびAPI315を介して、3Dプリンター制御アプリケーション313に送られる。また、コンピューター103で生成された制御命令304は、コンピューター104を経由して3Dプリンター制御アプリケーション313に送られてもよい。さらに、3Dプリンター102がネットワークインターフェースを備えない場合などは、USBメモリなどの記憶装置を介して、制御命令304を3Dプリンター制御アプリケーション313に送ることも可能である。
3Dプリンター制御アプリケーション313は、UI314あるいはAPI315からの出力命令により、制御命令304を解釈して、ハードウェア制御部316がハードウェア311各部を動作させ、造形物を出力する。
造形結果317は、造形物の出力途中経過や成功あるいは失敗といった出力の最終結果、ジョブの開始や終了、あるいは中止・再開時刻など、3Dプリンター102で保持される情報である。造形制御ソフトウェア301は、造形結果317を取得して、コンピューター103で3Dプリンターの造形結果を確認する。
能力情報318は、3Dプリンター102の能力を示す情報である。能力情報318には、3Dプリンター102の造形方式に準拠した能力情報であって、3Dプリンター102がサポートしているプリントヘッドの速度や温度、マテリアルの種別、レイヤーの厚さ、造形容量などの範囲の定義が含まれる。アラート情報319は、3Dプリンターのアラートを示す情報である。アラート情報319では、プリントヘッドが詰まっている、冷却ファンが動作していない、マテリアルが空である、レーザーが機能しない、などの3Dプリンターに関するアラート情報が保持される。
次に、コンピューター104の構成について説明する。
3Dプリンター管理アプリケーション321は、コンピューター104上で実行されるアプリケーションである。デバイス一覧322は、3Dプリンター管理アプリケーション321の管理対象であるデバイスの一覧を示すデータである。
ジョブ履歴323は、3Dプリンター102から取得した造形結果317やコンピューター103から取得した設定情報302、制御命令304、実行結果305などを含むジョブの実行履歴である。ジョブ履歴323に含まれる設定情報302および制御命令304に基づいて、コンピューター104は、マテリアルの使用量を算出および集計することができる。マテリアルの使用量の算出例について、図6を用いて後述する。
使用状況レポート324は、3Dプリンター管理アプリケーション321によって表示・出力されるレポートである。
使用量カウンター情報325は、3Dプリンターで使用されたマテリアルの使用量を、3Dプリンターの個体ごと、マテリアル種別ごとに数値化した情報である。以下、特に指定しない限り3Dプリンターの個体のことを、単にデバイスと呼ぶ。
使用量履歴326には、3Dプリンターで実行されたジョブごとのマテリアルの使用量を記録した履歴や、使用量カウンター情報325を3Dプリンター管理アプリケーション321で設定した期間ごとに記録した履歴が含まれる。
3Dプリンター管理アプリケーション321は、3Dプリンター102からデバイスごとの固有のIDを取得することで、管理対象が複数台で、同一モデルのデバイスが存在していても、取得したデータをデバイスごとに識別・集計することができる。また、3Dプリンター管理アプリケーション321は、上記管理対象デバイスである3Dプリンター102やコンピューター103から常時または定期的に各種データを取得することで、ジョブ履歴323やアラート履歴327、デバイス一覧322を更新する。
なお、説明したソフトウェア構成は、本実施例で説明した3Dプリンターおよびコンピューターのハードウェア構成・配置に限らず実施可能であることを補足する。すなわち、各ソフトウェアは、3Dプリンターの組み込みコンピューター312、コンピューター103、104のどのハードウェア上で実行されてもよい。また、1台のハードウェアで全てのソフトウェアを実行してもよいし、複数のハードウェアでそれぞれ必要なソフトウェアを実行してもよい。
図4は、本システムで使用するデータの例を示す図である。図4で示すデータは、設定情報302、能力情報318、アラート情報319、ジョブ履歴323に含まれる属性の例である。
設定情報401は、造形制御ソフトウェア301などで設定される造形に関する設定情報である。設定情報401の属性には、例えば、マテリアルの色や種別、エクストルーダーの移動速度や温度、サポート材の使用の有無や使用する場合のサポート材の種別、充填パターンの使用の有無や使用する場合の充填パターンの種別、などがある。
能力情報402は、3Dプリンター102から能力情報318を取得できる場合に、取得可能な能力情報である。能力情報402の属性には、例えば、当該3Dプリンターで使用可能なマテリアルの色や種別、プリントヘッドが稼働可能なX、Y、Z軸方向のそれぞれの範囲、ファンの回転速度の範囲、などがある。
アラート情報403は、3Dプリンター102からアラート情報319を取得できる場合に、取得可能なアラート情報である。アラート情報403の属性には、例えば、マテリアルが空である、エクストルーダーが詰まった、ファンが壊れた、保護カバーが開いている、などがある。
ジョブ履歴404は、前述したジョブ履歴323に含まれ得るジョブ履歴である。ジョブ履歴404には、例えば、ジョブの識別IDや日時情報、使用したデバイスの識別IDや名前、使用したマテリアルの名前や種別、充填パターン、などがある。なお、使用したマテリアルの名前や種別などは、プリントヘッドが複数ヘッドである場合も考慮して、配列構造で定義されていても良い。
なお、図4で示した各属性・アラートは、あくまでも一例であり、実際に使用される属性は図4に記載した属性に限定されない。
図5(A)は、造形に関する設定画面の例を示す図である。500は造形制御ソフトウェア301により提供される設定画面の例である。
501のドロップダウンボックスで選択した3Dプリンターに対して造形に関する設定を行う。502は、解像度の出力プロファイルを選択するラジオボタンである。なお、ユーザーがカスタマイズしたプロファイルを読み込むことも可能である。
503、504はプリントヘッドで使用するマテリアルの種別を選択するドロップダウンボックスである。501で選択した3Dプリンターの能力を取得できる場合は、例えば、図4の能力情報402に示した属性をもとに当該3Dプリンターで使用できるマテリアルがドロップダウンリストで選択可能になってもよい。501で選択した3Dプリンターの能力を取得できない場合は、当該造形制御ソフトウェアにて用意されたマテリアルの候補から選択することになる。
ここで、マテリアルの種別としては、例えば、ABS、PLA、ナイロン、PETなどといった素材が選択できる。また、サポートとして、水溶性の専用マテリアルを選択することも可能である。なお、ここで挙げた例は、FDM方式の造形に係るマテリアルの例であり、他の造形方式の場合には、異なるマテリアルが利用される。例えば、インクジェット方式の造形に係るマテリアルとしては、光硬化性樹脂、ワックスなどがある。SLS方式の造形に係るマテリアルとしては、ナイロンや金属などの粉末がある。光造形方式に係るマテリアルとしては、特殊な光硬化性樹脂がある。また、石膏などの特殊な粉末と接着剤を用いて造形するような3Dプリンターも存在する。
本実施例では、FDM方式の造形に係るマテリアルの使用量をレポートすることを可能とする技術を説明している。なお、本発明は、ここで挙げた様々な3Dプリンターの造形に利用される消耗材(マテリアル、接着剤)の使用量を、長さや重さ、体積などの適切な単位でレポートすることが可能なものである。ここでのレポートでは、例えば、その消耗材の種類及び色などに分類して、使用量を提供するといったことも想定している。
505はサポートの有無と、サポート有りの場合にサポートの造形に使用するマテリアルの種別を選択するドロップダウンリストである。503、504で選択したマテリアルをサポートにも使用したい場合は、例えば、505で「左ヘッド」、「右ヘッド」などのように選択することも可能である。サポートには、例えば、図5で示す水溶性のサポートや、手で剥がせるような材質のサポートなどがあり、これらはサポート専用のマテリアルとして使用される。一方、デバイスに備わっているヘッドが一つであるため一つのジョブで複数のマテリアルを使用できない場合などには、3Dモデルデータに対応するオブジェクトを造形するために使用するマテリアルが、サポートの造形にも使用されることがある。このような2種類のサポートを区別するために、本実施例では、サポートの造形専用で使用されるマテリアルのことを、サポート専用マテリアルと呼ぶ。
506は、各項目のパラメーターの設定である。506で設定した値をもとに制御命令304が生成される。501で選択した3Dプリンターの能力を取得できる場合は、設定値の範囲は、例えば402に示した属性をもとに当該3Dプリンターで対応している値の範囲となる。一方、501で選択した3Dプリンターの能力を取得できない場合は、設定値の範囲は、当該造形制御ソフトウェアで定義された値の範囲となる。ボタン507を押下すると、500の各設定項目で設定した値をもとにジョブが生成される。生成されたジョブには、設定情報302や制御命令304などが含まれている。ボタン508を押下すると、造形に関する設定を終了し、設定画面500を閉じる。
なお、500は設定画面の例であり、UIの例が500に限定されるものではない。例えば、500は複数マテリアルを選択できるUIであるが、前述したように単一ヘッドの3Dプリンターの場合、マテリアルを選択するためのドロップダウンリストは1つでも構わない。また、設定画面500内の各種設定項目は3Dプリンターの機種によって異なる場合があり、同一機種でも使用する造形制御ソフトウェアによって異なる場合がある。したがって、設定できる設定項目も設定画面500で挙げた例に限定されるものではない。
図5(B)は、造形制御ソフトウェア301で生成した制御命令の一例である、FDM方式の造形に係る制御命令を示す。3Dプリンター102は、制御命令304を先頭から順番に実行することで3Dオブジェクトを出力する。511は命令文の先頭部、512は命令文の末尾であり、513および514はある層の造形の命令文である。
511は命令文の先頭部であり、例ではプリントヘッドの温度や位置調整などの初期設定を行っている。512は命令文の末尾であり、例ではプリントヘッドの冷却や位置を元に戻すなどの終了設定を行っている。
513は、実際にマテリアルを出力する命令群である。“G1”はプリントヘッドを移動させる命令であり、“X”、“Y”、“Z”は3Dプリンター上で定義された座標を示し、“F”はフィード率(プリントヘッドの移動速度)、“E”はプリントヘッドから押し出されるマテリアルの長さを示している。ここで、プリントヘッドから押し出されるマテリアルの長さとは、プリントヘッドから出力される前のフィラメント状になっているマテリアルの長さを指す。例えば、513の命令文の4行目には、“G1 X-18.975 Y-17.750 E1.57750 F1080.000”と書かれている。この命令では、押し出されるフィラメントの長さを1.57750mmにして、座標(18.975,17.750)まで、速度1080.000mm/分でプリントヘッドを移動させることが示されている。このような命令を順番に実行し、スライスした平面オブジェクトをZ軸方向に積層していくことで、立体のオブジェクトを生成する。
命令文各行の“E”は、該当行の命令まで連続して押し出されるマテリアルの長さの総量を示している。“G92 E0”の命令では押し出す長さが0にリセットされている。これは次の押し出し先が飛び地であることを示している。リセットされる直前の“E”の値を合計することで、造形に使われたマテリアルの長さを求めることができる。マテリアルの長さと、マテリアル(図5(B)のフィラメント)の断面積と、マテリアルの密度とを用いて、造形に使われたマテリアルの重さを算出することができる。
また、造形に使われたマテリアルの使用量を算出する方法は、上述した方法以外でもよい。513の命令文によってある層が造形された後、514の命令文によりその次の層が造形される。各命令群の先頭の命令文を見ると、Z軸方向に差があり、この差がレイヤーの厚さ(積層ピッチ)になる。レイヤーの厚さは図5(A)の設定画面にも記載した通り、ユーザーが設定可能な項目であるため可変である。513および514で示される例では、積層ピッチは0.2mmである。積層ピッチと、マテリアル出力中のプリントヘッドの移動距離と、マテリアルの密度とを用いて、造形に使われたマテリアルの重さを求めてもよい。この方法によって、制御命令に含まれる“E”の値を用いずに、造形に使われたマテリアルの重さを算出することも可能となる。
図6は、コンピューター103における、コンピューター104に送信する履歴情報(例えば、ジョブ履歴323)の生成処理の流れを示すフローチャートである。本処理は、造形制御ソフトウェア301を実行することで実現されるジョブの生成や履歴情報の生成、その履歴情報の送信などを行う機能モジュールが主体として動作するものとする。
S601で、保存されている3Dモデルデータ303が取得される。
S602で、造形制御ソフトウェア301が提供しているインターフェースによって入力された造形に関する設定情報302が取得される。
S603で、S601で取得した3Dモデルデータ303とS602で取得した設定情報302とに基づいて、制御命令304が生成される。
S604で、3Dプリンター102に造形を指示するためのジョブが作成される。ジョブには、設定情報302や制御命令304などが含まれる。その後、作成されたジョブは、コンピューター103から3Dプリンター102に送信される。なお、作成されたジョブは、コンピューター104や不図示の他のコンピューターを介して、3Dプリンター102に送信されても良い。
S605で、コンピューター103において、送信したジョブの造形結果317が3Dプリンター102から取得され、造形結果317の内容に応じて実行結果305が生成される。
S606で、設定情報302と制御命令304と実行結果305とに基づいて、履歴情報として、ジョブ履歴323が作成される。
S607で、S606で生成されたジョブ履歴が、3Dプリンター管理アプリケーション321が動作するコンピューター104に送信される。
ジョブ履歴323の作成処理は3Dプリンター102自身が実行しても良く、その場合は3Dプリンター102にジョブ履歴323が蓄積されており、コンピューター104が3Dプリンター102からジョブ履歴323を収集することになる。また、コンピューター103が送信するジョブがコンピューター104を介して3Dプリンター102に送信される場合などは、コンピューター104自身がジョブ履歴を作成しても良い。したがって、ジョブ履歴の作成処理はいずれのコンピューター、3Dプリンターでも実行され得る。
図7は、コンピューター104における、デバイスごとにマテリアルの使用量カウンター情報325を作成する処理の流れを示すフローチャートである。本処理は、3Dプリンター管理アプリケーション321(以下、管理アプリケーション321と呼ぶ)によって実行される。
図7(A)で示すデバイスごとのマテリアル使用量カウンター作成処理について説明する。
S701で、管理アプリケーション321は、管理対象のデバイスのジョブ履歴323を収集する。管理アプリケーション321は、収集したジョブ履歴323をコンピューター104内のROM204や二次記憶装置206に保存する。
S702からS711までの処理は、集計対象のデバイスの、マテリアル使用量をカウントしていないジョブ履歴323に対して繰り返し行われる。管理アプリケーション321は、各ジョブ履歴に対して使用量をカウントしたかどうか判断するために、S701でジョブ履歴323を保存する際にフラグを付与するなどしてもよい。
S703で、管理アプリケーション321は、ジョブ履歴323に含まれる設定情報をもとに、使用したマテリアルの種別の情報を取得する。使用したマテリアルの種別は、単数でも複数でもよい。なお、制御命令の中にマテリアルの種別の情報が含まれている場合は、管理アプリケーション321は、制御命令からマテリアルの種別の情報を取得してもよい。
S704で、管理アプリケーション321は、前回ジョブ実行後から本ジョブ実行までの間にマテリアル交換があったかどうかを、ジョブ履歴323をもとに判断する。例えば、管理アプリケーション321は、ジョブ履歴323をもとに、前回ジョブで使用したマテリアルと本ジョブで使用したマテリアルとが異なる場合に、マテリアルが交換されたと判断する。また、マテリアルの交換イベントが発生したことが3Dプリンターに関するログ情報として記録される場合には、管理アプリケーション321は、ログ情報に記録される内容を参照して、マテリアルが交換されたと判断してもよい。管理アプリケーション321は、マテリアル交換があった場合にはS705に処理を進め、マテリアル交換がなかった場合にはS705の処理を実行せずにS706に処理を進める。
S705で、管理アプリケーション321は、造形準備のために使用したマテリアルの使用量をカウントする。例えば、管理アプリケーション321は、マテリアルを交換する際にプリントヘッドをクリーニングするために出力されるマテリアルの使用量を、オブジェクト外使用量として計算する。クリーニングに費やしたマテリアルのオブジェクト外使用量は、能力情報318から取得した値を用いてもよいし、ユーザーが管理アプリケーション321で予め設定した値を用いてもよい。また、管理アプリケーション321は、マテリアルの交換以外にもジョブ開始前の造形準備として出力されたマテリアルの使用量を、オブジェクト外使用量として計算してもよい。
造形準備のためのマテリアルの使用量など、3Dモデルデータに対応するオブジェクトに使われるマテリアルについての使用量以外であって、ジョブの実行の際に用いられるマテリアルの使用量を、本実施例ではオブジェクト外使用量と呼ぶこととする。オブジェクト外使用量には、例えば、サポート、造形準備、または、中止ジョブに使われたマテリアルの使用量などがある。
S706で、管理アプリケーション321は、ジョブ履歴323をもとに本ジョブが、造形中に中止されたジョブであるかどうかを判断する。管理アプリケーション321は、中止されたジョブでない場合にはS707に処理を進め、中止されたジョブである場合にはS708に処理を進める。
S707で、管理アプリケーション321は、マテリアルの使用量算出処理を行う。マテリアルの使用量の算出処理については、図7(B)を用いて後述する。
S708で、管理アプリケーション321は、中止ジョブに対するオブジェクト外使用量の算出処理を行う。造形途中に中止されたジョブにおいて、造形されたオブジェクトに使われたマテリアルの使用量を算出する処理について、図7(C)を用いて後述する。
S709で、管理アプリケーション321は、S707で算出したマテリアルの使用量と、S708で算出したオブジェクト外使用量とをジョブごとに保存しておく。ここで、オブジェクト外使用量については、管理アプリケーション321は、発生理由ごとにオブジェクト外使用量を保存してもよい。なお、S709で算出されたジョブごとのマテリアルの使用量は、使用量履歴326に含まれて保持される。ジョブごとのマテリアルの使用量のデータが保持されることで、図9を用いて後述するレポートにおいて、ジョブごとのマテリアルの使用量をレポートとして表示できる。
S710で、管理アプリケーション321は、算出したマテリアルの使用量を、使用量カウンター情報325のマテリアルの種別ごとの項目のカウンター値に加算する。もし、該当する項目が存在しない場合は、管理アプリケーション321は、新規のマテリアル種別として新たに項目を作成した上で、計算した使用量を記録してもよい。さらに、管理アプリケーション321は、ここで計算された1つのジョブで使用されたマテリアルの使用量について、使用量履歴326に記録する。また、S709、S710でマテリアルの使用量を保存・加算した後に不要であれば、管理アプリケーション321は、使用量カウント済みのジョブ履歴323に含まれる制御命令304については破棄してもよい。
S711で、管理アプリケーション321は、全てのジョブ履歴323に係るマテリアル使用量を用いたカウンター情報325の更新が完了したと判定した場合に、本フローチャートの処理を終了する。また、未処理のジョブ履歴323がある場合には、S702に戻って処理を続ける。
なお、コンピューター103が、図7(B)および図7(C)を用いて後述するマテリアルの使用量の算出処理を実行できる場合は、管理アプリケーション321は、S701で、算出されたマテリアルの使用量を収集してもよい。その場合は、S702~S711の処理は省略してもよい。
次に、図7(B)で示すマテリアルの使用量の算出処理について説明する。本処理は、S707で実行される処理である。
S721で、管理アプリケーション321は、目的の3Dオブジェクトを造形するのに使用したマテリアルの使用量を計算する。前述した通り、管理アプリケーション321は、制御命令を解読することでマテリアルの使用量を計算する。マテリアルを複数使用した場合は、マテリアル使用量は、使用されたマテリアルの種別ごとに計算される。
S722で、管理アプリケーション321は、サポート材を使用したかどうかを判断する。管理アプリケーション321は、例えば、設定画面500の505でサポート材を使用する設定にしたかどうかで、本ジョブでサポート材を使用したかどうかを判断できる。
S723で、管理アプリケーション321は、サポートに使用したマテリアルの使用量を計算する。サポートは、オブジェクトそのものを形成する部分ではないため、本実施例では、オブジェクト外使用量として計算することとする。
管理アプリケーション321は、図5の505で設定された設定情報を用いて、サポートに使用されたマテリアルがサポート専用マテリアルであるか否かを判断することができる。
サポート専用マテリアルが使用された場合は、管理アプリケーション321は、サポート用のプリントヘッドから出力されたサポート専用マテリアルの使用量を、通常のマテリアルの使用量の計算と同様に制御命令を解読することで計算できる。管理アプリケーション321は、サポート専用マテリアルの使用量をオブジェクト外使用量として計算する。
一方、オブジェクトの造形に使用されたマテリアルがサポートの造形にも使用された場合は、管理アプリケーション321は、制御命令304の中からサポートとして出力された部位を特定して、サポートとしてのマテリアルの使用量を算出する必要がある。例えば、サポートは細い柱状の造形部分が複数並ぶようにマテリアルが出力されるという特徴があるため、管理アプリケーション321は、Z軸方向に同一の命令群が所定回数以上出現する部分をサポートと判断してもよい。また、管理アプリケーション321は、造形制御ソフトウェア301が生成する制御命令に書かれている造形部分のうち、3Dモデルデータでは表されていない部分を、サポートと判断してもよい。
次に、図7(C)で示す中止ジョブに対するオブジェクト外使用量の算出処理について説明する。本処理は、S708で実行される処理である。
S731で、管理アプリケーション321は、制御命令304中のどの命令でジョブが中止されたか特定する。中止された箇所の命令を特定するには、例えば、造形結果317のログをもとに特定する方法が用いられる。あるいは、ジョブ実行時間からどの命令で中止されたかを特定する方法でもよい。ジョブ実行時間を用いる方法では、管理アプリケーション321は、まずジョブ開始時刻とジョブ中止時刻からジョブ実行時間を求め、次に、制御命令304を解読することでプリントヘッドの移動速度と移動距離を求めて、命令ごとの所要時間を計算する。そして、管理アプリケーション321は、命令ごとの所要時間の総和とジョブ実行時間とが等しくなる時点での命令が中止された箇所の命令であると特定できる。
S732では、管理アプリケーション321は、S731で特定された命令までに使用されたマテリアルの使用量を算出する。管理アプリケーション321は、このマテリアルの使用量をオブジェクト外使用量として計算する。
図8(A)および図8(C)は、管理アプリケーション321を実行することで実現される、使用量の集計処理の流れを示すフローチャートである。
図8(A)を用いて、管理アプリケーション321に対して予め設定されている所定の期間ごとに実行される、使用量カウンター情報325に基づいて、使用量履歴326を作成する処理を説明する。本処理は、例えば、所定の期間が1日間である場合には、毎日の午前0時0分になったタイミングで実行される。
S801~S803で、管理アプリケーション321は、使用量カウンター情報325が存在する対象デバイスごとに処理を行う。
S802では、使用量カウンター情報325で示す情報を、使用量履歴326として記録する。
S803では、全ての対象デバイスに対して処理が終了している場合、管理アプリケーション321は、本フローチャートの処理を終了する。
図8(B)は、使用量履歴326の例を示す図である。使用量履歴326は、図8(C)では、Device1における赤色のABS樹脂の使用量履歴326を示す。
年月日は、使用量カウンター情報325を記録した年月日を示す。使用量は、記録した年月日の時点での使用量カウンター情報325である。管理アプリケーション321は、各デバイスにおける使用されるマテリアルの種別ごとに使用量履歴326を作成する。
図8(C)は、所定の期間におけるマテリアルの使用量の集計処理の流れを示すフローチャートである。例えば、本処理は、管理アプリケーション321が提供する画面などを介して、ユーザーが集計期間などを指定して、レポート作成を指示した場合などに実行される。
S811~S815で、管理アプリケーション321は、集計対象のデバイスに集計処理を行う。
S812では、図8(A)のS802で記録された、デバイスごとの所定の期間中の使用量履歴326が取得される。管理アプリケーション321は、所定の期間の始めと終わりの使用量カウンター情報のみを取得してもよいし、また、所定の期間中の履歴を全て取得してもよい。
S813では、S812で取得した使用量履歴326をもとに、指定された集計期間でのマテリアルの使用量が集計される。この時、造形されたオブジェクトに使われたマテリアルの使用量と、ジョブの実行のために使われたオブジェクト外使用量とは区別されて集計される。なお、造形されたオブジェクトに使われたマテリアルの使用量と、いずれかのオブジェクト外使用量のみとが区別されて集計されてもよい。また、オブジェクトおよびサポートに使われたマテリアルの使用量と、中止ジョブおよび造形準備の少なくとも一方に対するマテリアル使用量とが区別されて集計されてもよい。
使用量の集計方法としては、例えば、集計期間の始めと終わりの使用量カウンター情報の差を計算するだけでもよい。しかしながら、指定した期間の始めや終わりの時点で使用量カウンター情報を取得できない、あるいは存在しない、などの理由で期間の始めと終わりで計算できない場合がある。このような場合には、別の集計方法を適用する必要があるが、本発明において集計方法は特に限定しない。
S814で、集計対象の全てのデバイスに対して処理が終了している場合、管理アプリケーション321は、S815に処理を進める。
S815で、管理アプリケーション321は、算出した値をもとにレポートのデータを作成する。管理アプリケーション321は、出力したデータを保存するだけでもよいし、データを使用してレポートを表示してもよい。
図9は、図8(C)の処理で作成されたレポートの表示画面の例を示す図である。900は、デバイスごとに集計したマテリアルの使用状況に関するレポートである。レポート900は、Webアプリケーションでもネイティブアプリケーションでも紙面に印刷したレポートでもよく、表示方法は特に限定しない。図8(C)のS811~S814の処理によって算出された、各デバイスにおけるマテリアルの種別ごとの使用量が、図9で示す例のようにレポートとして表示される。
901は、マテリアルの種別ごとの使用量の内訳の例を示す表である。マテリアルの種別902は、当該レポート対象のデバイスで使用したマテリアルの種別を示す項目である。
使用量903は、集計された期間での、マテリアルの使用量を長さ(m)で示す項目である。図8(C)のS811~S814の処理によって算出されたマテリアルの使用量が、使用量903に反映される。
太さ904は、フィラメントの形状を成すマテリアルの場合に太さ(mm)を示す項目である。使用量905は、集計された期間でのマテリアルの使用量(kg)を示す項目である。使用量905は、使用量903と太さ904とマテリアルの密度とを用いて算出される。例えば、レポート900はフィラメントの形状を成すマテリアルを使用するデバイスのレポートであるため、それぞれの種類のマテリアルについて、長さで示される使用量903と、太さ904と、マテリアルの密度とを用いて、使用量(kg)を算出している。また、長さで示される使用量903と、マテリアルの断面積とを用いて、使用量(m^3)を算出してもよい。
ジョブ回数906は、該当する種別のマテリアルを使用して実行されたジョブの回数を示す項目である。中止ジョブ907は、ジョブを中止した際のオブジェクト外使用量(m)を示す項目である。サポート908は、サポートに使用されたマテリアルの使用量(m)を示す項目である。造形準備909は、造形準備で使用したマテリアルの使用量(m)を示す項目である。一回の造形準備に使用されるマテリアルの使用量として、予め設定された値が用いられてもよい。
910は、当該デバイスのマテリアルの種別ごとの使用量を示すグラフである。911は、当該デバイスで使用したマテリアルの使用率を示すグラフである。
912は、当該デバイスにおけるジョブごとの使用量の内訳の例である。使用量履歴326に含まれる、3Dプリンターで実行されたジョブごとのマテリアルの使用量の履歴を使って、912の表が作成される。
ジョブ名913は、ジョブ名を示す項目である。総使用量914は、ジョブごとにマテリアルの総使用量(m)を示す項目である。中止ジョブ915は、中止したジョブにおいて使用したマテリアルのオブジェクト外使用量(m)を示す項目である。サポート916は、モデルマテリアルサポート材、サポート専用マテリアルのオブジェクト外使用量(m)を示す項目である。造形準備917は、造形準備で使用するマテリアルの使用量(m)を示す項目である。オブジェクト外割合918は、総使用量に対するオブジェクト外使用量の占める割合(%)を示す項目である。実行日時919は、ジョブが実行された日時(年月日時分)を示す項目である。実行結果920は、ジョブの実行結果を示す項目である。例えば、ジョブの実行結果が成功である場合には“OK”、失敗である場合には“NG”などと表示される。なお、912の表の項目に、ジョブの実行の際の造形に使われた、1以上のマテリアルの種別があってもよい。
なお、レポート900の表やグラフは、マテリアルの使用量を可視化するためのレポートの一例であり、表示する内容はレポート900で示した項目のみでない。例えば、901に、中止ジョブの回数や、マテリアル交換の回数などの項目が追加されてもよい。また、オブジェクトに使われた使用量またはオブジェクト外使用量のいずれかのみがレポートで示されてもよい。また、オブジェクト外使用量として、中止ジョブ、サポートおよび造形準備のうちいずれかのみがレポートで示されてもよい。また、ジョブ別使用量内訳912では、各ジョブで使用された1以上のマテリアルの種別ごとの使用量を示す集計結果を表示することも可能である。
本実施例によって、3Dプリンターなどの制御装置でのマテリアルの使用量をマテリアルの種別ごとに把握・管理することができる。
(実施例2)
実施例1では、従来の2Dプリンターと異なり、使用量カウンター情報やジョブ履歴を取得することのできない3Dプリンターについて説明した。制御命令304などを含む情報をジョブ履歴323として蓄積し活用することで、マテリアルの種別ごとの使用量カウンター情報325を作成し、オブジェクト外使用量も考慮したマテリアルの使用量に関するレポートを表示するための構成を説明した。
本実施例では、従来の2Dプリンターと同様に、使用量カウンター情報やジョブ履歴を直接デバイスから取得することのできる3Dプリンターに関しては、さらに手順が簡略化される。具体的には、図7のフローチャートに示す手順の一部が省略される。ただし、ジョブを中止した場合やオブジェクトおよびサポートで同じマテリアルを使用した場合、オブジェクト外使用量の算出は制御命令を解読して計算する必要がある。この課題は、実施例1と同様の手順を踏むことで解決され得る。
なお、ジョブ実行に使われたマテリアルの使用量の総量が分かる場合であって、オブジェクトに使われたマテリアルの使用量、およびオブジェクト外使用量のいずれか一方を制御命令から算出した場合に、他方を引き算で求めることも集計処理に含めるものとする。
したがって、実施例1では主に使用量カウンター情報やジョブ履歴を取得することのできない3Dプリンターに関して説明したが、使用量カウンター情報やジョブ履歴を取得できる3Dプリンターについても、または混在環境であっても、本発明は適用され得る。
(実施例3)
実施例1、2では使用量カウンター情報325を作成し、さらに使用量履歴326を作成することで、集計処理を行っていた。しかし、使用量カウンター情報325と使用量履歴326を作成せずとも、レポート作成の度に全ジョブ履歴323に対して集計処理を行えばレポートを作成できる。
したがって、図3で示すコンピューター104について、管理アプリケーション321が使用量カウンター情報325と使用量履歴326を持たない構成であっても本発明は適用され得る。
(他の実施例)
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施形態の機能を実現する1つ以上のソフトウェア(プログラム)を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の1つである。また、そのプログラムは、ネットワークまたは各種記憶媒体を介してシステムあるいは装置に供給され、そのシステムあるいは装置の1つ以上のコンピュータ(CPUやMPU等)によりそのプログラムが読み出され、実行される。つまり、本発明の1つとして、さらにそのプログラム自体、あるいは当該プログラムを格納したコンピューターにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路(例えば、ASIC)によっても、本発明は実現可能である。