Перейти к содержанию
CADCAMFUN
Документы

Документация

Создайте собственную производственную программу

Сохраните реальную деталь, оцените ее производственную работу, проверьте опубликованные доказательства отсутствия ошибок и сохраните документ, который можно будет проверить еще раз.

Автоматически переведено с английского. Смотреть оригинал на английском

Знайте, какой результат вы запрашиваете

Собственное производство — это детерминированные вычисления CAD/CAM, независимые от языковой модели. POST /api/toolpaths/manufacture принимает явный снимок САПР, подготавливает производственные ресурсы, планирует или принимает заказанные операции, вычисляет данные резания, генерирует траектории движения инструмента, публикует одну программу ЧПУ и независимо воспроизводит этот текст. Ответ включает доказательства, подтверждающие уровень выпуска.

Эта конечная точка не создает чертеж, не сохраняет траекторию инструмента и не обновляет редактор. Успешный ответ — это ценность, которую необходимо тщательно проверять и упорствовать. Это отличается от /api/toolpaths/generate, который адаптирует настройки генератора приложений для вывода на фрезерный/токарный станок/принтер, а также из /api/toolpaths/verify, который воспроизводит поставляемую ЧПУ/программу с явно смоделированной заготовкой и инструментом.

Используйте конечные точки обработки для схем запроса/ответа, Справочник по САМ для основных представлений и сохраненная ссылка на программу за настойчивое поведение. Следующее задание намеренно достаточно маленькое, чтобы его можно было воспроизвести и проверить без редактирования существующего проекта.

Отправьте полный, проверенный снимок

Сохраните этот JSON как native-job.json. Он описывает заготовку из ПОМ размером 40 × 40 × 10 мм с центром (20, 20, 5), окруженную заготовкой 2 мм с каждой стороны X/Y и 1 мм сверху. Полезная нагрузка была расшифрована реальным CamKernelRequest схема и оценивается ядром; его базовый результат содержит три запланированные операции. Всегда проверяйте возвращенные утверждения, а не жестко запрограммируйте ожидаемый выпуск в клиенте.

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

Файл оболочки записывает точный ответ для проверки. Предоставление одного и того же перехваченного запроса дает детерминированный собственный вывод; использование новой позиции детали, фрезы, операции или контроля качества — это другая работа. Метки идентификации запроса полезны для отслеживания, но дайджесты артефакта связывают его фактический источник и содержимое NC.

Определение координат запаса и работы

Для моментального снимка используется центр X/Y и полная ширина/высота/глубина. Адаптер снимков сначала строит геометрию выбранной детали, находит ее наименьшую Z и помещает туда нижнюю часть заготовки; его верх — это дно плюс заявленная глубина. В этом примере деталь простирается от Z0 до Z10, а заготовка от Z0 до Z11. Границы запаса в X/Y составляют от −2 до 42.

Адаптер использует явные размеры для этих границ. При этом снова не добавляется допуск к отображению инвентарной записи, и topZ поле не заменяет привязку нижней части в этом собственном адаптере моментальных снимков. Сохраняйте различие между метаданными редактора и полями, которые фактически используются для создания производственного задания.

По умолчанию источником работы является stock-center: складской центр X/Y на вершине Z. stock-corner выбирает минимум X/Y на той же вершине. Геометрия входной операции находится в миллиметрах мира САПР, а результирующие перемещения программы/NC находятся в рабочих координатах. Обычное резание идет ниже работы Z0. workOffset является необязательным; программа по умолчанию — G54.

Без поставляемого материала подготовка задания на нижнем уровне ограничивает границы детали с дополнительными 2 мм с каждой стороны X/Y и 1 мм сверху. Часть, находящаяся за пределами явного запаса, отклоняется; Увеличение требуемой глубины резания не приводит к тому, что деталь будет содержаться в несовместимом материале.

Выберите материал, станок и фрезы.

