← EFFIBLUE ポータルに戻る
ユーザーガイド — 非専門家向け

マルチパーツ ベクター生成ツール

安全マージンと切断代(カーフ)を考慮しながら、複数種類の矩形パーツを Ginestium™ ディスク上に自動配置し、製造用ファイル(SVG、DXF、Gerber)を出力します。シリアル番号と方向マーカーを図形内に直接刻印することもできます。このガイドでは、配置アルゴリズムの原理・前提条件・結果の読み方を、開発者でなくても理解できるように説明します。

ツール:マルチパーツ ベクター生成ツール 対象バージョン:13.3.1 ディスク直径:1 – 300 mm
00

要約

指定サイズの Ginestium™ ディスクがあり、そこに切り出したい矩形パーツが1種類以上あります(最大200種類)。各パーツには W × H の寸法と希望数量が設定されています。このツールは、ディスク縁の安全マージンと、隣接パーツ間の切断用の間隔(カーフ)を確保しながら、できるだけ多くのパーツを配置できる位置を計算します。

結果は SVG、DXF、Gerber として出力でき、そのまま製造に使えます。オプションで、シリアル番号と方向マーカーをマージン内に刻印することも可能で、パーツ本体に重なることはありません。

01

何のためのツールか

物理現象をシミュレートするポータル内の熱系ツールとは異なり、このツールが解くのは純粋に幾何学的な問題です。すなわち「与えられた半径の円の中に、重なりもはみ出しもなく、W × H の矩形をいくつ収められるか」、そして「それは正確にどこか」——切断ファイルとしてそのまま使える形で答えを出します。パーツの設計(例えば Generateur de meandres で描いたつづら折り抵抗体や、単純な形状)の後に来て、実際の切断加工の前に来る工程です。「このサイズのパーツが N 個必要」という要求を、そのまま刻印できるディスクのレイアウトに変換します。

配置そのもの——各パーツをどこに置くかを決める探索処理——と、最終ファイルの生成は、サーバー側で計算・保護されています。Numba による JIT(実行時)コンパイルされたコアにより、多数の候補位置を総当たりで探索するにもかかわらず(§09参照)、数百個規模のパーツの配置を数十〜数百ミリ秒で解決します。

02

仕組み

大きいタイプから小さいタイプへ積み上げる

複数のパーツタイプが指定された場合、ツールは入力した順番どおりには配置しません。まず面積が大きい順に並べ替えたうえで、大きいタイプから小さいタイプへ1つずつ配置していきます。すでに置かれたパーツは、以降のタイプにとって障害物になります。

タイプ1(大) + タイプ2(中) + タイプ3(小)
模式図(縮尺は正確ではありません)。大きいパーツほど配置の制約が厳しいため、まだ何もない状態のディスクに最初に置くことで、最も自由度を確保できます。小さいパーツは隙間に滑り込ませやすいため、その後に残りを埋めます。

規則的なグリッドをずらして探索する

あるパーツタイプ(W × H)について、ツールはランダムな位置を試すのではなく、(W + kerf) × (H + kerf) を周期とする規則的なグリッドを敷きます——これは同じタイプの隣接パーツ間にちょうど kerf 分の切断代を確保する間隔です。そのグリッドをずらし(オフセット)、使用可能な円内かつ既配置パーツの外側に、一度に最も多くのセルが収まる位置を探します。まず粗い探索が候補オフセットの格子を走査し、すでに他のタイプが配置済みの場合、または「進化的」モードが有効な場合には、見つかった最良のオフセット周辺をさらに細かく絞り込む2段階目の探索が行われます。

同数のパーツを収められるオフセットが複数ある場合、ツールは図形が最も中心に寄るものを選びます——これは単なるタイブレーク基準であり、それ自体を狙った美観ではありません。

全体回転はレイアウト全体を一括で回す

回転(0°、45°、90°、または任意角度)は配置グリッド全体——つまり全タイプのすべてのパーツ——を一度に回転させます。1つのタイプだけに個別に適用されることはありません。あるタイプだけ向きを変えたい場合は、W と H を入れ替えた別のタイプとして登録する必要があります。

03

モデルの前提条件

矩形パーツは自動的には回転(反転)しない

アルゴリズムは、隙間をよりよく埋めるために同一パーツの W×H と H×W の向きを自動的に比較することはありません。各タイプは入力された向きを保持し、ディスク全体に適用される全体回転のみが影響します。同じパーツの両方の向きを検討したい場合は、寸法を入れ替えた2つのタイプを作成してください。

「進化的」という名前でも、実体は遺伝的アルゴリズムではなく規則的なグリッド探索

