コンテンツへスキップ
CADCAMFUN
ドキュメント

ドキュメント

ネイティブ製造プログラムを生成する

実際の部品をキャプチャし、その製造ジョブを評価し、投稿された NC 証拠を検査し、再確認できるドキュメントを保存します。

英語から自動翻訳されています。 英語の原文を見る

どの結果を要求しているのかを把握する

ネイティブ マニュファクチャリングは、言語モデルに依存しない決定論的な CAD/CAM 計算です。 POST /api/toolpaths/manufacture 明示的な CAD スナップショットを受け取り、製造リソースを準備し、注文された操作を計画または受け入れ、切削データを計算し、ツールパスを生成し、1 つの NC プログラムをポストし、そのテキストを個別に再生します。回答には、そのリリースレベルを裏付ける証拠が含まれています。

このエンドポイントは、図面の作成、ツールパスの保存、またはエディターの更新を行いません。成功した応答は、意図的に検査して永続化する必要がある値です。とは異なります /api/toolpaths/generate、フライス盤/旋盤/プリンター出力のアプリケーション ジェネレーター設定を調整します。 /api/toolpaths/verify、明示的にモデル化されたストックおよび工具に対して提供された NC/プログラムを再生します。

を使用します。 加工エンドポイント リクエスト/レスポンススキーマの場合、 CAMリファレンス コア表現の場合、および 保存されたプログラムリファレンス 永続的な動作の場合。次のジョブは、既存のプロジェクトを編集せずに再現して検査できるように、意図的に十分に小さいジョブです。

完全な検証済みスナップショットを送信する

この JSON を名前を付けて保存します native-job.json。これは、(40、40、10) を中心とし、各 X/Y 側が 20 mm、上が 20 mm で囲まれた、5 × 2 × 1 mm の POM ブランクを表します。ペイロードは実際のコードによってデコードされました CamKernelRequest スキーマとカーネルによって評価されます。そのベースライン結果には 3 つの計画された操作が含まれています。クライアントで予想されるリリースをハードコーディングするのではなく、返されたクレームを常に検査してください。

native-job.json
{
  "schemaVersion": 1,
  "id": "blank-job",
  "name": "POM blank",
  "material": "POM",
  "elements": [{
    "id": "blank",
    "type": "cube",
    "x": 20, "y": 20, "z": 5,
    "width": 40, "height": 40, "depth": 10
  }],
  "stock": { "x": 20, "y": 20, "width": 44, "height": 44, "depth": 11 },
  "resolution": 0.5
}
プロジェクトリソースを保存せずに評価する
curl --fail-with-body \
  -H "Authorization: Bearer $CADCAMFUN_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @native-job.json \
  "$CADCAMFUN_URL/api/toolpaths/manufacture" > native-result.json

シェル ファイルは、検査のために正確な応答をキャプチャします。同じキャプチャされたリクエストを提供すると、決定的なネイティブ出力が生成されます。新しい部品の位置、カッター、操作、品質管理の使用は別の仕事です。リクエスト ID ラベルは追跡に役立ちますが、アーティファクトのダイジェストは実際のソースと NC コンテンツをバインドします。

在庫と作業座標を解決する

スナップショット ストックでは、中心 X/Y と全幅/高さ/奥行きが使用されます。スナップショット アダプターは、まず選択したパーツのジオメトリを構築し、その最も低い Z を見つけて、そこにストックの底部を配置します。その上部は、その底部に宣言された深さを加えたものです。この例では、部品は Z0 から Z10 まで、素材は Z0 から Z11 まで伸びています。 X/Y の株式範囲は -2 から 42 です。

アダプターは、それらの境界に対して明示的なディメンションを使用します。株式レコードの表示許容量を再度追加することはなく、株式 topZ フィールドは、このネイティブ スナップショット アダプターの最下位部分のアンカーリングを置き換えません。エディターのメタデータと、製造ジョブを構築するために実際に使用されるフィールドを区別してください。

作業元のデフォルトは stock-center: 上部 Z のストック中心 X/Y。 stock-corner 同じ上部の最小 X/Y を選択します。入力操作ジオメトリは CAD ワールドのミリメートル単位で表され、結果として得られるプログラムの移動/NC は作業座標系で表されます。従来の切削はワーク Z0 より下になります。 workOffset はオプションです。プログラムのデフォルトは G54 です。