Материал — это строка поиска, разрешенная по библиотеке материалов ядра, включая поддерживаемые идентификаторы, имена и псевдонимы. Неизвестный материал возвращает напечатанный выпуск подготовки. Дополнительный компьютер моментального снимка HTTP имеет зарегистрированный предустановленный идентификатор: vmc-standard, haas-vf2, hsc-mill, Desktop-mill или cnc-router. Если его не использовать, используется стандарт vmc. Предварительные настройки описывают типичные классы и ограничения машин, а не квалифицированную модель отдельной установки.

При отсутствии инструментов используется набор резаков по умолчанию. Поставка инструментов заменяет эту кроватку и требует 1–200 записей о фрезах. Фреза идентифицирует свой тип, диаметр, количество канавок, материал/покрытие, длину канавки, диаметр хвостовика и вылет. Дополнительные размеры держателя, максимальная частота вращения, количество карманов и геометрия для конкретного типа улучшают качество изготовления и зазор. Флейты должны быть целыми числами от 1 до 24; явные карманные номера: 1–999.

Идентификаторы рабочих инструментов должны называть фрезы в поставляемой библиотеке. Дублирующиеся идентификаторы фрез, недопустимые размеры и недостижимые комбинации стратегии/инструмента создают проблемы, а не угаданные замены. Схема допускает плоские, шариковые, бычьи, фасочные, точечные, сверлильные, торцевые, резьбовые и граверные виды.

Строка компьютера общедоступного моментального снимка не принимает пользовательскую запись компьютера. Интеграция кода, вызывающая нижний уровень ManufacturingJob API может явно указывать ограничения станка, ход и геометрию стола. Не отправляйте эту запись, если схема HTTP ожидает заданную строку.

Планируйте автоматически или указывайте порядок обработки

Когда операции отсутствуют, планировщик извлекает их из детали. Массив явных операций — это авторитетный порядок обработки, а не список предложений, которые нужно переупорядочить автоматически. Каждая операция имеет уникальный идентификатор и ссылку на инструмент. Поддерживаемые записи стратегии охватывают обработку торцов, адаптивных операций, карманов, профилей, отверстий, сверлений, резьб, гравировок, фасок и поверхностей с геометрией, соответствующей каждой из них.

В профиле используется цикл, внутренняя/внешняя сторона и мировая координата сверху/снизу. Карманный/адаптивный крой использует закрытую границу с дополнительными островными кольцами. При сверлении используются точки плюс верх/низ. Запись резьбовой фрезы включает центр, диаметр, шаг, внутренний флажок, вершину и длину. Запись поверхности выбирает черновой режим, параллельность, ватерлинию или крутой-мелкий режим; ссылка на остаток должна указывать на соответствующую предыдущую работу.

Коррекция процесса для каждой операции может включать в себя частоту вращения, подачу, врезную подачу, ступенчатое понижение, пошаговое перемещение, подачу СОЖ и радиальное зацепление. Отсутствующие значения берутся из данных резки материала/фрезы/станка. Шаг — это процент от 1 до 100; шаг понижения и подачи положительны. Артефакт записывает переопределенные поля отдельно от вычисленных параметров, чтобы проверяющий мог видеть, откуда взялся выбор процесса.

Нативное ядро хранит временные запасы между операциями и один раз публикует их объединенный IR. Напротив, combineCamOperations для сохраненных разделов типовых операций объединяется уже созданный текст ЧПУ; он не преобразует эти разделы в интегрированную программу-контроллер. Используйте собственный артефакт, когда требуется интегрированное создание и воспроизведение.

Установите контроль качества и поймите его стоимость

ВходЗначение и границы
finishAllowance0–5 припуск на черновую обработку, мм; опущено, используется материал по умолчанию.
scallopПоложительный, не более 1 мм; по умолчанию 0.01 мм для исходной чистовой обработки.
toleranceПоложительная толерантность пути; исходное значение по умолчанию 0.01 мм.
resolutionПоложительный размер ячейки воспроизведения; контролирует пространственное разрешение фондовых доказательств.
deburrПоложительный, не более 5 мм; просит планировщика добавить поддерживаемую работу по фаске верхней кромки.
subprogramsНеобязательная трансляция-повторение, если диалект поддерживает это, например, подпрограммы Fanuc/Haas M98.

