試作ネストソフト概要

仕事でネスティングソフトに触れて、面白そうだったので作ってみてます。
世にでているネスティングソフトはやはりできあいのものなので配置部品を条件に合わせて固めたい等並べ方に自由度が低いかなと。
2024年ぐらいから勉強のため作ってみてます。
目的としては、この経験からネスティング関連でちょっとこったことができるフリーランスとして仕事を受けられればいいなと思っています。
そこを目指すにはある程度機能を持ったソフトを開発しておいた方がお客さんの意見を聞きやすいと思い、そこを目指してソフト作ってます。

開発言語:C++(VisualStadio2022)

ネスティングとは

(※上記写真はAIが作成したイメージです。)

ネスティングとは、部品を材料から切断してつくる際、材料となる板材や母材の上に複数の部品形状を効率よく配置し材料の無駄を最小限に抑えるレイアウトを自動生成する技術です。

レーザー加工、プラズマ切断、ガス切断、ルーター加工などの分野で広く利用されており、
歩留まりの向上と加工効率の改善に直結する重要な工程です。

ネスティングの主な目的は次の3つです。

  • 材料使用量の削減(コスト低減)
  • 廃材・スクラップの最小化
  • 加工時間の短縮

ソフトの入出力

入力:
・配置指示ファイル(テキスト形式。部品間の間隔等をソフトに指示する。)
 (素材形状は矩形のみ対応なので配置指示ファイルで素材縦横指定する。)
・部品形状ファイル(DXFファイル形式)

出力:
・レイアウトファイル(テキストファイル)
(使用する素材と配置の部品の部品名+回転角+配置位置が記入されている。)
・残材形状ファイル(今後対応予定。使用した素材の未配置領域を図形としてDXF出力)

ソフトの制限

入力部品形状:
・弧と線分による図形のみ可(DXFで作成・入力)
・孔がある部品入力可。
・図形にアプローチ等の線を付加することは非対応。(今後対応したい。)

入力素材形状:
・矩形のみ対応。(配置指示ファイルに)
・矩形以外の素材入力非対応(今後対応したい。)

機能一覧

機能名
部品間隔部品間の最低間隔設定できる。
(未)拡張部品間隔部品間隔に追加でX方向、Y方向に間隔設定できる。
(未)配置方向部品を素材のどの方向につめるかを設定できる。
設定値は上下左右から設定する。
(未)固定ネスト一部部品を配置したレイアウトを入力し、残りの空間に部品を配置する。
(未)部品種近接ネスト各部品種をできるだけ近く配置する。
どのくらい近くに配置するかは設定値を設ける。
近くに配置することで部品仕分けが楽になる。
詳細仕様については検討中。
(未)グループネスト部品種をグループに分け、そのグループ毎に固めて配置する。
(未)セットネスティング部品毎に個数を決めてセットをつくり、そのセットの個数が
最大になるように配置する。
セット内部品に固めて配置する制約はない。
(未)部品配置最低幅全ての部品を可能な限り指定方向(X方向、Y方向)が最低幅以上となるように回転角を制限して配置する。
同回転させても最低幅以下の部品は最低幅を守らず配置される。
スラット(支持バー)の間に部品がぬけおちないようするための機能。
(未)残材出力レイアウトで未配置に終わった領域を切り取り、その形状を出力する。
出力されたデータは入力ファイルで素材として使用できる。
DXFでの出力とオリジナル仕様のテキストファイルで出力できるようにする。
(未)部品優先配置各部品種に優先順位をつけ、その優先順位通りに指定方向につめて配置を行う。
(未)部品回転禁止各部品種でどのような回転角で配置するのを禁止するかを設定する。
自由回転、回転禁止、90度毎回転以外禁止を選べる。
90度毎回転以外禁止を選択した場合は0度禁止、90度禁止、180度禁止、270度禁止を選択できる。
(未)部品反転禁止各部品種の反転を禁止する。

※1 (未)は未実装
※2 まずは他ネストソフトと同等の歩留まり、計算速度の配置処理ができることを目指し、
   でき次第各機能の作成を行う。    

配置指示ファイル

※テキストファイルをサクラエディタで表示

レイアウトファイル

※テキストファイルをサクラエディタで表示

出力レイアウト例

※現在ソフトはシングルスレッドで配置を実施しております。
これは、配置処理開発でスレッド間の不具合が起こると修正に追加で時間がかかってしまうからです。今後マルチスレッド化していきます。

〇データ1

素材寸法:(横幅)2438mm (縦幅) 1219mm
部品種数:11種類
総部品数:82個
計算時間:14分4秒
歩留:75.72%