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

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

Настройки и сохраненные программы

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

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

Установка — это производственный контекст

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

Сохраненные прикладные программы используют CamProgramDocumentпереносимый документ также хранится в Toolpath.data. Этот контракт сохраняет ЧПУ и его программное представление вместе с настройками, материалом и снимком чертежа, необходимыми для повторного открытия рабочей области. Дополнительные операции сохраняют отдельные идентификаторы операций; дополнительные данные ядра сохраняют свидетельства собственного источника.

Переносной документальный договор

Документ идентифицирует себя с format: "cadcamfun-cam" и version: 1. Обязательные поля: gcode, program, генератор settings, printer дополнительные услуги, stockи в свободной форме drawing снимок. Необязательные поля: operations, kernelArtifact, и kernelRequest.

Каждая сохраненная операция имеет уникальный id, name, gcode, и program, с дополнительным инструментом, настройками и идентификаторами исходных элементов. Сохранение его NC и идентичности позволяет выполнять операцию независимо от ее отображаемой метки.

Порядок и состав операций

combineCamOperations сохраняет порядок работы. Он помещает в пространства имен идентификаторы траекторий инструментов с идентификатором операции, использует явный инструмент операции, если он предоставляется, и добавляет к отображаемым именам префиксы, если имеется более одной операции. Комбинированная программа принимает единицы измерения и смещение детали из первой операции.

Для одной операции комбинированное ЧПУ является исходным текстом. Для нескольких операций помощник объединяет существующие разделы ЧПУ с комментариями к операции. Этот помощник не перепостивает все разделы в одну программу-контроллер. Собственное ядро — это маршрут, который генерирует упорядоченные операции и выдает одну интегрированную программу.

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

Сгенерируйте и сохраните

  1. Захватите элементы чертежа и заготовку для обработки. Выберите материал, станок, инструменты, смещение детали и средства контроля качества.
  2. Вызов POST /api/toolpaths/manufacture с schemaVersion: 1, идентификатор задания, имя и захваченные элементы. Предоставляйте операции явно в порядке обработки или позволяйте ядру планировать их.
  3. Проверьте возвращенный результат, проблемы, отдельные претензии и release. Артефакт может быть предварительным или заблокированным; получение результата не подразумевает проверенный результат.
  4. Постройте CamProgramDocument чей G-код, программа, артефакт и захваченный запрос описывают один и тот же результат. Сохраните его с помощью траектории создания или обновления конечной точки вместе с этим G-кодом.

Конечная точка производства оценивает предоставленный снимок без написания чертежа или создания траектории инструмента. Генератор /generate — это отдельный маршрут, управляемый настройками, который также может предоставлять NC для переносимого документа.

Проверка устойчивости

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

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

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

Редактирование NC и сохранение доказательств

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

Обычные данные траектории произвольной формы остаются поддерживаемыми. Изменение NC удаляет устаревшие собственные метаданные артефакта там, где они больше не совпадают. Предоставляется клиентом verification и response поля не становятся надежными естественными свидетельствами.

Реализация проверки apps/sidecar/src/services/cam-program.ts; runKernelRequest, prepareCamProgramData, и drawingRevision использовать один и тот же адаптер запроса и логику идентификации, используемые при генерации и сохранении.

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

Жесткие рабочие рамы

A WorkFrame имеет начало координат и оси X/Y/Z. validateWorkFrame требуются конечные координаты, единичные оси, попарная ортогональность и правая ориентация в пределах числового допуска. workToWorld применяет рамку; worldToWork проекты назад. Недопустимые кадры, недопустимые точки и числовое переполнение приводят к ошибке диапазона.

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

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

cam/indexing.ts решает индексированные ориентации для table-AC и table-BC макеты. Он поворачивает выбранную рабочую плоскость по нормали к станку +Z, учитывает пределы поворота и предпочитает меньший достижимый наклон. Точки программы проходят через рабочую раму и вращение стола вокруг оси станка.

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

Общие типы настройки

ManufacturingSetup, WorkFrame, ToolAssembly, validateSetup, validateWorkFrame, workToWorld, и worldToWork экспортируются через cam. Переносимые операции и схемы документов экспортируются из @cadcamfun/api, что делает их доступными как для логики сохранения дополнительного кода, так и для логики восстановления рабочего стола.