供給されたストックがない場合、下位レベルのジョブの準備では、各 X/Y 側に 2 mm、上に 1 mm の余分な部品境界が囲まれます。明示的なストック以外の部分は拒否されます。要求された切削深さを増やしても、互換性のないストックに部品が含まれることはありません。

素材、機械、カッターの選択

マテリアルは、サポートされている ID、名前、エイリアスを含む、カーネルのマテリアル ライブラリに対して解決される検索文字列です。不明な資料は、入力された準備問題を返します。 HTTP スナップショットのオプションのマシンは、登録されたプリセット ID: vmc-standard、haas-vf2、hsc-mill、desktop-mill、または cnc-router です。省略すると vmc-standard が使用されます。プリセットは、個々のインストールの認定モデルではなく、一般的なマシン クラスと制限を説明します。

ツールを省略すると、デフォルトのカッタークリブが使用されます。ツールを提供するにはベビーベッドの代わりとなり、1~200 個のカッター レコードが必要です。カッターは、種類、直径、刃数、材質/コーティング、刃長、シャンク径、突き出しを識別します。オプションのホルダー寸法、最大 RPM、ポケット番号、および種類固有の形状により、生成とクリアランスが調整されます。フルートは 1 から 24 までの整数でなければなりません。明示的なポケット番号は 1 ~ 999 です。

操作ツール ID は、提供されたライブラリ内のカッターに名前を付ける必要があります。カッター ID の重複、無効な寸法、および到達できない戦略とツールの組み合わせにより、推測された代替品ではなく問題が発生します。スキーマは、フラット、ボール、ブル、面取り、スポット、ドリル、フェイスミル、スレッドミル、および彫刻の種類を受け入れます。

パブリック スナップショット マシン文字列はカスタム マシン レコードを受け入れません。下位レベルを呼び出すコード統合 ManufacturingJob API は、マシンの制限、移動量、およびテーブルのジオメトリを明示的に提供できます。 HTTP スキーマが事前設定された文字列を予期している場所には、そのレコードを送信しないでください。

自動計画または加工順序の指定

オペレーションが存在しない場合、プランナはパーツからオペレーションを導き出します。明示的な操作配列は信頼できる加工順序であり、サイレントに並べ替えられる提案のリストではありません。各オペレーションには一意の ID とツール参照があります。サポートされている戦略レコードは、フェース、アダプティブ、ポケット、プロファイル、ボア、ドリル、ねじ山、彫刻、面取り、および表面加工をカバーしており、それぞれに適したジオメトリを備えています。

プロファイルはループ、内側/外側、ワールド座標の上下を使用します。ポケット/アダプティブ カットは、オプションのアイランド リングを備えた閉じた境界を使用します。穴あけには、ポイントと上部/下部を使用します。スレッドミルのレコードには、中心、直径、ピッチ、内部フラグ、トップ、および長さが含まれます。表面記録では、荒削り、平行、水線、または急峻な動作を選択します。残りの参照では、適切な以前の作品を特定する必要があります。

操作ごとのプロセスのオーバーライドには、RPM、送り、プランジ送り、ステップダウン、ステップオーバー、冷却剤、ラジアル係合などが含まれます。欠損値は、材料/カッター/機械の切断データから発生します。ステップオーバーは、1 から 100 までのパーセンテージです。ステップダウンとフィードはプラスです。アーティファクトは、計算されたパラメータとは別にオーバーライドされたフィールドを記録するため、レビュー担当者はプロセスの選択がどこから来たのかを確認できます。

ネイティブ カーネルは、操作間で暫定的なストックを保持し、結合された IR を 1 回ポストします。対照的に、 combineCamOperations 保存された汎用操作セクションの場合は、すでに生成された NC テキストが結合されます。これらのセクションは統合コントローラー プログラムに変換されません。統合された生成と再生が必要な場合は、ネイティブ アーティファクトを使用します。

品質管理を設定し、そのコストを理解する

入力意味と限界
finishAllowance0–5 mm の粗取り代。省略した場合はマテリアルのデフォルトが使用されます。
scallop正、最大 1 mm;ネイティブ仕上げのデフォルトは 0.01 mm。
tolerance正のパス許容値。ネイティブのデフォルト 0.01 mm。
resolution正のリプレイセルサイズ。ストック証拠の空間解像度を制御します。
deburr正、最大 5 mm;サポートされている上端の面取り作業を追加するようにプランナーに依頼します。
subprogramsFanuc/Haas M98 サブプログラムなど、方言がサポートしている場合のオプションの翻訳リピート出力。

