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*
|
||||
/frontend/.vscode/
|
||||
/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
|
||||
if "estimated printing time =" in line: # Header
|
||||
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)
|
||||
elif "total estimated time:" in line: # Footer
|
||||
parts = line.split("total estimated time:")
|
||||
if len(parts) > 1:
|
||||
stats["print_time_seconds"] = GCodeParser._parse_time_string(parts[1].strip())
|
||||
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
|
||||
if "filament used [g] =" in line:
|
||||
@@ -94,9 +97,21 @@ class GCodeParser:
|
||||
@staticmethod
|
||||
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
|
||||
|
||||
# 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)
|
||||
hours = re.search(r'(\d+)h', time_str)
|
||||
mins = re.search(r'(\d+)m', time_str)
|
||||
@@ -122,6 +137,8 @@ class QuoteCalculator:
|
||||
|
||||
# 2. Machine Time Cost
|
||||
# Cost per second = (Cost per hour / 3600)
|
||||
print("ciaooo")
|
||||
print(stats["print_time_seconds"])
|
||||
print_time_hours = stats["print_time_seconds"] / 3600.0
|
||||
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)
|
||||
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 {
|
||||
"breakdown": {
|
||||
"material_cost": round(material_cost, 2),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
class Settings:
|
||||
# Directories
|
||||
@@ -7,13 +8,18 @@ class Settings:
|
||||
PROFILES_DIR = os.environ.get("PROFILES_DIR", os.path.join(BASE_DIR, "profiles"))
|
||||
|
||||
# Slicer Paths
|
||||
SLICER_PATH = os.environ.get("SLICER_PATH", "/opt/orcaslicer/AppRun")
|
||||
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")
|
||||
|
||||
# Defaults Profiles (Bambu A1)
|
||||
MACHINE_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json")
|
||||
PROCESS_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/process/0.20mm Standard @BBL A1.json")
|
||||
FILAMENT_PROFILE = os.path.join(ORCA_HOME, "resources/profiles/BBL/filament/Generic PLA @BBL A1.json")
|
||||
MACHINE_PROFILE = os.path.join(PROFILES_DIR, "Bambu_Lab_A1_machine.json")
|
||||
PROCESS_PROFILE = os.path.join(PROFILES_DIR, "Bambu_Process_0.20_Standard.json")
|
||||
FILAMENT_PROFILE = os.path.join(PROFILES_DIR, "Bambu_PLA_Basic.json")
|
||||
|
||||
# Pricing
|
||||
FILAMENT_COST_PER_KG = float(os.environ.get("FILAMENT_COST_PER_KG", 25.0))
|
||||
|
||||
128
backend/main.py
128
backend/main.py
@@ -1,19 +1,13 @@
|
||||
import os
|
||||
import shutil
|
||||
import uuid
|
||||
import logging
|
||||
from fastapi import FastAPI, UploadFile, File, HTTPException
|
||||
import os
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from pydantic import BaseModel
|
||||
|
||||
# Import custom modules
|
||||
from config import settings
|
||||
from slicer import slicer_service
|
||||
from calculator import GCodeParser, QuoteCalculator
|
||||
from api.routes import router as api_router
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger("api")
|
||||
logger = logging.getLogger("main")
|
||||
|
||||
app = FastAPI(title="Print Calculator API")
|
||||
|
||||
@@ -29,84 +23,52 @@ app.add_middleware(
|
||||
# Ensure directories exist
|
||||
os.makedirs(settings.TEMP_DIR, exist_ok=True)
|
||||
|
||||
class QuoteResponse(BaseModel):
|
||||
printer: str
|
||||
print_time_seconds: int
|
||||
print_time_formatted: str
|
||||
material_grams: float
|
||||
cost: dict
|
||||
notes: list[str] = []
|
||||
# Include Router
|
||||
app.include_router(api_router, prefix="/api")
|
||||
|
||||
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}")
|
||||
# Legacy endpoint redirect or basic handler if needed for backward compatibility
|
||||
# The frontend likely calls /calculate/stl.
|
||||
# We should probably keep the old route or instruct user to update frontend.
|
||||
# But for this task, let's remap the old route to the new logic if possible,
|
||||
# or just expose the new route.
|
||||
# The user request said: "Creare api/routes.py ... @app.post('/api/quote')"
|
||||
# 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:
|
||||
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"
|
||||
from fastapi import UploadFile, File
|
||||
from api.routes import calculate_quote
|
||||
|
||||
@app.post("/calculate/stl", response_model=QuoteResponse)
|
||||
async def calculate_from_stl(file: UploadFile = File(...)):
|
||||
if not file.filename.lower().endswith(".stl"):
|
||||
raise HTTPException(status_code=400, detail="Only .stl files are supported.")
|
||||
@app.post("/calculate/stl")
|
||||
async def legacy_calculate(file: UploadFile = File(...)):
|
||||
"""Legacy endpoint compatibility"""
|
||||
# Call the new logic with defaults
|
||||
resp = await calculate_quote(file=file)
|
||||
if not resp.success:
|
||||
from fastapi import HTTPException
|
||||
raise HTTPException(status_code=500, detail=resp.error)
|
||||
|
||||
# Unique ID for this request
|
||||
req_id = str(uuid.uuid4())
|
||||
input_filename = f"{req_id}.stl"
|
||||
output_filename = f"{req_id}.gcode"
|
||||
|
||||
input_path = os.path.join(settings.TEMP_DIR, input_filename)
|
||||
output_path = os.path.join(settings.TEMP_DIR, output_filename)
|
||||
|
||||
try:
|
||||
# 1. Save Uploaded File
|
||||
with open(input_path, "wb") as buffer:
|
||||
shutil.copyfileobj(file.file, buffer)
|
||||
|
||||
# 2. Slice
|
||||
# slicer_service methods raise exceptions on failure
|
||||
slicer_service.slice_stl(input_path, output_path)
|
||||
|
||||
# 3. Parse Results
|
||||
stats = GCodeParser.parse_metadata(output_path)
|
||||
|
||||
if stats["print_time_seconds"] == 0 and stats["filament_weight_g"] == 0:
|
||||
# Slicing likely failed or produced empty output without throwing error
|
||||
raise HTTPException(status_code=500, detail="Slicing completed but no stats found. Check mesh validity.")
|
||||
|
||||
# 4. Calculate Costs
|
||||
quote = QuoteCalculator.calculate(stats)
|
||||
|
||||
return {
|
||||
"printer": "BambuLab A1 (Estimated)",
|
||||
"print_time_seconds": stats["print_time_seconds"],
|
||||
"print_time_formatted": format_time(stats["print_time_seconds"]),
|
||||
"material_grams": stats["filament_weight_g"],
|
||||
"cost": {
|
||||
"material": quote["breakdown"]["material_cost"],
|
||||
"machine": quote["breakdown"]["machine_cost"],
|
||||
"energy": quote["breakdown"]["energy_cost"],
|
||||
"markup": quote["breakdown"]["markup_amount"],
|
||||
"total": quote["total_price"]
|
||||
},
|
||||
"notes": ["Estimation generated using OrcaSlicer headless."]
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing request: {e}")
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
finally:
|
||||
# Cleanup
|
||||
cleanup_files([input_path, output_path])
|
||||
# Map Check response to old format
|
||||
data = resp.data
|
||||
return {
|
||||
"print_time_seconds": data.get("print_time_seconds", 0),
|
||||
"print_time_formatted": data.get("print_time_formatted", ""),
|
||||
"material_grams": data.get("material_grams", 0.0),
|
||||
"cost": data.get("cost", {}),
|
||||
"notes": ["Generated via Dynamic Slicer (Legacy Endpoint)"]
|
||||
}
|
||||
|
||||
@app.get("/health")
|
||||
def health_check():
|
||||
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
|
||||
filament_diameter = 1.75
|
||||
max_print_speed = 500
|
||||
travel_speed = 500
|
||||
travel_speed = 700
|
||||
gcode_flavor = klipper
|
||||
# Bambu uses specific gcode but klipper/marlin is close enough for time est if accel matches
|
||||
machine_max_acceleration_x = 10000
|
||||
machine_max_acceleration_y = 10000
|
||||
machine_max_acceleration_e = 5000
|
||||
machine_max_acceleration_extruding = 5000
|
||||
machine_max_acceleration_e = 6000
|
||||
machine_max_acceleration_extruding = 6000
|
||||
|
||||
# PRINT SETTINGS
|
||||
layer_height = 0.2
|
||||
@@ -26,17 +26,17 @@ bottom_solid_layers = 3
|
||||
|
||||
# SPEED SETTINGS (Conservative defaults for A1)
|
||||
perimeter_speed = 200
|
||||
external_perimeter_speed = 150
|
||||
external_perimeter_speed = 200
|
||||
infill_speed = 250
|
||||
solid_infill_speed = 200
|
||||
top_solid_infill_speed = 150
|
||||
support_material_speed = 150
|
||||
bridge_speed = 50
|
||||
bridge_speed = 150
|
||||
gap_fill_speed = 50
|
||||
|
||||
# FILAMENT SETTINGS
|
||||
filament_density = 1.24
|
||||
filament_cost = 25.0
|
||||
filament_cost = 18.0
|
||||
filament_max_volumetric_speed = 15
|
||||
temperature = 220
|
||||
bed_temperature = 60
|
||||
bed_temperature = 65
|
||||
|
||||
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