Fix G-code generation with priming, retraction, preheating; improve README
- Add proper preheating sequence (M140/M104/M190/M109) - Add 60mm priming line before squares - Add retraction (1mm) + prime (2mm) between each square - Add configurable nozzle/bed temperatures via CLI - Change default margin from 15mm to 20mm - Add calibration_margin, square_size, nozzle_temp, bed_temp to config - Rewrite README with comprehensive documentation (no emojis) - Detailed installation instructions - Step-by-step calibration workflow - All CLI commands with examples - Config file structure explanation - Troubleshooting section Assisted-by: GLM-5 via Crush <crush@charm.land>
This commit is contained in:
556
README.md
556
README.md
@@ -1,125 +1,537 @@
|
||||
# IMP3D Corrector
|
||||
|
||||
Correction de plan XYZ pour imprimantes 3D avec problèmes de calibration.
|
||||
Outil de correction de plan XYZ pour imprimantes 3D avec probleme de calibration. Permet de detecter et compenser les erreurs mecaniques pour obtenir des impressions dimensionnellement correctes.
|
||||
|
||||
## Problèmes résolus
|
||||
## Problemes resolus
|
||||
|
||||
- **Skew X-Y**: Axes X et Y non perpendiculaires
|
||||
- **Erreurs d'échelle**: Dimensions incorrectes sur les bords
|
||||
- **Décalage d'origine**: Position zéro mal alignée
|
||||
- **Rotation du plateau**: Léger angle du plateau
|
||||
- **Asymétries**: Différences de dimensions selon la position
|
||||
- **Skew X-Y**: Axes X et Y non perpendiculaires (angle different de 90 degres)
|
||||
- **Erreurs d'echelle**: Dimensions incorrectes (pieces trop grandes ou trop petites)
|
||||
- **Decalage d'origine**: Position zero mal alignee
|
||||
- **Rotation du plateau**: Legere rotation de l'ensemble du plateau
|
||||
- **Asymetries**: Differences de dimensions selon la position sur le plateau
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequis
|
||||
|
||||
- Python 3.8 ou superieur
|
||||
- pip (gestionnaire de paquets Python)
|
||||
|
||||
### Etapes d'installation
|
||||
|
||||
1. Cloner le depot:
|
||||
```bash
|
||||
git clone <url-du-depot>
|
||||
cd imp3d_corrector
|
||||
```
|
||||
|
||||
2. Creer un environnement virtuel:
|
||||
```bash
|
||||
python -m venv .venv
|
||||
```
|
||||
|
||||
3. Activer l'environnement virtuel:
|
||||
```bash
|
||||
# Linux/macOS
|
||||
source .venv/bin/activate
|
||||
|
||||
# Windows
|
||||
.venv\Scripts\activate
|
||||
```
|
||||
|
||||
4. Installer le paquet:
|
||||
```bash
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
5. Verifier l'installation:
|
||||
```bash
|
||||
imp3d-corrector --help
|
||||
```
|
||||
|
||||
## Workflow de calibration complet
|
||||
|
||||
### Etape 1: Generer le G-code de calibration
|
||||
|
||||
La calibration avancee utilise 5 carres (4 coins + centre) pour detecter tous les problemes.
|
||||
|
||||
```bash
|
||||
python -m venv .venv
|
||||
.venv/bin/pip install -e .
|
||||
imp3d-corrector calibrate-advanced -w 220 -d 220 -o calibration.gcode
|
||||
```
|
||||
|
||||
## Utilisation
|
||||
**Parametres disponibles:**
|
||||
|
||||
### Calibration simple (1 carré)
|
||||
|
||||
Pour une calibration rapide:
|
||||
| Parametre | Description | Defaut |
|
||||
|-----------|-------------|--------|
|
||||
| `-w, --width` | Largeur du plateau en mm | 220 |
|
||||
| `-d, --depth` | Profondeur du plateau en mm | 220 |
|
||||
| `-s, --size` | Taille des carres de test en mm | 30 |
|
||||
| `-m, --margin` | Distance entre les coins du plateau et les carres en mm | 20 |
|
||||
| `--nozzle-temp` | Temperature de la buse en C | 200 |
|
||||
| `--bed-temp` | Temperature du plateau en C | 60 |
|
||||
| `-o, --output` | Fichier de sortie | calibration_advanced.gcode |
|
||||
|
||||
**Exemple avec parametres personnalises:**
|
||||
```bash
|
||||
# Générer le G-code de calibration
|
||||
imp3d-corrector calibrate -w 220 -d 220 -o calibration.gcode
|
||||
|
||||
# Imprimer, mesurer, puis créer le profil
|
||||
imp3d-corrector create ma_printer
|
||||
imp3d-corrector calibrate-advanced \
|
||||
-w 250 -d 210 \
|
||||
-s 25 \
|
||||
-m 25 \
|
||||
--nozzle-temp 210 \
|
||||
--bed-temp 65 \
|
||||
-o ma_calibration.gcode
|
||||
```
|
||||
|
||||
### Calibration avancée (5 carrés) - RECOMMANDÉE
|
||||
### Etape 2: Imprimer le fichier de calibration
|
||||
|
||||
Pour une calibration précise avec détection des problèmes:
|
||||
1. Transferez le fichier `calibration.gcode` vers votre imprimante (carte SD, USB, reseau)
|
||||
2. Lancez l'impression avec vos reglages habituels
|
||||
3. Assurez-vous que l'adhesion au plateau est correcte (brim, raft si necessaire)
|
||||
4. Laissez l'impression se terminer completement
|
||||
|
||||
**Ce qui sera imprime:**
|
||||
- 5 carres de la taille specifiee (defaut: 30mm)
|
||||
- Position: 4 coins du plateau + centre
|
||||
- Chaque carre a une epaisseur de 2 couches (0.6mm avec 0.3mm par couche)
|
||||
|
||||
### Etape 3: Mesurer les carres
|
||||
|
||||
Pour chaque carre, mesurez avec un pied a coulisse:
|
||||
|
||||
1. **Cote X**: Largeur du carre dans l'axe X
|
||||
2. **Cote Y**: Hauteur du carre dans l'axe Y
|
||||
3. **Diagonale**: Diagonale du carre (important pour detecter le skew)
|
||||
|
||||
**Ordre des positions:**
|
||||
- Bas-Gauche (BL): coin inferieur gauche
|
||||
- Bas-Droite (BR): coin inferieur droit
|
||||
- Centre (C): centre du plateau
|
||||
- Haut-Gauche (TL): coin superieur gauche
|
||||
- Haut-Droite (TR): coin superieur droit
|
||||
|
||||
**Valeurs attendues pour un carre de 30mm:**
|
||||
- Cote X: 30.00 mm
|
||||
- Cote Y: 30.00 mm
|
||||
- Diagonale: 42.43 mm (30 * 1.414)
|
||||
|
||||
### Etape 4: Creer le profil de calibration
|
||||
|
||||
Lancez la creation de profil et entrez vos mesures:
|
||||
|
||||
```bash
|
||||
# 1. Générer le G-code avec 5 carrés (coins + centre)
|
||||
imp3d-corrector calibrate-advanced -w 220 -d 220 -o calibration_advanced.gcode
|
||||
|
||||
# 2. Imprimer le fichier
|
||||
|
||||
# 3. Mesurer chaque carré et créer le profil
|
||||
imp3d-corrector create-advanced ma_printer
|
||||
```
|
||||
|
||||
Le système analysera:
|
||||
- **Échelle moyenne** (compensation globale)
|
||||
- **Skew** (angle entre X et Y)
|
||||
- **Asymétrie** (différence gauche/droite, haut/bas)
|
||||
- **Variance** (uniformité des dimensions sur le plateau)
|
||||
Le programme vous demandera:
|
||||
1. Les dimensions du plateau
|
||||
2. La taille des carres de test
|
||||
3. Les mesures pour chaque position
|
||||
|
||||
### Analyser sans créer de profil
|
||||
**Exemple de session:**
|
||||
```
|
||||
Dimensions du plateau:
|
||||
Largeur X (mm) [220]: 220
|
||||
Profondeur Y (mm) [220]: 220
|
||||
Taille des carres de test (mm) [30]: 30
|
||||
|
||||
--- Bas-Gauche (BL) ---
|
||||
Cote X (mm): 30.12
|
||||
Cote Y (mm): 29.95
|
||||
Diagonale (mm): 42.50
|
||||
|
||||
--- Bas-Droite (BR) ---
|
||||
Cote X (mm): 29.98
|
||||
...
|
||||
```
|
||||
|
||||
### Etape 5: Analyser le rapport
|
||||
|
||||
Le programme affiche un rapport complet avec:
|
||||
- Moyenne des mesures
|
||||
- Ecart-type (uniformite)
|
||||
- Erreur de skew detectee
|
||||
- Asymetries gauche/droite et haut/bas
|
||||
- Corrections recommandees
|
||||
|
||||
**Exemple de rapport:**
|
||||
```
|
||||
======================================================================
|
||||
RAPPORT DE CALIBRATION
|
||||
======================================================================
|
||||
|
||||
Moyennes:
|
||||
Echelle X: 1.0023 (+0.23%)
|
||||
Echelle Y: 0.9987 (-0.13%)
|
||||
Skew: -0.45 deg
|
||||
|
||||
Asymetrie:
|
||||
Gauche vs Droite: 0.15%
|
||||
Haut vs Bas: 0.08%
|
||||
|
||||
Variance (uniformite):
|
||||
X: 0.12%
|
||||
Y: 0.09%
|
||||
```
|
||||
|
||||
### Etape 6: Appliquer les corrections
|
||||
|
||||
Une fois le profil cree, appliquez-le a vos fichiers G-code:
|
||||
|
||||
```bash
|
||||
imp3d-corrector correct mon_modele.gcode -p ma_printer -o mon_modele_corrige.gcode
|
||||
```
|
||||
|
||||
Le fichier corrige compense automatiquement:
|
||||
- Les erreurs d'echelle (scale)
|
||||
- L'angle entre les axes (skew)
|
||||
- Le decalage d'origine (offset)
|
||||
- La rotation du plateau
|
||||
|
||||
## Reference des commandes
|
||||
|
||||
### calibrate-advanced
|
||||
|
||||
Genere un G-code de calibration avec 5 carres.
|
||||
|
||||
```bash
|
||||
imp3d-corrector calibrate-advanced [options]
|
||||
```
|
||||
|
||||
**Options:**
|
||||
- `-w, --width FLOAT`: Largeur du plateau en mm [defaut: 220]
|
||||
- `-d, --depth FLOAT`: Profondeur du plateau en mm [defaut: 220]
|
||||
- `-s, --size FLOAT`: Taille des carres en mm [defaut: 30]
|
||||
- `-m, --margin FLOAT`: Marge depuis les bords en mm [defaut: 20]
|
||||
- `--nozzle-temp INTEGER`: Temperature buse en C [defaut: 200]
|
||||
- `--bed-temp INTEGER`: Temperature plateau en C [defaut: 60]
|
||||
- `-o, --output PATH`: Fichier de sortie
|
||||
|
||||
### create-advanced
|
||||
|
||||
Cree un profil a partir des mesures multi-points.
|
||||
|
||||
```bash
|
||||
imp3d-corrector create-advanced <nom>
|
||||
```
|
||||
|
||||
**Arguments:**
|
||||
- `nom`: Nom du profil a creer
|
||||
|
||||
**Processus interactif:**
|
||||
1. Demande les dimensions du plateau
|
||||
2. Demande la taille des carres
|
||||
3. Pour chaque position: demande X, Y, diagonale
|
||||
4. Affiche le rapport d'analyse
|
||||
5. Propose des ajustements manuels
|
||||
6. Sauvegarde le profil
|
||||
|
||||
### correct
|
||||
|
||||
Applique la correction a un fichier G-code.
|
||||
|
||||
```bash
|
||||
imp3d-corrector correct <input> -p <profile> [-o <output>]
|
||||
```
|
||||
|
||||
**Arguments:**
|
||||
- `input`: Fichier G-code a corriger
|
||||
|
||||
**Options:**
|
||||
- `-p, --profile TEXT`: Profil a utiliser (obligatoire)
|
||||
- `-o, --output PATH`: Fichier de sortie [defaut: <nom>_corrected.gcode]
|
||||
|
||||
**Exemple:**
|
||||
```bash
|
||||
imp3d-corrector correct benchy.gcode -p ender3 -o benchy_corrige.gcode
|
||||
```
|
||||
|
||||
### list
|
||||
|
||||
Liste tous les profils disponibles.
|
||||
|
||||
```bash
|
||||
imp3d-corrector list
|
||||
```
|
||||
|
||||
Affiche pour chaque profil:
|
||||
- Nom
|
||||
- Dimensions du plateau
|
||||
- Skew et echelles
|
||||
|
||||
### show
|
||||
|
||||
Affiche les details d'un profil.
|
||||
|
||||
```bash
|
||||
imp3d-corrector show <nom>
|
||||
```
|
||||
|
||||
**Informations affichees:**
|
||||
- Dimensions du plateau
|
||||
- Offset X et Y
|
||||
- Facteurs d'echelle X et Y
|
||||
- Angle de skew
|
||||
- Rotation
|
||||
|
||||
### edit
|
||||
|
||||
Modifie un profil existant.
|
||||
|
||||
```bash
|
||||
imp3d-corrector edit <nom>
|
||||
```
|
||||
|
||||
Permet de modifier interactivement:
|
||||
- Tous les parametres de calibration
|
||||
|
||||
### delete
|
||||
|
||||
Supprime un profil.
|
||||
|
||||
```bash
|
||||
imp3d-corrector delete <nom>
|
||||
```
|
||||
|
||||
Demande confirmation avant suppression.
|
||||
|
||||
### analyze
|
||||
|
||||
Analyse des mesures sans creer de profil.
|
||||
|
||||
```bash
|
||||
imp3d-corrector analyze
|
||||
```
|
||||
|
||||
### Appliquer les corrections
|
||||
Utile pour:
|
||||
- Diagnostiquer des problemes avant de creer un profil
|
||||
- Comparer differentes configurations
|
||||
- Verifier l'evolution de l'imprimante dans le temps
|
||||
|
||||
### calibrate
|
||||
|
||||
Genere un G-code de calibration simple (1 carre au centre).
|
||||
|
||||
```bash
|
||||
imp3d-corrector correct mon_fichier.gcode -p ma_printer -o fichier_corrigé.gcode
|
||||
imp3d-corrector calibrate [-w WIDTH] [-d DEPTH] [-o OUTPUT]
|
||||
```
|
||||
|
||||
### Gestion des profils
|
||||
**Usage recommande:** Validation rapide apres calibration avancee.
|
||||
|
||||
### create
|
||||
|
||||
Cree un profil simple a partir d'un seul carre.
|
||||
|
||||
```bash
|
||||
# Lister les profils
|
||||
imp3d-corrector list
|
||||
imp3d-corrector create <nom>
|
||||
```
|
||||
|
||||
# Afficher un profil
|
||||
imp3d-corrector show ma_printer
|
||||
**Usage recommande:** Configuration rapide, moins precis que create-advanced.
|
||||
|
||||
# Modifier un profil
|
||||
## Fichier de configuration
|
||||
|
||||
### Emplacement
|
||||
|
||||
Les profils sont stockes dans:
|
||||
```
|
||||
~/.config/imp3d_corrector/profiles/<nom>.yaml
|
||||
```
|
||||
|
||||
### Structure d'un profil
|
||||
|
||||
```yaml
|
||||
# Informations de base
|
||||
name: ma_printer
|
||||
|
||||
# Dimensions du plateau
|
||||
bed_width: 220.0 # Largeur en mm (axe X)
|
||||
bed_depth: 220.0 # Profondeur en mm (axe Y)
|
||||
|
||||
# Corrections de calibration
|
||||
skew_xy: -0.45 # Angle de skew en degres
|
||||
# Positif = Y tourne vers X
|
||||
# Negatif = Y tourne vers -X
|
||||
|
||||
offset_x: 0.0 # Decalage origine X en mm
|
||||
offset_y: 0.0 # Decalage origine Y en mm
|
||||
|
||||
scale_x: 1.0023 # Facteur d'echelle X
|
||||
# >1.0 agrandit, <1.0 retrecit
|
||||
# Exemple: 1.0023 corrige 100mm mesure a 99.77mm
|
||||
|
||||
scale_y: 0.9987 # Facteur d'echelle Y
|
||||
|
||||
rotation: 0.0 # Rotation du plateau en degres
|
||||
|
||||
# Parametres de generation G-code
|
||||
calibration_margin: 20 # Marge pour les carres de test
|
||||
square_size: 30 # Taille des carres de test
|
||||
nozzle_temp: 200 # Temperature buse
|
||||
bed_temp: 60 # Temperature plateau
|
||||
```
|
||||
|
||||
### Modification manuelle
|
||||
|
||||
Vous pouvez editer directement les fichiers YAML:
|
||||
|
||||
```bash
|
||||
nano ~/.config/imp3d_corrector/profiles/ma_printer.yaml
|
||||
```
|
||||
|
||||
Ou utiliser la commande edit:
|
||||
```bash
|
||||
imp3d-corrector edit ma_printer
|
||||
|
||||
# Supprimer un profil
|
||||
imp3d-corrector delete ma_printer
|
||||
```
|
||||
|
||||
## Interpretation des resultats
|
||||
|
||||
### Skew eleve (|skew_xy| > 1.0)
|
||||
|
||||
**Cause probable:** Axes X et Y non perpendiculaires.
|
||||
|
||||
**Solutions:**
|
||||
1. Ajustement mecanique: Verifier l'alignement des rails et courroies
|
||||
2. Compensation logicielle: Le profil corrige automatiquement le skew
|
||||
|
||||
### Asymetrie X ou Y elevee (> 0.5%)
|
||||
|
||||
**Cause probable:** Tension de courroie inegale.
|
||||
|
||||
**Solutions:**
|
||||
1. Verifier la tension des courroies X et Y
|
||||
2. S'assurer que les poulies sont alignees
|
||||
3. Controler l'usure des roulements
|
||||
|
||||
### Variance elevee (> 0.3%)
|
||||
|
||||
**Cause probable:** Probleme de linearite des rails.
|
||||
|
||||
**Solutions:**
|
||||
1. Nettoyer et lubrifier les rails
|
||||
2. Verifier l'etat des roulements
|
||||
3. Controler la tension des courroies
|
||||
|
||||
### Echelle incorrecte mais uniforme
|
||||
|
||||
**Cause probable:** Pas de moteur ou diametre de courroie incorrects.
|
||||
|
||||
**Solutions:**
|
||||
1. Verifier les reglages steps/mm dans le firmware
|
||||
2. Le profil compense automatiquement via scale_x et scale_y
|
||||
|
||||
## G-code de calibration: details techniques
|
||||
|
||||
### Sequence d'impression
|
||||
|
||||
Le G-code genere suit cette sequence:
|
||||
|
||||
1. **Prechauffage**
|
||||
- M140 S{bed_temp}: Demarre le chauffage du plateau
|
||||
- M104 S{nozzle_temp}: Demarre le chauffage de la buse
|
||||
- M190 S{bed_temp}: Attend que le plateau soit a temperature
|
||||
- M109 S{nozzle_temp}: Attend que la buse soit a temperature
|
||||
|
||||
2. **Initialisation**
|
||||
- G28: Home tous les axes
|
||||
- G90: Positionnement absolu
|
||||
- M82: Extrusion absolue
|
||||
- G92 E0: Reset de l'extrusion
|
||||
|
||||
3. **Ligne de priming** (60mm)
|
||||
- Trace une ligne pour assurer le flux de filament
|
||||
- Nettoie la buse avant l'impression des carres
|
||||
|
||||
4. **Impression des 5 carres**
|
||||
- Pour chaque carre:
|
||||
- Retraction (1mm)
|
||||
- Deplacement au point de depart
|
||||
- Prime (2mm)
|
||||
- Impression du carre (2 couches)
|
||||
|
||||
5. **Fin**
|
||||
- G28 X Y: Home X et Y
|
||||
- M104 S0: Eteint la buse
|
||||
- M140 S0: Eteint le plateau
|
||||
- M84: Desactive les moteurs
|
||||
|
||||
### Parametres d'impression
|
||||
|
||||
| Parametre | Valeur | Description |
|
||||
|-----------|--------|-------------|
|
||||
| Layer height | 0.3 mm | Epaisseur de couche |
|
||||
| Line width | 0.45 mm | Largeur de ligne |
|
||||
| Print speed | 30 mm/s | Vitesse d'impression |
|
||||
| Travel speed | 100 mm/s | Vitesse de deplacement |
|
||||
| Retraction | 1.0 mm | Distance de retraction |
|
||||
| Prime amount | 2.0 mm | Extra extrusion apres deplacement |
|
||||
|
||||
### Calcul d'extrusion
|
||||
|
||||
L'extrusion est calculee selon la formule:
|
||||
```
|
||||
E = distance * (layer_height * line_width) / (pi * filament_diameter^2 / 4)
|
||||
```
|
||||
|
||||
Avec filament_diameter = 1.75mm par defaut.
|
||||
|
||||
## Structure du projet
|
||||
|
||||
```
|
||||
imp3d_corrector/
|
||||
├── cli.py # Interface en ligne de commande
|
||||
├── cli.py # Interface ligne de commande
|
||||
├── config/
|
||||
│ └── profile_manager.py # Gestion des profils
|
||||
│ ├── __init__.py
|
||||
│ └── profile_manager.py # Gestion des profils YAML
|
||||
└── core/
|
||||
├── corrector.py # Logique de correction XYZ
|
||||
├── gcode_parser.py # Parser G-code
|
||||
└── advanced_calibration.py # Calibration multi-points
|
||||
├── __init__.py
|
||||
├── corrector.py # Logique de correction XYZ
|
||||
├── gcode_parser.py # Parser G-code
|
||||
└── advanced_calibration.py # Calibration multi-points
|
||||
```
|
||||
|
||||
## Workflow recommandé
|
||||
## Resolution de problemes
|
||||
|
||||
1. **Première calibration**: Utilisez `calibrate-advanced` pour avoir une vue complète
|
||||
2. **Analysez** les résultats - si des problèmes d'asymétrie sont détectés, vérifiez votre matériel
|
||||
3. **Créez le profil** avec les corrections calculées
|
||||
4. **Testez** avec un carré simple pour valider
|
||||
### Le G-code ne s'imprime pas correctement
|
||||
|
||||
## Exemple de configuration YAML
|
||||
1. **Verifiez les temperatures:**
|
||||
```bash
|
||||
imp3d-corrector calibrate-advanced --nozzle-temp 210 --bed-temp 65
|
||||
```
|
||||
|
||||
Les profils sont stockés dans `~/.config/imp3d_corrector/profiles/`:
|
||||
2. **Augmentez la marge si les carres debordent:**
|
||||
```bash
|
||||
imp3d-corrector calibrate-advanced -m 30
|
||||
```
|
||||
|
||||
```yaml
|
||||
name: ma_printer
|
||||
skew_xy: 0.5
|
||||
offset_x: 0.0
|
||||
offset_y: 0.0
|
||||
scale_x: 1.002
|
||||
scale_y: 0.998
|
||||
rotation: 0.0
|
||||
bed_width: 220.0
|
||||
bed_depth: 220.0
|
||||
3. **Reduisez la vitesse dans le slicer** pour les premieres couches
|
||||
|
||||
### Les mesures semblent incoherentes
|
||||
|
||||
1. **Verifiez votre pied a coulisse** (etalonnage)
|
||||
2. **Mesurez plusieurs fois** et faites la moyenne
|
||||
3. **Assurez-vous que les carres sont bien colles** au plateau
|
||||
|
||||
### La correction ne semble pas fonctionner
|
||||
|
||||
1. **Verifiez que le profil existe:**
|
||||
```bash
|
||||
imp3d-corrector list
|
||||
```
|
||||
|
||||
2. **Verifiez le profil:**
|
||||
```bash
|
||||
imp3d-corrector show ma_printer
|
||||
```
|
||||
|
||||
3. **Imprimez un carre de validation** apres correction
|
||||
|
||||
### Erreur "profil existe deja"
|
||||
|
||||
Le programme demande confirmation avant d'ecraser:
|
||||
```
|
||||
Le profil 'ma_printer' existe deja. Ecraser? (o/N):
|
||||
```
|
||||
Repondez 'o' pour ecraser.
|
||||
|
||||
## Interprétation des résultats
|
||||
## Licence
|
||||
|
||||
| Problème détecté | Cause probable | Solution |
|
||||
|-----------------|----------------|----------|
|
||||
| Skew élevé | Axes non perpendiculaires | Ajustement mécanique ou compensation logicielle |
|
||||
| Asymétrie X | Courroie X détendue d'un côté | Vérifier la tension de courroie |
|
||||
| Asymétrie Y | Courroie Y détendue d'un côté | Vérifier la tension de courroie |
|
||||
| Variance élevée | Problème de linéarité | Vérifier les rails/roulements |
|
||||
MIT License - voir le fichier LICENSE pour plus de details.
|
||||
|
||||
Reference in New Issue
Block a user