リクエストは、1~2、000 個の CAD 要素、および最大で 500 個の明示的な操作をサポートします。許容差と再生セルが小さいと計算作業が増加し、サポートされていないジオメトリは自動的に証明されません。報告された解像度を結果とともに保存します。ビューポート メッシュとダウンサンプリングされたストック プレビューは表示出力であり、独立したより詳細なシミュレーションではありません。

ネイティブ ポスティングでは、カッター割り当てから工具番号を設定し、工具交換前にリトラクトを要求します。投稿は固定小数点で座標をフォーマットします。実際の NC と選択した方言を検査します。コントローラー名を指定しても、インストール後の動作を検証する必要がなくなるわけではありません。

ステータス、申し立て、リリースの解釈

結果は結合です: status: "failed" 問題がある、または status: "ok" アーティファクト付き。 OK のアーティファクトはまだ残っている可能性があります release: "blocked"。両方の層を読み取ります。 HTTP ステータスまたは外部ステータスをチェックするだけでは不十分です。

アーティファクトは、順序付けられた操作結果、切断データ、プログラム IR、使用済みカッター、NC、在庫統計、サイクル時間推定、問題点、および ID ダイジェストを保持します。クレームは合格、失敗、サポートされていない、または未解決のステータスになっています。これらには、切削データ、機械の制限、操作の完了、急速/ホルダークリアランス、ガウジング、材料除去、独立した NC 再生、機械の移動、および機械/テーブルのクリアランスが含まれます。

ハード エラーの問題または空の NC ブロックの解放。ハード障害がない場合、リリース ルールが満たされない限り、不完全な証拠によってプレビューが生成されます。現在のルールでは、検証済みプログラムを返しながら、サポートされていないマシン移動の要求が許可されています。組み込みのプリセットのすべてが明示的な軸移動を提供するわけではありません。結果が特定のマシンをカバーしているかどうかを判断するときは、その主張を確認してください。

証拠にはモデルの境界がある

ネイティブの株式/保有者のリプレイは 3 軸の高さフィールド チェックです。パブリック ネイティブ スナップショットには、フィクスチャ エンベロープ フィールドがありません。スタンドアロン検証ではフィクスチャ エンベロープを受け入れますが、それらは暗黙的にネイティブ証拠に追加されません。検証済みプログラム ラベルは、マシンの証明書ではなく、キャプチャされたモデルとチェックに関する証拠です。

カーネルの結果はそのプロデューサーを識別します。アルゴリズム識別子は次のとおりです。 cadcamfun-cam-kernel@1 コントラクトスキーマのバージョンは 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts)。保存された証拠が同じカーネルからのものであるかどうかを判断するときは、両方を比較してください。

正確な結果から移植可能なドキュメントを作成する

A CamProgramDocument nC、プログラム、ジェネレーター/プリンター設定、ストック、および図面スナップショットを保存します。オプションの kernelRequest/kernelArtifact は、ネイティブ ソースの証拠を保持します。この例では、キャプチャされたリクエストと結果を保存せずにそのドキュメントに変換します。アプリ/サイドカーなどのコア、API、エフェクトに応じてワークスペースで実行します。

保存する前にポータブルドキュメントを検証する
import { Schema } from "effect"
import { cam } from "@cadcamfun/core"
import { CamKernelRequest, CamKernelResult, CamProgramDocument } from "@cadcamfun/api"

const request = Schema.decodeUnknownSync(CamKernelRequest)(await Bun.file("native-job.json").json())
const result = Schema.decodeUnknownSync(CamKernelResult)(await Bun.file("native-result.json").json())
if (result.status !== "ok" || result.value.release === "blocked") {
  throw new Error("The captured job has no releasable artifact")
}
const document = Schema.decodeUnknownSync(CamProgramDocument)({
  format: "cadcamfun-cam", version: 1,
  gcode: result.value.nc, program: result.value.program,
  settings: cam.generator.DEFAULT_SETTINGS,
  printer: cam.generator.DEFAULT_PRINTER_EXTRAS,
  stock: request.stock,
  drawing: { elements: request.elements, stock: request.stock },
  kernelRequest: request, kernelArtifact: result.value
})
await Bun.write("portable-program.json", JSON.stringify(document, null, 2))