Запрос поддерживает элементы САПР 1–2,000 и не более 500 явных операций. Меньшие допуски и ячейки воспроизведения увеличивают вычислительную работу и не доказывают автоматически неподдерживаемую геометрию. Сохраните полученное разрешение вместе с результатом. Сетка видового экрана и предварительный просмотр исходного материала с пониженной дискретизацией — это результаты отображения, а не независимая более тонкая симуляция.

Встроенная проводка устанавливает номера инструментов из назначений фрез и требует отвода перед заменой инструмента. Координаты формата сообщений с фиксированными десятичными знаками. Проверьте фактический NC и выбранный диалект; имя контроллера не устраняет необходимости проверять поведение установки после установки.

Интерпретация статуса, претензий и выпуска

Результатом является объединение: status: "failed" с проблемами или status: "ok" с артефактом. Нормальный артефакт все еще может иметь release: "blocked". Прочтите оба слоя; проверка статуса HTTP или только внешнего статуса недостаточна.

Артефакт сохраняет упорядоченные результаты операций, данные резания, программу IR, использованные фрезы, ЧПУ, статистику запасов, оценки времени цикла, проблемы и идентификационные дайджесты. Заявки имеют статус «пройдено», «не выполнено», «неподдерживаемо» или «неразрешено». Они охватывают режимы резания, пределы станка, завершение операции, зазор между быстродействующим устройством и держателем, строжку, удаление материала, независимое воспроизведение ЧПУ, перемещение станка и зазор между станком и столом.

Проблемы с серьезными ошибками или освобождение пустого блока ЧПУ. При отсутствии серьезных сбоев неполные доказательства обеспечивают предварительный просмотр, если не соблюдается правило выпуска. Текущее правило допускает неподдерживаемое заявление о перемещении машины, при этом возвращая проверенную программу; не все встроенные предустановки обеспечивают явное перемещение оси. Проверьте это утверждение, решая, распространяется ли результат на конкретную машину.

Доказательства имеют границы модели

Собственный повтор приклада/держателя представляет собой трехосную проверку поля высоты. Публичный собственный снимок не имеет поля огибающей фиксации. Автономная проверка принимает конверты приборов, но они не добавляются к исходным доказательствам косвенно. Этикетка проверенной программы является свидетельством ее зарегистрированной модели и проверок, а не сертификатом машины.

Результаты ядра идентифицируют своего производителя: идентификатор алгоритма cadcamfun-cam-kernel@1 и версия схемы контракта 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts). Сравните оба варианта, чтобы решить, произошли ли сохраненные доказательства из одного и того же ядра.

Создайте переносимый документ на основе точного результата

A CamProgramDocument сохраняет ЧПУ, программу, настройки генератора/принтера, материал и снимок чертежа. Необязательный 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-кодом и данными, содержащими полный переносимый документ. Используйте реальный идентификатор чертежа, доступный вызывающему абоненту. Для переносимых сохранений требуется доступ на запись от владельца проекта или организации, АДМИНИСТРА/МЕНЕДЖЕРА; само по себе успешное вычисление не дает разрешения на сохранение.

Сопутствующий модуль декодирует документ, проверяет, соответствует ли NC строки документу, и повторно запускает захваченный запрос ядра, прежде чем доверять новому собственному артефакту. Он сравнивает полученный артефакт, программу и исходное ЧПУ. Отредактированные доказательства, заблокированный повтор или противоречивые байты отклоняются. Поля проверки/sourceRevision, предоставленные клиентом, не устанавливают доверие.