「進化的」モードは、同じグリッド探索を2段階で精緻化するだけであり、選択・突然変異・交叉によって解の集団を進化させるわけではありません。詳細と補足は補足事項(§10)を参照してください。

マージンは死空間ではなく刻印用のゾーンでもある

ディスク縁と使用可能半径(直径/2 − マージン)の間の環状部分は、パーツの配置除外ゾーンであると同時に、シリアル番号と方向マーカーを刻印するための場所でもあります。したがって、単に無駄になっている空間ではありません。

同一タイプ内の間隔はグリッド周期によって保証される

同じタイプの隣接する2つのパーツについて、中心間距離(W + kerf)はちょうど kerf 分の切断代を確保します。異なるタイプのパーツ同士が隣接する場合、ツールは半カーフ分の余裕をもって重なりがないことのみを確認します——常にフルの kerf が保証されるわけではありません。詳細は §09 のステップ4を参照してください。

直径とマージンは計算実行時点で固定される

これらの値は「最適化して生成」を実行した時点で一度だけ読み込まれます。その後に値を変更しても、再度生成を実行するまで、すでに計算済みのレイアウトには反映されません。

「無制限」数量も内部的には上限がある

数量 ∞ は本当に無制限というわけではありません。エンジン内部では、そのタイプの最大数を 9999 個として扱い、全タイプ合計の配置数自体にも上限があります(§04参照)。

04

制限事項

05

使い方(手順)

  1. サポートディスクを設定する — 直径、縁のクリアランス(安全マージン)、切断幅(カーフ)。
  2. 全体回転を選ぶ — 0°、45°、90°、またはカスタム角度。図形全体に適用されます。
  3. パーツタイプを登録する — 正方形または長方形、W × H 寸法、数量(∞ 無制限・0 パーツなし・N 正確な数)。
  4. 必要に応じて S/N 刻印を設定する — 13文字のシリアル番号、文字の高さ、円周上に配置するコピー数、最初のコピーの角度オフセット。
  5. 必要に応じて方向マーカーを設定する — あらかじめ用意された4つの角度位置のいずれかに ▲ 三角形を配置。
  6. アルゴリズムモードと精度を選ぶ — Grid(高速)または進化的(より精緻な探索)、反復回数。
  7. 「最適化して生成」を実行する — 配置計算はサーバー側で実行され、完了するとプレビューと統計が更新されます。
  8. 結果を確認し、エクスポートする — SVG、DXF、または Gerber(選択したレイヤー、統合または zip での個別出力)。必要に応じてプロジェクトを JSON として保存できます。
06

結果の読み方

配置パーツ数
全タイプ合計で、実際にディスク上に配置されたパーツの総数。
充填率
パーツの合計面積を、使用可能なディスク面積(半径 直径/2 − マージン)で割った値、単位は%。
パーツ種類数
登録されたタイプの数——配置されたパーツの個数ではありません。
被覆面積
配置された全パーツの面積(W × H)の合計、単位は mm²。
配置数 / 要求数
実際に配置された数と、要求された総数量との比較(∞ は「配置できたものすべて」としてこの合計に数えられます)。
タイプ別ラベル
パーツ一覧内で表示される、そのタイプについての配置数/要求数量(色分け表示)。
07

シリアル番号刻印と方向マーカー

円に沿って配置されるシリアル番号

シリアル番号(13文字、通常は Generateur de numeros de serie によって生成され「G」で始まります)は、安全マージン内の円弧に沿って刻印されます。縁からの距離は、選択した文字の高さによって決まります。1、2、3、または4回、ディスク周囲に均等に繰り返すことができ、開始角度のオフセットも調整可能です——ワークベンチ上でパーツがどの向きに置かれても番号が読み取れるように配慮されています。

マーカー三角形

方向マーカーは、同じくマージン内に配置される小さな塗りつぶし三角形で、あらかじめ用意された4つの向き(0°、45°、180°、12.5°)のいずれかを選べます。この最後の値(12.5°)はあえて切りの良くない数値にしてあり、完成品の上で単独で見つかった場合に、製造上のマーカーであることを単なる装飾要素と明確に区別できるようにしています。この三角形には計測上の機能はなく、組み立て時にパーツの向きを正しく合わせるための視覚的な目印です。

G01QZ25100042 マーカー 0° 使用可能半径
シリアル番号(紫、円弧上)とマーカー三角形(黄、上部)は同じマージンの環を共有しています。どちらも配置の境界となる使用可能半径の外側にとどまるため、パーツに重なることなく追加されます。

プレビューと製造用ファイルの違い