この例では、指定された最小限のリクエストと同様に、明示的な在庫が必要です。その一般的なエディター設定はコントロールを再度開きますが、キャプチャされた kernelRequest はネイティブの信頼できるソースです。アプリケーション ワークスペースからキャプチャする場合は、実際のエディタ設定をすべて保持します。

実際の図面に対して保存

ドキュメントを個別に保存します。 POST /api/drawings/:id/toolpaths、名前、G コード、および完全なポータブル ドキュメントを含むデータが含まれます。呼び出し元がアクセスできる実際の図面 ID を使用します。ポータブル保存には、プロジェクト所有者または組織の ADMIN/MANAGER 書き込みアクセスが必要です。計算が成功しただけでは、永続化権限は付与されません。

サイドカーはドキュメントをデコードし、行 NC がドキュメント NC と等しいことを確認し、新しいネイティブ アーティファクトを信頼する前にキャプチャされたカーネル リクエストを再実行します。結果として得られるアーティファクト、プログラム、および元の NC を比較します。編集された証拠、ブロックされた再実行、または矛盾したバイトは拒否されます。クライアント提供の検証/sourceRevision フィールドは信頼を確立しません。

キャプチャされた選択した要素とストックが関連する図面と一致すると、サービスは図面リビジョン ダイジェストを取得します。ソースが現在の図面と一致しない場合、保存されたネイティブ アーティファクトにそのリビジョンが欠けている可能性があります。この区別を目に見えるようにしてください。キャプチャされた有効な出力が、保存されている最新のモデルの新しい出力であるとは限りません。

見る ツールパス永続性エンドポイント そして 正確なCAD解析 より充実したキャプチャ/保存フローを組み立てる場合。明確なクエリ パラメーター コントラクトが意図されている場合を除き、プロジェクト ツールパス バリアントは避けてください。

変更後に再生成し、拒絶反応を診断する

形状、ストック、原点、工具、材料、機械、作業順序、または NC を変更すると、証拠の関係が変化します。更新されたキャプチャされたリクエストから再生成します。プレーンな NC 編集は有用な通常のテキストのままですが、新しいバイトの証拠として以前のネイティブ アーティファクトを保持してはなりません。保存サービスは、互換性のないネイティブ メタデータを削除するか、一貫性のない新しいドキュメントを拒否します。

不明なマシン プリセットはアダプター検証エラーです。不明な材料/工具、無効な在庫の格納、空の形状、サポートされていない加工により、準備/計画の問題が発生します。ガウジ、ラピッドインストック、ホルダー/テーブル衝突、および生成されたモーション/証拠に対するリプレイの不一致ポイント。プロセス制御を変更する前に、問題内の操作 ID、ステージ、行、およびポイントを特定します。

ソース ペイロードは JSON スキーマのデコードに合格しても、有効なジョブの生成に失敗する可能性があります。逆に、アーティファクトはブロックされたリリースとともに存在する可能性があります。いずれかの状態を診断するときは、推測的な設定変更で上書きするのではなく、元の要求と結果のペアを保持します。

実装の由来: packages/api/src/cam-kernel.ts, cam-program.ts、コア cam/kernel/snapshot.ts, execute.ts, schema.ts、サイドカー services/cam-program.ts。焦点を絞った証拠テストは、 packages/core/src/cam/kernel/kernel.test.ts そして apps/sidecar/test/cam-program.test.ts.

結果の例を見てみましょう

ネイティブジョブ.json、生成されました ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
プランナーが POM ブランクに対して選択した 3 つの操作 (世界座標でのプログラムの移動と、20、20、11 の作業原点)。紫: 面、緑: アダプティブ荒加工、青: 急な仕上げと浅い仕上げ、破線: 急流。 Press replay to watch the order.

なしで operations プランナーは、デフォルトのカッター クリブから 3 つの操作を選択し、それぞれに独自のツール変更を行いました。 NC ヘッダーは、モーションの前にそれらを要約します。

ネイティブ結果.json → value.nc (最初の行)
%
O1000
(PROGRAM: POM BLANK)
(UNITS: MM)
(WORK OFFSET: G54)
(MACHINE: VERTICAL MACHINING CENTRE BT40, 12 000 RPM, 11 KW)
(MATERIAL: ACETAL POM-C DELRIN)
(STOCK: 44.00 X 44.00 X 11.00 MM)
(OP 1: FACE STOCK TOP | T1 [FACEMILL-50] | S1810 | F815-1629)
(OP 2: 3D ADAPTIVE ROUGHING | T2 [FLAT-16] | S7160 | F2848-5696)
(OP 3: 3D STEEP AND SHALLOW FINISHING | T3 [BALL-10] | S12000 | F1642-3283)
G21 G90 G17 G94 G40 G49 G80
G54
(OPERATION: FACE STOCK TOP)
T1 M6
G43 H1
M3 S1810
(OP1 FACE)
(FACE: FACE STOCK TOP)
G0 X-48.000 Y-22.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 Z-1.000 F815
X48.000 F1629
Y0.000
X-48.000
Y22.000
X48.000
G0 Z2.000

