Compare commits
5 Commits
7dc6741808
...
feat/param
| Author | SHA1 | Date | |
|---|---|---|---|
| 967c68fa52 | |||
| 6715d1f75e | |||
| c365b4fa6b | |||
| e9cca3daeb | |||
| 443ff04430 |
137
.gitea/workflows/cicd.yaml
Normal file
137
.gitea/workflows/cicd.yaml
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
name: Build, Test and Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- int
|
||||||
|
- dev
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-backend:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
pip install -r backend/requirements.txt
|
||||||
|
pip install pytest httpx
|
||||||
|
|
||||||
|
- name: Run Backend Tests
|
||||||
|
run: |
|
||||||
|
export PYTHONPATH=$PYTHONPATH:$(pwd)/backend
|
||||||
|
pytest backend/tests
|
||||||
|
|
||||||
|
build-and-push:
|
||||||
|
needs: test-backend
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set Environment Variables
|
||||||
|
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
|
||||||
|
|
||||||
|
- name: Login to Gitea Registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ${{ secrets.REGISTRY_URL }}
|
||||||
|
username: ${{ secrets.GITEA_USER }}
|
||||||
|
password: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and Push Backend
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: ./backend
|
||||||
|
push: true
|
||||||
|
tags: ${{ secrets.REGISTRY_URL }}/${{ gitea.repository_owner }}/print-calculator-backend:${{ env.TAG }}
|
||||||
|
|
||||||
|
- name: Build and Push Frontend
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: ./frontend
|
||||||
|
push: true
|
||||||
|
tags: ${{ secrets.REGISTRY_URL }}/${{ gitea.repository_owner }}/print-calculator-frontend:${{ env.TAG }}
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
needs: build-and-push
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set Deployment Vars
|
||||||
|
run: |
|
||||||
|
if [[ "${{ gitea.ref }}" == "refs/heads/main" ]]; then
|
||||||
|
echo "ENV=prod" >> $GITHUB_ENV
|
||||||
|
echo "TAG=prod" >> $GITHUB_ENV
|
||||||
|
elif [[ "${{ gitea.ref }}" == "refs/heads/int" ]]; then
|
||||||
|
echo "ENV=int" >> $GITHUB_ENV
|
||||||
|
echo "TAG=int" >> $GITHUB_ENV
|
||||||
|
else
|
||||||
|
echo "ENV=dev" >> $GITHUB_ENV
|
||||||
|
echo "TAG=dev" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create Remote Directory
|
||||||
|
uses: appleboy/ssh-action@v0.1.10
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
script: mkdir -p /mnt/user/appdata/print-calculator/${{ env.ENV }}/
|
||||||
|
|
||||||
|
- name: Copy Compose File to Server
|
||||||
|
uses: appleboy/scp-action@v0.1.4
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
source: "docker-compose.deploy.yml"
|
||||||
|
target: "/mnt/user/appdata/print-calculator/${{ env.ENV }}/"
|
||||||
|
|
||||||
|
- name: Copy Env File to Server
|
||||||
|
uses: appleboy/scp-action@v0.1.4
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
source: "deploy/envs/${{ env.ENV }}.env"
|
||||||
|
target: "/mnt/user/appdata/print-calculator/${{ env.ENV }}/.env"
|
||||||
|
|
||||||
|
- name: Execute Remote Deployment
|
||||||
|
uses: appleboy/ssh-action@v0.1.10
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
|
username: ${{ secrets.SERVER_USER }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
script: |
|
||||||
|
cd /mnt/user/appdata/print-calculator/${{ env.ENV }}/
|
||||||
|
|
||||||
|
# Rename the copied env file to strictly '.env' so docker compose picks it up automatically
|
||||||
|
mv ${{ env.ENV }}.env .env
|
||||||
|
|
||||||
|
# Login to registry
|
||||||
|
echo ${{ secrets.GITEA_TOKEN }} | docker login ${{ secrets.REGISTRY_URL }} -u ${{ secrets.GITEA_USER }} --password-stdin
|
||||||
|
|
||||||
|
# Pull new images
|
||||||
|
# We force reading from .env just to be safe, though default behavior does it too.
|
||||||
|
docker compose --env-file .env -f docker-compose.deploy.yml pull
|
||||||
|
|
||||||
|
# Start/Update services
|
||||||
|
# TAG is inside .env now, so we don't even need to pass it explicitly!
|
||||||
|
docker compose --env-file .env -f docker-compose.deploy.yml up -d --remove-orphans
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
@@ -24,3 +24,14 @@ hs_err_pid*
|
|||||||
replay_pid*
|
replay_pid*
|
||||||
/frontend/.vscode/
|
/frontend/.vscode/
|
||||||
/backend/venv/
|
/backend/venv/
|
||||||
|
|
||||||
|
# IDEs and editors
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
.vscode/
|
||||||
|
.vs/
|
||||||
|
.fleet/
|
||||||
|
.project
|
||||||
|
.classpath
|
||||||
|
.settings/
|
||||||
|
.DS_Store
|
||||||
|
|||||||
38
GEMINI.md
Normal file
38
GEMINI.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# 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.
|
||||||
137
backend/api/routes.py
Normal file
137
backend/api/routes.py
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
from fastapi import APIRouter, UploadFile, File, HTTPException, Form
|
||||||
|
from models.quote_request import QuoteRequest, QuoteResponse
|
||||||
|
from slicer import slicer_service
|
||||||
|
from calculator import GCodeParser, QuoteCalculator
|
||||||
|
from config import settings
|
||||||
|
from profile_manager import ProfileManager
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import uuid
|
||||||
|
import logging
|
||||||
|
import json
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
logger = logging.getLogger("api")
|
||||||
|
profile_manager = ProfileManager()
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
|
@router.post("/quote", response_model=QuoteResponse)
|
||||||
|
async def calculate_quote(
|
||||||
|
file: UploadFile = File(...),
|
||||||
|
# Compatible with form data if we parse manually or use specific dependencies.
|
||||||
|
# FastAPI handling of mixed File + JSON/Form is tricky.
|
||||||
|
# Easiest is to use Form(...) for fields.
|
||||||
|
machine: str = Form("bambu_a1"),
|
||||||
|
filament: str = Form("pla_basic"),
|
||||||
|
quality: str = Form("standard"),
|
||||||
|
layer_height: str = Form(None), # Form data comes as strings usually
|
||||||
|
infill_density: int = Form(None),
|
||||||
|
infill_pattern: str = Form(None),
|
||||||
|
support_enabled: bool = Form(False),
|
||||||
|
print_speed: int = Form(None)
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Endpoint for calculating print quote.
|
||||||
|
Accepts Multipart Form Data:
|
||||||
|
- file: The STL file
|
||||||
|
- machine, filament, quality: strings
|
||||||
|
- other overrides
|
||||||
|
"""
|
||||||
|
if not file.filename.lower().endswith(".stl"):
|
||||||
|
raise HTTPException(status_code=400, detail="Only .stl files are supported.")
|
||||||
|
if machine != "bambu_a1":
|
||||||
|
raise HTTPException(status_code=400, detail="Unsupported machine.")
|
||||||
|
|
||||||
|
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 File
|
||||||
|
with open(input_path, "wb") as buffer:
|
||||||
|
shutil.copyfileobj(file.file, buffer)
|
||||||
|
|
||||||
|
# 2. Build Overrides
|
||||||
|
overrides = {}
|
||||||
|
if layer_height is not None and layer_height != "":
|
||||||
|
overrides["layer_height"] = layer_height
|
||||||
|
if infill_density is not None:
|
||||||
|
overrides["sparse_infill_density"] = f"{infill_density}%"
|
||||||
|
if infill_pattern:
|
||||||
|
overrides["sparse_infill_pattern"] = infill_pattern
|
||||||
|
if support_enabled: overrides["enable_support"] = "1"
|
||||||
|
if print_speed is not None:
|
||||||
|
overrides["default_print_speed"] = str(print_speed)
|
||||||
|
|
||||||
|
# 3. Slice
|
||||||
|
# Pass parameters to slicer service
|
||||||
|
slicer_service.slice_stl(
|
||||||
|
input_stl_path=input_path,
|
||||||
|
output_gcode_path=output_path,
|
||||||
|
machine=machine,
|
||||||
|
filament=filament,
|
||||||
|
quality=quality,
|
||||||
|
overrides=overrides
|
||||||
|
)
|
||||||
|
|
||||||
|
# 4. Parse
|
||||||
|
stats = GCodeParser.parse_metadata(output_path)
|
||||||
|
if stats["print_time_seconds"] == 0 and stats["filament_weight_g"] == 0:
|
||||||
|
raise HTTPException(status_code=500, detail="Slicing returned empty stats.")
|
||||||
|
|
||||||
|
# 5. Calculate
|
||||||
|
# We could allow filament cost override here too if passed in params
|
||||||
|
quote = QuoteCalculator.calculate(stats)
|
||||||
|
|
||||||
|
return QuoteResponse(
|
||||||
|
success=True,
|
||||||
|
data={
|
||||||
|
"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"]
|
||||||
|
},
|
||||||
|
"parameters": {
|
||||||
|
"machine": machine,
|
||||||
|
"filament": filament,
|
||||||
|
"quality": quality
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Quote error: {e}", exc_info=True)
|
||||||
|
return QuoteResponse(success=False, error=str(e))
|
||||||
|
|
||||||
|
finally:
|
||||||
|
cleanup_files([input_path, output_path])
|
||||||
|
|
||||||
|
@router.get("/profiles/available")
|
||||||
|
def get_profiles():
|
||||||
|
return {
|
||||||
|
"machines": profile_manager.list_machines(),
|
||||||
|
"filaments": profile_manager.list_filaments(),
|
||||||
|
"processes": profile_manager.list_processes()
|
||||||
|
}
|
||||||
@@ -60,11 +60,14 @@ class GCodeParser:
|
|||||||
# Parse Time
|
# Parse Time
|
||||||
if "estimated printing time =" in line: # Header
|
if "estimated printing time =" in line: # Header
|
||||||
time_str = line.split("=")[1].strip()
|
time_str = line.split("=")[1].strip()
|
||||||
|
logger.info(f"Parsing time string (Header): '{time_str}'")
|
||||||
stats["print_time_seconds"] = GCodeParser._parse_time_string(time_str)
|
stats["print_time_seconds"] = GCodeParser._parse_time_string(time_str)
|
||||||
elif "total estimated time:" in line: # Footer
|
elif "total estimated time:" in line: # Footer
|
||||||
parts = line.split("total estimated time:")
|
parts = line.split("total estimated time:")
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
stats["print_time_seconds"] = GCodeParser._parse_time_string(parts[1].strip())
|
time_str = parts[1].strip()
|
||||||
|
logger.info(f"Parsing time string (Footer): '{time_str}'")
|
||||||
|
stats["print_time_seconds"] = GCodeParser._parse_time_string(time_str)
|
||||||
|
|
||||||
# Parse Filament info
|
# Parse Filament info
|
||||||
if "filament used [g] =" in line:
|
if "filament used [g] =" in line:
|
||||||
@@ -94,9 +97,21 @@ class GCodeParser:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse_time_string(time_str: str) -> int:
|
def _parse_time_string(time_str: str) -> int:
|
||||||
"""
|
"""
|
||||||
Converts '1d 2h 3m 4s' to seconds.
|
Converts '1d 2h 3m 4s' or 'HH:MM:SS' to seconds.
|
||||||
"""
|
"""
|
||||||
total_seconds = 0
|
total_seconds = 0
|
||||||
|
|
||||||
|
# Try HH:MM:SS or MM:SS format
|
||||||
|
if ':' in time_str:
|
||||||
|
parts = time_str.split(':')
|
||||||
|
parts = [int(p) for p in parts]
|
||||||
|
if len(parts) == 3: # HH:MM:SS
|
||||||
|
total_seconds = parts[0] * 3600 + parts[1] * 60 + parts[2]
|
||||||
|
elif len(parts) == 2: # MM:SS
|
||||||
|
total_seconds = parts[0] * 60 + parts[1]
|
||||||
|
return total_seconds
|
||||||
|
|
||||||
|
# Original regex parsing for "1h 2m 3s"
|
||||||
days = re.search(r'(\d+)d', time_str)
|
days = re.search(r'(\d+)d', time_str)
|
||||||
hours = re.search(r'(\d+)h', time_str)
|
hours = re.search(r'(\d+)h', time_str)
|
||||||
mins = re.search(r'(\d+)m', time_str)
|
mins = re.search(r'(\d+)m', time_str)
|
||||||
@@ -122,6 +137,8 @@ class QuoteCalculator:
|
|||||||
|
|
||||||
# 2. Machine Time Cost
|
# 2. Machine Time Cost
|
||||||
# Cost per second = (Cost per hour / 3600)
|
# Cost per second = (Cost per hour / 3600)
|
||||||
|
print("ciaooo")
|
||||||
|
print(stats["print_time_seconds"])
|
||||||
print_time_hours = stats["print_time_seconds"] / 3600.0
|
print_time_hours = stats["print_time_seconds"] / 3600.0
|
||||||
machine_cost = print_time_hours * settings.MACHINE_COST_PER_HOUR
|
machine_cost = print_time_hours * settings.MACHINE_COST_PER_HOUR
|
||||||
|
|
||||||
@@ -137,6 +154,13 @@ class QuoteCalculator:
|
|||||||
markup_factor = 1.0 + (settings.MARKUP_PERCENT / 100.0)
|
markup_factor = 1.0 + (settings.MARKUP_PERCENT / 100.0)
|
||||||
total_price = subtotal * markup_factor
|
total_price = subtotal * markup_factor
|
||||||
|
|
||||||
|
logger.info("Cost Calculation:")
|
||||||
|
logger.info(f" - Use: {stats['filament_weight_g']:.2f}g @ {settings.FILAMENT_COST_PER_KG}€/kg = {material_cost:.2f}€")
|
||||||
|
logger.info(f" - Time: {print_time_hours:.4f}h @ {settings.MACHINE_COST_PER_HOUR}€/h = {machine_cost:.2f}€")
|
||||||
|
logger.info(f" - Power: {kwh_used:.4f}kWh @ {settings.ENERGY_COST_PER_KWH}€/kWh = {energy_cost:.2f}€")
|
||||||
|
logger.info(f" - Subtotal: {subtotal:.2f}€")
|
||||||
|
logger.info(f" - Total (Markup {settings.MARKUP_PERCENT}%): {total_price:.2f}€")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"breakdown": {
|
"breakdown": {
|
||||||
"material_cost": round(material_cost, 2),
|
"material_cost": round(material_cost, 2),
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
class Settings:
|
class Settings:
|
||||||
# Directories
|
# Directories
|
||||||
@@ -7,13 +8,18 @@ class Settings:
|
|||||||
PROFILES_DIR = os.environ.get("PROFILES_DIR", os.path.join(BASE_DIR, "profiles"))
|
PROFILES_DIR = os.environ.get("PROFILES_DIR", os.path.join(BASE_DIR, "profiles"))
|
||||||
|
|
||||||
# Slicer Paths
|
# Slicer Paths
|
||||||
SLICER_PATH = os.environ.get("SLICER_PATH", "/opt/orcaslicer/AppRun")
|
if sys.platform == "darwin":
|
||||||
|
_DEFAULT_SLICER_PATH = "/Applications/OrcaSlicer.app/Contents/MacOS/OrcaSlicer"
|
||||||
|
else:
|
||||||
|
_DEFAULT_SLICER_PATH = "/opt/orcaslicer/AppRun"
|
||||||
|
|
||||||
|
SLICER_PATH = os.environ.get("SLICER_PATH", _DEFAULT_SLICER_PATH)
|
||||||
ORCA_HOME = os.environ.get("ORCA_HOME", "/opt/orcaslicer")
|
ORCA_HOME = os.environ.get("ORCA_HOME", "/opt/orcaslicer")
|
||||||
|
|
||||||
# Defaults Profiles (Bambu A1)
|
# Defaults Profiles (Bambu A1)
|
||||||
MACHINE_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json")
|
MACHINE_PROFILE = os.path.join(PROFILES_DIR, "Bambu_Lab_A1_machine.json")
|
||||||
PROCESS_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/process/0.20mm Standard @BBL A1.json")
|
PROCESS_PROFILE = os.path.join(PROFILES_DIR, "Bambu_Process_0.20_Standard.json")
|
||||||
FILAMENT_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/filament/Generic PLA @BBL A1.json")
|
FILAMENT_PROFILE = os.path.join(PROFILES_DIR, "Bambu_PLA_Basic.json")
|
||||||
|
|
||||||
# Pricing
|
# Pricing
|
||||||
FILAMENT_COST_PER_KG = float(os.environ.get("FILAMENT_COST_PER_KG", 25.0))
|
FILAMENT_COST_PER_KG = float(os.environ.get("FILAMENT_COST_PER_KG", 25.0))
|
||||||
|
|||||||
124
backend/main.py
124
backend/main.py
@@ -1,19 +1,13 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
import uuid
|
|
||||||
import logging
|
import logging
|
||||||
from fastapi import FastAPI, UploadFile, File, HTTPException
|
import os
|
||||||
|
from fastapi import FastAPI
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from pydantic import BaseModel
|
|
||||||
|
|
||||||
# Import custom modules
|
|
||||||
from config import settings
|
from config import settings
|
||||||
from slicer import slicer_service
|
from api.routes import router as api_router
|
||||||
from calculator import GCodeParser, QuoteCalculator
|
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
logger = logging.getLogger("api")
|
logger = logging.getLogger("main")
|
||||||
|
|
||||||
app = FastAPI(title="Print Calculator API")
|
app = FastAPI(title="Print Calculator API")
|
||||||
|
|
||||||
@@ -29,84 +23,52 @@ app.add_middleware(
|
|||||||
# Ensure directories exist
|
# Ensure directories exist
|
||||||
os.makedirs(settings.TEMP_DIR, exist_ok=True)
|
os.makedirs(settings.TEMP_DIR, exist_ok=True)
|
||||||
|
|
||||||
class QuoteResponse(BaseModel):
|
# Include Router
|
||||||
printer: str
|
app.include_router(api_router, prefix="/api")
|
||||||
print_time_seconds: int
|
|
||||||
print_time_formatted: str
|
|
||||||
material_grams: float
|
|
||||||
cost: dict
|
|
||||||
notes: list[str] = []
|
|
||||||
|
|
||||||
def cleanup_files(files: list):
|
# Legacy endpoint redirect or basic handler if needed for backward compatibility
|
||||||
for f in files:
|
# The frontend likely calls /calculate/stl.
|
||||||
try:
|
# We should probably keep the old route or instruct user to update frontend.
|
||||||
if os.path.exists(f):
|
# But for this task, let's remap the old route to the new logic if possible,
|
||||||
os.remove(f)
|
# or just expose the new route.
|
||||||
except Exception as e:
|
# The user request said: "Creare api/routes.py ... @app.post('/api/quote')"
|
||||||
logger.warning(f"Failed to delete temp file {f}: {e}")
|
# So we are creating a new endpoint.
|
||||||
|
# Existing frontend might break?
|
||||||
|
# The context says: "Currently uses hardcoded... Objective is to render system flexible... Frontend: Angular 19"
|
||||||
|
# The user didn't explicitly ask to update the frontend, but the new API is at /api/quote.
|
||||||
|
# I will keep the old "/calculate/stl" endpoint support by forwarding it or duplicating logic if critical,
|
||||||
|
# OR I'll assume the user will handle frontend updates.
|
||||||
|
# Better: I will alias the old route to the new one if parameters allow,
|
||||||
|
# but the new one expects Form data with different names maybe?
|
||||||
|
# Old: `/calculate/stl` just expected a file.
|
||||||
|
# I'll enable a simplified version on the old route for backward compat using defaults.
|
||||||
|
|
||||||
def format_time(seconds: int) -> str:
|
from fastapi import UploadFile, File
|
||||||
m, s = divmod(seconds, 60)
|
from api.routes import calculate_quote
|
||||||
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)
|
@app.post("/calculate/stl")
|
||||||
async def calculate_from_stl(file: UploadFile = File(...)):
|
async def legacy_calculate(file: UploadFile = File(...)):
|
||||||
if not file.filename.lower().endswith(".stl"):
|
"""Legacy endpoint compatibility"""
|
||||||
raise HTTPException(status_code=400, detail="Only .stl files are supported.")
|
# Call the new logic with defaults
|
||||||
|
resp = await calculate_quote(file=file)
|
||||||
# Unique ID for this request
|
if not resp.success:
|
||||||
req_id = str(uuid.uuid4())
|
from fastapi import HTTPException
|
||||||
input_filename = f"{req_id}.stl"
|
raise HTTPException(status_code=500, detail=resp.error)
|
||||||
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)
|
|
||||||
|
|
||||||
|
# Map Check response to old format
|
||||||
|
data = resp.data
|
||||||
return {
|
return {
|
||||||
"printer": "BambuLab A1 (Estimated)",
|
"print_time_seconds": data.get("print_time_seconds", 0),
|
||||||
"print_time_seconds": stats["print_time_seconds"],
|
"print_time_formatted": data.get("print_time_formatted", ""),
|
||||||
"print_time_formatted": format_time(stats["print_time_seconds"]),
|
"material_grams": data.get("material_grams", 0.0),
|
||||||
"material_grams": stats["filament_weight_g"],
|
"cost": data.get("cost", {}),
|
||||||
"cost": {
|
"notes": ["Generated via Dynamic Slicer (Legacy Endpoint)"]
|
||||||
"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")
|
@app.get("/health")
|
||||||
def health_check():
|
def health_check():
|
||||||
return {"status": "ok", "slicer": settings.SLICER_PATH}
|
return {"status": "ok", "slicer": settings.SLICER_PATH}
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import uvicorn
|
||||||
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||||
|
|||||||
37
backend/models/quote_request.py
Normal file
37
backend/models/quote_request.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
from pydantic import BaseModel, Field, validator
|
||||||
|
from typing import Optional, Literal, Dict, Any
|
||||||
|
|
||||||
|
class QuoteRequest(BaseModel):
|
||||||
|
# File STL (base64 or path)
|
||||||
|
file_path: Optional[str] = None
|
||||||
|
file_base64: Optional[str] = None
|
||||||
|
|
||||||
|
# Parametri slicing
|
||||||
|
machine: str = Field(default="bambu_a1", description="Machine type")
|
||||||
|
filament: str = Field(default="pla_basic", description="Filament type")
|
||||||
|
quality: Literal["draft", "standard", "fine"] = Field(default="standard")
|
||||||
|
|
||||||
|
# Parametri opzionali
|
||||||
|
layer_height: Optional[float] = Field(None, ge=0.08, le=0.32)
|
||||||
|
infill_density: Optional[int] = Field(None, ge=0, le=100)
|
||||||
|
support_enabled: Optional[bool] = None
|
||||||
|
print_speed: Optional[int] = Field(None, ge=20, le=300)
|
||||||
|
|
||||||
|
# Pricing overrides
|
||||||
|
filament_cost_override: Optional[float] = None
|
||||||
|
|
||||||
|
@validator('machine')
|
||||||
|
def validate_machine(cls, v):
|
||||||
|
# This list should ideally be dynamic, but for validation purposes we start with known ones.
|
||||||
|
# Logic in ProfileManager can be looser or strict.
|
||||||
|
# For now, we allow the string through and let ProfileManager validate availability.
|
||||||
|
return v
|
||||||
|
|
||||||
|
@validator('filament')
|
||||||
|
def validate_filament(cls, v):
|
||||||
|
return v
|
||||||
|
|
||||||
|
class QuoteResponse(BaseModel):
|
||||||
|
success: bool
|
||||||
|
data: Optional[Dict[str, Any]] = None
|
||||||
|
error: Optional[str] = None
|
||||||
BIN
backend/obj_1_Base.stl
Normal file
BIN
backend/obj_1_Base.stl
Normal file
Binary file not shown.
BIN
backend/obj_3_Hinge.stl
Normal file
BIN
backend/obj_3_Hinge.stl
Normal file
Binary file not shown.
3986
backend/output/plate_1.gcode
Normal file
3986
backend/output/plate_1.gcode
Normal file
File diff suppressed because it is too large
Load Diff
15
backend/profile_cache.py
Normal file
15
backend/profile_cache.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
from functools import lru_cache
|
||||||
|
import hashlib
|
||||||
|
from typing import Dict, Tuple
|
||||||
|
|
||||||
|
# We can't cache the profile manager instance itself easily if it's not a singleton,
|
||||||
|
# but we can cache the result of a merge function if we pass simple types.
|
||||||
|
# However, to avoid circular imports or complex dependency injection,
|
||||||
|
# we will just provide a helper to generate cache keys and a holder for logic if needed.
|
||||||
|
# For now, the ProfileManager will strictly determine *what* to merge.
|
||||||
|
# Validating the cache strategy: since file I/O is the bottleneck, we want to cache the *content*.
|
||||||
|
|
||||||
|
def get_cache_key(machine: str, filament: str, process: str) -> str:
|
||||||
|
"""Helper to create a unique cache key"""
|
||||||
|
data = f"{machine}|{filament}|{process}"
|
||||||
|
return hashlib.md5(data.encode()).hexdigest()
|
||||||
193
backend/profile_manager.py
Normal file
193
backend/profile_manager.py
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
from typing import Dict, List, Tuple, Optional
|
||||||
|
from profile_cache import get_cache_key
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class ProfileManager:
|
||||||
|
def __init__(self, profiles_root: str = "profiles"):
|
||||||
|
# Assuming profiles_root is relative to backend or absolute
|
||||||
|
if not os.path.isabs(profiles_root):
|
||||||
|
base_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
self.profiles_root = os.path.join(base_dir, profiles_root)
|
||||||
|
else:
|
||||||
|
self.profiles_root = profiles_root
|
||||||
|
|
||||||
|
if not os.path.exists(self.profiles_root):
|
||||||
|
logger.warning(f"Profiles root not found: {self.profiles_root}")
|
||||||
|
|
||||||
|
def get_profiles(self, machine: str, filament: str, process: str) -> Tuple[Dict, Dict, Dict]:
|
||||||
|
"""
|
||||||
|
Main entry point to get merged profiles.
|
||||||
|
Args:
|
||||||
|
machine: e.g. "Bambu Lab A1 0.4 nozzle"
|
||||||
|
filament: e.g. "Bambu PLA Basic @BBL A1"
|
||||||
|
process: e.g. "0.20mm Standard @BBL A1"
|
||||||
|
"""
|
||||||
|
# Try cache first (although specific logic is needed if we cache the *result* or the *files*)
|
||||||
|
# Since we implemented a simple external cache helper, let's use it if we want,
|
||||||
|
# but for now we will rely on internal logic or the lru_cache decorator on a helper method.
|
||||||
|
# But wait, the `get_cached_profiles` in profile_cache.py calls `build_merged_profiles` which is logic WE need to implement.
|
||||||
|
# So we should probably move the implementation here and have the cache wrapper call it,
|
||||||
|
# OR just implement it here and wrap it.
|
||||||
|
|
||||||
|
return self._build_merged_profiles(machine, filament, process)
|
||||||
|
|
||||||
|
def _build_merged_profiles(self, machine_name: str, filament_name: str, process_name: str) -> Tuple[Dict, Dict, Dict]:
|
||||||
|
# We need to find the files.
|
||||||
|
# The naming convention in OrcaSlicer profiles usually involves the Vendor (e.g. BBL).
|
||||||
|
# We might need a mapping or search.
|
||||||
|
# For this implementation, we will assume we know the relative paths or search for them.
|
||||||
|
|
||||||
|
# Strategy: Search in all vendor subdirs for the specific JSON files.
|
||||||
|
# Because names are usually unique enough or we can specify the expected vendor.
|
||||||
|
# However, to be fast, we can map "machine_name" to a file path.
|
||||||
|
|
||||||
|
machine_file = self._find_profile_file(machine_name, "machine")
|
||||||
|
filament_file = self._find_profile_file(filament_name, "filament")
|
||||||
|
process_file = self._find_profile_file(process_name, "process")
|
||||||
|
|
||||||
|
if not machine_file:
|
||||||
|
raise FileNotFoundError(f"Machine profile not found: {machine_name}")
|
||||||
|
if not filament_file:
|
||||||
|
raise FileNotFoundError(f"Filament profile not found: {filament_name}")
|
||||||
|
if not process_file:
|
||||||
|
raise FileNotFoundError(f"Process profile not found: {process_name}")
|
||||||
|
|
||||||
|
machine_profile = self._merge_chain(machine_file)
|
||||||
|
filament_profile = self._merge_chain(filament_file)
|
||||||
|
process_profile = self._merge_chain(process_file)
|
||||||
|
|
||||||
|
# Apply patches
|
||||||
|
machine_profile = self._apply_patches(machine_profile, "machine")
|
||||||
|
process_profile = self._apply_patches(process_profile, "process")
|
||||||
|
|
||||||
|
return machine_profile, process_profile, filament_profile
|
||||||
|
|
||||||
|
def _find_profile_file(self, profile_name: str, profile_type: str) -> Optional[str]:
|
||||||
|
"""
|
||||||
|
Searches for a profile file by name in the profiles directory.
|
||||||
|
The name should match the filename (without .json possibly) or be a precise match.
|
||||||
|
"""
|
||||||
|
# Add .json if missing
|
||||||
|
filename = profile_name if profile_name.endswith(".json") else f"{profile_name}.json"
|
||||||
|
|
||||||
|
for root, dirs, files in os.walk(self.profiles_root):
|
||||||
|
if filename in files:
|
||||||
|
# Check if it is in the correct type folder (machine, filament, process)
|
||||||
|
# OrcaSlicer structure: Vendor/process/file.json
|
||||||
|
# We optionally verify parent dir
|
||||||
|
if os.path.basename(root) == profile_type or profile_type in root:
|
||||||
|
return os.path.join(root, filename)
|
||||||
|
|
||||||
|
# Fallback: if we simply found it, maybe just return it?
|
||||||
|
# Some common files might be in root or other places.
|
||||||
|
# Let's return it if we are fairly sure.
|
||||||
|
return os.path.join(root, filename)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _merge_chain(self, final_file_path: str) -> Dict:
|
||||||
|
"""
|
||||||
|
Resolves inheritance and merges.
|
||||||
|
"""
|
||||||
|
chain = []
|
||||||
|
current_path = final_file_path
|
||||||
|
|
||||||
|
# 1. Build chain
|
||||||
|
while current_path:
|
||||||
|
chain.insert(0, current_path) # Prepend
|
||||||
|
|
||||||
|
with open(current_path, 'r', encoding='utf-8') as f:
|
||||||
|
try:
|
||||||
|
data = json.load(f)
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
logger.error(f"Failed to decode JSON: {current_path}")
|
||||||
|
raise e
|
||||||
|
|
||||||
|
inherits = data.get("inherits")
|
||||||
|
if inherits:
|
||||||
|
# Resolve inherited file
|
||||||
|
# It is usually in the same directory or relative.
|
||||||
|
# OrcaSlicer logic: checks same dir, then parent, etc.
|
||||||
|
# Usually it's in the same directory.
|
||||||
|
parent_dir = os.path.dirname(current_path)
|
||||||
|
inherited_path = os.path.join(parent_dir, inherits)
|
||||||
|
|
||||||
|
# Special case: if not found, it might be in a common folder?
|
||||||
|
# But OrcaSlicer usually keeps them local or in specific common dirs.
|
||||||
|
if not os.path.exists(inherited_path) and not inherits.endswith(".json"):
|
||||||
|
inherited_path += ".json"
|
||||||
|
|
||||||
|
if os.path.exists(inherited_path):
|
||||||
|
current_path = inherited_path
|
||||||
|
else:
|
||||||
|
# Could be a system common file not in the same dir?
|
||||||
|
# For simplicty, try to look up in the same generic type folder across the vendor?
|
||||||
|
# Or just fail for now.
|
||||||
|
# Often "fdm_machine_common.json" is at the Vendor root or similar?
|
||||||
|
# Let's try searching recursively if not found in place.
|
||||||
|
found = self._find_profile_file(inherits, "any") # "any" type
|
||||||
|
if found:
|
||||||
|
current_path = found
|
||||||
|
else:
|
||||||
|
logger.warning(f"Inherited profile '{inherits}' not found for '{current_path}' (Root: {self.profiles_root})")
|
||||||
|
current_path = None
|
||||||
|
else:
|
||||||
|
current_path = None
|
||||||
|
|
||||||
|
# 2. Merge
|
||||||
|
merged = {}
|
||||||
|
for path in chain:
|
||||||
|
with open(path, 'r', encoding='utf-8') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
# Shallow update
|
||||||
|
merged.update(data)
|
||||||
|
|
||||||
|
# Remove metadata
|
||||||
|
merged.pop("inherits", None)
|
||||||
|
|
||||||
|
return merged
|
||||||
|
|
||||||
|
def _apply_patches(self, profile: Dict, profile_type: str) -> Dict:
|
||||||
|
if profile_type == "machine":
|
||||||
|
# Patch: G92 E0 to ensure extrusion reference text matches
|
||||||
|
lcg = profile.get("layer_change_gcode", "")
|
||||||
|
if "G92 E0" not in lcg:
|
||||||
|
# Append neatly
|
||||||
|
if lcg and not lcg.endswith("\n"):
|
||||||
|
lcg += "\n"
|
||||||
|
lcg += "G92 E0"
|
||||||
|
profile["layer_change_gcode"] = lcg
|
||||||
|
|
||||||
|
# Patch: ensure printable height is sufficient?
|
||||||
|
# Only if necessary. For now, trust the profile.
|
||||||
|
|
||||||
|
elif profile_type == "process":
|
||||||
|
# Optional: Disable skirt/brim if we want a "clean" print estimation?
|
||||||
|
# Actually, for accurate cost, we SHOULD include skirt/brim if the profile has it.
|
||||||
|
pass
|
||||||
|
|
||||||
|
return profile
|
||||||
|
|
||||||
|
def list_machines(self) -> List[str]:
|
||||||
|
# Simple helper to list available machine JSONs
|
||||||
|
return self._list_profiles_by_type("machine")
|
||||||
|
|
||||||
|
def list_filaments(self) -> List[str]:
|
||||||
|
return self._list_profiles_by_type("filament")
|
||||||
|
|
||||||
|
def list_processes(self) -> List[str]:
|
||||||
|
return self._list_profiles_by_type("process")
|
||||||
|
|
||||||
|
def _list_profiles_by_type(self, ptype: str) -> List[str]:
|
||||||
|
results = []
|
||||||
|
for root, dirs, files in os.walk(self.profiles_root):
|
||||||
|
if os.path.basename(root) == ptype:
|
||||||
|
for f in files:
|
||||||
|
if f.endswith(".json") and "common" not in f:
|
||||||
|
results.append(f.replace(".json", ""))
|
||||||
|
return sorted(results)
|
||||||
24
backend/profile_mappings.json
Normal file
24
backend/profile_mappings.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"quality_to_process": {
|
||||||
|
"draft": "0.28mm Extra Draft @BBL A1",
|
||||||
|
"standard": "0.20mm Standard @BBL A1",
|
||||||
|
"fine": "0.12mm Fine @BBL A1"
|
||||||
|
},
|
||||||
|
"filament_costs": {
|
||||||
|
"pla_basic": 20.0,
|
||||||
|
"petg_basic": 25.0,
|
||||||
|
"abs_basic": 22.0,
|
||||||
|
"tpu_95a": 35.0
|
||||||
|
},
|
||||||
|
"filament_to_profile": {
|
||||||
|
"pla_basic": "Bambu PLA Basic @BBL A1",
|
||||||
|
"petg_basic": "Bambu PETG Basic @BBL A1",
|
||||||
|
"abs_basic": "Bambu ABS @BBL A1",
|
||||||
|
"tpu_95a": "Bambu TPU 95A @BBL A1"
|
||||||
|
},
|
||||||
|
"machine_to_profile": {
|
||||||
|
"bambu_a1": "Bambu Lab A1 0.4 nozzle",
|
||||||
|
"bambu_x1": "Bambu Lab X1 Carbon 0.4 nozzle",
|
||||||
|
"bambu_p1s": "Bambu Lab P1S 0.4 nozzle"
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -6,13 +6,13 @@ bed_shape = 0x0,256x0,256x256,0x256
|
|||||||
nozzle_diameter = 0.4
|
nozzle_diameter = 0.4
|
||||||
filament_diameter = 1.75
|
filament_diameter = 1.75
|
||||||
max_print_speed = 500
|
max_print_speed = 500
|
||||||
travel_speed = 500
|
travel_speed = 700
|
||||||
gcode_flavor = klipper
|
gcode_flavor = klipper
|
||||||
# Bambu uses specific gcode but klipper/marlin is close enough for time est if accel matches
|
# Bambu uses specific gcode but klipper/marlin is close enough for time est if accel matches
|
||||||
machine_max_acceleration_x = 10000
|
machine_max_acceleration_x = 10000
|
||||||
machine_max_acceleration_y = 10000
|
machine_max_acceleration_y = 10000
|
||||||
machine_max_acceleration_e = 5000
|
machine_max_acceleration_e = 6000
|
||||||
machine_max_acceleration_extruding = 5000
|
machine_max_acceleration_extruding = 6000
|
||||||
|
|
||||||
# PRINT SETTINGS
|
# PRINT SETTINGS
|
||||||
layer_height = 0.2
|
layer_height = 0.2
|
||||||
@@ -26,17 +26,17 @@ bottom_solid_layers = 3
|
|||||||
|
|
||||||
# SPEED SETTINGS (Conservative defaults for A1)
|
# SPEED SETTINGS (Conservative defaults for A1)
|
||||||
perimeter_speed = 200
|
perimeter_speed = 200
|
||||||
external_perimeter_speed = 150
|
external_perimeter_speed = 200
|
||||||
infill_speed = 250
|
infill_speed = 250
|
||||||
solid_infill_speed = 200
|
solid_infill_speed = 200
|
||||||
top_solid_infill_speed = 150
|
top_solid_infill_speed = 150
|
||||||
support_material_speed = 150
|
support_material_speed = 150
|
||||||
bridge_speed = 50
|
bridge_speed = 150
|
||||||
gap_fill_speed = 50
|
gap_fill_speed = 50
|
||||||
|
|
||||||
# FILAMENT SETTINGS
|
# FILAMENT SETTINGS
|
||||||
filament_density = 1.24
|
filament_density = 1.24
|
||||||
filament_cost = 25.0
|
filament_cost = 18.0
|
||||||
filament_max_volumetric_speed = 15
|
filament_max_volumetric_speed = 15
|
||||||
temperature = 220
|
temperature = 220
|
||||||
bed_temperature = 60
|
bed_temperature = 65
|
||||||
|
|||||||
88
backend/profiles/printers/BL-P001.json
Normal file
88
backend/profiles/printers/BL-P001.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
88
backend/profiles/printers/BL-P002.json
Normal file
88
backend/profiles/printers/BL-P002.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
93
backend/profiles/printers/C11.json
Normal file
93
backend/profiles/printers/C11.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
85
backend/profiles/printers/C12.json
Normal file
85
backend/profiles/printers/C12.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
61
backend/profiles/printers/C13.json
Normal file
61
backend/profiles/printers/C13.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
62
backend/profiles/printers/N1.json
Normal file
62
backend/profiles/printers/N1.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
61
backend/profiles/printers/N2S.json
Normal file
61
backend/profiles/printers/N2S.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
74
backend/profiles/printers/O1D.json
Normal file
74
backend/profiles/printers/O1D.json
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
51
backend/profiles/printers/ams_load.gcode
Normal file
51
backend/profiles/printers/ams_load.gcode
Normal 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]
|
||||||
|
|
||||||
33
backend/profiles/printers/ams_unload.gcode
Normal file
33
backend/profiles/printers/ams_unload.gcode
Normal 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
|
||||||
|
|
||||||
60
backend/profiles/printers/filaments_blacklist.json
Normal file
60
backend/profiles/printers/filaments_blacklist.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1
backend/profiles/printers/version.txt
Normal file
1
backend/profiles/printers/version.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
01.10.00.01
|
||||||
194
backend/profiles/profiles/Afinia.json
Normal file
194
backend/profiles/profiles/Afinia.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
backend/profiles/profiles/Afinia/Afinia H+1(HS)_cover.png
Normal file
BIN
backend/profiles/profiles/Afinia/Afinia H+1(HS)_cover.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
37
backend/profiles/profiles/Afinia/filament/Afinia ABS+.json
Normal file
37
backend/profiles/profiles/Afinia/filament/Afinia ABS+.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
31
backend/profiles/profiles/Afinia/filament/Afinia ABS.json
Normal file
31
backend/profiles/profiles/Afinia/filament/Afinia ABS.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
31
backend/profiles/profiles/Afinia/filament/Afinia ABS@HS.json
Normal file
31
backend/profiles/profiles/Afinia/filament/Afinia ABS@HS.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
34
backend/profiles/profiles/Afinia/filament/Afinia PLA.json
Normal file
34
backend/profiles/profiles/Afinia/filament/Afinia PLA.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
34
backend/profiles/profiles/Afinia/filament/Afinia PLA@HS.json
Normal file
34
backend/profiles/profiles/Afinia/filament/Afinia PLA@HS.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
27
backend/profiles/profiles/Afinia/filament/Afinia TPU.json
Normal file
27
backend/profiles/profiles/Afinia/filament/Afinia TPU.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
27
backend/profiles/profiles/Afinia/filament/Afinia TPU@HS.json
Normal file
27
backend/profiles/profiles/Afinia/filament/Afinia TPU@HS.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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}"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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}"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
12
backend/profiles/profiles/Afinia/machine/Afinia H+1(HS).json
Normal file
12
backend/profiles/profiles/Afinia/machine/Afinia H+1(HS).json
Normal 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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
119
backend/profiles/profiles/Afinia/machine/fdm_machine_common.json
Normal file
119
backend/profiles/profiles/Afinia/machine/fdm_machine_common.json
Normal 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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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": []
|
||||||
|
}
|
||||||
@@ -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": []
|
||||||
|
}
|
||||||
@@ -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": []
|
||||||
|
}
|
||||||
390
backend/profiles/profiles/Anker.json
Normal file
390
backend/profiles/profiles/Anker.json
Normal 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 |
BIN
backend/profiles/profiles/Anker/Anker M5C_cover.png
Normal file
BIN
backend/profiles/profiles/Anker/Anker M5C_cover.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
backend/profiles/profiles/Anker/Anker M5_cover.png
Normal file
BIN
backend/profiles/profiles/Anker/Anker M5_cover.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
BIN
backend/profiles/profiles/Anker/M5-CE-bed.stl
Normal file
BIN
backend/profiles/profiles/Anker/M5-CE-bed.stl
Normal file
Binary file not shown.
15
backend/profiles/profiles/Anker/M5-CE-texture.svg
Normal file
15
backend/profiles/profiles/Anker/M5-CE-texture.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 7.3 KiB |
BIN
backend/profiles/profiles/Anker/M5C-CE-bed.stl
Normal file
BIN
backend/profiles/profiles/Anker/M5C-CE-bed.stl
Normal file
Binary file not shown.
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Anker Generic ABS @base",
|
||||||
|
"inherits": "fdm_filament_abs",
|
||||||
|
"from": "system",
|
||||||
|
"filament_id": "GFB99",
|
||||||
|
"instantiation": "false"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Anker Generic ASA @base",
|
||||||
|
"inherits": "fdm_filament_asa",
|
||||||
|
"from": "system",
|
||||||
|
"filament_id": "GFB98",
|
||||||
|
"instantiation": "false"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Anker Generic PA @base",
|
||||||
|
"inherits": "fdm_filament_pa",
|
||||||
|
"from": "system",
|
||||||
|
"filament_id": "GFN99",
|
||||||
|
"instantiation": "false"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Anker Generic PC @base",
|
||||||
|
"inherits": "fdm_filament_pc",
|
||||||
|
"from": "system",
|
||||||
|
"filament_id": "GFC99",
|
||||||
|
"instantiation": "false"
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Anker Generic PC",
|
||||||
|
"inherits": "Anker Generic PC @base",
|
||||||
|
"from": "system",
|
||||||
|
"setting_id": "GFSC99",
|
||||||
|
"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"
|
||||||
|
]
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user