83 Commits

Author SHA1 Message Date
4f4e3def35 Merge pull request 'dev' (#7) from dev into int
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m13s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 8s
Reviewed-on: #7
2026-02-12 15:26:38 +01:00
bb151ae835 feat(web): calculator improvements
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m12s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-12 14:49:23 +01:00
7ebaff322c feat(web): improvements in routes for calculator
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m12s
Build, Test and Deploy / build-and-push (push) Successful in 22s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-12 12:44:12 +01:00
e17da96c22 fix(web): enrivoments
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m18s
Build, Test and Deploy / build-and-push (push) Successful in 26s
Build, Test and Deploy / deploy (push) Successful in 7s
2026-02-12 12:19:59 +01:00
3e9745c7cc feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m20s
Build, Test and Deploy / build-and-push (push) Successful in 17s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-12 12:07:16 +01:00
3da3e6c60c feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m17s
Build, Test and Deploy / build-and-push (push) Successful in 18s
Build, Test and Deploy / deploy (push) Successful in 7s
2026-02-12 11:56:31 +01:00
85b823d614 feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m13s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-11 16:25:20 +01:00
d20d12c1f4 feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m12s
Build, Test and Deploy / build-and-push (push) Successful in 13s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-11 16:19:31 +01:00
ab5f6a609d feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m12s
Build, Test and Deploy / build-and-push (push) Successful in 15s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-11 16:14:00 +01:00
5ba203a8d1 feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m13s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-11 16:04:06 +01:00
3ca3f8e466 feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m13s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-11 15:54:06 +01:00
5620f6a8eb feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m11s
Build, Test and Deploy / build-and-push (push) Successful in 13s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-11 15:50:09 +01:00
1583ff479c feat(deploy): compose deploy fixed
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m12s
Build, Test and Deploy / build-and-push (push) Successful in 13s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-11 15:46:06 +01:00
b7d81040e6 feat(deploy): fix deploy ports
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 1m14s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-11 15:27:09 +01:00
b249cf2000 feat(deploy): fix deploy ports
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 1m12s
Build, Test and Deploy / build-and-push (push) Successful in 15s
Build, Test and Deploy / deploy (push) Failing after 3s
2026-02-11 15:21:41 +01:00
dfc27da142 feat(deploy): added cache Gradle step for faster deploy
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 1m40s
Build, Test and Deploy / build-and-push (push) Successful in 13s
Build, Test and Deploy / deploy (push) Failing after 3s
2026-02-11 15:10:03 +01:00
dde92af857 fix(deploy): fix regex
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 25s
Build, Test and Deploy / build-and-push (push) Successful in 35s
Build, Test and Deploy / deploy (push) Failing after 3s
2026-02-11 15:08:25 +01:00
7b92e63a49 fix(deploy): fix cicd.yaml printf fixed
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 25s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-11 15:03:07 +01:00
8fac8ac892 feat(back-end): db connections implemented and created users 2026-02-11 14:53:46 +01:00
e5183590c5 feat(back-end): db connections and other stuff
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 26s
Build, Test and Deploy / build-and-push (push) Successful in 15s
Build, Test and Deploy / deploy (push) Successful in 3s
2026-02-10 19:07:37 +01:00
a219825b28 Merge pull request 'dev' (#6) from dev into int
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 32s
Build, Test and Deploy / build-and-push (push) Successful in 15s
Build, Test and Deploy / deploy (push) Successful in 4s
Reviewed-on: #6
2026-02-10 19:05:40 +01:00
3b4ef37e58 feat(web): * for reaquired field
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 43s
Build, Test and Deploy / build-and-push (push) Successful in 49s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-09 19:29:14 +01:00
eb4ad8b637 feat(web): * for reaquired field
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 22s
Build, Test and Deploy / build-and-push (push) Successful in 37s
Build, Test and Deploy / deploy (push) Successful in 9s
2026-02-09 18:55:38 +01:00
f0e0f57e7c feat(web): multiple feature
Some checks failed
Build, Test and Deploy / build-and-push (push) Has been cancelled
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / deploy (push) Has been cancelled
2026-02-09 18:54:06 +01:00
150563a8f5 Merge pull request 'dev' (#5) from dev into int
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 24s
Build, Test and Deploy / deploy (push) Successful in 5s
Build, Test and Deploy / build-and-push (push) Successful in 15s
Reviewed-on: #5
2026-02-09 18:43:43 +01:00
05e1c224f0 feat(web): success comnponent
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 26s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-09 18:07:29 +01:00
f1636d9057 feat(web): success message contact us
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 26s
Build, Test and Deploy / build-and-push (push) Successful in 27s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-09 17:59:51 +01:00
44d99b0a68 feat(web): new step for user details
Some checks failed
Build, Test and Deploy / test-backend (push) Has been cancelled
Build, Test and Deploy / build-and-push (push) Has been cancelled
Build, Test and Deploy / deploy (push) Has been cancelled
2026-02-09 17:53:43 +01:00
83b3008234 feat(web): new step for user details 2026-02-09 17:52:34 +01:00
78af87ac3c feat(web): new step for user details
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 25s
Build, Test and Deploy / build-and-push (push) Failing after 21s
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-09 17:49:36 +01:00
b3c0413b7c feat(web): improvements in home and about us
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 1m55s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-09 17:38:02 +01:00
4f301b1652 feat(web): update quality print advanced and base
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 29s
Build, Test and Deploy / build-and-push (push) Successful in 23s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-09 16:06:19 +01:00
debf153f58 feat(web): update quality print advanced and base
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 22s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-06 13:58:23 +01:00
f3d271ded2 feat(web): update color selector
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 21s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-06 13:40:44 +01:00
13790f2055 feat(web): update color selector
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 27s
Build, Test and Deploy / build-and-push (push) Successful in 24s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-06 13:25:41 +01:00
bcdeafe119 chore(web): refractor
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / build-and-push (push) Successful in 22s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-06 11:33:25 +01:00
7978884ca6 feat(front-end): fix advanced view
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / build-and-push (push) Successful in 22s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-06 11:18:57 +01:00
cb7b44073c feat(front-end): responsive layout
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 31s
Build, Test and Deploy / build-and-push (push) Successful in 1m40s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-06 11:09:46 +01:00
99ae6db064 feat(front-end): multiple file upload
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 22s
Build, Test and Deploy / build-and-push (push) Successful in 20s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-05 17:21:52 +01:00
fcf439e369 feat(front-end): multiple file upload
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 22s
Build, Test and Deploy / build-and-push (push) Successful in 20s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-05 17:14:26 +01:00
cecdfacd33 feat(front-end): multiple file upload
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / deploy (push) Has been cancelled
Build, Test and Deploy / build-and-push (push) Has been cancelled
2026-02-05 17:13:56 +01:00
5bc698815c fix(back-end): update profile inheritance
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 21s
Build, Test and Deploy / build-and-push (push) Failing after 19s
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-05 17:12:18 +01:00
53e141f8ad Merge pull request 'dev' (#3) from dev into int
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 21s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 5s
Reviewed-on: #3
2026-02-05 15:30:04 +01:00
73ccf8f4de feat(web): fix col
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-05 15:08:58 +01:00
0b4daed512 feat(web) improvements in ui for calculator
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 22s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-05 15:03:18 +01:00
8a7d736aa9 feat(web) improvements in ui for calculator
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / build-and-push (push) Successful in 23s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-05 14:57:32 +01:00
ce179cac62 feat(web) linked calculator and contact form
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 27s
Build, Test and Deploy / build-and-push (push) Successful in 24s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-05 11:42:48 +01:00
ab7b95a3d7 feat(web) improvments in calculation page
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 29s
Build, Test and Deploy / build-and-push (push) Successful in 37s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-05 09:44:54 +01:00
da8e476485 fix(web): traslation error
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 21s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 7s
2026-02-04 16:31:38 +01:00
810d5f6c0c feat(web): entire site responsive
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 22s
Build, Test and Deploy / build-and-push (push) Successful in 20s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-04 16:22:26 +01:00
8a75aed6d8 feat(web): entire site responsive
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-04 16:18:37 +01:00
a0efdc105d feat(web) about page
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 25s
Build, Test and Deploy / build-and-push (push) Successful in 22s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-04 15:58:37 +01:00
422d80a4d4 fix(deploy): fixed deploy for gradle.
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 26s
Build, Test and Deploy / build-and-push (push) Successful in 1m11s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-04 15:35:36 +01:00
db4df2573c fix(deploy): fixed deploy for gradle.
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 3s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-04 15:33:28 +01:00
2f7e8798d2 feat(front-end): contact form and about separated
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 17s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-04 15:17:29 +01:00
d816eeda1d chore: back-end remove mvn for gradle
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 25s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-04 14:47:32 +01:00
af5b40021d feat(web): separated html and scss from ts
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 44s
Build, Test and Deploy / build-and-push (push) Successful in 22s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-02 20:59:50 +01:00
653186e9d3 feat(web): add enhanced grid
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 27s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-02 20:33:20 +01:00
c6ec937ea0 fix back-end
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 26s
Build, Test and Deploy / build-and-push (push) Successful in 1m28s
Build, Test and Deploy / deploy (push) Successful in 6s
2026-02-02 19:47:20 +01:00
3aa644e9ee fix back-end
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 4s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-02 19:46:11 +01:00
21cf8891b2 feat(web): fix port
Some checks failed
Build, Test and Deploy / build-and-push (push) Has been cancelled
Build, Test and Deploy / deploy (push) Has been cancelled
Build, Test and Deploy / test-backend (push) Has been cancelled
2026-02-02 19:44:08 +01:00
ceeb831a41 feat(web): java from python
Some checks failed
Build, Test and Deploy / build-and-push (push) Has been cancelled
Build, Test and Deploy / deploy (push) Has been cancelled
Build, Test and Deploy / test-backend (push) Has been cancelled
2026-02-02 19:40:58 +01:00
316c74e299 feat(web): removed component in hero panel
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-02 18:56:47 +01:00
a5ff515fd7 feat(web): add auth for dev enviroment
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 21s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-02 18:48:06 +01:00
6952090865 feat(web): add auth for dev enviroment 2026-02-02 18:45:22 +01:00
10e1fb49f4 feat(web): new style and calculator revisited
All checks were successful
Build, Test and Deploy / deploy (push) Successful in 4s
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 20s
2026-02-02 18:41:18 +01:00
32b9b2ef8d feat(web): new style and calculator revisited
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 14s
Build, Test and Deploy / build-and-push (push) Failing after 20s
Build, Test and Deploy / deploy (push) Has been skipped
2026-02-02 18:38:25 +01:00
0a538b0d88 feat(web): home component
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 20s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-02-02 17:41:20 +01:00
2c658d00c1 feat(web): vibe coding pazzo
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 13s
Build, Test and Deploy / build-and-push (push) Successful in 28s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-02-02 17:38:03 +01:00
5a2da916fa fix(web) fix api/api in enviroment
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 19s
Build, Test and Deploy / build-and-push (push) Successful in 16s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-01-31 17:51:10 +01:00
82d1cf2c71 feat(web) back-end routing
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 15s
Build, Test and Deploy / build-and-push (push) Successful in 23s
Build, Test and Deploy / deploy (push) Successful in 4s
2026-01-31 17:46:35 +01:00
85d7315e30 feat(web) back-end routing
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 15s
Build, Test and Deploy / build-and-push (push) Successful in 26s
Build, Test and Deploy / deploy (push) Successful in 5s
2026-01-31 17:41:47 +01:00
179ba2b85c fix: cicdl.yaml
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 18s
Build, Test and Deploy / build-and-push (push) Successful in 19s
Build, Test and Deploy / deploy (push) Successful in 18s
2026-01-29 23:09:38 +01:00
ac8135aec8 fix: cicdl.yaml
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 13s
Build, Test and Deploy / deploy (push) Failing after 3s
2026-01-29 22:28:09 +01:00
74f040fa50 fix: cicdl.yaml
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 14s
Build, Test and Deploy / deploy (push) Failing after 3s
2026-01-29 22:07:53 +01:00
73fa36f9ec fix: cicdl.yaml
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 12s
Build, Test and Deploy / build-and-push (push) Successful in 2m46s
Build, Test and Deploy / deploy (push) Failing after 3s
2026-01-29 21:48:32 +01:00
7fafabad42 fix: ubuntu runner
Some checks failed
Build, Test and Deploy / test-backend (push) Successful in 13s
Build, Test and Deploy / build-and-push (push) Failing after 11s
Build, Test and Deploy / deploy (push) Has been skipped
2026-01-29 19:33:57 +01:00
465678f3e4 Merge pull request 'feat/parameters' (#1) from feat/parameters into main
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 4s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
Reviewed-on: #1
2026-01-29 17:23:37 +01:00
967c68fa52 chore: remove all .DS_Store files and ignore them in .gitignore 2026-01-29 16:51:43 +01:00
6715d1f75e feat: setup CI/CD with Gitea Actions for dev, int, and prod environments 2026-01-29 16:47:18 +01:00
c365b4fa6b feat(): new feature 2026-01-29 15:59:08 +01:00
e9cca3daeb feat(orca): added orcaslicer preset 2026-01-28 14:30:04 +01:00
443ff04430 feat(web + backend): advanced and simple quote. 2026-01-27 23:38:47 +01:00
8729 changed files with 464024 additions and 856 deletions

180
.gitea/workflows/cicd.yaml Normal file
View File

@@ -0,0 +1,180 @@
name: Build, Test and Deploy
on:
push:
branches: [main, int, dev]
concurrency:
group: print-calculator-${{ gitea.ref }}
cancel-in-progress: true
jobs:
test-backend:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('backend/gradle/wrapper/gradle-wrapper.properties', 'backend/**/*.gradle*', 'backend/gradle.properties') }}
restore-keys: |
gradle-${{ runner.os }}-
- name: Run Tests with Gradle
run: |
cd backend
chmod +x gradlew
./gradlew test
build-and-push:
needs: test-backend
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set TAG + OWNER lowercase
shell: bash
run: |
if [[ "${{ gitea.ref }}" == "refs/heads/main" ]]; then
echo "TAG=prod" >> "$GITHUB_ENV"
elif [[ "${{ gitea.ref }}" == "refs/heads/int" ]]; then
echo "TAG=int" >> "$GITHUB_ENV"
else
echo "TAG=dev" >> "$GITHUB_ENV"
fi
echo "OWNER_LOWER=$(echo '${{ gitea.repository_owner }}' | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Ensure docker CLI exists
shell: bash
run: |
if ! command -v docker >/dev/null 2>&1; then
apt-get update
apt-get install -y --no-install-recommends docker.io
fi
docker version
- name: Login to Gitea Registry
shell: bash
run: |
set -euo pipefail
printf '%s' "${{ secrets.REGISTRY_TOKEN }}" | docker login "${{ secrets.REGISTRY_URL }}" \
-u "${{ secrets.REGISTRY_USER }}" --password-stdin
- name: Build & Push Backend
shell: bash
run: |
BACKEND_IMAGE="${{ secrets.REGISTRY_URL }}/${{ env.OWNER_LOWER }}/print-calculator-backend:${{ env.TAG }}"
docker build -t "$BACKEND_IMAGE" ./backend
docker push "$BACKEND_IMAGE"
- name: Build & Push Frontend
shell: bash
run: |
FRONTEND_IMAGE="${{ secrets.REGISTRY_URL }}/${{ env.OWNER_LOWER }}/print-calculator-frontend:${{ env.TAG }}"
docker build -t "$FRONTEND_IMAGE" ./frontend
docker push "$FRONTEND_IMAGE"
deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set ENV
shell: bash
run: |
if [[ "${{ gitea.ref }}" == "refs/heads/main" ]]; then
echo "ENV=prod" >> "$GITHUB_ENV"
elif [[ "${{ gitea.ref }}" == "refs/heads/int" ]]; then
echo "ENV=int" >> "$GITHUB_ENV"
else
echo "ENV=dev" >> "$GITHUB_ENV"
fi
- name: Setup SSH key
shell: bash
run: |
set -euo pipefail
apt-get update
apt-get install -y --no-install-recommends openssh-client
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 1) Prende il secret base64 e rimuove spazi/newline/CR
printf '%s' "${{ secrets.SSH_PRIVATE_KEY_B64 }}" | tr -d '\r\n\t ' > /tmp/key.b64
# 2) (debug sicuro) stampa solo la lunghezza della base64
echo "b64_len=$(wc -c < /tmp/key.b64)"
# 3) Decodifica in chiave privata
base64 -d /tmp/key.b64 > ~/.ssh/id_ed25519
# 4) Rimuove eventuali CRLF dentro la chiave (se proviene da Windows)
tr -d '\r' < ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.clean
mv ~/.ssh/id_ed25519.clean ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
# 5) Validazione: se fallisce qui, la chiave NON è valida/corrotta
ssh-keygen -y -f ~/.ssh/id_ed25519 >/dev/null
ssh-keyscan -H "${{ secrets.SERVER_HOST }}" >> ~/.ssh/known_hosts 2>/dev/null
- name: Write env to server
shell: bash
run: |
# 1. Start with the static env file content
cat "deploy/envs/${{ env.ENV }}.env" > /tmp/full_env.env
# 2. Determine DB credentials
if [[ "${{ env.ENV }}" == "prod" ]]; then
DB_URL="${{ secrets.DB_URL_PROD }}"
DB_USER="${{ secrets.DB_USERNAME_PROD }}"
DB_PASS="${{ secrets.DB_PASSWORD_PROD }}"
elif [[ "${{ env.ENV }}" == "int" ]]; then
DB_URL="${{ secrets.DB_URL_INT }}"
DB_USER="${{ secrets.DB_USERNAME_INT }}"
DB_PASS="${{ secrets.DB_PASSWORD_INT }}"
else
DB_URL="${{ secrets.DB_URL_DEV }}"
DB_USER="${{ secrets.DB_USERNAME_DEV }}"
DB_PASS="${{ secrets.DB_PASSWORD_DEV }}"
fi
# 3. Append DB credentials
printf '\nDB_URL=%s\nDB_USERNAME=%s\nDB_PASSWORD=%s\n' \
"$DB_URL" "$DB_USER" "$DB_PASS" >> /tmp/full_env.env
# 4. Debug: print content (for debug purposes)
echo "Preparing to send env file with variables:"
grep -v "PASSWORD" /tmp/full_env.env || true
# 5. Send to server
ssh -i ~/.ssh/id_ed25519 -o BatchMode=yes "${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}" \
"setenv ${{ env.ENV }}" < /tmp/full_env.env
- name: Trigger deploy on Unraid (forced command key)
shell: bash
run: |
set -euo pipefail
# Aggiungiamo le opzioni di verbosità se dovesse fallire ancora,
# e assicuriamoci che l'input sia pulito
ssh -i ~/.ssh/id_ed25519 -o BatchMode=yes "${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}" "deploy ${{ env.ENV }}"

17
.gitignore vendored
View File

@@ -24,3 +24,20 @@ hs_err_pid*
replay_pid*
/frontend/.vscode/
/backend/venv/
# IDEs and editors
.idea/
*.iml
.vscode/
.vs/
.fleet/
.project
.classpath
.settings/
.DS_Store
# Build Results
target/
build/
.gradle/
.mvn/

42
GEMINI.md Normal file
View File

@@ -0,0 +1,42 @@
# GEMINI Project Context
Questo file serve a dare contesto all'AI (Antigravity/Gemini) sulla struttura e logica del progetto.
## Project Overview
**Nome**: Print Calculator
**Scopo**: Calcolare costi e tempi di stampa 3D da file STL.
**Stack**:
- **Backend**: Python (FastAPI), libreria `trimesh` per analisi geometrica.
- **Frontend**: Angular 19 (TypeScript).
## Architecture
### Backend (`/backend`)
- **`main.py`**: Entrypoint dell'applicazione FastAPI.
- Definisce l'API `POST /calculate/stl`.
- Gestisce l'upload del file, invoca lo slicer e restituisce il preventivo.
- Configura CORS per permettere chiamate dal frontend.
- **`slicer.py`**: Wrappa l'eseguibile di **OrcaSlicer** per effettuare lo slicing reale del modello.
- Gestisce i profili di stampa (Macchina, Processo, Filamento).
- Crea configurazioni on-the-fly per supportare mesh di grandi dimensioni.
- **`calculator.py`**: Analizza il G-Code generato.
- `GCodeParser`: Estrae tempo di stampa e materiale usato dai metadati del G-Code.
- `QuoteCalculator`: Applica i costi (orari, energia, materiale) per generare il prezzo finale.
### Frontend (`/frontend`)
- Applicazione Angular standard.
- Usa Angular Material.
- Service per upload STL e visualizzazione preventivo.
## Key Concepts
- **Real Slicing**: Il backend esegue un vero slicing usando OrcaSlicer in modalità headless. Questo garantisce stime di tempo e materiale estremamente precise, identiche a quelle che si otterrebbero preparando il file per la stampa.
- **G-Code Parsing**: Invece di stimare geometricamente, l'applicazione legge direttamene i commenti generati dallo slicer nel G-Code (es. `estimated printing time`, `filament used`).
## Development Notes
- Per eseguire il backend serve `uvicorn`.
- Il frontend richiede `npm install` al primo avvio.
- Le configurazioni di stampa (layer height, wall thickness, infill) sono attualmente hardcoded o con valori di default nel backend, ma potrebbero essere esposte come parametri API in futuro.
## AI Agent Rules
- **No Inline Code**: Tutti i componenti Angular DEVONO usare file separati per HTML (`templateUrl`) e SCSS (`styleUrl`). È vietato usare `template` o `styles` inline nel decoratore `@Component`.

View File

@@ -1,10 +0,0 @@
.PHONY: install s
install:
@echo "Installing Backend dependencies..."
cd backend && pip install -r requirements.txt || pip install fastapi uvicorn trimesh python-multipart numpy
@echo "Installing Frontend dependencies..."
cd frontend && npm install
start:
@echo "Starting development environment..."
./start.sh

54
backend/.gitignore vendored Normal file
View File

@@ -0,0 +1,54 @@
/target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
target
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbproject/public/
/nbproject/project.properties
/nbproject/project.xml
### VS Code ###
.vscode/
### Gradle ###
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### Java ###
*.class
*.log
*.ctxt
.mtj.tmp/
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
### Spring Boot ###
HELP.md
!gradle/wrapper/gradle-wrapper.jar

View File

@@ -1,6 +1,17 @@
FROM --platform=linux/amd64 python:3.10-slim-bookworm
# Stage 1: Build Java JAR
FROM eclipse-temurin:21-jdk-jammy AS build
WORKDIR /app
COPY gradle gradle
COPY gradlew build.gradle settings.gradle ./
# Download dependencies first to cache them
RUN ./gradlew dependencies --no-daemon
COPY src ./src
RUN ./gradlew bootJar -x test --no-daemon
# Install system dependencies for OrcaSlicer (AppImage)
# Stage 2: Runtime Environment
FROM eclipse-temurin:21-jre-jammy
# Install system dependencies for OrcaSlicer (same as before)
RUN apt-get update && apt-get install -y \
wget \
p7zip-full \
@@ -8,36 +19,28 @@ RUN apt-get update && apt-get install -y \
libglib2.0-0 \
libgtk-3-0 \
libdbus-1-3 \
libwebkit2gtk-4.1-0 \
libwebkit2gtk-4.0-37 \
&& rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /app
# Download and extract OrcaSlicer
# Using v2.2.0 as a stable recent release
# We extract the AppImage to run it without FUSE
# Install OrcaSlicer
WORKDIR /opt
RUN wget -q https://github.com/SoftFever/OrcaSlicer/releases/download/v2.2.0/OrcaSlicer_Linux_V2.2.0.AppImage -O OrcaSlicer.AppImage \
&& 7z x OrcaSlicer.AppImage -o/opt/orcaslicer \
&& chmod -R +x /opt/orcaslicer \
&& rm OrcaSlicer.AppImage
# Add OrcaSlicer to PATH
ENV PATH="/opt/orcaslicer/usr/bin:${PATH}"
# Set Slicer Path env variable for Java app
ENV SLICER_PATH="/opt/orcaslicer/AppRun"
# Install Python dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
WORKDIR /app
# Copy JAR from build stage
COPY --from=build /app/build/libs/*.jar app.jar
# Copy profiles
COPY profiles ./profiles
# Create directories for app and temp files
RUN mkdir -p /app/temp /app/profiles
EXPOSE 8080
# Copy application code
COPY . .
# Expose port
EXPOSE 8000
# Run the application
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
COPY entrypoint.sh .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

44
backend/build.gradle Normal file
View File

@@ -0,0 +1,44 @@
plugins {
id 'java'
id 'application'
id 'org.springframework.boot' version '3.4.1'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.printcalculator'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
application {
mainClass = 'com.printcalculator.BackendApplication'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.postgresql:postgresql'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
tasks.named('bootRun') {
args = ["--spring.profiles.active=local"]
}
application {
applicationDefaultJvmArgs = ["-Dspring.profiles.active=local"]
}

View File

@@ -1,150 +0,0 @@
import re
import os
import logging
from typing import Dict, Any, Optional
from config import settings
logger = logging.getLogger(__name__)
class GCodeParser:
@staticmethod
def parse_metadata(gcode_path: str) -> Dict[str, Any]:
"""
Parses the G-code to extract estimated time and material usage.
Scans both the beginning (header) and end (footer) of the file.
"""
stats = {
"print_time_seconds": 0,
"filament_length_mm": 0,
"filament_volume_mm3": 0,
"filament_weight_g": 0,
"slicer_estimated_cost": 0
}
if not os.path.exists(gcode_path):
logger.warning(f"GCode file not found for parsing: {gcode_path}")
return stats
try:
with open(gcode_path, 'r', encoding='utf-8', errors='ignore') as f:
# Read header (first 500 lines)
header_lines = [f.readline().strip() for _ in range(500) if f]
# Read footer (last 20KB)
f.seek(0, 2)
file_size = f.tell()
read_len = min(file_size, 20480)
f.seek(file_size - read_len)
footer_lines = f.read().splitlines()
all_lines = header_lines + footer_lines
for line in all_lines:
line = line.strip()
if not line.startswith(";"):
continue
GCodeParser._parse_line(line, stats)
# Fallback calculation
if stats["filament_weight_g"] == 0 and stats["filament_length_mm"] > 0:
GCodeParser._calculate_weight_fallback(stats)
except Exception as e:
logger.error(f"Error parsing G-code: {e}")
return stats
@staticmethod
def _parse_line(line: str, stats: Dict[str, Any]):
# Parse Time
if "estimated printing time =" in line: # Header
time_str = line.split("=")[1].strip()
stats["print_time_seconds"] = GCodeParser._parse_time_string(time_str)
elif "total estimated time:" in line: # Footer
parts = line.split("total estimated time:")
if len(parts) > 1:
stats["print_time_seconds"] = GCodeParser._parse_time_string(parts[1].strip())
# Parse Filament info
if "filament used [g] =" in line:
try:
stats["filament_weight_g"] = float(line.split("=")[1].strip())
except ValueError: pass
if "filament used [mm] =" in line:
try:
stats["filament_length_mm"] = float(line.split("=")[1].strip())
except ValueError: pass
if "filament used [cm3] =" in line:
try:
# cm3 to mm3
stats["filament_volume_mm3"] = float(line.split("=")[1].strip()) * 1000
except ValueError: pass
@staticmethod
def _calculate_weight_fallback(stats: Dict[str, Any]):
# Assumes 1.75mm diameter and PLA density 1.24
radius = 1.75 / 2
volume_mm3 = 3.14159 * (radius ** 2) * stats["filament_length_mm"]
volume_cm3 = volume_mm3 / 1000.0
stats["filament_weight_g"] = volume_cm3 * 1.24
@staticmethod
def _parse_time_string(time_str: str) -> int:
"""
Converts '1d 2h 3m 4s' to seconds.
"""
total_seconds = 0
days = re.search(r'(\d+)d', time_str)
hours = re.search(r'(\d+)h', time_str)
mins = re.search(r'(\d+)m', time_str)
secs = re.search(r'(\d+)s', time_str)
if days: total_seconds += int(days.group(1)) * 86400
if hours: total_seconds += int(hours.group(1)) * 3600
if mins: total_seconds += int(mins.group(1)) * 60
if secs: total_seconds += int(secs.group(1))
return total_seconds
class QuoteCalculator:
@staticmethod
def calculate(stats: Dict[str, Any]) -> Dict[str, Any]:
"""
Calculates the final quote based on parsed stats and settings.
"""
# 1. Material Cost
# Cost per gram = (Cost per kg / 1000)
material_cost = (stats["filament_weight_g"] / 1000.0) * settings.FILAMENT_COST_PER_KG
# 2. Machine Time Cost
# Cost per second = (Cost per hour / 3600)
print_time_hours = stats["print_time_seconds"] / 3600.0
machine_cost = print_time_hours * settings.MACHINE_COST_PER_HOUR
# 3. Energy Cost
# kWh = (Watts / 1000) * hours
kwh_used = (settings.PRINTER_POWER_WATTS / 1000.0) * print_time_hours
energy_cost = kwh_used * settings.ENERGY_COST_PER_KWH
# Subtotal
subtotal = material_cost + machine_cost + energy_cost
# 4. Markup
markup_factor = 1.0 + (settings.MARKUP_PERCENT / 100.0)
total_price = subtotal * markup_factor
return {
"breakdown": {
"material_cost": round(material_cost, 2),
"machine_cost": round(machine_cost, 2),
"energy_cost": round(energy_cost, 2),
"subtotal": round(subtotal, 2),
"markup_amount": round(total_price - subtotal, 2)
},
"total_price": round(total_price, 2),
"currency": "EUR"
}

View File

@@ -1,25 +0,0 @@
import os
class Settings:
# Directories
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
TEMP_DIR = os.environ.get("TEMP_DIR", os.path.join(BASE_DIR, "temp"))
PROFILES_DIR = os.environ.get("PROFILES_DIR", os.path.join(BASE_DIR, "profiles"))
# Slicer Paths
SLICER_PATH = os.environ.get("SLICER_PATH", "/opt/orcaslicer/AppRun")
ORCA_HOME = os.environ.get("ORCA_HOME", "/opt/orcaslicer")
# Defaults Profiles (Bambu A1)
MACHINE_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json")
PROCESS_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/process/0.20mm Standard @BBL A1.json")
FILAMENT_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/filament/Generic PLA @BBL A1.json")
# Pricing
FILAMENT_COST_PER_KG = float(os.environ.get("FILAMENT_COST_PER_KG", 25.0))
MACHINE_COST_PER_HOUR = float(os.environ.get("MACHINE_COST_PER_HOUR", 2.0))
ENERGY_COST_PER_KWH = float(os.environ.get("ENERGY_COST_PER_KWH", 0.30))
PRINTER_POWER_WATTS = float(os.environ.get("PRINTER_POWER_WATTS", 150.0))
MARKUP_PERCENT = float(os.environ.get("MARKUP_PERCENT", 20.0))
settings = Settings()

15
backend/entrypoint.sh Normal file
View File

@@ -0,0 +1,15 @@
#!/bin/sh
echo "----------------------------------------------------------------"
echo "Starting Backend Application"
echo "DB_URL: $DB_URL"
echo "DB_USERNAME: $DB_USERNAME"
echo "SLICER_PATH: $SLICER_PATH"
echo "--- ALL ENV VARS ---"
env
echo "----------------------------------------------------------------"
# Exec java with explicit properties from env
exec java -jar app.jar \
--spring.datasource.url="${DB_URL}" \
--spring.datasource.username="${DB_USERNAME}" \
--spring.datasource.password="${DB_PASSWORD}"

Binary file not shown.

View File

@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

248
backend/gradlew vendored Executable file
View File

@@ -0,0 +1,248 @@
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

93
backend/gradlew.bat vendored Normal file
View File

@@ -0,0 +1,93 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@@ -1,112 +0,0 @@
import os
import shutil
import uuid
import logging
from fastapi import FastAPI, UploadFile, File, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
# Import custom modules
from config import settings
from slicer import slicer_service
from calculator import GCodeParser, QuoteCalculator
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("api")
app = FastAPI(title="Print Calculator API")
# CORS Setup
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Ensure directories exist
os.makedirs(settings.TEMP_DIR, exist_ok=True)
class QuoteResponse(BaseModel):
printer: str
print_time_seconds: int
print_time_formatted: str
material_grams: float
cost: dict
notes: list[str] = []
def cleanup_files(files: list):
for f in files:
try:
if os.path.exists(f):
os.remove(f)
except Exception as e:
logger.warning(f"Failed to delete temp file {f}: {e}")
def format_time(seconds: int) -> str:
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
if h > 0:
return f"{int(h)}h {int(m)}m"
return f"{int(m)}m {int(s)}s"
@app.post("/calculate/stl", response_model=QuoteResponse)
async def calculate_from_stl(file: UploadFile = File(...)):
if not file.filename.lower().endswith(".stl"):
raise HTTPException(status_code=400, detail="Only .stl files are supported.")
# Unique ID for this request
req_id = str(uuid.uuid4())
input_filename = f"{req_id}.stl"
output_filename = f"{req_id}.gcode"
input_path = os.path.join(settings.TEMP_DIR, input_filename)
output_path = os.path.join(settings.TEMP_DIR, output_filename)
try:
# 1. Save Uploaded File
with open(input_path, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
# 2. Slice
# slicer_service methods raise exceptions on failure
slicer_service.slice_stl(input_path, output_path)
# 3. Parse Results
stats = GCodeParser.parse_metadata(output_path)
if stats["print_time_seconds"] == 0 and stats["filament_weight_g"] == 0:
# Slicing likely failed or produced empty output without throwing error
raise HTTPException(status_code=500, detail="Slicing completed but no stats found. Check mesh validity.")
# 4. Calculate Costs
quote = QuoteCalculator.calculate(stats)
return {
"printer": "BambuLab A1 (Estimated)",
"print_time_seconds": stats["print_time_seconds"],
"print_time_formatted": format_time(stats["print_time_seconds"]),
"material_grams": stats["filament_weight_g"],
"cost": {
"material": quote["breakdown"]["material_cost"],
"machine": quote["breakdown"]["machine_cost"],
"energy": quote["breakdown"]["energy_cost"],
"markup": quote["breakdown"]["markup_amount"],
"total": quote["total_price"]
},
"notes": ["Estimation generated using OrcaSlicer headless."]
}
except Exception as e:
logger.error(f"Error processing request: {e}")
raise HTTPException(status_code=500, detail=str(e))
finally:
# Cleanup
cleanup_files([input_path, output_path])
@app.get("/health")
def health_check():
return {"status": "ok", "slicer": settings.SLICER_PATH}

View File

@@ -6,13 +6,13 @@ bed_shape = 0x0,256x0,256x256,0x256
nozzle_diameter = 0.4
filament_diameter = 1.75
max_print_speed = 500
travel_speed = 500
travel_speed = 700
gcode_flavor = klipper
# Bambu uses specific gcode but klipper/marlin is close enough for time est if accel matches
machine_max_acceleration_x = 10000
machine_max_acceleration_y = 10000
machine_max_acceleration_e = 5000
machine_max_acceleration_extruding = 5000
machine_max_acceleration_e = 6000
machine_max_acceleration_extruding = 6000
# PRINT SETTINGS
layer_height = 0.2
@@ -26,17 +26,17 @@ bottom_solid_layers = 3
# SPEED SETTINGS (Conservative defaults for A1)
perimeter_speed = 200
external_perimeter_speed = 150
external_perimeter_speed = 200
infill_speed = 250
solid_infill_speed = 200
top_solid_infill_speed = 150
support_material_speed = 150
bridge_speed = 50
bridge_speed = 150
gap_fill_speed = 50
# FILAMENT SETTINGS
filament_density = 1.24
filament_cost = 25.0
filament_cost = 18.0
filament_max_volumetric_speed = 15
temperature = 220
bed_temperature = 60
bed_temperature = 65

View File

@@ -0,0 +1,88 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab X1 Carbon",
"print": {
"ipcam": {
"resolution_supported": [ "720p", "1080p" ],
"virtual_camera": "enabled",
"liveview": {
"remote": "tutk"
},
"file": {
"remote": "tutk",
"model_download": "enabled"
}
},
"support_motor_noise_cali":false,
"support_tunnel_mqtt":false,
"support_mqtt_alive":false,
"support_command_ams_switch":false,
"support_cloud_print_only":false,
"support_1080dpi":false,
"support_prompt_sound":false,
"support_ams_humidity":false,
"support_auto_recovery_step_loss":false,
"support_auto_leveling":true,
"support_update_remain":false,
"support_timelapse":true,
"support_filament_backup":false,
"support_chamber_fan":true,
"support_aux_fan":true,
"support_send_to_sd":false,
"support_print_all":true,
"support_print_without_sd":true,
"support_flow_calibration":true,
"support_build_plate_marker_detect":false,
"support_lidar_calibration":true,
"support_ai_monitoring":false,
"support_first_layer_inspect":true,
"support_chamber_temp_edit":false,
"support_extrusion_cali":false,
"support_user_preset":false
},
"model_id":"BL-P001",
"compatible_machine":["BL-P002", "C11", "C12", "C13"],
"printer_type":"3DPrinter-X1-Carbon",
"printer_thumbnail_image":"printer_thumbnail",
"printer_connect_help_image":"input_access_code_x1",
"printer_use_ams_image":"ams_icon",
"use_ams_type":"generic",
"printer_arch":"core_xy",
"printer_series":"series_x1",
"has_cali_line":true,
"printer_is_enclosed":true
},
"01.01.01.00": {
"print": {
"support_1080dpi":true,
"support_ams_humidity":true,
"support_update_remain":true,
"support_auto_recovery_step_loss":true,
"support_filament_backup":true,
"support_send_to_sd":true,
"support_build_plate_marker_detect":true,
"support_ai_monitoring":true
}
},
"01.05.06.01" : {
"print": {
"support_command_ams_switch":true
}
},
"01.05.06.05" : {
"engineer":"00.03.10.05",
"print": {
"support_mqtt_alive":true
}
},
"01.05.06.06": {
"print": {
"support_tunnel_mqtt":true
}
},
"01.06.06.00": {
"print": {
"support_user_preset":true
}
}
}

View File

@@ -0,0 +1,88 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab X1",
"print": {
"ipcam": {
"resolution_supported": [ "720p", "1080p" ],
"virtual_camera": "enabled",
"liveview": {
"remote": "tutk"
},
"file": {
"remote": "tutk",
"model_download": "enabled"
}
},
"support_motor_noise_cali":false,
"support_tunnel_mqtt":false,
"support_mqtt_alive":false,
"support_command_ams_switch":false,
"support_cloud_print_only":false,
"support_1080dpi":false,
"support_prompt_sound":false,
"support_ams_humidity":false,
"support_auto_recovery_step_loss":false,
"support_auto_leveling":true,
"support_update_remain":false,
"support_timelapse":true,
"support_filament_backup":false,
"support_chamber_fan":true,
"support_aux_fan":true,
"support_send_to_sd":false,
"support_print_all":true,
"support_print_without_sd":true,
"support_flow_calibration":true,
"support_build_plate_marker_detect":false,
"support_lidar_calibration":true,
"support_ai_monitoring":false,
"support_first_layer_inspect":true,
"support_chamber_temp_edit":false,
"support_extrusion_cali":false,
"support_user_preset":false
},
"model_id": "BL-P002",
"compatible_machine":["BL-P001", "C11", "C12", "C13"],
"printer_type": "3DPrinter-X1",
"printer_thumbnail_image": "printer_thumbnail",
"printer_connect_help_image": "input_access_code_x1",
"printer_use_ams_image":"ams_icon",
"use_ams_type":"generic",
"printer_arch" : "core_xy",
"printer_series":"series_x1",
"has_cali_line":true,
"printer_is_enclosed":true
},
"01.01.01.00": {
"print": {
"support_1080dpi":true,
"support_ams_humidity":true,
"support_update_remain":true,
"support_auto_recovery_step_loss":true,
"support_filament_backup":true,
"support_send_to_sd":true,
"support_build_plate_marker_detect":true,
"support_ai_monitoring":true
}
},
"01.05.06.01" : {
"print": {
"support_command_ams_switch":true
}
},
"01.05.06.05" : {
"engineer":"00.03.10.05",
"print": {
"support_mqtt_alive":true
}
},
"01.05.06.06": {
"print": {
"support_tunnel_mqtt":true
}
},
"01.06.06.00": {
"print": {
"support_user_preset":true
}
}
}

View File

@@ -0,0 +1,93 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab P1P",
"print": {
"ipcam": {
"resolution_supported": [ "720p" ],
"liveview": {
"local": "local"
}
},
"support_motor_noise_cali":false,
"support_tunnel_mqtt":false,
"support_mqtt_alive":false,
"support_command_ams_switch":false,
"support_cloud_print_only":true,
"support_1080dpi":false,
"support_prompt_sound":false,
"support_ams_humidity":true,
"support_auto_recovery_step_loss":true,
"support_auto_leveling":true,
"support_update_remain":true,
"support_timelapse":true,
"support_filament_backup":true,
"support_chamber_fan":true,
"support_aux_fan":true,
"support_send_to_sd":false,
"support_print_all":false,
"support_print_without_sd":false,
"support_flow_calibration":false,
"support_build_plate_marker_detect":false,
"support_lidar_calibration":false,
"support_ai_monitoring":false,
"support_first_layer_inspect":false,
"support_chamber_temp_edit":false,
"support_extrusion_cali":true,
"support_user_preset":false,
"bed_temperature_limit": 100
},
"model_id": "C11",
"compatible_machine":["BL-P001", "BL-P002", "C12", "C13"],
"printer_type": "C11",
"ftp_folder" : "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_p1p",
"printer_connect_help_image": "input_access_code_p1p",
"printer_use_ams_image":"ams_icon",
"use_ams_type":"generic",
"printer_arch" : "core_xy",
"printer_series":"series_p1p",
"has_cali_line":false,
"printer_is_enclosed":false
},
"01.02.00.00": {
"print": {
"support_send_to_sd":true
}
},
"01.02.99.00": {
"print": {
"ipcam": {
"liveview": {
"remote": "tutk"
}
}
}
},
"01.02.99.10" : {
"print": {
"support_command_ams_switch":true
}
},
"01.03.50.01" : {
"engineer":"00.06.03.51",
"print": {
"support_mqtt_alive":true,
"support_tunnel_mqtt":true
}
},
"01.04.50.01": {
"print": {
"ipcam": {
"file": {
"remote": "tutk"
}
},
"support_user_preset":true
}
},
"01.07.50.00": {
"print": {
"support_print_all": true
}
}
}

View File

@@ -0,0 +1,85 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab P1S",
"print": {
"ipcam": {
"resolution_supported": [ "720p" ],
"liveview": {
"local": "local"
}
},
"support_motor_noise_cali":false,
"support_tunnel_mqtt":false,
"support_mqtt_alive":false,
"support_command_ams_switch":false,
"support_cloud_print_only":true,
"support_1080dpi":false,
"support_prompt_sound":false,
"support_ams_humidity":true,
"support_auto_recovery_step_loss":true,
"support_auto_leveling":true,
"support_update_remain":true,
"support_timelapse":true,
"support_filament_backup":true,
"support_chamber_fan":true,
"support_aux_fan":true,
"support_send_to_sd":true,
"support_print_all":false,
"support_print_without_sd":false,
"support_flow_calibration":false,
"support_build_plate_marker_detect":false,
"support_lidar_calibration":false,
"support_ai_monitoring":false,
"support_first_layer_inspect":false,
"support_chamber_temp_edit":false,
"support_extrusion_cali":true,
"support_user_preset":false,
"bed_temperature_limit": 100
},
"model_id": "C12",
"compatible_machine":["BL-P001", "BL-P002", "C11", "C13"],
"printer_type": "C12",
"ftp_folder" : "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_p1s",
"printer_connect_help_image": "input_access_code_p1p",
"printer_use_ams_image":"ams_icon",
"use_ams_type":"generic",
"printer_arch" : "core_xy",
"printer_series":"series_p1p",
"has_cali_line":false,
"printer_is_enclosed":true
},
"01.02.99.10" : {
"print": {
"support_command_ams_switch":true
}
},
"01.03.50.01": {
"engineer":"00.06.03.51",
"resolution_supported": [ "720p" ],
"print": {
"ipcam": {
"liveview": {
"remote": "tutk"
}
},
"support_mqtt_alive":true,
"support_tunnel_mqtt":true
}
},
"01.04.50.01": {
"print": {
"ipcam": {
"file": {
"remote": "tutk"
}
},
"support_user_preset":true
}
},
"01.07.50.00": {
"print": {
"support_print_all": true
}
}
}

View File

@@ -0,0 +1,61 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab X1E",
"print": {
"ipcam": {
"resolution_supported": [ "720p", "1080p" ],
"virtual_camera": "enabled",
"liveview": {
"remote": "tutk"
},
"file": {
"remote": "tutk",
"model_download": "enabled"
}
},
"support_motor_noise_cali":false,
"support_tunnel_mqtt":true,
"support_mqtt_alive":true,
"support_command_ams_switch":true,
"support_ssl_for_mqtt":true,
"support_cloud_print_only":false,
"support_1080dpi":true,
"support_prompt_sound":false,
"support_ams_humidity":true,
"support_auto_recovery_step_loss":true,
"support_auto_leveling":true,
"support_update_remain":true,
"support_timelapse":true,
"support_filament_backup":true,
"support_chamber_fan":true,
"support_aux_fan":true,
"support_send_to_sd":true,
"support_print_all":true,
"support_print_without_sd":true,
"support_flow_calibration":true,
"support_build_plate_marker_detect":true,
"support_lidar_calibration":true,
"support_ai_monitoring":true,
"support_first_layer_inspect":true,
"support_chamber_temp_edit":true,
"support_extrusion_cali":false,
"support_user_preset":false,
"bed_temperature_limit": 110,
"nozzle_max_temperature": 320
},
"model_id": "C13",
"compatible_machine":["BL-P001", "BL-P002", "C11", "C12"],
"printer_type": "C13",
"printer_thumbnail_image": "printer_thumbnail",
"printer_connect_help_image": "input_access_code_x1",
"printer_use_ams_image":"ams_icon",
"use_ams_type":"generic",
"printer_arch" : "core_xy",
"printer_series":"series_x1",
"has_cali_line":true,
"printer_is_enclosed":true
},
"01.05.06.06": {
"rv2166": "00.00.21.20"
}
}

View File

@@ -0,0 +1,62 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab A1 mini",
"print": {
"ipcam": {
"resolution_supported": [ "720p" ],
"liveview": {
"local": "local",
"remote": "tutk"
}
},
"support_motor_noise_cali":true,
"support_tunnel_mqtt":true,
"support_mqtt_alive":true,
"support_command_ams_switch":true,
"support_cloud_print_only":true,
"support_1080dpi":true,
"support_prompt_sound":true,
"support_ams_humidity":false,
"support_auto_recovery_step_loss":true,
"support_auto_leveling":true,
"support_update_remain":false,
"support_timelapse":true,
"support_filament_backup":true,
"support_chamber_fan":false,
"support_aux_fan":false,
"support_send_to_sd":true,
"support_print_all":false,
"support_print_without_sd":false,
"support_flow_calibration":true,
"support_lidar_calibration":false,
"support_ai_monitoring":false,
"support_first_layer_inspect":false,
"support_chamber_temp_edit":false,
"support_extrusion_cali":true,
"support_user_preset":false,
"bed_temperature_limit": 100
},
"model_id": "N1",
"compatible_machine":[],
"printer_type": "N1",
"ftp_folder" : "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_n1",
"printer_connect_help_image": "input_access_code_n1",
"printer_use_ams_image":"extra_icon",
"use_ams_type":"f1",
"printer_arch" : "i3",
"printer_series":"series_p1p",
"has_cali_line":false,
"printer_is_enclosed":false
},
"01.01.50.01": {
"print": {
"ipcam": {
"file": {
"remote": "tutk"
}
},
"support_user_preset":true
}
}
}

View File

@@ -0,0 +1,61 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab A1",
"print": {
"ipcam": {
"resolution_supported": [ "720p" ],
"liveview": {
"local": "local",
"remote": "tutk"
}
},
"support_motor_noise_cali":true,
"support_tunnel_mqtt":true,
"support_mqtt_alive":true,
"support_command_ams_switch":true,
"support_cloud_print_only":true,
"support_1080dpi":true,
"support_prompt_sound":true,
"support_ams_humidity":false,
"support_auto_recovery_step_loss":true,
"support_auto_leveling":true,
"support_update_remain":false,
"support_timelapse":true,
"support_filament_backup":true,
"support_chamber_fan":false,
"support_aux_fan":false,
"support_send_to_sd":true,
"support_print_all":false,
"support_print_without_sd":false,
"support_flow_calibration":true,
"support_lidar_calibration":false,
"support_ai_monitoring":false,
"support_first_layer_inspect":false,
"support_chamber_temp_edit":false,
"support_extrusion_cali":true,
"support_user_preset":true,
"bed_temperature_limit": 100
},
"model_id": "N2S",
"compatible_machine":[],
"printer_type": "N2S",
"ftp_folder" : "sdcard/",
"printer_thumbnail_image": "printer_thumbnail_n2s",
"printer_connect_help_image": "input_access_code_n1",
"printer_use_ams_image":"extra_icon",
"use_ams_type":"f1",
"printer_arch" : "i3",
"printer_series":"series_p1p",
"has_cali_line":false,
"printer_is_enclosed":false
},
"01.01.50.01": {
"print": {
"ipcam": {
"file": {
"remote": "tutk"
}
}
}
}
}

View File

@@ -0,0 +1,74 @@
{
"00.00.00.00": {
"display_name": "Bambu Lab H2D",
"print": {
"2D": {
"laser": {
"power": [ 10, 40 ]
}
},
"ipcam": {
"resolution_supported": [ "1080p" ],
"virtual_camera": "enabled",
"liveview": {
"remote": "tutk"
},
"file": {
"local": "local",
"remote": "tutk",
"model_download": "enabled"
}
},
"nozzle_temp_range": [ 20, 350 ],
"bed_temp_range": [ 20, 120 ],
"support_motor_noise_cali": false,
"support_tunnel_mqtt": true,
"support_mqtt_alive": true,
"support_command_ams_switch": true,
"support_ssl_for_mqtt": true,
"support_cloud_print_only": false,
"support_1080dpi": true,
"support_prompt_sound": false,
"support_ams_humidity": true,
"support_auto_recovery_step_loss": true,
"support_bed_leveling": 2,
"support_update_remain": true,
"support_timelapse": true,
"support_filament_backup": true,
"support_chamber_fan": true,
"support_aux_fan": true,
"support_send_to_sd": true,
"support_print_all": true,
"support_print_without_sd": true,
"support_flow_calibration": true,
"support_auto_flow_calibration": true,
"support_build_plate_marker_detect": true,
"support_build_plate_marker_detect_type": 2,
"support_lidar_calibration": false,
"support_nozzle_offset_calibration": true,
"support_high_tempbed_calibration": true,
"support_ai_monitoring": true,
"support_first_layer_inspect": false,
"support_save_remote_print_file_to_storage": true,
"support_chamber_temp_edit": true,
"support_chamber_temp_edit_range": [ 20, 65 ],
"support_chamber_temp_switch_heating": 40,
"support_extrusion_cali": false,
"support_user_preset": false
},
"model_id": "O1D",
"printer_modes": [ "fdm", "laser", "cut" ],
"compatible_machine": [],
"printer_type": "O1D",
"printer_thumbnail_image": "printer_thumbnail_h2d",
"printer_connect_help_image": "input_access_code_h2d",
"printer_use_ams_image": "ams_icon",
"printer_ext_image": ["ext_image_o_right", "ext_image_o_left"],
"use_ams_type": "generic",
"printer_arch": "core_xy",
"printer_series": "series_o",
"has_cali_line": true,
"printer_is_enclosed": true,
"enable_set_nozzle_info": false
}
}

View File

@@ -0,0 +1,51 @@
M620 S[next_extruder]
M106 S255
M104 S250
M17 S
M17 X0.5 Y0.5
G91
G1 Y-5 F1200
G1 Z3
G90
G28 X
M17 R
G1 X70 F21000
G1 Y245
G1 Y265 F3000
G4
M106 S0
M109 S250
G1 X90
G1 Y255
G1 X120
G1 X20 Y50 F21000
G1 Y-3
T[next_extruder]
G1 X54
G1 Y265
G92 E0
G1 E40 F180
G4
M104 S[new_filament_temp]
G1 X70 F15000
G1 X76
G1 X65
G1 X76
G1 X65
G1 X90 F3000
G1 Y255
G1 X100
G1 Y265
G1 X70 F10000
G1 X100 F5000
G1 X70 F10000
G1 X100 F5000
G1 X165 F12000
G1 Y245
G1 X70
G1 Y265 F3000
G91
G1 Z-3 F1200
G90
M621 S[next_extruder]

View File

@@ -0,0 +1,33 @@
M620 S255
M106 P1 S255
M104 S250
M17 S
M17 X0.5 Y0.5
G91
G1 Y-5 F3000
G1 Z3 F1200
G90
G28 X
M17 R
G1 X70 F21000
G1 Y245
G1 Y265 F3000
G4
M106 P1 S0
M109 S250
G1 X90 F3000
G1 Y255 F4000
G1 X100 F5000
G1 X120 F21000
G1 X20 Y50
G1 Y-3
T255
G4
M104 S0
G1 X70 F3000
G91
G1 Z-3 F1200
G90
M621 S255

View File

@@ -0,0 +1,60 @@
{
"whitelist": [
],
"blacklist": [
{
"vendor": "Third Party",
"type": "TPU",
"action": "prohibition",
"description": "TPU: not supported"
},
{
"vendor": "Bambulab",
"type": "TPU",
"action": "prohibition",
"description": "TPU: not supported"
},
{
"vendor": "Third Party",
"type": "PVA",
"action": "warning",
"description": "PVA: flexible"
},
{
"vendor": "Third Party",
"type": "PLA-CF",
"action": "warning",
"description": "CF/GF: hard and brittle"
},
{
"vendor": "Third Party",
"type": "PETG-CF",
"action": "warning",
"description": "CF/GF: hard and brittle"
},
{
"vendor": "Third Party",
"type": "PA-CF",
"action": "warning",
"description": "CF/GF: hard and brittle"
},
{
"vendor": "Third Party",
"type": "PAHT-CF",
"action": "warning",
"description": "CF/GF: hard and brittle"
},
{
"vendor": "Bambulab",
"type": "PET-CF",
"action": "prohibition",
"description": "Bambu PET-CF/PA6-CF: not supported"
},
{
"vendor": "Bambulab",
"type": "PA6-CF",
"action": "prohibition",
"description": "Bambu PET-CF/PA6-CF: not supported"
}
]
}

View File

@@ -0,0 +1 @@
01.10.00.01

View File

@@ -0,0 +1,194 @@
{
"name": "Afinia",
"version": "02.03.01.10",
"force_update": "0",
"description": "Afinia configurations",
"machine_model_list": [
{
"name": "Afinia H+1(HS)",
"sub_path": "machine/Afinia H+1(HS).json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "fdm_process_afinia_common",
"sub_path": "process/fdm_process_afinia_common.json"
},
{
"name": "fdm_process_afinia_HS_common",
"sub_path": "process/fdm_process_afinia_HS_common.json"
},
{
"name": "0.12mm Fine @Afinia H+1(HS)",
"sub_path": "process/0.12mm Fine @Afinia H+1(HS).json"
},
{
"name": "0.16mm Optimal @Afinia H+1(HS)",
"sub_path": "process/0.16mm Optimal @Afinia H+1(HS).json"
},
{
"name": "0.20mm Standard @Afinia H+1(HS)",
"sub_path": "process/0.20mm Standard @Afinia H+1(HS).json"
},
{
"name": "0.24mm Draft @Afinia H+1(HS)",
"sub_path": "process/0.24mm Draft @Afinia H+1(HS).json"
},
{
"name": "0.28mm Extra Draft @Afinia H+1(HS)",
"sub_path": "process/0.28mm Extra Draft @Afinia H+1(HS).json"
},
{
"name": "fdm_process_afinia_0.18_nozzle_0.6",
"sub_path": "process/fdm_process_afinia_0.18_nozzle_0.6.json"
},
{
"name": "fdm_process_afinia_0.24_nozzle_0.6",
"sub_path": "process/fdm_process_afinia_0.24_nozzle_0.6.json"
},
{
"name": "fdm_process_afinia_0.30_nozzle_0.6",
"sub_path": "process/fdm_process_afinia_0.30_nozzle_0.6.json"
},
{
"name": "fdm_process_afinia_0.36_nozzle_0.6",
"sub_path": "process/fdm_process_afinia_0.36_nozzle_0.6.json"
},
{
"name": "fdm_process_afinia_0.42_nozzle_0.6",
"sub_path": "process/fdm_process_afinia_0.42_nozzle_0.6.json"
},
{
"name": "fdm_process_afinia_0.18_nozzle_0.6_HS",
"sub_path": "process/fdm_process_afinia_0.18_nozzle_0.6_HS.json"
},
{
"name": "fdm_process_afinia_0.24_nozzle_0.6_HS",
"sub_path": "process/fdm_process_afinia_0.24_nozzle_0.6_HS.json"
},
{
"name": "fdm_process_afinia_0.30_nozzle_0.6_HS",
"sub_path": "process/fdm_process_afinia_0.30_nozzle_0.6_HS.json"
},
{
"name": "fdm_process_afinia_0.36_nozzle_0.6_HS",
"sub_path": "process/fdm_process_afinia_0.36_nozzle_0.6_HS.json"
},
{
"name": "fdm_process_afinia_0.42_nozzle_0.6_HS",
"sub_path": "process/fdm_process_afinia_0.42_nozzle_0.6_HS.json"
},
{
"name": "0.18mm Fine @Afinia H+1(HS) 0.6 nozzle",
"sub_path": "process/0.18mm Fine @Afinia H+1(HS) 0.6 nozzle.json"
},
{
"name": "0.24mm Standard @Afinia H+1(HS) 0.6 nozzle",
"sub_path": "process/0.24mm Standard @Afinia H+1(HS) 0.6 nozzle.json"
},
{
"name": "0.30mm Standard @Afinia H+1(HS) 0.6 nozzle",
"sub_path": "process/0.30mm Standard @Afinia H+1(HS) 0.6 nozzle.json"
},
{
"name": "0.30mm Strength @Afinia H+1(HS) 0.6 nozzle",
"sub_path": "process/0.30mm Strength @Afinia H+1(HS) 0.6 nozzle.json"
},
{
"name": "0.36mm Draft @Afinia H+1(HS) 0.6 nozzle",
"sub_path": "process/0.36mm Draft @Afinia H+1(HS) 0.6 nozzle.json"
},
{
"name": "0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle",
"sub_path": "process/0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle.json"
}
],
"filament_list": [
{
"name": "fdm_filament_common",
"sub_path": "filament/fdm_filament_common.json"
},
{
"name": "fdm_filament_pla",
"sub_path": "filament/fdm_filament_pla.json"
},
{
"name": "fdm_filament_abs",
"sub_path": "filament/fdm_filament_abs.json"
},
{
"name": "fdm_filament_tpu",
"sub_path": "filament/fdm_filament_tpu.json"
},
{
"name": "Afinia PLA",
"sub_path": "filament/Afinia PLA.json"
},
{
"name": "Afinia Value PLA",
"sub_path": "filament/Afinia Value PLA.json"
},
{
"name": "Afinia ABS",
"sub_path": "filament/Afinia ABS.json"
},
{
"name": "Afinia ABS+",
"sub_path": "filament/Afinia ABS+.json"
},
{
"name": "Afinia Value ABS",
"sub_path": "filament/Afinia Value ABS.json"
},
{
"name": "Afinia TPU",
"sub_path": "filament/Afinia TPU.json"
},
{
"name": "Afinia PLA@HS",
"sub_path": "filament/Afinia PLA@HS.json"
},
{
"name": "Afinia Value PLA@HS",
"sub_path": "filament/Afinia Value PLA@HS.json"
},
{
"name": "Afinia ABS@HS",
"sub_path": "filament/Afinia ABS@HS.json"
},
{
"name": "Afinia Value ABS@HS",
"sub_path": "filament/Afinia Value ABS@HS.json"
},
{
"name": "Afinia ABS+@HS",
"sub_path": "filament/Afinia ABS+@HS.json"
},
{
"name": "Afinia TPU@HS",
"sub_path": "filament/Afinia TPU@HS.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "fdm_afinia_common",
"sub_path": "machine/fdm_afinia_common.json"
},
{
"name": "Afinia H+1(HS) 0.4 nozzle",
"sub_path": "machine/Afinia H+1(HS) 0.4 nozzle.json"
},
{
"name": "Afinia H+1(HS) 0.6 nozzle",
"sub_path": "machine/Afinia H+1(HS) 0.6 nozzle.json"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,37 @@
{
"type": "filament",
"filament_id": "GFB00",
"setting_id": "GFSB00",
"name": "Afinia ABS+",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"nozzle_temperature": [
"275"
],
"nozzle_temperature_initial_layer": [
"275"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}

View File

@@ -0,0 +1,37 @@
{
"type": "filament",
"filament_id": "GFB00_01",
"setting_id": "GFSB00",
"name": "Afinia ABS+@HS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"nozzle_temperature": [
"275"
],
"nozzle_temperature_initial_layer": [
"275"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle",
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,31 @@
{
"type": "filament",
"filament_id": "GFB00",
"setting_id": "GFSB00",
"name": "Afinia ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}

View File

@@ -0,0 +1,31 @@
{
"type": "filament",
"filament_id": "GFB00_01",
"setting_id": "GFSB00",
"name": "Afinia ABS@HS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle",
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,34 @@
{
"type": "filament",
"filament_id": "GFA00",
"setting_id": "GFSA00",
"name": "Afinia PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_cost": [
"24.99"
],
"filament_density": [
"1.26"
],
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"21"
],
"filament_vendor": [
"Afinia"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_retraction_distances_when_cut": [
"18"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}

View File

@@ -0,0 +1,34 @@
{
"type": "filament",
"filament_id": "GFA00_01",
"setting_id": "GFSA00",
"name": "Afinia PLA@HS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_cost": [
"24.99"
],
"filament_density": [
"1.26"
],
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"21"
],
"filament_vendor": [
"Afinia"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_retraction_distances_when_cut": [
"18"
],
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle",
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,27 @@
{
"type": "filament",
"name": "Afinia TPU",
"inherits": "fdm_filament_tpu",
"from": "system",
"filament_id": "GFU01",
"instantiation": "true",
"filament_vendor": [
"Afinia"
],
"filament_density": [
"1.22"
],
"nozzle_temperature_initial_layer": [
"230"
],
"filament_cost": [
"41.99"
],
"nozzle_temperature": [
"230"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}

View File

@@ -0,0 +1,27 @@
{
"type": "filament",
"name": "Afinia TPU@HS",
"inherits": "fdm_filament_tpu",
"from": "system",
"filament_id": "GFU01_01",
"instantiation": "true",
"filament_vendor": [
"Afinia"
],
"filament_density": [
"1.22"
],
"nozzle_temperature_initial_layer": [
"230"
],
"filament_cost": [
"41.99"
],
"nozzle_temperature": [
"230"
],
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle",
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,37 @@
{
"type": "filament",
"filament_id": "GFB00",
"setting_id": "GFSB00",
"name": "Afinia Value ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"nozzle_temperature": [
"245"
],
"nozzle_temperature_initial_layer": [
"245"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}

View File

@@ -0,0 +1,37 @@
{
"type": "filament",
"filament_id": "GFB00_01",
"setting_id": "GFSB00",
"name": "Afinia Value ABS@HS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"nozzle_temperature": [
"245"
],
"nozzle_temperature_initial_layer": [
"245"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle",
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,40 @@
{
"type": "filament",
"filament_id": "GFA00",
"setting_id": "GFSA00",
"name": "Afinia Value PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_cost": [
"24.99"
],
"filament_density": [
"1.26"
],
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"21"
],
"filament_vendor": [
"Afinia"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_retraction_distances_when_cut": [
"18"
],
"nozzle_temperature": [
"190"
],
"nozzle_temperature_initial_layer": [
"190"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}

View File

@@ -0,0 +1,40 @@
{
"type": "filament",
"filament_id": "GFA00_01",
"setting_id": "GFSA00",
"name": "Afinia Value PLA@HS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_cost": [
"24.99"
],
"filament_density": [
"1.26"
],
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"21"
],
"filament_vendor": [
"Afinia"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_retraction_distances_when_cut": [
"18"
],
"nozzle_temperature": [
"190"
],
"nozzle_temperature_initial_layer": [
"190"
],
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle",
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_abs",
"inherits": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"activate_air_filtration": [
"0"
],
"cool_plate_temp": [
"0"
],
"cool_plate_temp_initial_layer": [
"0"
],
"eng_plate_temp": [
"90"
],
"eng_plate_temp_initial_layer": [
"90"
],
"fan_cooling_layer_time": [
"30"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"filament_cost": [
"20"
],
"filament_density": [
"1.04"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ABS"
],
"hot_plate_temp": [
"90"
],
"hot_plate_temp_initial_layer": [
"90"
],
"nozzle_temperature": [
"270"
],
"nozzle_temperature_initial_layer": [
"270"
],
"nozzle_temperature_range_high": [
"280"
],
"nozzle_temperature_range_low": [
"240"
],
"overhang_fan_speed": [
"80"
],
"overhang_fan_threshold": [
"25%"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_layer_time": [
"3"
],
"slow_down_min_speed": [
"20"
],
"textured_plate_temp": [
"90"
],
"textured_plate_temp_initial_layer": [
"90"
]
}

View File

@@ -0,0 +1,166 @@
{
"type": "filament",
"name": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"activate_air_filtration": [
"0"
],
"chamber_temperatures": [
"0"
],
"close_fan_the_first_x_layers": [
"3"
],
"complete_print_exhaust_fan_speed": [
"70"
],
"cool_plate_temp": [
"60"
],
"cool_plate_temp_initial_layer": [
"60"
],
"during_print_exhaust_fan_speed": [
"70"
],
"eng_plate_temp": [
"60"
],
"eng_plate_temp_initial_layer": [
"60"
],
"fan_cooling_layer_time": [
"60"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"35"
],
"filament_cost": [
"0"
],
"filament_density": [
"0"
],
"filament_deretraction_speed": [
"nil"
],
"filament_diameter": [
"1.75"
],
"filament_flow_ratio": [
"1"
],
"filament_is_support": [
"0"
],
"filament_long_retractions_when_cut": [
"nil"
],
"filament_max_volumetric_speed": [
"0"
],
"filament_minimal_purge_on_wipe_tower": [
"15"
],
"filament_retract_before_wipe": [
"nil"
],
"filament_retract_restart_extra": [
"nil"
],
"filament_retract_when_changing_layer": [
"nil"
],
"filament_retraction_distances_when_cut": [
"nil"
],
"filament_retraction_length": [
"nil"
],
"filament_retraction_minimum_travel": [
"nil"
],
"filament_retraction_speed": [
"nil"
],
"filament_settings_id": [
""
],
"filament_soluble": [
"0"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"Generic"
],
"filament_wipe": [
"nil"
],
"filament_wipe_distance": [
"nil"
],
"filament_z_hop": [
"nil"
],
"filament_z_hop_types": [
"nil"
],
"full_fan_speed_layer": [
"0"
],
"hot_plate_temp": [
"60"
],
"hot_plate_temp_initial_layer": [
"60"
],
"nozzle_temperature": [
"200"
],
"nozzle_temperature_initial_layer": [
"200"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"95%"
],
"reduce_fan_stop_start_freq": [
"0"
],
"required_nozzle_HRC": [
"3"
],
"slow_down_for_layer_cooling": [
"1"
],
"slow_down_layer_time": [
"8"
],
"slow_down_min_speed": [
"10"
],
"temperature_vitrification": [
"100"
],
"textured_plate_temp": [
"60"
],
"textured_plate_temp_initial_layer": [
"60"
],
"compatible_printers": [],
"filament_start_gcode": [
"; Filament gcode\n;{if activate_air_filtration[current_extruder] && support_air_filtration}\n;M106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n;{endif}"
],
"filament_end_gcode": [
"; filament end gcode \n;M106 P3 S0\n"
]
}

View File

@@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_pla",
"inherits": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"12"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"cool_plate_temp": [
"35"
],
"eng_plate_temp": [
"0"
],
"hot_plate_temp": [
"60"
],
"textured_plate_temp": [
"60"
],
"cool_plate_temp_initial_layer": [
"35"
],
"eng_plate_temp_initial_layer": [
"0"
],
"hot_plate_temp_initial_layer": [
"60"
],
"textured_plate_temp_initial_layer": [
"60"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_min_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"45"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"240"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"additional_cooling_fan_speed": [
"70"
],
"filament_start_gcode": [
"; filament start gcode\n;{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n;{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n;{endif}\n\n;{if activate_air_filtration[current_extruder] && support_air_filtration}\n;M106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n;{endif}"
]
}

View File

@@ -0,0 +1,79 @@
{
"type": "filament",
"name": "fdm_filament_tpu",
"inherits": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"additional_cooling_fan_speed": [
"70"
],
"close_fan_the_first_x_layers": [
"1"
],
"cool_plate_temp": [
"30"
],
"cool_plate_temp_initial_layer": [
"30"
],
"eng_plate_temp": [
"30"
],
"eng_plate_temp_initial_layer": [
"30"
],
"fan_cooling_layer_time": [
"100"
],
"fan_min_speed": [
"100"
],
"filament_cost": [
"20"
],
"filament_density": [
"1.24"
],
"filament_max_volumetric_speed": [
"8"
],
"filament_retraction_length": [
"2.0"
],
"filament_type": [
"TPU"
],
"hot_plate_temp": [
"35"
],
"hot_plate_temp_initial_layer": [
"35"
],
"nozzle_temperature": [
"240"
],
"nozzle_temperature_initial_layer": [
"240"
],
"nozzle_temperature_range_high": [
"250"
],
"nozzle_temperature_range_low": [
"200"
],
"reduce_fan_stop_start_freq": [
"1"
],
"temperature_vitrification": [
"30"
],
"textured_plate_temp": [
"35"
],
"textured_plate_temp_initial_layer": [
"35"
],
"filament_start_gcode": [
"; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
]
}

View File

@@ -0,0 +1,21 @@
{
"type": "machine",
"setting_id": "GM001",
"name": "Afinia H+1(HS) 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_afinia_common",
"printer_model": "Afinia H+1(HS)",
"default_print_profile": "0.20mm Standard @Afinia H+1(HS)",
"nozzle_diameter": [
"0.4"
],
"printer_variant": "0.4",
"printable_area": [
"0x0",
"207x0",
"207x255",
"0x255"
],
"printable_height": "230"
}

View File

@@ -0,0 +1,26 @@
{
"type": "machine",
"setting_id": "GM001",
"name": "Afinia H+1(HS) 0.6 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "Afinia H+1(HS) 0.4 nozzle",
"printer_model": "Afinia H+1(HS)",
"default_print_profile": "0.30mm Strength @Afinia H+1(HS) 0.6 nozzle",
"nozzle_diameter": [
"0.6"
],
"printer_variant": "0.6",
"max_layer_height": [
"0.42"
],
"min_layer_height": [
"0.18"
],
"retraction_length": [
"1.4"
],
"retraction_minimum_travel": [
"3"
]
}

View File

@@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "Afinia H+1(HS)",
"model_id": "my_afinia_h_1_hs_01",
"nozzle_diameter": "0.4;0.6",
"machine_tech": "FFF",
"family": "Afinia",
"bed_model": "",
"bed_texture": "",
"hotend_model": "",
"default_materials": "Afinia ABS;Afinia PLA"
}

View File

@@ -0,0 +1,60 @@
{
"type": "machine",
"name": "fdm_afinia_common",
"from": "system",
"instantiation": "false",
"inherits": "fdm_machine_common",
"gcode_flavor": "klipper",
"machine_max_acceleration_e": ["5000", "5000"],
"machine_max_acceleration_extruding": ["20000", "20000"],
"machine_max_acceleration_retracting": ["5000", "5000"],
"machine_max_acceleration_travel": ["20000", "20000"],
"machine_max_acceleration_x": ["20000", "20000"],
"machine_max_acceleration_y": ["20000", "20000"],
"machine_max_acceleration_z": ["500", "200"],
"machine_max_speed_e": ["25", "25"],
"machine_max_speed_x": ["500", "200"],
"machine_max_speed_y": ["500", "200"],
"machine_max_speed_z": ["12", "12"],
"machine_max_jerk_e": ["2.5", "2.5"],
"machine_max_jerk_x": ["9", "9"],
"machine_max_jerk_y": ["9", "9"],
"machine_max_jerk_z": ["0.2", "0.4"],
"machine_min_extruding_rate": ["0", "0"],
"machine_min_travel_rate": ["0", "0"],
"max_layer_height": ["0.32"],
"min_layer_height": ["0.08"],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"printer_settings_id": "",
"printer_technology": "FFF",
"printer_variant": "0.4",
"retraction_minimum_travel": ["1"],
"retract_before_wipe": ["70%"],
"retract_when_changing_layer": ["1"],
"retraction_length": ["0.8"],
"retract_length_toolchange": ["2"],
"z_hop": ["0.4"],
"retract_restart_extra": ["0"],
"retract_restart_extra_toolchange": ["0"],
"retraction_speed": ["30"],
"deretraction_speed": ["30"],
"z_hop_types": "Normal Lift",
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"wipe": ["1"],
"default_filament_profile": [""],
"default_print_profile": "0.20mm Standard @Afinia H+1(HS)",
"bed_exclude_area": ["0x0"],
"machine_start_gcode": ";M190 S[bed_temperature_initial_layer_single]\n;M109 S[nozzle_temperature_initial_layer]\nPRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]\n",
"machine_end_gcode": "PRINT_END",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"machine_pause_gcode": "PAUSE",
"scan_first_layer": "0",
"nozzle_type": "undefine",
"auxiliary_fan": "0"
}

View File

@@ -0,0 +1,119 @@
{
"type": "machine",
"name": "fdm_machine_common",
"from": "system",
"instantiation": "false",
"printer_technology": "FFF",
"deretraction_speed": [
"40"
],
"extruder_colour": [
"#FCE94F"
],
"extruder_offset": [
"0x0"
],
"gcode_flavor": "marlin",
"silent_mode": "0",
"machine_max_acceleration_e": [
"5000"
],
"machine_max_acceleration_extruding": [
"10000"
],
"machine_max_acceleration_retracting": [
"1000"
],
"machine_max_acceleration_x": [
"10000"
],
"machine_max_acceleration_y": [
"10000"
],
"machine_max_acceleration_z": [
"500"
],
"machine_max_speed_e": [
"60"
],
"machine_max_speed_x": [
"500"
],
"machine_max_speed_y": [
"500"
],
"machine_max_speed_z": [
"10"
],
"machine_max_jerk_e": [
"5"
],
"machine_max_jerk_x": [
"8"
],
"machine_max_jerk_y": [
"8"
],
"machine_max_jerk_z": [
"0.4"
],
"machine_min_extruding_rate": [
"0"
],
"machine_min_travel_rate": [
"0"
],
"max_layer_height": [
"0.32"
],
"min_layer_height": [
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"nozzle_diameter": [
"0.4"
],
"printer_settings_id": "",
"printer_variant": "0.4",
"retraction_minimum_travel": [
"2"
],
"retract_before_wipe": [
"70%"
],
"retract_when_changing_layer": [
"1"
],
"retraction_length": [
"5"
],
"retract_length_toolchange": [
"1"
],
"z_hop": [
"0"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retraction_speed": [
"60"
],
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"wipe": [
"1"
],
"default_print_profile": "",
"machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up",
"machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"machine_pause_gcode": "M601"
}

View File

@@ -0,0 +1,30 @@
{
"type": "process",
"setting_id": "GP004",
"name": "0.12mm Fine @Afinia H+1(HS)",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_afinia_HS_common",
"layer_height": "0.12",
"bottom_shell_layers": "5",
"elefant_foot_compensation": "0.15",
"top_shell_layers": "5",
"top_shell_thickness": "0.6",
"bridge_flow": "1",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "150",
"inner_wall_speed": "200",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"gap_infill_speed": "150",
"overhang_1_4_speed": "60",
"overhang_2_4_speed": "30",
"overhang_3_4_speed": "10",
"support_threshold_angle": "20",
"support_top_z_distance": "0.12",
"support_bottom_z_distance": "0.12",
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle"
]
}

View File

@@ -0,0 +1,30 @@
{
"type": "process",
"setting_id": "GP004",
"name": "0.16mm Optimal @Afinia H+1(HS)",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_afinia_HS_common",
"layer_height": "0.16",
"elefant_foot_compensation": "0.15",
"bottom_shell_layers": "4",
"top_shell_layers": "6",
"top_shell_thickness": "1.0",
"bridge_flow": "1",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "150",
"inner_wall_speed": "200",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"gap_infill_speed": "150",
"overhang_1_4_speed": "60",
"overhang_2_4_speed": "30",
"overhang_3_4_speed": "10",
"support_threshold_angle": "25",
"support_top_z_distance": "0.16",
"support_bottom_z_distance": "0.16",
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "process",
"name": "0.18mm Fine @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.18_nozzle_0.6_HS",
"from": "system",
"setting_id": "GP021",
"instantiation": "true",
"description": "It has a smaller layer height and results in smoother surface and higher printing quality.",
"elefant_foot_compensation": "0.15",
"smooth_coefficient": "150",
"overhang_totally_speed": "50",
"compatible_printers": [
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,22 @@
{
"type": "process",
"setting_id": "GP004",
"name": "0.20mm Standard @Afinia H+1(HS)",
"from": "system",
"inherits": "fdm_process_afinia_HS_common",
"instantiation": "true",
"elefant_foot_compensation": "0.15",
"top_shell_thickness": "1.0",
"bridge_flow": "1",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "150",
"inner_wall_speed": "200",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"gap_infill_speed": "150",
"top_shell_layers": "5",
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle"
]
}

View File

@@ -0,0 +1,25 @@
{
"type": "process",
"setting_id": "GP004",
"name": "0.24mm Draft @Afinia H+1(HS)",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_afinia_HS_common",
"layer_height": "0.24",
"elefant_foot_compensation": "0.15",
"top_surface_line_width": "0.45",
"top_shell_thickness": "1.0",
"bridge_flow": "1",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "150",
"inner_wall_speed": "200",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"gap_infill_speed": "150",
"support_threshold_angle": "35",
"top_shell_layers": "4",
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "process",
"name": "0.24mm Standard @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.24_nozzle_0.6_HS",
"from": "system",
"setting_id": "GP022",
"instantiation": "true",
"description": "It has a balanced layer height for good quality and reasonable printing time.",
"elefant_foot_compensation": "0.15",
"smooth_coefficient": "150",
"overhang_totally_speed": "50",
"compatible_printers": [
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,25 @@
{
"type": "process",
"setting_id": "GP004",
"name": "0.28mm Extra Draft @Afinia H+1(HS)",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_afinia_HS_common",
"layer_height": "0.28",
"elefant_foot_compensation": "0.15",
"top_surface_line_width": "0.45",
"top_shell_thickness": "1.0",
"bridge_flow": "1",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "200",
"inner_wall_speed": "200",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"gap_infill_speed": "200",
"support_threshold_angle": "40",
"top_shell_layers": "4",
"compatible_printers": [
"Afinia H+1(HS) 0.4 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "process",
"name": "0.30mm Standard @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.30_nozzle_0.6_HS",
"from": "system",
"setting_id": "GP023",
"instantiation": "true",
"description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.",
"elefant_foot_compensation": "0.15",
"smooth_coefficient": "150",
"overhang_totally_speed": "50",
"compatible_printers": [
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,17 @@
{
"type": "process",
"name": "0.30mm Strength @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.30_nozzle_0.6_HS",
"from": "system",
"setting_id": "GP024",
"instantiation": "true",
"description": "It has a big layer height with optimized settings for stronger parts.",
"elefant_foot_compensation": "0.15",
"smooth_coefficient": "150",
"overhang_totally_speed": "50",
"sparse_infill_density": "25%",
"wall_loops": "3",
"compatible_printers": [
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "process",
"name": "0.36mm Draft @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.36_nozzle_0.6_HS",
"from": "system",
"setting_id": "GP025",
"instantiation": "true",
"description": "It has a bigger layer height for faster printing but with more visible layer lines.",
"elefant_foot_compensation": "0.15",
"smooth_coefficient": "150",
"overhang_totally_speed": "50",
"compatible_printers": [
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "process",
"name": "0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.42_nozzle_0.6_HS",
"from": "system",
"setting_id": "GP026",
"instantiation": "true",
"description": "It has the biggest layer height for fastest printing but with very visible layer lines.",
"elefant_foot_compensation": "0.15",
"smooth_coefficient": "150",
"overhang_totally_speed": "50",
"compatible_printers": [
"Afinia H+1(HS) 0.6 nozzle"
]
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.18_nozzle_0.6",
"inherits": "fdm_process_afinia_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.18",
"initial_layer_print_height": "0.18",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "120",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.18_nozzle_0.6_HS",
"inherits": "fdm_process_afinia_HS_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.18",
"initial_layer_print_height": "0.18",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "120",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.24_nozzle_0.6",
"inherits": "fdm_process_afinia_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.24",
"initial_layer_print_height": "0.24",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "130",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.24_nozzle_0.6_HS",
"inherits": "fdm_process_afinia_HS_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.24",
"initial_layer_print_height": "0.24",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "130",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.30_nozzle_0.6",
"inherits": "fdm_process_afinia_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.3",
"initial_layer_print_height": "0.3",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "150",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.30_nozzle_0.6_HS",
"inherits": "fdm_process_afinia_HS_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.3",
"initial_layer_print_height": "0.3",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "150",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.36_nozzle_0.6",
"inherits": "fdm_process_afinia_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.36",
"initial_layer_print_height": "0.36",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "140",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.36_nozzle_0.6_HS",
"inherits": "fdm_process_afinia_HS_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.36",
"initial_layer_print_height": "0.36",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "140",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.42_nozzle_0.6",
"inherits": "fdm_process_afinia_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.42",
"initial_layer_print_height": "0.42",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "130",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,26 @@
{
"type": "process",
"name": "fdm_process_afinia_0.42_nozzle_0.6_HS",
"inherits": "fdm_process_afinia_HS_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.42",
"initial_layer_print_height": "0.42",
"bridge_flow": "1",
"line_width": "0.62",
"outer_wall_line_width": "0.62",
"ironing_inset": "0.31",
"initial_layer_line_width": "0.62",
"sparse_infill_line_width": "0.62",
"inner_wall_line_width": "0.62",
"internal_solid_infill_line_width": "0.62",
"support_line_width": "0.62",
"top_surface_line_width": "0.62",
"initial_layer_speed": "35",
"initial_layer_infill_speed": "55",
"sparse_infill_speed": "100",
"top_surface_speed": "130",
"bridge_speed": "30",
"overhang_3_4_speed": "15",
"tree_support_tip_diameter": "1.2"
}

View File

@@ -0,0 +1,15 @@
{
"type": "process",
"name": "fdm_process_afinia_HS_common",
"inherits": "fdm_process_afinia_common",
"from": "system",
"instantiation": "false",
"default_acceleration": "4000",
"travel_acceleration": "4000",
"outer_wall_acceleration": "2500",
"inner_wall_acceleration": "3000",
"initial_layer_acceleration": "500",
"top_surface_acceleration": "2000",
"travel_speed": "200",
"compatible_printers": []
}

View File

@@ -0,0 +1,79 @@
{
"type": "process",
"name": "fdm_process_afinia_common",
"inherits": "fdm_process_common",
"from": "system",
"instantiation": "false",
"max_travel_detour_distance": "0",
"bottom_surface_pattern": "monotonic",
"bottom_shell_layers": "3",
"bottom_shell_thickness": "0",
"bridge_speed": "50",
"brim_object_gap": "0.1",
"compatible_printers_condition": "",
"draft_shield": "disabled",
"elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"default_acceleration": "6000",
"travel_acceleration": "6000",
"outer_wall_acceleration": "3000",
"inner_wall_acceleration": "5000",
"top_surface_acceleration": "2000",
"initial_layer_acceleration": "500",
"line_width": "0.42",
"internal_bridge_support_thickness": "0.8",
"initial_layer_line_width": "0.5",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "90",
"outer_wall_speed": "120",
"inner_wall_speed": "160",
"gap_infill_speed": "50",
"sparse_infill_speed": "250",
"ironing_flow": "10%",
"ironing_spacing": "0.15",
"ironing_speed": "30",
"ironing_type": "no ironing",
"layer_height": "0.2",
"reduce_infill_retraction": "1",
"filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode",
"detect_overhang_wall": "1",
"overhang_1_4_speed": "0",
"overhang_2_4_speed": "50",
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"only_one_wall_top": "1",
"seam_position": "aligned",
"skirt_height": "1",
"skirt_loops": "0",
"minimum_sparse_infill_area": "15",
"internal_solid_infill_line_width": "0.42",
"internal_solid_infill_speed": "180",
"resolution": "0.012",
"support_type": "normal(auto)",
"support_style": "default",
"support_top_z_distance": "0.2",
"support_bottom_z_distance": "0.2",
"support_interface_bottom_layers": "2",
"support_interface_spacing": "0.5",
"support_expansion": "0",
"support_base_pattern_spacing": "2.5",
"support_speed": "200",
"support_interface_speed": "80",
"support_threshold_angle": "30",
"support_object_xy_distance": "0.35",
"tree_support_branch_diameter": "2",
"tree_support_branch_angle": "45",
"tree_support_wall_count": "0",
"top_surface_pattern": "monotonicline",
"top_surface_speed": "200",
"top_shell_layers": "3",
"top_shell_thickness": "0.8",
"travel_speed": "500",
"enable_prime_tower": "1",
"wipe_tower_no_sparse_layers": "0",
"prime_tower_width": "35",
"wall_generator": "classic",
"exclude_object": "1",
"wall_infill_order": "outer wall/inner wall/infill",
"compatible_printers": []
}

View File

@@ -0,0 +1,72 @@
{
"type": "process",
"name": "fdm_process_common",
"from": "system",
"instantiation": "false",
"adaptive_layer_height": "0",
"reduce_crossing_wall": "0",
"bridge_flow": "0.95",
"bridge_speed": "50",
"brim_width": "5",
"print_sequence": "by layer",
"default_acceleration": "10000",
"bridge_no_support": "0",
"elefant_foot_compensation": "0.1",
"outer_wall_line_width": "0.42",
"outer_wall_speed": "120",
"inner_wall_speed": "160",
"line_width": "0.45",
"infill_direction": "45",
"sparse_infill_density": "15%",
"sparse_infill_pattern": "crosshatch",
"initial_layer_line_width": "0.42",
"initial_layer_print_height": "0.2",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "90",
"gap_infill_speed": "50",
"infill_combination": "0",
"sparse_infill_line_width": "0.45",
"infill_wall_overlap": "15%",
"sparse_infill_speed": "200",
"interface_shells": "0",
"detect_overhang_wall": "0",
"reduce_infill_retraction": "0",
"filename_format": "{input_filename_base}.gcode",
"wall_loops": "2",
"inner_wall_line_width": "0.45",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "nearest",
"skirt_distance": "2",
"skirt_height": "2",
"minimum_sparse_infill_area": "0",
"internal_solid_infill_line_width": "0.45",
"internal_solid_infill_speed": "180",
"spiral_mode": "0",
"standby_temperature_delta": "-5",
"enable_support": "0",
"support_filament": "0",
"support_line_width": "0.42",
"support_interface_filament": "0",
"support_on_build_plate_only": "0",
"support_top_z_distance": "0.15",
"support_interface_loop_pattern": "0",
"support_interface_top_layers": "2",
"support_interface_spacing": "0",
"support_interface_speed": "80",
"support_interface_pattern": "auto",
"support_base_pattern": "default",
"support_base_pattern_spacing": "2",
"support_speed": "200",
"support_threshold_angle": "40",
"support_object_xy_distance": "0.5",
"detect_thin_wall": "0",
"top_surface_line_width": "0.42",
"top_surface_speed": "120",
"travel_speed": "400",
"enable_prime_tower": "0",
"prime_tower_width": "60",
"xy_hole_compensation": "0",
"xy_contour_compensation": "0",
"compatible_printers": []
}

View File

@@ -0,0 +1,390 @@
{
"name": "Anker",
"version": "02.03.01.10",
"force_update": "0",
"description": "Anker configurations",
"machine_model_list": [
{
"name": "Anker M5",
"sub_path": "machine/Anker M5.json"
},
{
"name": "Anker M5 All-Metal Hot End",
"sub_path": "machine/Anker M5 All-Metal Hot End.json"
},
{
"name": "Anker M5C",
"sub_path": "machine/Anker M5C.json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "fdm_process_anker_common",
"sub_path": "process/fdm_process_anker_common.json"
},
{
"name": "fdm_process_anker_common_0_2",
"sub_path": "process/fdm_process_anker_common_0_2.json"
},
{
"name": "fdm_process_anker_common_0_25",
"sub_path": "process/fdm_process_anker_common_0_25.json"
},
{
"name": "fdm_process_anker_common_0_6",
"sub_path": "process/fdm_process_anker_common_0_6.json"
},
{
"name": "0.05mm Ultradetail @Anker",
"sub_path": "process/0.05mm Ultradetail @Anker.json"
},
{
"name": "0.10mm Detail @Anker",
"sub_path": "process/0.10mm Detail @Anker.json"
},
{
"name": "0.15mm Optimal @Anker",
"sub_path": "process/0.15mm Optimal @Anker.json"
},
{
"name": "0.20mm Standard @Anker",
"sub_path": "process/0.20mm Standard @Anker.json"
},
{
"name": "0.25mm Draft @Anker",
"sub_path": "process/0.25mm Draft @Anker.json"
},
{
"name": "0.30mm Superdraft @Anker",
"sub_path": "process/0.30mm Superdraft @Anker.json"
},
{
"name": "fdm_process_anker_fast_common",
"sub_path": "process/fdm_process_anker_fast_common.json"
},
{
"name": "0.05mm Optimal 0.2 nozzle @Anker",
"sub_path": "process/0.05mm Optimal 0.2 nozzle @Anker.json"
},
{
"name": "0.10mm Standard 0.2 nozzle @Anker",
"sub_path": "process/0.10mm Standard 0.2 nozzle @Anker.json"
},
{
"name": "0.15mm Draft 0.2 nozzle @Anker",
"sub_path": "process/0.15mm Draft 0.2 nozzle @Anker.json"
},
{
"name": "0.05mm Optimal 0.25 nozzle @Anker",
"sub_path": "process/0.05mm Optimal 0.25 nozzle @Anker.json"
},
{
"name": "0.10mm Standard 0.25 nozzle @Anker",
"sub_path": "process/0.10mm Standard 0.25 nozzle @Anker.json"
},
{
"name": "0.15mm Draft 0.25 nozzle @Anker",
"sub_path": "process/0.15mm Draft 0.25 nozzle @Anker.json"
},
{
"name": "0.15mm Detail 0.6 nozzle @Anker",
"sub_path": "process/0.15mm Detail 0.6 nozzle @Anker.json"
},
{
"name": "0.20mm Optimal 0.6 nozzle @Anker",
"sub_path": "process/0.20mm Optimal 0.6 nozzle @Anker.json"
},
{
"name": "0.30mm Standard 0.6mm nozzle @Anker",
"sub_path": "process/0.30mm Standard 0.6mm nozzle @Anker.json"
},
{
"name": "0.35mm Draft 0.6mm nozzle @Anker",
"sub_path": "process/0.35mm Draft 0.6mm nozzle @Anker.json"
},
{
"name": "0.40mm Superdraft 0.6mm nozzle @Anker",
"sub_path": "process/0.40mm Superdraft 0.6mm nozzle @Anker.json"
},
{
"name": "0.15mm Fast @Anker",
"sub_path": "process/0.15mm Fast @Anker.json"
},
{
"name": "0.20mm Fast @Anker",
"sub_path": "process/0.20mm Fast @Anker.json"
},
{
"name": "0.25mm Fast @Anker",
"sub_path": "process/0.25mm Fast @Anker.json"
}
],
"filament_list": [
{
"name": "fdm_filament_common",
"sub_path": "filament/fdm_filament_common.json"
},
{
"name": "fdm_filament_abs",
"sub_path": "filament/fdm_filament_abs.json"
},
{
"name": "fdm_filament_asa",
"sub_path": "filament/fdm_filament_asa.json"
},
{
"name": "fdm_filament_pa",
"sub_path": "filament/fdm_filament_pa.json"
},
{
"name": "fdm_filament_pc",
"sub_path": "filament/fdm_filament_pc.json"
},
{
"name": "fdm_filament_pet",
"sub_path": "filament/fdm_filament_pet.json"
},
{
"name": "fdm_filament_pla",
"sub_path": "filament/fdm_filament_pla.json"
},
{
"name": "fdm_filament_pva",
"sub_path": "filament/fdm_filament_pva.json"
},
{
"name": "fdm_filament_tpu",
"sub_path": "filament/fdm_filament_tpu.json"
},
{
"name": "Anker Generic ABS @base",
"sub_path": "filament/Anker Generic ABS @base.json"
},
{
"name": "Anker Generic ASA @base",
"sub_path": "filament/Anker Generic ASA @base.json"
},
{
"name": "Anker Generic PA @base",
"sub_path": "filament/Anker Generic PA @base.json"
},
{
"name": "Anker Generic PA-CF @base",
"sub_path": "filament/Anker Generic PA-CF @base.json"
},
{
"name": "Anker Generic PC @base",
"sub_path": "filament/Anker Generic PC @base.json"
},
{
"name": "Anker Generic PETG @base",
"sub_path": "filament/Anker Generic PETG @base.json"
},
{
"name": "Anker Generic PETG-CF @base",
"sub_path": "filament/Anker Generic PETG-CF @base.json"
},
{
"name": "Anker Generic PLA @base",
"sub_path": "filament/Anker Generic PLA @base.json"
},
{
"name": "Anker Generic PLA Silk @base",
"sub_path": "filament/Anker Generic PLA Silk @base.json"
},
{
"name": "Anker Generic PLA+ @base",
"sub_path": "filament/Anker Generic PLA+ @base.json"
},
{
"name": "Anker Generic PLA-CF @base",
"sub_path": "filament/Anker Generic PLA-CF @base.json"
},
{
"name": "Anker Generic PVA @base",
"sub_path": "filament/Anker Generic PVA @base.json"
},
{
"name": "Anker Generic TPU @base",
"sub_path": "filament/Anker Generic TPU @base.json"
},
{
"name": "Anker Generic ABS",
"sub_path": "filament/Anker Generic ABS.json"
},
{
"name": "Anker Generic ABS 0.2 nozzle",
"sub_path": "filament/Anker Generic ABS 0.2 nozzle.json"
},
{
"name": "Anker Generic ABS 0.25 nozzle",
"sub_path": "filament/Anker Generic ABS 0.25 nozzle.json"
},
{
"name": "Anker Generic ASA",
"sub_path": "filament/Anker Generic ASA.json"
},
{
"name": "Anker Generic ASA 0.2 nozzle",
"sub_path": "filament/Anker Generic ASA 0.2 nozzle.json"
},
{
"name": "Anker Generic ASA 0.25 nozzle",
"sub_path": "filament/Anker Generic ASA 0.25 nozzle.json"
},
{
"name": "Anker Generic PA",
"sub_path": "filament/Anker Generic PA.json"
},
{
"name": "Anker Generic PA 0.2 nozzle",
"sub_path": "filament/Anker Generic PA 0.2 nozzle.json"
},
{
"name": "Anker Generic PA 0.25 nozzle",
"sub_path": "filament/Anker Generic PA 0.25 nozzle.json"
},
{
"name": "Anker Generic PA-CF",
"sub_path": "filament/Anker Generic PA-CF.json"
},
{
"name": "Anker Generic PC",
"sub_path": "filament/Anker Generic PC.json"
},
{
"name": "Anker Generic PC 0.2 nozzle",
"sub_path": "filament/Anker Generic PC 0.2 nozzle.json"
},
{
"name": "Anker Generic PC 0.25 nozzle",
"sub_path": "filament/Anker Generic PC 0.25 nozzle.json"
},
{
"name": "Anker Generic PETG",
"sub_path": "filament/Anker Generic PETG.json"
},
{
"name": "Anker Generic PETG 0.2 nozzle",
"sub_path": "filament/Anker Generic PETG 0.2 nozzle.json"
},
{
"name": "Anker Generic PETG 0.25 nozzle",
"sub_path": "filament/Anker Generic PETG 0.25 nozzle.json"
},
{
"name": "Anker Generic PETG-CF",
"sub_path": "filament/Anker Generic PETG-CF.json"
},
{
"name": "Anker Generic PLA",
"sub_path": "filament/Anker Generic PLA.json"
},
{
"name": "Anker Generic PLA 0.2 nozzle",
"sub_path": "filament/Anker Generic PLA 0.2 nozzle.json"
},
{
"name": "Anker Generic PLA 0.25 nozzle",
"sub_path": "filament/Anker Generic PLA 0.25 nozzle.json"
},
{
"name": "Anker Generic PLA Silk",
"sub_path": "filament/Anker Generic PLA Silk.json"
},
{
"name": "Anker Generic PLA Silk 0.2 nozzle",
"sub_path": "filament/Anker Generic PLA Silk 0.2 nozzle.json"
},
{
"name": "Anker Generic PLA Silk 0.25 nozzle",
"sub_path": "filament/Anker Generic PLA Silk 0.25 nozzle.json"
},
{
"name": "Anker Generic PLA+",
"sub_path": "filament/Anker Generic PLA+.json"
},
{
"name": "Anker Generic PLA+ 0.2 nozzle",
"sub_path": "filament/Anker Generic PLA+ 0.2 nozzle.json"
},
{
"name": "Anker Generic PLA+ 0.25 nozzle",
"sub_path": "filament/Anker Generic PLA+ 0.25 nozzle.json"
},
{
"name": "Anker Generic PLA-CF",
"sub_path": "filament/Anker Generic PLA-CF.json"
},
{
"name": "Anker Generic PVA",
"sub_path": "filament/Anker Generic PVA.json"
},
{
"name": "Anker Generic TPU",
"sub_path": "filament/Anker Generic TPU.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "fdm_marlin_common",
"sub_path": "machine/fdm_marlin_common.json"
},
{
"name": "Anker M5 0.2 nozzle",
"sub_path": "machine/Anker M5 0.2 nozzle.json"
},
{
"name": "Anker M5 0.25 nozzle",
"sub_path": "machine/Anker M5 0.25 nozzle.json"
},
{
"name": "Anker M5 0.4 nozzle",
"sub_path": "machine/Anker M5 0.4 nozzle.json"
},
{
"name": "Anker M5 0.6 nozzle",
"sub_path": "machine/Anker M5 0.6 nozzle.json"
},
{
"name": "Anker M5 All-Metal 0.2 nozzle",
"sub_path": "machine/Anker M5 All-Metal 0.2 nozzle.json"
},
{
"name": "Anker M5 All-Metal 0.25 nozzle",
"sub_path": "machine/Anker M5 All-Metal 0.25 nozzle.json"
},
{
"name": "Anker M5 All-Metal 0.4 nozzle",
"sub_path": "machine/Anker M5 All-Metal 0.4 nozzle.json"
},
{
"name": "Anker M5 All-Metal 0.6 nozzle",
"sub_path": "machine/Anker M5 All-Metal 0.6 nozzle.json"
},
{
"name": "Anker M5C 0.2 nozzle",
"sub_path": "machine/Anker M5C 0.2 nozzle.json"
},
{
"name": "Anker M5C 0.25 nozzle",
"sub_path": "machine/Anker M5C 0.25 nozzle.json"
},
{
"name": "Anker M5C 0.4 nozzle",
"sub_path": "machine/Anker M5C 0.4 nozzle.json"
},
{
"name": "Anker M5C 0.6 nozzle",
"sub_path": "machine/Anker M5C 0.6 nozzle.json"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

View File

@@ -0,0 +1,16 @@
{
"type": "filament",
"name": "Anker Generic ABS 0.2 nozzle",
"inherits": "Anker Generic ABS @base",
"from": "system",
"setting_id": "GFSB99_20",
"instantiation": "true",
"filament_max_volumetric_speed": [
"2"
],
"compatible_printers": [
"Anker M5 0.2 nozzle",
"Anker M5 All-Metal 0.2 nozzle",
"Anker M5C 0.2 nozzle"
]
}

View File

@@ -0,0 +1,16 @@
{
"type": "filament",
"name": "Anker Generic ABS 0.25 nozzle",
"inherits": "Anker Generic ABS @base",
"from": "system",
"setting_id": "GFSB99_25",
"instantiation": "true",
"filament_max_volumetric_speed": [
"3"
],
"compatible_printers": [
"Anker M5 0.25 nozzle",
"Anker M5 All-Metal 0.25 nozzle",
"Anker M5C 0.25 nozzle"
]
}

View File

@@ -0,0 +1,8 @@
{
"type": "filament",
"name": "Anker Generic ABS @base",
"inherits": "fdm_filament_abs",
"from": "system",
"filament_id": "GFB99",
"instantiation": "false"
}

View File

@@ -0,0 +1,16 @@
{
"type": "filament",
"name": "Anker Generic ABS",
"inherits": "Anker Generic ABS @base",
"from": "system",
"setting_id": "GFSB99",
"instantiation": "true",
"compatible_printers": [
"Anker M5 0.4 nozzle",
"Anker M5 0.6 nozzle",
"Anker M5 All-Metal 0.4 nozzle",
"Anker M5 All-Metal 0.6 nozzle",
"Anker M5C 0.4 nozzle",
"Anker M5C 0.6 nozzle"
]
}

View File

@@ -0,0 +1,16 @@
{
"type": "filament",
"name": "Anker Generic ASA 0.2 nozzle",
"inherits": "Anker Generic ASA @base",
"from": "system",
"setting_id": "GFSB98_20",
"instantiation": "true",
"filament_max_volumetric_speed": [
"2"
],
"compatible_printers": [
"Anker M5 0.2 nozzle",
"Anker M5 All-Metal 0.2 nozzle",
"Anker M5C 0.2 nozzle"
]
}

View File

@@ -0,0 +1,16 @@
{
"type": "filament",
"name": "Anker Generic ASA 0.25 nozzle",
"inherits": "Anker Generic ASA @base",
"from": "system",
"setting_id": "GFSB98_25",
"instantiation": "true",
"filament_max_volumetric_speed": [
"3"
],
"compatible_printers": [
"Anker M5 0.25 nozzle",
"Anker M5 All-Metal 0.25 nozzle",
"Anker M5C 0.25 nozzle"
]
}

View File

@@ -0,0 +1,8 @@
{
"type": "filament",
"name": "Anker Generic ASA @base",
"inherits": "fdm_filament_asa",
"from": "system",
"filament_id": "GFB98",
"instantiation": "false"
}

View File

@@ -0,0 +1,16 @@
{
"type": "filament",
"name": "Anker Generic ASA",
"inherits": "Anker Generic ASA @base",
"from": "system",
"setting_id": "GFSB98",
"instantiation": "true",
"compatible_printers": [
"Anker M5 0.4 nozzle",
"Anker M5 0.6 nozzle",
"Anker M5 All-Metal 0.4 nozzle",
"Anker M5 All-Metal 0.6 nozzle",
"Anker M5C 0.4 nozzle",
"Anker M5C 0.6 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "filament",
"name": "Anker Generic PA 0.2 nozzle",
"inherits": "Anker Generic PA @base",
"from": "system",
"setting_id": "GFSN99_20",
"instantiation": "true",
"filament_max_volumetric_speed": [
"2"
],
"compatible_printers": [
"Anker M5 All-Metal 0.2 nozzle",
"Anker M5C 0.2 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "filament",
"name": "Anker Generic PA 0.25 nozzle",
"inherits": "Anker Generic PA @base",
"from": "system",
"setting_id": "GFSN99_25",
"instantiation": "true",
"filament_max_volumetric_speed": [
"3"
],
"compatible_printers": [
"Anker M5 All-Metal 0.25 nozzle",
"Anker M5C 0.25 nozzle"
]
}

View File

@@ -0,0 +1,8 @@
{
"type": "filament",
"name": "Anker Generic PA @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFN99",
"instantiation": "false"
}

View File

@@ -0,0 +1,20 @@
{
"type": "filament",
"name": "Anker Generic PA-CF @base",
"inherits": "fdm_filament_pa",
"from": "system",
"filament_id": "GFN98",
"instantiation": "false",
"filament_type": [
"PA-CF"
],
"required_nozzle_HRC": [
"40"
],
"filament_cost": [
"55"
],
"filament_max_volumetric_speed": [
"6"
]
}

View File

@@ -0,0 +1,14 @@
{
"type": "filament",
"name": "Anker Generic PA-CF",
"inherits": "Anker Generic PA-CF @base",
"from": "system",
"setting_id": "GFSN98",
"instantiation": "true",
"compatible_printers": [
"Anker M5 All-Metal 0.4 nozzle",
"Anker M5 All-Metal 0.6 nozzle",
"Anker M5C 0.4 nozzle",
"Anker M5C 0.6 nozzle"
]
}

View File

@@ -0,0 +1,14 @@
{
"type": "filament",
"name": "Anker Generic PA",
"inherits": "Anker Generic PA @base",
"from": "system",
"setting_id": "GFSN99",
"instantiation": "true",
"compatible_printers": [
"Anker M5 All-Metal 0.4 nozzle",
"Anker M5 All-Metal 0.6 nozzle",
"Anker M5C 0.4 nozzle",
"Anker M5C 0.6 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "filament",
"name": "Anker Generic PC 0.2 nozzle",
"inherits": "Anker Generic PC @base",
"from": "system",
"setting_id": "GFSC99_20",
"instantiation": "true",
"filament_max_volumetric_speed": [
"2"
],
"compatible_printers": [
"Anker M5 All-Metal 0.2 nozzle",
"Anker M5C 0.2 nozzle"
]
}

View File

@@ -0,0 +1,15 @@
{
"type": "filament",
"name": "Anker Generic PC 0.25 nozzle",
"inherits": "Anker Generic PC @base",
"from": "system",
"setting_id": "GFSC99_25",
"instantiation": "true",
"filament_max_volumetric_speed": [
"3"
],
"compatible_printers": [
"Anker M5 All-Metal 0.25 nozzle",
"Anker M5C 0.25 nozzle"
]
}

View File

@@ -0,0 +1,8 @@
{
"type": "filament",
"name": "Anker Generic PC @base",
"inherits": "fdm_filament_pc",
"from": "system",
"filament_id": "GFC99",
"instantiation": "false"
}

Some files were not shown because too many files have changed in this diff Show More