Повторное открытие на рабочем столе

saved-program.ts фиксирует текущие настройки, заготовку, чертеж и точную сохраняемую ЧПУ. Он сохраняет артефакт ядра только тогда, когда его NC и хэш совпадают с этими байтами. При восстановлении он проверяет сохраненный артефакт и выпуск, восстанавливает совместимые результаты операций, сбрасывает проверку воспроизведения, загружает редактор и восстанавливает элементы управления генератором и запасами из моментального снимка.

Когда доступен только обычный G-код, рабочий стол анализирует его для отображения. Успешное открытие текста не воссоздает отсутствующий запрос на создание и не повышает уровень доказательности программы.

Храните исходный код и результат вместе

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

Оцените захваченную установку

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

От координат редактора до нативной работы
import { cam } from "@cadcamfun/core"

const prepared = cam.kernel.jobOfSnapshot({
  schemaVersion: 1, id: "blank-job", name: "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
})
if (prepared.status === "failed") throw new Error(JSON.stringify(prepared.issues))
const result = cam.kernel.runJob(prepared.value)
if (result.status === "failed") throw new Error(JSON.stringify(result.issues))
console.log(result.value.release)
console.log(result.value.claims)
console.log(result.value.identity.nc)

Позицией куба является его центр; его нижняя часть – Z0. Заготовка моментального снимка X/Y – это ее центр, а ширина/высота — полные размеры. Адаптер размещает нижнюю часть заготовки по самой нижней оси Z выбранной детали, а затем добавляет заявленную глубину. По умолчанию источником работы ядра является складской центр в верхней части запаса; Stock-corner вместо этого выбирает минимальную X/Y и верхнюю Z.

Источник: packages/core/src/cam/kernel/snapshot.ts, execute.ts, и kernel.test.ts.

Параметры и границы моментального снимка

Собственный HTTP-запрос требует элементов 1–2,000, версии 1, непустого идентификатора/имени задания и имени материала длиной до 80 символов. Он принимает до 500 явных операций и, при наличии, 1–200 фрез. Пропуск операций вызывает планировщик; явный пустой список операций не является просьбой изобрести операции.

finishAllowance принимает 0–5 мм; scallop положителен и не превышает 1 мм; deburr положителен и не превышает 5 мм. В собственных значениях по умолчанию используется припуск на чистовую обработку материала, зубчатый выступ 0.01 мм и допуск по траектории 0.01 мм. Разрешение повтора может поставляться отдельно. Необязательный subprograms: true запрашивает повторную эмиссию переведенного текста только там, где выбранный диалект поддерживает это.

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

Источник: packages/api/src/cam-kernel.ts, ai-cam.ts, и packages/core/src/cam/kernel/contracts.ts.

Разрешение отклоненных сохранений

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

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

Источник: apps/sidecar/src/services/cam-program.ts и apps/sidecar/test/cam-program.test.ts.

Посмотрите нативную работу в 3D

Родное задание: заготовка POM, три операции Перетащите на орбиту · прокрутите, чтобы увеличить · перетащите вправо, чтобы панорамировать
Реальная программа, сгенерированная собственным ядром для снимка ниже, нарисованная в мировых миллиметрах. Фиолетовый: торцевая фреза Ø50 в точке Z10. Зеленый: адаптивная черновая обработка Ø16. Синий: завершение мяча Ø10. Пунктир: пороги. Полупрозрачные коробки: запас 44 × 44 × 11 и деталь 40 × 40 × 10. Программа находится в рабочих координатах; начало координат работы — это вершина складского центра, мир (20, 20, 11), поэтому каждое перемещение здесь — это перемещение программы плюс это начало координат.
ОпСтратегияИнструментДлина обрезкиВремяУдаленный
Лицо стокового верхаfacefacemill-50334.0 мм12.4 s1936 мм³
3D адаптивная черновая обработкаsurfaceflat-16472.2 мм5.3 s3360 мм³
3D крутая и пологая отделкаsurfaceball-105660.6 мм113.4 s0 мм³

Машина vmc-standard (Вертикальный обрабатывающий центр (BT40, 12 000 об/мин, 11 кВт), пост fanuc), материал pom-c (Acetal POM-C (Delrin)). Stock volume 21296 mm³, final 16000 mm³, equal to the part volume, so remaining volume is 0. Estimated cycle time 149 s. Release: verified-program. Длина NC составляет 3071 строк.