Когда выбранные элементы и заготовка соответствуют соответствующему чертежу, служба создает дайджест редакции чертежа. В сохраненном исходном артефакте эта редакция может отсутствовать, если исходный код не соответствует текущему чертежу. Держите это различие на виду: действительные захваченные выходные данные не обязательно являются свежими выходными данными для последней сохраненной модели.

Видеть конечные точки сохранения траектории инструмента и точный анализ CAD при сборке более богатого потока захвата/сохранения. Избегайте варианта траектории проекта, если не предполагается его отдельный контракт параметров запроса.

Регенерация после изменений и диагностика отторжения

Изменение геометрии, заготовки, происхождения, инструментов, материала, станка, порядка операций или ЧПУ изменяет взаимосвязь свидетельств. Восстановить обновленный захваченный запрос. Простое NC-редактирование может оставаться полезным обычным текстом, но оно не должно содержать более ранний собственный артефакт в качестве доказательства наличия новых байтов. Служба сохранения удаляет несовместимые собственные метаданные или отклоняет несовместимый новый документ.

Неизвестная предустановка машины — это ошибка проверки адаптера. Неизвестный материал/инструмент, недопустимое размещение заготовки, пустая геометрия и неподдерживаемая обработка создают проблемы при подготовке/планировании. Строжка, быстрая задержка, столкновение держателя и стола и точка несоответствия воспроизведения для создания движения/доказательства. Прежде чем менять элементы управления процессом, найдите идентификатор операции, этап, строку и точку в проблеме.

Исходная полезная нагрузка может пройти декодирование схемы 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.

Просмотрите результат примера

родной-job.json, сгенерированный Перетащите на орбиту · прокрутите, чтобы увеличить · перетащите вправо, чтобы панорамировать
Три операции, которые планировщик выбрал для заготовки POM в мировых координатах (движения программы плюс начало координат работы в 20, 20, 11). Фиолетовый: лицевая сторона, зеленый: адаптивная черновая обработка, синий: крутая и пологая чистовая обработка, пунктирный: пороги. Нажмите повтор, чтобы посмотреть порядок.

Без operations в массиве планировщик выбрал три операции из набора фрез по умолчанию, каждая со своей сменой инструмента. Заголовок NC суммирует их перед любым движением:

родной-result.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 запись, показывающая, как были получены его скорости и подачи. Это значения для черновой операции, описанной выше:

ПолеЦенитьЗначение
rpm7160Скорость шпинделя от Vc и эффективный диаметр
vc / vcRecommended359.9 / 360 м/минДостигнутая и рекомендуемая скорость над поверхностью
fz0.199 ммПодача на зуб после коррекции утончения стружки
chipThickness0.159 ммИтоговая средняя толщина стружки
feed / plungeFeed5696 / 2848 мм/минРезка и врезная подача
ap / ae10 / 3.2 ммОсевая глубина и радиальное зацепление (20 % шага)
rampAngle / helixPitch5° / 4.398 ммГеометрия входа
mrr182.258 см³/минСкорость съема материала
powerKw / torqueNm / forceN1.862 / 1.986 / 248Расчетная нагрузка, сверенная с ограничениями машины
deflectionMm0.0157 ммРасчетное отклонение инструмента
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…Точный текст ЧПУ
identity.algorithmcadcamfun-cam-kernel@1Имя и версия ядра

Повторный запуск того же запроса воспроизводит те же идентификаторы. Когда сайдкар сохраняет собственный артефакт, она повторно запускает захваченный запрос и сравнивает его; отредактированные изменения ЧПУ 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 принимает тот же объект JSON, что и тело HTTP, типизированный как ToolpathGeneratorManufactureInput.

Через 3Д

Траектория инструмента и на что она ссылается Перетащите на орбиту · прокрутите, чтобы увеличить · перетащите вправо, чтобы панорамировать
Внешние ключи траекторий инструментов из миграций: чертеж, станок, материал, инструмент, проект и пользователь, а также версии, комментарии и сметы.