プログラムは次のように終了します G0 Z10.000, M5, M30 そして %。全長: 3071 行。機械が与えられなかったため、 vmc-standard プリセットが適用され、その投稿は fanuc: したがって、 %/O1000 フレーミング、 T1 M6 ツールの変更と G43 H1 長さの補正。

オペレーションの切断データを読み取ります

すべての操作には次のような問題が伴います。 cutting 速度とフィードがどのように導出されたかを示す記録。上記の荒加工操作の値は次のとおりです。

分野価値意味
rpm7160Vcと有効径から主軸回転数を求める
vc / vcRecommended359.9 / 360 m/分達成表面速度と推奨表面速度
fz0.199 mm切りくず薄化補正後の刃当たりの送り
chipThickness0.159 mm得られる平均切りくず厚さ
feed / plungeFeed5696 / 2848 mm/分切削とプランジ送り
ap / ae10 / 3.2 mm軸方向の深さと半径方向のかみ合い(20 % ステップオーバー)
rampAngle / helixPitch5° / 4.398 mmエントリージオメトリ
mrr182.258 cm3/分材料除去率
powerKw / torqueNm / forceN1.862 / 1.986 / 248推定負荷、マシンの制限と照らし合わせてチェック
deflectionMm0.0157 mm推定工具たわみ
limitedBy, warnings, exceeded空の値を制限する制限。ここでは何もしませんでした
source reads: "Acetal POM-C (Delrin) (ISO N): Vc 360 m/min, fz 0.159 mm at Ø16, kc1.1 300 N/mm² mc 0.2 (handbook starting values)". The reference ブロックには、材料テーブルの行、使用される列、およびすべての乗算係数がリストされます (ここでは cutSpeed 1.2, diameterScale 1.326, chipThinning 1.25)。その basis では、これらはハンドブックの開始値であり、カッターに関するサプライヤーの認定データではないと述べています。

初期値であり保証ではありません

データのカットは、合理的な最初の試行として扱ってください。生産前にツール サプライヤーのデータとマシンと照合してそれらをチェックし、よくわかったときに操作ごとにオーバーライドします。その後、アーティファクトはフィールドを記録します。 overridden.

アーティファクトのアイデンティティ

分野例のハッシュ
identity.jobaa2159be8c7c4228…正規のジョブ
identity.part91a5382540991195…部品の形状
identity.nc1614df331826682c…正確な NC テキスト
identity.algorithmcadcamfun-cam-kernel@1カーネル名とバージョン

同じリクエストを再実行すると、同じ ID が再現されます。サイドカーはネイティブ アーティファクトを保存するときに、キャプチャされたリクエストを再実行して比較します。編集された NC が変更される identity.nc そして証拠として却下される。

レシピ: TypeScript から生成して保存

generate-and-save.ts
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
const request = JSON.parse(await Bun.file("native-job.json").text())

const result = await client.toolpathGenerator.manufacture(request)
if (result.status === "failed") throw new Error(result.issues.map((i) => i.message).join("; "))

const artifact = result.value
const failed = artifact.claims.filter((claim) => claim.status === "failed")
console.log(artifact.release, failed.map((claim) => `${claim.id}: ${claim.detail}`))
if (artifact.release === "blocked") process.exit(1)

await Bun.write("program.nc", artifact.nc)

ツールパスとして保存するには、さらにポータブルなファイルが必要です cadcamfun-cam このアーティファクトから構築されたドキュメント、その program、上で説明したように、キャプチャされたリクエストと描画スナップショット。 SDK メソッドは、HTTP 本文と同じ JSON オブジェクトを受け取り、次のように入力します。 ToolpathGeneratorManufactureInput.

3Dで

ツールパスとそれが参照するもの ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
移行によるツールパスの外部キー: 図面、マシン、材料、ツール、プロジェクト、ユーザー、さらにバージョン、コメント、コスト見積もり。