画面上の SVG プレビューでは、見やすさのためにシステムフォントでシリアル番号を描画します。一方 Gerber ファイルでは、各文字を「ストロークフォント」——レーザーや加工ヘッドが塗りつぶしなしでそのままなぞれる線分の集合——で刻印します。両者は同じテキストを同じ位置に描きますが、文字の正確な形状は描画方式によって若干異なります。詳細は §09 のステップ8を参照してください。

08

エクスポートと共有

SVG(完全ベクター) — 画面に表示されているとおりの図形(色やラベルを含む)。ベクター編集ソフトでの表示や修正に使えます。

DXF(AutoCAD) — ディスクと各パーツの輪郭(タイプごとに TYPE_n という名前のレイヤー)。カーフ・マージン・S/N・マーカーは含まれない、CAD 向けの純粋な幾何学プランです。

GBR(Gerber、パラメータ設定可能) — 独立して選択できる最大5つのレイヤー:ディスク+中心、パーツ輪郭、切断経路、S/N 刻印、方向マーカー。1つのファイルに統合するか、zip アーカイブとしてレイヤーごとに個別出力できます。レイヤーごとに異なる深さのレーザーパスを使う場合に便利です。

プロジェクト(.efb.json) — 配置結果ではなく、ツールの全設定(ディスク、パーツ、S/N、マーカー、アルゴリズム)を保存します。ファイル名はシリアル番号にちなんで付けられ、そのまま再読み込みできます。

09

計算式の詳細

このセクションはガイドの技術リファレンスであり、サーバー側のコア(Numba JIT コンパイル済み)で実際に実行される計算を説明します。ツールを使うために必ずしも必要な内容ではありません。

記号

D , r
ディスク直径と半径 r = D/2
e_r
使用可能半径 = r − マージン
W , H
パーツタイプの幅・高さ;hw, hh = W/2, H/2
kerf
切断幅。隣接パーツ間に加算される
ox , oy
あるタイプの配置グリッドのオフセット
θ
全体回転角

ステップ1 — タイプを面積で並べ替える

(1)面積 = W · H 配置計算を行う前に、面積の大きい順に並べ替える
なぜこの式なのか

これは矩形ビンパッキングの古典的な「largest first」ヒューリスティックです。大きいパーツほど配置の制約が厳しいため、まだ何もない状態のディスクに最初に置くことで最も自由度を確保できます。小さいパーツは隙間に滑り込ませやすいため、その後に残りを埋めます(§02)。

ステップ2 — あるタイプの候補グリッド

(2)step_x = W + kerf step_y = H + kerf n_x = ceil(r / step_x) + 1 n_y = ceil(r / step_y) + 1 i ∈ [−n_x, n_x], j ∈ [−n_y, n_y] のそれぞれについて: (lx, ly) = (i·step_x + ox, j·step_y + oy) 回転前のローカル座標系 (gx, gy) = (lx, ly) を θ だけ回転 ディスクのグローバル座標系
なぜこの式なのか

グリッドはディスクではなくパーツに合わせたローカル座標系でまず構築され、最後に一括で θ だけ回転されます。これにより、傾いたグリッドを都度計算し直すのではなく、どの全体回転角を選んでもパーツ同士が互いに直交した状態を保てます。n_x と n_y に付く +1 は探索範囲に余裕を1行加えるもので、使用可能半径のちょうど縁で探索が途切れないようにするためです。

ステップ3 — 使用可能円内かどうかの判定

(3)矩形の4隅 (±hw, ±hh) それぞれについて、回転・平行移動して (gx, gy) を求め: 4隅すべてが中心からの距離 ≤ e_r であれば有効
なぜ中心だけでなく4隅すべてを判定するのか

回転した矩形は、中心が使用可能円の内側にあっても、角が円の外側にはみ出すことがあります。4隅すべてを判定するのは、パーツがわずかにでもはみ出すことを確実に防ぐための保守的な方法です。その代償として、中心だけを見れば有効に見えるいくつかの位置が除外されます。

ステップ4 — 既配置パーツとの重なり判定

(4)θ だけ回転した座標系で、既に配置済みのパーツ p について: dx, dy = 中心間距離を (cos θ, sin θ) 方向に投影した値 重なりあり もし |dx| < hw + hw_p + kerf/2 かつ |dy| < hh + hh_p + kerf/2
なぜここでは kerf/2 であってフルの kerf ではないのか

同一タイプ内では、ステップ2のグリッド周期(step = W + kerf)がすでに隣接パーツ間のフルの kerf を保証しているため、この判定でそれ以上確認する必要はありません。この判定(4)が働くのは、同じグリッドを共有しない異なるタイプ同士を直接比較する場合だけです。そこで保証されるのは最小半カーフの間隔であり、常にフルの kerf ではありません。サイズが大きく異なるタイプ同士を隣接させ、切断代が0.1mm単位で重要になる場合には知っておくべき点です。