ТребоватьСтатус
cutting-dataпрошедший
machine-limitsпрошедший
operations-completeпрошедший
no-rapid-in-stockпрошедший
holder-clearanceпрошедший
no-gougeпрошедший
material-removedпрошедший
nc-replayпрошедший
machine-travelнеподдерживаемый
machine-clearanceпрошедший
machine-travel это unsupported здесь потому, что в предустановке нет явного диапазона перемещения, по которому можно было бы сверяться. Неподтвержденное утверждение не является отказом, но и не является доказательством; выпуск проверенной программы охватывает принятые претензии.

Математика рабочей структуры, проработанная

z = (0.707, 0, 0.707)x = (0.707, 0, −0.707) происхождение (40, 0, 10)мир Хмир Z
Создайте, проверьте и используйте фрейм 45°.
import { cam } from "@cadcamfun/core"

const frame = cam.frameFromNormal({ x: 40, y: 0, z: 10 }, { x: 1, y: 0, z: 1 })
// xAxis (0.707, 0, -0.707)  yAxis (0, 1, 0)  zAxis (0.707, 0, 0.707)
cam.validateWorkFrame(frame)                     // []

const world = cam.workToWorld(frame, { x: 10, y: 5, z: 0 })   // (47.071, 5, 2.929)
cam.worldToWork(frame, world)                    // (10, 5, 0)

cam.validateWorkFrame({ origin: { x: 0, y: 0, z: 0 },
  xAxis: { x: 1, y: 0, z: 0 }, yAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 1, z: 0 } })
// [{ field: "frame", message: "Work frame axes must be orthonormal and right-handed" }]
frameFromNormal принимает нормаль за Z и проецирует подсказку X (по умолчанию мир X) на плоскость. Когда подсказка параллельна нормали, она выбирает другой перпендикуляр. Y всегда равно Z × X, поэтому по построению результат является правым.

Ротационные решения для обычных лиц

anglesFor(normal, layout, limits) returns every way the table can bring a part direction to machine +Z, smallest tilt first, with the tilt inside the limits (default −120° to 120°). C is wrapped into (−180°, 180°]. These are real outputs:
Часть нормальнаястол-ACстол-BC
(1, 0, 1), сторона 45°A45 C90, затем A−45 C−90B−45 C0, затем B45 C180
(1, 0, 0), +X граньA90 C90, затем A−90 C−90B−90 C0, затем B90 C180
(0, −1, 0), лицевая сторонаA90 C180, затем A−90 C0B−90 C90, затем B90 C−90
(0, 0, −1), нижняя сторонанет (пустой массив)нет (пустой массив)

Нижняя сторона требует наклона на 180°, за пределами пределов по умолчанию, поэтому список пуст и indexToolpath выдает "Поворотные оси станка не могут достичь этой рабочей плоскости в своих пределах". Вместо этого обработайте нижнюю сторону во второй установке.

Где находится начало координат кадра после индексации
const [angles] = cam.anglesFor({ x: 1, y: 0, z: 1 }, "table-BC")   // { b: -45, c: 0 }
cam.partToMachine({ x: 40, y: 0, z: 10 }, angles, "table-BC", { x: 0, y: 0, z: 0 })
// (21.213, 0, 35.355): the origin rotated -45° about Y around the pivot

Сообщения проверки настройки

Все не так сразу
cam.validateSetup({
  id: "", revision: -1, frame,
  stock: { min: { x: 0, y: 0, z: 0 }, max: { x: 0, y: 10, z: 10 } },
  fixtures: [],
  tools: [{ toolId: "t", cuttingDiameter: 6, cuttingLength: 30, stickout: 20,
            holderDiameter: 32, holderLength: 40 }],
})
полесообщение
idНеобходимо указать идентификатор установки.
revisionВерсия установки должна быть неотрицательным безопасным целым числом.
stockКонверт должен иметь конечные координаты и положительный объем.
tools.tДлина резки не должна превышать вылет

Проблемы возвращаются, а не выбрасываются, и все они сообщаются за один проход, поэтому форма может отметить все плохие поля вместе.