Skip to content
This repository has been archived by the owner on Mar 8, 2024. It is now read-only.

Commit

Permalink
impression3d (#1)
Browse files Browse the repository at this point in the history
* first draft

* update: impression_fdm.md

enabling images in md by replacing ../static occurences by static images url on github

* fix: small bugs and visual refacto
  • Loading branch information
Maximellerbach authored Jan 26, 2024
1 parent 33065da commit 3058638
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 15 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.pdf
docs
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,11 @@ Feel free to open issues for suggestions and to facilitate the workflow of remai
## Locale

local variations must start with prs_, lyn_, tls_...

## Generate

```bash
python3 generator/generate.py --dir src --out docs
```

Note: if you added a static image, once you generate locally, the pdf will not feature the image you added locally. static images are fetched from "github.com/Atelier-Epita/fiches-tuto/raw/main/static/". Once pushed to main, the pdf will feature the image.
6 changes: 3 additions & 3 deletions generator/document.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
html, body {
margin: 0px !important;
padding: 0px !important;
font-size: 16px !important;
}

.bar {
Expand Down Expand Up @@ -49,8 +50,7 @@
}

article {
margin: 42px 115px 115px;
font-size: 20px !important;
margin: 42px 90px 90px;
}

h1:not(header h1), h2, h3, h4, h5, h6 {
Expand All @@ -64,7 +64,7 @@
<div class="bar blue-bar"></div>

<header>
<img src="https://github.com/Atelier-Epita/fiches-machines/raw/main/generator/static/logo.png" alt="L'Atelier" class="logo">
<img src="https://github.com/Atelier-Epita/fiches-tuto/raw/main/static/logo.png" alt="L'Atelier" class="logo">
<div>
<h1>%title%</h1>
</div>
Expand Down
34 changes: 22 additions & 12 deletions generator/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import markdown
import pdfkit

file_path = os.path.dirname(os.path.realpath(__file__))
ressources_path = "https://github.com/Atelier-Epita/fiches-tuto/raw/main/static/"

def process(path: str, output: str):
with open(path) as f:
Expand All @@ -13,14 +15,15 @@ def process(path: str, output: str):
content = markdown.markdown(content)

html = ""
with open("document.html") as document:
with open(file_path + "/document.html") as document:
html = document.read()

html = html.replace("%title%", metadata['title']) \
.replace("%content%", content)
.replace("%content%", content) \
.replace("../static/", ressources_path)

pdfkit.from_string(html, output, options={
"margin-top": "0", "margin-bottom": "0", "margin-left": "0", "margin-right": "0",
"margin-top": "5", "margin-bottom": "5", "margin-left": "0", "margin-right": "0",
"dpi": "300"})

print(f"Processed {os.path.basename(path)}.")
Expand All @@ -32,9 +35,9 @@ def get_pdf_path(outdir: str, original_file: str):

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-o', '--outdir', nargs='?', help='Output directory', default="./")
parser.add_argument('-f', '--file', nargs='?', help='File to process')
parser.add_argument('-d', '--dir', nargs='?', help='Directory to process')
parser.add_argument('-o', '--out', nargs='?', help='Output directory', default="./", type=str)
parser.add_argument('-f', '--file', nargs='?', help='File to process', type=str)
parser.add_argument('-d', '--dir', nargs='?', help='Directory to process', type=str)

args = parser.parse_args()

Expand All @@ -45,11 +48,18 @@ def get_pdf_path(outdir: str, original_file: str):
print("--file and --dir must not be present at the same time.")
exit(1)

if not os.path.exists(args.out):
os.makedirs(args.out)

if args.file is not None:
process(str(args.file),
get_pdf_path(str(args.outdir), str(args.file)))
process(
args.file,
get_pdf_path(str(args.out), str(args.file))
)
else:
for file in os.listdir(str(args.dir)):
if os.path.splitext(file)[1] in [".md", ".yaml", ".yml"]:
process(str(args.dir).rstrip("/") + "/" + file,
get_pdf_path(str(args.outdir), str(file)))
for file in os.listdir(args.dir):
extension = os.path.splitext(file)[1]
if extension in [".md", ".yaml", ".yml"]:
path = str(args.dir).rstrip("/") + "/" + file
outpath = get_pdf_path(str(args.out), str(file))
process(path, outpath)
74 changes: 74 additions & 0 deletions src/impression_fdm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: Impression 3D
---

## Description

Dans ce tutoriel, vous apprendrez à mieux aborder le design, le slice et l'impression 3d fdm.

## Requirements

Pour ce tuto, il vous faudra:

- un logiciel de design 3d (recommandé: fusion360).
- un logiciel de slicing (recommandé: cura).

(*Note: ces logiciels sont installés sur le PC de la verriere*)

## Design 3D

Pour le design, vous pouvez utilisez ce que vous voulez: Fusion360, Blender ou autre. Dans le process, n'oubliez pas de penser aux différentes contraintes d'impression.
Voici quelques conseils:

- Penser aux forces qui s'exerçeront sur la pièce.
- Les détails trop petits (moins d'un mm) ne seront difficilement imprimable.
- Éviter les overhang.
- Penser à la façon dont la pièce sera imprimée, la face qui sera en contact avec le bed sera la plus lisse. Plus cette face sera grande, plus la pièce sera stable.
- Utiliser des côtes en millimetres.
- Utiliser des tolérances pour les assemblages. Le plus souvent 0.2mm est suffisant. Par exemple, pour un axe de 10mm, le trou devrait faire 10.2mm voir 10.4mm.

### Un exemple de création d'objet
<img src="../static/fusion360.png" height=auto>
On a ici deux pièces qui sont conçues pour être assemblées. Ici la pièce est séparé en deux pour faciliter l'impression à plat sans supports.

## Slice

Pour Slice, nous utilisons Cura, il est installé sur le PC du lab. Commencez par importer votre modèle: `ctrl+o`, ensuite le placer sur la face qui semble la mieux comme base -> grosse surface plane ou alors un plan qui permet d'imprimer la piece avec le moins de supports possible.

Il existe deux profils préconfigurés: un pour la d12 230 et un autre pour la d12 300, ils sont update de temps en temps sur le repo `https://github.com/Atelier-Epita/cura`.
Ces profils influent directement sur la qualité des impressions.
Vous pouvez si vous le souhaitez creer votre propre profil en dupliquant un existant.

Voici quelques parametres qui pourraient être interessant à modifier suivant vos besoin (bien sûr je vous invite a aller regarder la doc pour de plus ample déscriptions):

- layer height -> dépends directement de la taille de la buse, en général correspond à la moitié de la taille de la buse.
- line width -> largeur d'une ligne imprimé, dépends aussi de la taille de la buse, la plupart du temps elle correspond a peu pret à la largeur de la buse +/- 10%.
- vitesse d'impression -> l'augmenter permet d'imprimer plus vite, mais peut réduire la qualité de l'impression, les vitesses d'impression sont dépendantes de la taille de la buse, en général les proiles par défaut sont plutôt conservateurs par rapport à la qualité d'impression.
- infill density -> la densité des remplissages est importante si vous voulez faire des pièces où les contraintes sont importantes. Par défaut entre 15-20%, l'augmenter produira une pièce plus robuste mais demandera plus de temps a imprimer.
- supports -> votre pièce contient-elle de grands overhangs ? si oui: mettez des supports. Il existe également des supports en forme de tree, c'est parfois interessant de les utiliser.
- temperatures -> il y a deux températures que vous pouvez régler si jamais vous imprimer avec du filament autre que celui par défaut: la température de la buse et celle du plateau.
- plate adhesion -> pour certaines pièces, il est fortement recommandé de rajouter un raft ou un brim, ces deux méthodes permettent d'éviter que la pièce "warp" (voir la section troubleshooting pour plus d'information) en augmentant la surface de contact avec le bed.

### Un exemple de slice
<img src="../static/cura.png" height=auto>

### Impression

Pour lancer l'impression, il suffit d'inserer la carte SD ou clef USB et de rentrer dans le menu "print" et cliquer sur votre fichier.
(*Note: il peut être utile de préchauffer l'imprimante pour eviter de perdre du temps lors du lancement de l'impression*)

L'imprimante se charge ensuite de lire le GCODE depuis la SD. On peut distinguer 3 séctions dans le gcode:

- start gcode -> la séquence d'instruction exécuté pour toutes les impressions. Elle permet l'initialisation des axes, de la temperature du plateau, de la buse, du néttoyage de la buse
- print -> le gcode généré par le slicer pour imprimer votre pièce.
- end gcode -> la séquence d'instruction de fin: refroidir la buse, le bed, lever la tête et la placer à l'origine.

Vous pouvez si vous le souhaiter modifier les gcode de start et de fin dans le tab `settings>printer>manage printers>machine settings` de cura.

## Troubleshooting

Quelques problèmes courant et comment les fix dans la plupart des cas:

- warping -> Lorsque qu'un bord ou une partie de la pièce ne tient plus sur le bed. Dans 50% des cas c'est dû au design de la pièce, dans le cas écheant, rajouter un brim devrait amplement suffire. dans les 50 autres pourcents restant, recalibrer le plateau peut être une option, néttoyer le plateau, ou alors tout simplement imprimer le premier layer plus lentement.
- blobs -> Dû à une pression trop élevé dans la buse, des petits blobs se font apparaitre aux jointures lorsqu'une rétractation ou une pause a lieux. Pour réduire cet effet, on peut augmenter la distance de rétractation ou bien rajouter du coasting: relacher la pression de la buse avant chaque retraction en réduisant la vitesse d'extrusion.
- stringing -> L'impression possède des fils entre les différentes parties de la pièce. C'est dû à une rétractation trop faible, augmenter la rétractation devrait régler le problème.
Binary file added static/cura.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/fusion360.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes

0 comments on commit 3058638

Please sign in to comment.