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

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

Жизненный цикл проекта

Создайте проект, сохраните его проектные данные, снова откройте его и выберите правильный тип истории.

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

Что содержит проект

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

Создать и открыть чертеж

Создайте пустой документ редактора и сохраните его идентификатор.
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 выбирает самый новый чертеж проекта; именованный рисунок имеет приоритет.

Для создания чертежа требуется доступ к проекту и имя. Для чтения/обновления отдельного чертежа требуется владелец проекта или член организации; при удалении добавляется проверка владельца/организации-АДМИН. JSON data не проверяется как полный документ геометрии с возможностью рисования по универсальной конечной точке. Таким образом, успешная запись не доказывает, что каждый предоставленный элемент может быть отображен.

Сохраняйте, дублируйте и экспортируйте проектные данные.

В уже открытом сохраненном чертеже действие сохранения САПР обновляет этот чертеж и добавляет в проект недостающие компоненты локальной библиотеки. Страница САПР реализует свой собственный Cmd/Ctrl+S обработчик. Документ без сохраненного места назначения открывает поток экспорта/сохранения; Для команды «Сохранить как проект» требуется геометрия или выбранный элемент, и создается новый проект и чертеж.

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

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

Из карты рисования Duplate загружает сохраненные данные и создает новый идентификатор. Загрузка экспортирует данные этого рисунка в формате JSON; он не экспортирует весь проект. Общие обновления чертежей применяют правдивые значения имени/данных/миниатюр и допускают явное нулевое описание. Они не раскрывают хэш-параметр сравнения и замены репозитория.

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

Создайте компонент, а затем проверьте его повторно используемые данные при обновлении.
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. Текущая операция создания репозитория сохраняет имя, описание, данные и ассоциацию проекта; он не сохраняет параметры типа/общедоступности/миниатюр верхнего уровня при создании. Явное обновление выше устанавливает предполагаемый тип и видимость верхнего уровня. Обновление проверяет достоверность данных компонента, нормализует отсутствующие необязательные поля и отклоняет пустое исправление.

Открыть /components/:id для подробного экрана или просмотра /components с фильтром проекта. В настоящее время видимость включает владельцев проектов, участников организации и общедоступные компоненты. Обработчики компонентов не предусматривают дополнительный шлюз только для владельца для редактирования/удаления видимых компонентов; не рассматривайте общедоступную видимость как защищенную общую папку, доступную только для чтения.

Подготовьте ресурсы для обработки

Экраны ресурсов /materials, /tools, и /machine, с индивидуальными подробностями маршрутов. Материалам требуется имя и значение свойств. Для инструментов требуется имя, тип, ненулевой диаметр и материал. Пользовательский интерфейс предоставляет ограничения положительного диаметра, но интеграция должна явно проверять технические размеры, а не полагаться на проверки достоверности.

Пример корпуса фрезы для POST /api/tools
{
  "name": "6 mm end mill",
  "type": "endmill",
  "diameter": 6,
  "material": "carbide",
  "numberOfFlutes": 3,
  "cuttingLength": 18,
  "shankDiameter": 6,
  "isPublic": false
}

Конфигурация машины требует типа mill, lathe, printer, или laser; положительные размеры рабочего объема, максимальная скорость шпинделя и максимальная скорость подачи; и дополнительные данные контроллера/осей. Для четырех/пятиосных конфигураций требуется совместимая поворотная конфигурация, проверенная оператором. Эти записи описывают оборудование; их существование не подтверждает конкретную сгенерированную программу.

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

Сохраните и снова откройте программу CAM.

Траекторию инструмента можно создать в проекте с помощью POST /api/toolpaths используя имя и идентификатор проекта, или прикрепив его к рисунку с помощью POST /api/drawings/:id/toolpaths используя имя и данные. Панель мониторинга проекта использует семейство верхнего уровня и открывает результат через /cam?loadToolpath=<id>. Страница CAM считывает сохраненный оригинал через API.

Модальное окно сохранения CAM предлагает существующий проект, новый проект или обновление сохраненной программы. Экспорт G-кода загружает текст. Портативные экспортные загрузки .cam.json с format: cadcamfun-cam, настройки, программа, материал, контекст чертежа и соответствующие доказательства, если таковые имеются. При сохранении приложения этот документ сохраняется в записи траектории инструмента.

Переносимые документы проверяются и сопоставляются с их 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 недавних соответствующих событий.

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

  1. Считайте созданный проект, чертеж и компонент через конечные точки их идентификаторов.
  2. Откройте соответствующие маршруты рабочего стола и подтвердите фактическое содержимое проекта/программы.
  3. Перезапустите тот же каталог дополнительных данных, обновите временный URL-адрес и повторите чтение.
  4. Загрузите экспорт отдельно и проверьте его поля; строка базы данных не доказывает, что файл был экспортирован.

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/projectsname (требуется обработчику), description, organizationId, isPublic
Создать рисунокPOST /api/projects/{id}/drawingsname, description, data, thumbnail
Обновить чертежPUT /api/drawings/{id}те же поля, частично
Создать траекторию инструментаPOST /api/drawings/{id}/toolpathsname, data, gcode, type, operationType, materialId, toolId, machineConfigId, …
СовершитьPOST /api/projects/{id}/vcs/commitmessage (необходимый), authorKind, files
ВетвьPOST /api/projects/{id}/vcs/branchesname (необходимый), from
ВосстановитьPOST /api/projects/{id}/vcs/restorerev (необходимый), paths

Запускаем новый сайдкар, коммит отвечает новым объектом коммита, и в журнале он указывается:

vcs/коммит ответ
{"oid":"44d2d03d23b27fbbc4b388e32e15dfb0f39fff87","parents":[],"message":"First version\n","author":{"name":"Local user","email":"local@cadcamfun.local","time":1792037121}}

Без заголовка сеанса автором является локальный профиль установки. В рецепте используется jq. Траектория произвольной формы data принимается как есть; портативный cadcamfun-cam документ проходит строгую проверку, как описано в руководстве по производству.

Через 3Д

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