ドキュメント
プロジェクトのライフサイクル
プロジェクトを作成し、その設計データを保存して再度開き、適切な種類の履歴を選択します。
英語から自動翻訳されています。 英語の原文を見る
プロジェクトの内容
プロジェクトは、図面、再利用可能なコンポーネント、保存されたツールパスをグループ化します。図面には JSON ドキュメントが保存されます。コンポーネントには再利用可能な設計データが保存されます。ツールパスには、プレーンな NC とメタデータ、または検証されたポータブル CAM ドキュメントを保持できます。材料、カッター、機械構成は、加工ワークフローが参照できる個別のリソース レコードです。プロジェクト識別子は、これらのリソース識別子を置き換えるものではありません。
このガイドは、デスクトップで使用されているものと同じファミリーに従います。アプリケーションの状態の保存、ファイルのダウンロード、ツールパスのバージョンの記録、プロジェクト履歴のコミットが分離されています。これらの操作では、さまざまな情報が保存されます。シーケンスを本番作業に適用する前に、使い捨ての開発プロジェクトから始めてください。
例は、JSON 本文が現在のスキーマと一致するリクエスト テンプレートです。これらはキャプチャされたサーバー応答ではありません。すべてのフィールドと宣言されたステータスについて、 プロジェクト, 図面, コンポーネント、 そして ツールパス API リファレンス。
実際の API を選択する
次のコマンドでデスクトップを実行します bun run desktop:dev、または、 地域発展のレシピ。手動プロセスは一時的なポートをアナウンスします。エンドポイントを使用しないブラウザ プレビューでは、メモリ内フィクスチャが使用されます。サーバーを再起動してもプロジェクトが存続するかどうかを確認することはできません。
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token
CADCAM_DEMO_DIR=$(mktemp -d /tmp/cadcamfun-project-guide.XXXXXX)
curl --fail-with-body "$CADCAM_URL/api/health"
curl --fail-with-body "$CADCAM_URL/api/projects" -H "Authorization: Bearer $CADCAM_TOKEN" 健全性は公開されているため、保護されたプロジェクトのリクエストが承認に失敗しても成功する可能性があります。このプロセスに提供されたトークンを使用します。次の例では同じシェルを維持して、URL、トークン、一時ディレクトリ、および抽出された識別子を使用できるようにします。起動ターミナルでサイドカーの標準入力を開いたままにしておきます。
プロジェクトの作成と検査
curl --fail-with-body -X POST "$CADCAM_URL/api/projects" -H "Authorization: Bearer $CADCAM_TOKEN" -H 'Content-Type: application/json' -d '{"name":"Bracket study","description":"Disposable guide project","organizationId":null,"isPublic":false}' -o "$CADCAM_DEMO_DIR/project.json"
CADCAM_PROJECT_ID=$(bun --no-env-file -e 'console.write((await Bun.file(process.argv[1]).json()).id)' "$CADCAM_DEMO_DIR/project.json")
curl --fail-with-body "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID" -H "Authorization: Bearer $CADCAM_TOKEN" 作成すると、プロジェクト行を含む HTTP 201 が返されます。トランスポート スキーマでそのフィールドがオプションであると宣言されている場合でも、ハンドラーには真実の名前が必要です。指定された組織は、発信者が所属する組織である必要があります。プロジェクトを読み取ると、所有者/組織情報と図面/コンポーネント数が返されます。それは創造とは異なる応答の形です。
デスクトップで使用します /projects 閲覧して、 /projects/:id ダッシュボードを開きます。 [図面]、[コンポーネント]、および [ツールパス] タブに加えて、[編集]、[削除]、およびバージョン管理アクションがあります。プロジェクトの更新には再度名前が必要です。所有者または組織の ADMIN/MANAGER が更新できますが、削除は所有者または ADMIN に制限されます。
図面を作成して開く
curl --fail-with-body -X POST "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID/drawings" -H "Authorization: Bearer $CADCAM_TOKEN" -H 'Content-Type: application/json' -d '{"name":"Main drawing","description":null,"data":{"elements":[],"version":"1.0"}}' -o "$CADCAM_DEMO_DIR/drawing.json"
CADCAM_DRAWING_ID=$(bun --no-env-file -e 'console.write((await Bun.file(process.argv[1]).json()).id)' "$CADCAM_DEMO_DIR/drawing.json")
curl --fail-with-body "$CADCAM_URL/api/drawings/$CADCAM_DRAWING_ID" -H "Authorization: Bearer $CADCAM_TOKEN" 同じ空のドキュメント図形が、プロジェクト ダッシュボードの図面作成フローで使用されます。ジオメトリではなく行を作成します。開ける /cad?drawingId=<id> または /drawings/<id> 編集するには。と /cad?projectId=<id>, CAD はプロジェクトの最新の図面を選択します。名前付きの図面が優先されます。
図面の作成にはプロジェクトへのアクセス権と名前が必要です。個々の図面の読み取り/更新には、プロジェクト所有者または組織メンバーが必要です。削除すると、所有者/組織の ADMIN チェックが追加されます。 JSON data 汎用エンドポイントによって完全な描画可能なジオメトリ ドキュメントとして検証されていません。したがって、書き込みが成功しても、提供されたすべての要素がレンダリングできることは証明されません。
設計データの保存、複製、エクスポート
すでに開かれている保存済み図面では、CAD 保存アクションによってその図面が更新され、不足しているローカル ライブラリ コンポーネントがそのプロジェクトに追加されます。 CAD ページは独自の Cmd/Ctrl+S ハンドラ。保存先のないドキュメントでは、エクスポート/保存フローが開きます。プロジェクトとして保存にはジオメトリまたは選択した要素が必要で、新しいプロジェクトと図面が作成されます。
図面スナップショットには、要素、レイヤー、選択された要素の識別子、測定設定、および形式のバージョンが含まれます。現在のロード パスは、要素と有効な単位/許容差の設定を復元し、不明なレイヤー識別子をアクティブなレイヤーにマップし、選択をクリアします。エクスポートに存在するフィールドから完全なレイヤーの復元を推測しないでください。
プロジェクト コンポーネントの同期は、トリミングされた大文字と小文字を区別しない名前と一致し、欠落している名前を追加します。同名の定義は上書きされません。コンポーネントの作成はベストエフォートであり、独立して失敗する可能性があります。保存された図面は、すべてのローカル コンポーネントがコピーされたことを証明するものではなく、複数リクエストの保存フローは 1 つのデータベース トランザクションではありません。
Duplicate は描画カードから保存されているデータをロードし、新しい識別子を作成します。ダウンロードすると、その図面データが JSON としてエクスポートされます。プロジェクト全体をエクスポートするわけではありません。一般的な図面の更新では、真実の名前/データ/サムネイル値が適用され、明示的な null の説明が許可されます。リポジトリの比較交換ハッシュ パラメータは公開されません。
再利用可能なコンポーネントを保存する
curl --fail-with-body -X POST "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID/components" -H "Authorization: Bearer $CADCAM_TOKEN" -H 'Content-Type: application/json' -d '{"name":"Bracket insert","description":"Reusable empty template","data":{"name":"Bracket insert","type":"custom","elements":[]}}' -o "$CADCAM_DEMO_DIR/component.json"
CADCAM_COMPONENT_ID=$(bun --no-env-file -e 'console.write((await Bun.file(process.argv[1]).json()).id)' "$CADCAM_DEMO_DIR/component.json")
curl --fail-with-body -X PUT "$CADCAM_URL/api/components/$CADCAM_COMPONENT_ID" -H "Authorization: Bearer $CADCAM_TOKEN" -H 'Content-Type: application/json' -d '{"type":"custom","isPublic":false,"data":{"name":"Bracket insert","type":"custom","elements":[]}}' 作成すると HTTP 201 が返されます。現在のリポジトリ作成操作では、名前、説明、データ、プロジェクトの関連付けが保存されます。作成時のトップレベルの type/public/thumnail オプションは保持されません。上記の明示的な更新により、目的のトップレベルのタイプと可視性が設定されます。 Update は、真実のコンポーネント データを検証し、欠落しているオプション フィールドを正規化し、空のパッチを拒否します。
開ける /components/:id 詳細画面または参照 /components プロジェクトフィルターを使用します。現在、プロジェクト所有者、組織メンバー、パブリック コンポーネントが表示されます。コンポーネント ハンドラーは、表示されているコンポーネントの編集/削除に対して追加の所有者専用ゲートを強制しません。一般公開を保護された読み取り専用共有として扱わないでください。
加工リソースの準備
リソース画面は次のとおりです。 /materials, /tools、 そして /machine、個別の詳細ルートが含まれます。マテリアルには名前とプロパティ値が必要です。ツールには名前、タイプ、ゼロ以外の直径、および材質が必要です。 UI は正の直径制約を提供しますが、統合では真実性チェックに依存するのではなく、工学的寸法を明示的に検証する必要があります。
{
"name": "6 mm end mill",
"type": "endmill",
"diameter": 6,
"material": "carbide",
"numberOfFlutes": 3,
"cuttingLength": 18,
"shankDiameter": 6,
"isPublic": false
} マシン構成にはタイプが必要です mill, lathe, printer、 または laser;正のワークボリューム寸法、最大主軸速度、および最大送り速度。およびオプションのコントローラー/軸データ。 4 軸または 5 軸構成には、ハンドラーによってチェックされた互換性のある回転構成が必要です。これらの記録は機器について説明します。それらの存在は、生成された特定のプログラムを検証するものではありません。
使用 材料, ツール、 そして 機械 正確なボディ用。材料/ツールのリストは配列を返します。マシンルートは成功エンベロープを使用します。 1 つの普遍的なコレクション形状を想定するのではなく、選択したエンドポイントの応答を読み取ります。
CAM プログラムを保存して再度開く
ツールパスはプロジェクトの下に作成できます。 POST /api/toolpaths 名前とプロジェクト ID を使用するか、次の方法で図面にアタッチします。 POST /api/drawings/:id/toolpaths 名前とデータを使用します。プロジェクト ダッシュボードはトップレベル ファミリを使用し、結果を開きます。 /cam?loadToolpath=<id>。 CAM ページは、API を介して保存されたオリジナルを読み取ります。
CAM 保存モーダルは、既存のプロジェクト、新しいプロジェクト、または保存されたプログラムの更新を提供します。 Gコードエクスポートはテキストをダウンロードします。ポータブルエクスポートのダウンロード .cam.json と format: cadcamfun-cam、設定、プログラム、ストック、描画コンテキスト、および利用可能な場合は一致する証拠。アプリケーションの保存により、そのドキュメントはツールパス レコードに保存されます。
ポータブル文書は検証され、NC と照合されます。コードを編集すると、古い証拠が削除されたり、再解析が必要になったりする場合があります。新しいカーネル アーティファクトは、キャプチャされたソース リクエストに対して再チェックされます。クライアントが任意に提供した検証の主張は証拠として受け入れられません。所有者/管理者/管理者の制限は、ポータブル プログラムをプロジェクトに保存する場合にも適用されます。
新しいプロジェクトの保存が部分的に成功すると、モーダルは再試行のために作成された宛先を保持します。フローを再開して別のプロジェクトを作成する前に、その識別子を検査してください。見る ツールパス そして 保存されたプログラムドキュメント.
必要な履歴を選択してください
| 機構 | 保存する | 使用 |
|---|---|---|
| エディターの取り消し/やり直し | ローカルインタラクション/セッションスナップショット | 現在の編集操作を元に戻します。 |
| ツールパスのバージョン | 1番組分の録画データ、NC、作者、変更メッセージ | プログラムのリビジョンを確認または復元します。 |
| プロジェクトの歴史 | コミットされたプロジェクトのスナップショットと変更されたエンティティ ファイル | プロジェクトの状態を比較、分岐、レビュー、または復元します。 |
| ダウンロードされたJSON/NC | 特定のエクスポートされたコンテンツ | 外部成果物を保持または転送します。 |
CAM 保存モーダルを介して更新すると、最初に前の番組が記録されます。ツールパス詳細画面で手動保存すると、更新された状態がバージョンとして記録されます。バージョンの復元では、現在の状態を置き換える前に記録するため、別のバージョンの操作によって復元を元に戻すことができます。これらは異なるフローです。一般的な PUT は、自動的にはプロジェクトのコミットにはなりません。
開ける /toolpaths/:id 詳細、G コード、バージョン、コメントについては。開ける /projects/:id/history プロジェクト履歴用。アイテムごとのボタンは次のようなパスでフィルタリングします。 drawings/<id>.json。の ツールパス履歴 API 受け入れる versionId 修復のために。
履歴の変更はライブ イベントとしても公開されます (commit, pr.*, workflow.started/workflow.finished, ai.session)。新しい購読者は、最初に最大 20 件の最近の一致イベントを受け取ります。
永続性を確認して障害を解決する
- 作成されたプロジェクト、図面、およびコンポーネントを、それらの識別子エンドポイントを通じて読み取ります。
- 該当するデスクトップルートを開いて実際のデザイン・プログラム内容を確認してください。
- 同じサイドカー データ ディレクトリを再起動し、一時 URL を更新して、読み取りを繰り返します。
- エクスポートを個別にダウンロードして、そのフィールドを検査します。データベースの行は、ファイルがエクスポートされたことを証明するものではありません。
400 は通常、必須のビジネス フィールドが欠落しているか、無効なドキュメント データを示します。 403 は拒否された操作を示します。 404 は、データが存在しない、またはアクセスできないことを意味する場合があります。現在、プロジェクト ダッシュボードは個々のリソース リストの失敗を空の配列に変換しているため、空のタブだけでは削除の証拠としては不十分です。複製を作成する前に、直接の API 結果を検査してください。
実装アンカーは、 projects.ts そして groups/{drawings,components,toolpaths}.ts aPI パッケージ内。対応するサイドカー ハンドラー/リポジトリ。 projectSnapshot.ts, CadPage.tsx, SaveCamModal.tsx、 そして ToolpathDetailScreen.tsx。削除テストには分離されたプロジェクトを使用し、復元前にユーザーの作業を保存します。
レシピ:curl を使用したライフサイクル全体
A=(--header "Authorization: Bearer $CADCAMFUN_TOKEN" --header "Content-Type: application/json")
U="$CADCAMFUN_URL"
project=$(curl -sS "${A[@]}" -d '{"name":"Bracket"}' "$U/api/projects" | jq -r .id)
drawing=$(curl -sS "${A[@]}" -d '{"name":"Plate","data":{}}' "$U/api/projects/$project/drawings" | jq -r .id)
curl -sS "${A[@]}" "$U/api/projects/$project/drawings" | jq 'length'
curl -sS "${A[@]}" -X PUT -d '{"name":"Plate v2"}' "$U/api/drawings/$drawing"
curl -sS "${A[@]}" -d '{"name":"Program","gcode":"G21\nM30","data":{}}' \
"$U/api/drawings/$drawing/toolpaths" | jq .id
curl -sS "${A[@]}" -d '{"message":"First version"}' "$U/api/projects/$project/vcs/commit"
curl -sS "${A[@]}" "$U/api/projects/$project/vcs/log" | jq | ステップ | 手術 | 本文フィールド |
|---|---|---|
| プロジェクトの作成 | POST /api/projects | name (ハンドラーによって必要)、 description, organizationId, isPublic |
| 図面の作成 | POST /api/projects/{id}/drawings | name, description, data, thumbnail |
| 図面を更新する | PUT /api/drawings/{id} | 同じフィールド、部分的 |
| ツールパスの作成 | POST /api/drawings/{id}/toolpaths | name, data, gcode, type, operationType, materialId, toolId, machineConfigId, … |
| 専念 | POST /api/projects/{id}/vcs/commit | message (必須)、 authorKind, files |
| 支店 | POST /api/projects/{id}/vcs/branches | name (必須)、 from |
| 復元する | POST /api/projects/{id}/vcs/restore | rev (必須)、 paths |
新しいサイドカーに対して実行すると、コミットは新しいコミット オブジェクトで応答し、ログにそれがリストされます。
{"oid":"44d2d03d23b27fbbc4b388e32e15dfb0f39fff87","parents":[],"message":"First version\n","author":{"name":"Local user","email":"local@cadcamfun.local","time":1792037121}} セッション ヘッダーがない場合、作成者はインストールのローカル プロファイルになります。レシピで使うのは、 jq。自由形式のツールパス data そのまま受け入れられます。ポータブル cadcamfun-cam ネイティブ製造ガイドに記載されているように、ドキュメントは厳密に検証されます。