ステップ5 — 充填を最大化するオフセットの選択

(5)フェーズ1(粗い探索)、各軸 p1 回の試行: Grid : p1 = max(10, min(prec, 40)) 進化的 : p1 = max(8, prec / 2) フェーズ2(フェーズ1で見つかった最良オフセット周辺の精緻化): 他のタイプが既に配置済み、または進化的モードの場合に実行 Grid : p2 = max(15, prec) 進化的 : p2 = floor(prec × 1.5) 最良オフセット = 有効なセルを最も多く収められるもの 同数の場合は |ox| + |oy| が最小のもの(最も中心寄り)を採用
なぜ2段階の探索なのか

粗い探索は、あらゆる場所で全解像度を試すことなく適切なオフセット領域を特定します。精緻な探索は、その後、見つかった最良候補の周辺だけを局所的に絞り込みます。これは意図的な計算コストの節約であり、あり得るすべてのオフセットを網羅する探索ではありません——Grid モードと進化的モードの違いについては補足事項(§10)を参照してください。

ステップ6 — 最終的な並べ替えと要求数量への切り詰め

(6)候補を中心からの距離 hypot(cx, cy) の昇順に並べ替え 先頭から N 個に切り詰める(N = 要求数量、∞ の場合は 9999)
なぜ中心からの距離で並べ替えるのか

同じ充填数であれば、中心に近い位置を優先することで、ディスクの縁により制約される周辺の位置を、それをより必要とする可能性が統計的に高い後続のタイプのために残しておけます。

ステップ7 — 充填率

(7)充填率 = ( 配置されたパーツの W·H の合計 ) / ( π · e_r² )

ステップ8 — シリアル番号とマーカーの極座標

(8)midR_マーカー = e_r − textH / 2 三角形の半径 baseR_S/N = e_r − textH 刻印テキストの基準半径 コピー i の角度 = オフセット + (i / copies) × 360°, i = 0 … copies−1
なぜこの2つの半径が異なるのか

マーカー三角形はその自身の半径(midR)を中心に配置される一方、シリアル番号のテキストは基準半径(baseR)に固定され、そこから textH の高さ分だけ外側に向かって描画されます。この結果、両者は隣り合いながらも異なる環に配置され、文字の高さをどう選んでも重なることはありません。各 S/N 文字は、Gerber 刻印専用のベクターフォント「ストロークフォント」(塗りつぶしのない純粋な線分)で円弧に沿って描画されます——§07参照。

10

補足事項 — 「進化的」モードは遺伝的アルゴリズムではない

補足事項

名前から誤解されがちですが、「進化的」モードは、真の進化的・遺伝的アルゴリズムのように、選択・突然変異・交叉によって解の集団を進化させるわけではありません。実体は「Grid」モードと同じグリッド探索アルゴリズム(§09、ステップ2〜5)であり、測定可能な違いは2点だけです。

両モードで実際に異なる点

挙動Grid進化的
最初に配置されるタイプに対する精緻フェーズ(ステップ5の2)実行されない常に実行される
2番目以降のタイプに対する精緻フェーズ実行される常に実行される
探索グリッドサイズ p1(粗い段階)max(10, min(prec, 40))max(8, prec / 2)
探索グリッドサイズ p2(精緻な段階)max(15, prec)floor(prec × 1.5)

実際のところ、パーツタイプが1種類だけのディスクにおける唯一の本質的な違いは、進化的モードでは精緻フェーズが常に実行されることです。Grid モードでは、避けるべき障害物がまだ存在しないため、この単一のパーツは精緻化を正当化する理由がなく、粗い探索の恩恵しか受けません。2番目のパーツタイプが加わった時点で、両モードとも両方のフェーズを実行するようになり、以降は探索グリッドのサイズだけが違い続けます。

知っておくべきトレードオフ

「進化的」モードは常に精緻化を行うため、計算時間はより多くかかります。その効果が意味を持つのは、空きスペースが少ない、パーツタイプが1種類しかない、パーツサイズに対して kerf が大きいといった、余裕の少ない構成に限られます。充填容量に対してまだ余裕のあるディスクでは、両モードは通常同じ結果に収束します。「進化的」という名前から、より賢い、あるいはより網羅的な探索を連想すべきではなく、局所的により粘り強い探索だという程度に理解してください。

11

単位の小辞典

mm ディスク直径、マージン、カーフ、パーツの W × H 寸法 mm² 配置されたパーツの被覆面積 % 充填率 ° 全体回転、マーカーの角度位置、S/N の角度オフセット オフセット探索の精度(反復回数) 文字 シリアル番号の文字数(最大13文字)