diff --git a/.gitignore b/.gitignore
index 7eb6c57..1593a7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
*.FCStd1
_local
+__pycache__/
/dist/
/electricite/custom/
-/tools/__pycache__/
diff --git a/README.md b/README.md
index d2a1249..415ea84 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,6 @@
Ceci est un projet porté par l'association [Vélo solaire pour tous](https://vhelio.org/) visant à modéliser le [vhéliotech](https://vhelio.org/vheliotech/) en 3D avec FreeCAD.
-Les fichiers présentés ici sont une version de travail. La [version "stable" la plus récente](https://communaute.vhelio.org/d/4-documentation-du-vheliotech-indice-001-mars-2022) est téléchargeable avec le reste de la documentation sur le site de la communauté du vhéliotech.
+Les fichiers présentés ici sont une version **en cours de travail**. La [version "stable" la plus récente](https://communaute.vhelio.org/d/83-documentation-du-vheliotech-version-100-mai-2023) est téléchargeable avec le reste de la documentation sur le site de la communauté du vhéliotech. Nous partageons cette version en cours de travail par soucis de transparence et pour faciliter les intéractions avec les personnes intéressées, mais tout ce qui est présenté dans ce dépôt est sujet à changement.
L'utilisation des outils et les méthodes de travail sont décrites dans le [wiki](https://git.vhelio.org/vhelio/vheliotech-freecad/wiki).
diff --git a/chaudronnerie/CHO02.FCStd b/chaudronnerie/CHO02.FCStd
index f8b0e96..7038510 100644
Binary files a/chaudronnerie/CHO02.FCStd and b/chaudronnerie/CHO02.FCStd differ
diff --git a/chaudronnerie/CHO03.FCStd b/chaudronnerie/CHO03.FCStd
index c012b54..3f21bba 100644
Binary files a/chaudronnerie/CHO03.FCStd and b/chaudronnerie/CHO03.FCStd differ
diff --git a/chaudronnerie/CHO04.FCStd b/chaudronnerie/CHO04.FCStd
index df2d03b..586e987 100644
Binary files a/chaudronnerie/CHO04.FCStd and b/chaudronnerie/CHO04.FCStd differ
diff --git a/chaudronnerie/CHO05.FCStd b/chaudronnerie/CHO05.FCStd
new file mode 100644
index 0000000..01b9cd8
Binary files /dev/null and b/chaudronnerie/CHO05.FCStd differ
diff --git a/chaudronnerie/CHO06.FCStd b/chaudronnerie/CHO06.FCStd
index ee659cd..cb7d964 100644
Binary files a/chaudronnerie/CHO06.FCStd and b/chaudronnerie/CHO06.FCStd differ
diff --git a/chaudronnerie/CHO08.FCStd b/chaudronnerie/CHO08.FCStd
index 5932396..2115793 100644
Binary files a/chaudronnerie/CHO08.FCStd and b/chaudronnerie/CHO08.FCStd differ
diff --git a/chaudronnerie/CHO09.FCStd b/chaudronnerie/CHO09.FCStd
index 93d18de..bdfeda0 100644
Binary files a/chaudronnerie/CHO09.FCStd and b/chaudronnerie/CHO09.FCStd differ
diff --git a/chaudronnerie/CHO10.FCStd b/chaudronnerie/CHO10.FCStd
index f091ab4..b3ab07f 100644
Binary files a/chaudronnerie/CHO10.FCStd and b/chaudronnerie/CHO10.FCStd differ
diff --git a/chaudronnerie/CHO11.FCStd b/chaudronnerie/CHO11.FCStd
index f0f0c75..489cb63 100644
Binary files a/chaudronnerie/CHO11.FCStd and b/chaudronnerie/CHO11.FCStd differ
diff --git a/chaudronnerie/CHO13.FCStd b/chaudronnerie/CHO13.FCStd
index 26e6d28..31f550d 100644
Binary files a/chaudronnerie/CHO13.FCStd and b/chaudronnerie/CHO13.FCStd differ
diff --git a/chaudronnerie/CHO14.FCStd b/chaudronnerie/CHO14.FCStd
deleted file mode 100644
index 2535573..0000000
Binary files a/chaudronnerie/CHO14.FCStd and /dev/null differ
diff --git a/chaudronnerie/CHO15.FCStd b/chaudronnerie/CHO15.FCStd
index 569342d..b65ba62 100644
Binary files a/chaudronnerie/CHO15.FCStd and b/chaudronnerie/CHO15.FCStd differ
diff --git a/chaudronnerie/CHO16.FCStd b/chaudronnerie/CHO16.FCStd
index 5314b41..b878240 100644
Binary files a/chaudronnerie/CHO16.FCStd and b/chaudronnerie/CHO16.FCStd differ
diff --git a/chaudronnerie/CHO17.FCStd b/chaudronnerie/CHO17.FCStd
index c928225..b317364 100644
Binary files a/chaudronnerie/CHO17.FCStd and b/chaudronnerie/CHO17.FCStd differ
diff --git a/chaudronnerie/CHO18.FCStd b/chaudronnerie/CHO18.FCStd
index b23e464..3dff26f 100644
Binary files a/chaudronnerie/CHO18.FCStd and b/chaudronnerie/CHO18.FCStd differ
diff --git a/chaudronnerie/CHO19.FCStd b/chaudronnerie/CHO19.FCStd
index 8b9fc0f..ab5e1c7 100644
Binary files a/chaudronnerie/CHO19.FCStd and b/chaudronnerie/CHO19.FCStd differ
diff --git a/chaudronnerie/CHO20.FCStd b/chaudronnerie/CHO20.FCStd
index c23f237..c4a5eda 100644
Binary files a/chaudronnerie/CHO20.FCStd and b/chaudronnerie/CHO20.FCStd differ
diff --git a/chaudronnerie/CHO21.FCStd b/chaudronnerie/CHO21.FCStd
index 2972c53..30d9a22 100644
Binary files a/chaudronnerie/CHO21.FCStd and b/chaudronnerie/CHO21.FCStd differ
diff --git a/chaudronnerie/CHO22.FCStd b/chaudronnerie/CHO22.FCStd
deleted file mode 100644
index d2cc692..0000000
Binary files a/chaudronnerie/CHO22.FCStd and /dev/null differ
diff --git a/chaudronnerie/CHO23.FCStd b/chaudronnerie/CHO23.FCStd
index 35219ec..2797232 100644
Binary files a/chaudronnerie/CHO23.FCStd and b/chaudronnerie/CHO23.FCStd differ
diff --git a/chaudronnerie/CHO24.FCStd b/chaudronnerie/CHO24.FCStd
index 5890c25..ef4bffc 100644
Binary files a/chaudronnerie/CHO24.FCStd and b/chaudronnerie/CHO24.FCStd differ
diff --git a/chaudronnerie/CHO25.FCStd b/chaudronnerie/CHO25.FCStd
index 8828d27..14ef3c5 100644
Binary files a/chaudronnerie/CHO25.FCStd and b/chaudronnerie/CHO25.FCStd differ
diff --git a/chaudronnerie/CHO26.FCStd b/chaudronnerie/CHO26.FCStd
index 96e72ab..836314d 100644
Binary files a/chaudronnerie/CHO26.FCStd and b/chaudronnerie/CHO26.FCStd differ
diff --git a/chaudronnerie/CHO30.FCStd b/chaudronnerie/CHO30.FCStd
index 8604d51..9e1cbd3 100644
Binary files a/chaudronnerie/CHO30.FCStd and b/chaudronnerie/CHO30.FCStd differ
diff --git a/chaudronnerie/CHO32.FCStd b/chaudronnerie/CHO32.FCStd
index 34058d0..5e763bd 100644
Binary files a/chaudronnerie/CHO32.FCStd and b/chaudronnerie/CHO32.FCStd differ
diff --git a/chaudronnerie/CHO34.FCStd b/chaudronnerie/CHO34.FCStd
index 88ec5cd..c877885 100644
Binary files a/chaudronnerie/CHO34.FCStd and b/chaudronnerie/CHO34.FCStd differ
diff --git a/chaudronnerie/CHO35.FCStd b/chaudronnerie/CHO35.FCStd
index 8f6081d..7cf7bab 100644
Binary files a/chaudronnerie/CHO35.FCStd and b/chaudronnerie/CHO35.FCStd differ
diff --git a/chaudronnerie/CHO38.FCStd b/chaudronnerie/CHO38.FCStd
index d6149a3..61f4db6 100644
Binary files a/chaudronnerie/CHO38.FCStd and b/chaudronnerie/CHO38.FCStd differ
diff --git a/chaudronnerie/CHO39.FCStd b/chaudronnerie/CHO39.FCStd
index d25b779..d610f74 100644
Binary files a/chaudronnerie/CHO39.FCStd and b/chaudronnerie/CHO39.FCStd differ
diff --git a/chaudronnerie/CHO40.FCStd b/chaudronnerie/CHO40.FCStd
index 208ebfd..4df7450 100644
Binary files a/chaudronnerie/CHO40.FCStd and b/chaudronnerie/CHO40.FCStd differ
diff --git a/chaudronnerie/CHO41.FCStd b/chaudronnerie/CHO41.FCStd
index 82b4739..f3617e1 100644
Binary files a/chaudronnerie/CHO41.FCStd and b/chaudronnerie/CHO41.FCStd differ
diff --git a/chaudronnerie/CHO42.FCStd b/chaudronnerie/CHO42.FCStd
index f074807..16fbf7f 100644
Binary files a/chaudronnerie/CHO42.FCStd and b/chaudronnerie/CHO42.FCStd differ
diff --git a/chaudronnerie/CHO43.FCStd b/chaudronnerie/CHO43.FCStd
index 2917501..5694e3f 100644
Binary files a/chaudronnerie/CHO43.FCStd and b/chaudronnerie/CHO43.FCStd differ
diff --git a/chaudronnerie/CHO44.FCStd b/chaudronnerie/CHO44.FCStd
index 6a074e6..a081cc1 100644
Binary files a/chaudronnerie/CHO44.FCStd and b/chaudronnerie/CHO44.FCStd differ
diff --git a/chaudronnerie/CHO45.FCStd b/chaudronnerie/CHO45.FCStd
index 4e99a17..9824b31 100644
Binary files a/chaudronnerie/CHO45.FCStd and b/chaudronnerie/CHO45.FCStd differ
diff --git a/chaudronnerie/CHO46.FCStd b/chaudronnerie/CHO46.FCStd
index b4459d2..372223a 100644
Binary files a/chaudronnerie/CHO46.FCStd and b/chaudronnerie/CHO46.FCStd differ
diff --git a/chaudronnerie/CHO47.FCStd b/chaudronnerie/CHO47.FCStd
index e4b81f4..d3d1cc8 100644
Binary files a/chaudronnerie/CHO47.FCStd and b/chaudronnerie/CHO47.FCStd differ
diff --git a/chaudronnerie/CHO48.FCStd b/chaudronnerie/CHO48.FCStd
deleted file mode 100644
index d9c1ba1..0000000
Binary files a/chaudronnerie/CHO48.FCStd and /dev/null differ
diff --git a/chaudronnerie/CHO49.FCStd b/chaudronnerie/CHO49.FCStd
index 7db1112..51b89a0 100644
Binary files a/chaudronnerie/CHO49.FCStd and b/chaudronnerie/CHO49.FCStd differ
diff --git a/chaudronnerie/CHO50.FCStd b/chaudronnerie/CHO50.FCStd
index 3279504..6325261 100644
Binary files a/chaudronnerie/CHO50.FCStd and b/chaudronnerie/CHO50.FCStd differ
diff --git a/chaudronnerie/CHO51.FCStd b/chaudronnerie/CHO51.FCStd
deleted file mode 100644
index 37266a5..0000000
Binary files a/chaudronnerie/CHO51.FCStd and /dev/null differ
diff --git a/chaudronnerie/CHO52.FCStd b/chaudronnerie/CHO52.FCStd
index a54a8b9..3f6cedc 100644
Binary files a/chaudronnerie/CHO52.FCStd and b/chaudronnerie/CHO52.FCStd differ
diff --git a/chaudronnerie/CHO53.FCStd b/chaudronnerie/CHO53.FCStd
index 3e92d33..b062e75 100644
Binary files a/chaudronnerie/CHO53.FCStd and b/chaudronnerie/CHO53.FCStd differ
diff --git a/chaudronnerie/CHO54.FCStd b/chaudronnerie/CHO54.FCStd
index 77775fd..e530941 100644
Binary files a/chaudronnerie/CHO54.FCStd and b/chaudronnerie/CHO54.FCStd differ
diff --git a/chaudronnerie/CHO55.FCStd b/chaudronnerie/CHO55.FCStd
index e4e4b06..aea7c2f 100644
Binary files a/chaudronnerie/CHO55.FCStd and b/chaudronnerie/CHO55.FCStd differ
diff --git a/chaudronnerie/CHO56.FCStd b/chaudronnerie/CHO56.FCStd
index 8ee5c56..af57c25 100644
Binary files a/chaudronnerie/CHO56.FCStd and b/chaudronnerie/CHO56.FCStd differ
diff --git a/chaudronnerie/CHO57.FCStd b/chaudronnerie/CHO57.FCStd
index ee1e1b9..fd6e323 100644
Binary files a/chaudronnerie/CHO57.FCStd and b/chaudronnerie/CHO57.FCStd differ
diff --git a/chaudronnerie/CHO58.FCStd b/chaudronnerie/CHO58.FCStd
index 3fefa3c..aae6e66 100644
Binary files a/chaudronnerie/CHO58.FCStd and b/chaudronnerie/CHO58.FCStd differ
diff --git a/chaudronnerie/CHO59.FCStd b/chaudronnerie/CHO59.FCStd
new file mode 100644
index 0000000..a6b8a0a
Binary files /dev/null and b/chaudronnerie/CHO59.FCStd differ
diff --git a/chaudronnerie/CHO5x.FCStd b/chaudronnerie/CHO5x.FCStd
deleted file mode 100644
index 66c5306..0000000
Binary files a/chaudronnerie/CHO5x.FCStd and /dev/null differ
diff --git a/cycle/ACC03.FCStd b/cycle/ACC03.FCStd
index 18de903..f981202 100644
Binary files a/cycle/ACC03.FCStd and b/cycle/ACC03.FCStd differ
diff --git a/cycle/ACC05.FCStd b/cycle/ACC05.FCStd
index 12cb1ee..b7b4e3d 100644
Binary files a/cycle/ACC05.FCStd and b/cycle/ACC05.FCStd differ
diff --git a/cycle/FRN03.FCStd b/cycle/FRN03.FCStd
index a762898..903fd7b 100644
Binary files a/cycle/FRN03.FCStd and b/cycle/FRN03.FCStd differ
diff --git a/cycle/FRN04.FCStd b/cycle/FRN04.FCStd
index 6b23403..0139c25 100644
Binary files a/cycle/FRN04.FCStd and b/cycle/FRN04.FCStd differ
diff --git a/cycle/TSM01.FCStd b/cycle/TSM01.FCStd
index 2788690..bca9849 100644
Binary files a/cycle/TSM01.FCStd and b/cycle/TSM01.FCStd differ
diff --git a/cycle/TSM02.FCStd b/cycle/TSM02.FCStd
index adb9c37..d52fab6 100644
Binary files a/cycle/TSM02.FCStd and b/cycle/TSM02.FCStd differ
diff --git a/cycle/TSM15.FCStd b/cycle/TSM15.FCStd
new file mode 100644
index 0000000..ec23260
Binary files /dev/null and b/cycle/TSM15.FCStd differ
diff --git a/cycle/TSM16.FCStd b/cycle/TSM16.FCStd
new file mode 100644
index 0000000..982f38e
Binary files /dev/null and b/cycle/TSM16.FCStd differ
diff --git a/cycle/TSM99.FCStd b/cycle/TSM99.FCStd
index ce93302..b3852d1 100644
Binary files a/cycle/TSM99.FCStd and b/cycle/TSM99.FCStd differ
diff --git a/dessins/assemblage/dessin_assemblage_direction.FCStd b/dessins/assemblage/dessin_assemblage_direction.FCStd
index c32524c..35e3730 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction.FCStd and b/dessins/assemblage/dessin_assemblage_direction.FCStd differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View001.png b/dessins/assemblage/dessin_assemblage_direction_raster/View001.png
index 9966be7..3fa6d6c 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View001.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View001.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View002.png b/dessins/assemblage/dessin_assemblage_direction_raster/View002.png
index e56ce61..4bc1faf 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View002.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View002.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View003.png b/dessins/assemblage/dessin_assemblage_direction_raster/View003.png
index 567d22e..5c9b326 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View003.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View003.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View004.png b/dessins/assemblage/dessin_assemblage_direction_raster/View004.png
index e8380d3..6692677 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View004.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View004.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View005.png b/dessins/assemblage/dessin_assemblage_direction_raster/View005.png
index 116fadd..b117cd7 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View005.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View005.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View006.png b/dessins/assemblage/dessin_assemblage_direction_raster/View006.png
index 2a339dc..cfc1ab8 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View006.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View006.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View007.png b/dessins/assemblage/dessin_assemblage_direction_raster/View007.png
index b6cccc9..291bae9 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View007.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View007.png differ
diff --git a/dessins/assemblage/dessin_assemblage_direction_raster/View008.png b/dessins/assemblage/dessin_assemblage_direction_raster/View008.png
index c2583b9..8848768 100644
Binary files a/dessins/assemblage/dessin_assemblage_direction_raster/View008.png and b/dessins/assemblage/dessin_assemblage_direction_raster/View008.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tendeur.FCStd b/dessins/assemblage/dessins_assemblage_tendeur.FCStd
index a17fea9..415f79c 100644
Binary files a/dessins/assemblage/dessins_assemblage_tendeur.FCStd and b/dessins/assemblage/dessins_assemblage_tendeur.FCStd differ
diff --git a/dessins/assemblage/dessins_assemblage_tendeur_raster/View.png b/dessins/assemblage/dessins_assemblage_tendeur_raster/View.png
index 455753d..9dcff01 100644
Binary files a/dessins/assemblage/dessins_assemblage_tendeur_raster/View.png and b/dessins/assemblage/dessins_assemblage_tendeur_raster/View.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tendeur_raster/View002.png b/dessins/assemblage/dessins_assemblage_tendeur_raster/View002.png
index 47b4d5c..80149ba 100644
Binary files a/dessins/assemblage/dessins_assemblage_tendeur_raster/View002.png and b/dessins/assemblage/dessins_assemblage_tendeur_raster/View002.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes.FCStd b/dessins/assemblage/dessins_assemblage_tubes.FCStd
index 840072b..fe7fa55 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes.FCStd and b/dessins/assemblage/dessins_assemblage_tubes.FCStd differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View.png
index 69f9c72..41fe4ed 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View001.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View001.png
index 068c760..16125d8 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View001.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View001.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View002.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View002.png
index b4feecd..8e94fad 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View002.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View002.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View003.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View003.png
index 0046cba..bd8266c 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View003.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View003.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View004.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View004.png
index e82df3a..78c2932 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View004.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View004.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View005.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View005.png
index 1b68ae9..32b6991 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View005.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View005.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View006.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View006.png
index 92513bd..47e3da1 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View006.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View006.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View007.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View007.png
index 79c524d..505e6bb 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View007.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View007.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View008.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View008.png
index 9496e3e..85938e7 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View008.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View008.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View009.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View009.png
index a7037a1..4d73d54 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View009.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View009.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View010.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View010.png
index a6d8e9d..50e6f09 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View010.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View010.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View011.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View011.png
index 6cc9bb9..0329b88 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View011.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View011.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View012.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View012.png
index 832a3ee..e1c82bb 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View012.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View012.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View013.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View013.png
index 3dbfa19..037906b 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View013.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View013.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View014.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View014.png
index a94241c..a9f26fc 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View014.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View014.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View015.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View015.png
index 85b34d3..9f40054 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View015.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View015.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View016.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View016.png
index bfbd580..d673464 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View016.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View016.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View017.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View017.png
index c7f6837..caeb31b 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View017.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View017.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View018.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View018.png
index dac374f..e0b9e73 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View018.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View018.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View019.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View019.png
index 80a9669..3745f40 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View019.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View019.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View020.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View020.png
index 68c1533..89afd50 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View020.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View020.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View021.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View021.png
index c6bc662..37fadee 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View021.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View021.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View022.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View022.png
index 4a42b79..1213d90 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View022.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View022.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View024.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View024.png
index e9d2c60..7316aea 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View024.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View024.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View025.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View025.png
index c019ae9..67d512f 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View025.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View025.png differ
diff --git a/dessins/assemblage/dessins_assemblage_tubes_raster/View026.png b/dessins/assemblage/dessins_assemblage_tubes_raster/View026.png
index b9a4c14..01348ea 100644
Binary files a/dessins/assemblage/dessins_assemblage_tubes_raster/View026.png and b/dessins/assemblage/dessins_assemblage_tubes_raster/View026.png differ
diff --git a/dessins/direction/AnalyseDirection-sans-dependance.FCStd b/dessins/direction/AnalyseDirection-sans-dependance.FCStd
new file mode 100644
index 0000000..731f4c5
Binary files /dev/null and b/dessins/direction/AnalyseDirection-sans-dependance.FCStd differ
diff --git a/dessins/general/dessins_general_ensemble.FCStd b/dessins/general/dessins_general_ensemble.FCStd
index 3649b9e..cb6dd89 100644
Binary files a/dessins/general/dessins_general_ensemble.FCStd and b/dessins/general/dessins_general_ensemble.FCStd differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View.png b/dessins/general/dessins_general_ensemble_raster/View.png
index ce3b658..0449c38 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View.png and b/dessins/general/dessins_general_ensemble_raster/View.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View001.png b/dessins/general/dessins_general_ensemble_raster/View001.png
index 5a55a52..350df79 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View001.png and b/dessins/general/dessins_general_ensemble_raster/View001.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View002.png b/dessins/general/dessins_general_ensemble_raster/View002.png
index 54aeba3..8494fea 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View002.png and b/dessins/general/dessins_general_ensemble_raster/View002.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View003.png b/dessins/general/dessins_general_ensemble_raster/View003.png
index 93966ff..fb7281f 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View003.png and b/dessins/general/dessins_general_ensemble_raster/View003.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View004.png b/dessins/general/dessins_general_ensemble_raster/View004.png
index a4c89d3..9b79ea4 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View004.png and b/dessins/general/dessins_general_ensemble_raster/View004.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View005.png b/dessins/general/dessins_general_ensemble_raster/View005.png
index 36fb212..ec4ead2 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View005.png and b/dessins/general/dessins_general_ensemble_raster/View005.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View006.png b/dessins/general/dessins_general_ensemble_raster/View006.png
index d7afac4..1138843 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View006.png and b/dessins/general/dessins_general_ensemble_raster/View006.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View007.png b/dessins/general/dessins_general_ensemble_raster/View007.png
index 34688a3..8fd3e42 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View007.png and b/dessins/general/dessins_general_ensemble_raster/View007.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View008.png b/dessins/general/dessins_general_ensemble_raster/View008.png
index 0eb6091..38e7194 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View008.png and b/dessins/general/dessins_general_ensemble_raster/View008.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View009.png b/dessins/general/dessins_general_ensemble_raster/View009.png
index 45ff534..b923226 100644
Binary files a/dessins/general/dessins_general_ensemble_raster/View009.png and b/dessins/general/dessins_general_ensemble_raster/View009.png differ
diff --git a/dessins/general/dessins_general_ensemble_raster/View010.png b/dessins/general/dessins_general_ensemble_raster/View010.png
new file mode 100644
index 0000000..5198a45
Binary files /dev/null and b/dessins/general/dessins_general_ensemble_raster/View010.png differ
diff --git a/dessins/tubes/L00_Drawing.svg b/dessins/tubes/L00_Drawing.svg
new file mode 100644
index 0000000..fcfa861
--- /dev/null
+++ b/dessins/tubes/L00_Drawing.svg
@@ -0,0 +1,1660 @@
+
+
diff --git a/dessins/tubes/L01_Drawing.svg b/dessins/tubes/L01_Drawing.svg
new file mode 100644
index 0000000..8359fb5
--- /dev/null
+++ b/dessins/tubes/L01_Drawing.svg
@@ -0,0 +1,1285 @@
+
+
diff --git a/dessins/tubes/L02_Drawing.svg b/dessins/tubes/L02_Drawing.svg
new file mode 100644
index 0000000..8f83f50
--- /dev/null
+++ b/dessins/tubes/L02_Drawing.svg
@@ -0,0 +1,1339 @@
+
+
diff --git a/dessins/tubes/L03_Drawing.svg b/dessins/tubes/L03_Drawing.svg
new file mode 100644
index 0000000..5deb1c7
--- /dev/null
+++ b/dessins/tubes/L03_Drawing.svg
@@ -0,0 +1,1261 @@
+
+
diff --git a/dessins/tubes/L04_Drawing.svg b/dessins/tubes/L04_Drawing.svg
new file mode 100644
index 0000000..122b9dc
--- /dev/null
+++ b/dessins/tubes/L04_Drawing.svg
@@ -0,0 +1,964 @@
+
+
diff --git a/dessins/tubes/L05_Drawing.svg b/dessins/tubes/L05_Drawing.svg
new file mode 100644
index 0000000..06795b6
--- /dev/null
+++ b/dessins/tubes/L05_Drawing.svg
@@ -0,0 +1,1804 @@
+
+
diff --git a/dessins/tubes/L06_Drawing.svg b/dessins/tubes/L06_Drawing.svg
new file mode 100644
index 0000000..242ea72
--- /dev/null
+++ b/dessins/tubes/L06_Drawing.svg
@@ -0,0 +1,1450 @@
+
+
diff --git a/dessins/tubes/L07_Drawing.svg b/dessins/tubes/L07_Drawing.svg
new file mode 100644
index 0000000..66c47f2
--- /dev/null
+++ b/dessins/tubes/L07_Drawing.svg
@@ -0,0 +1,1012 @@
+
+
diff --git a/dessins/tubes/L08_Drawing.svg b/dessins/tubes/L08_Drawing.svg
new file mode 100644
index 0000000..c59e077
--- /dev/null
+++ b/dessins/tubes/L08_Drawing.svg
@@ -0,0 +1,1375 @@
+
+
diff --git a/dessins/tubes/L09_Drawing.svg b/dessins/tubes/L09_Drawing.svg
new file mode 100644
index 0000000..c6cfddc
--- /dev/null
+++ b/dessins/tubes/L09_Drawing.svg
@@ -0,0 +1,1042 @@
+
+
diff --git a/dessins/tubes/L10_Drawing.svg b/dessins/tubes/L10_Drawing.svg
new file mode 100644
index 0000000..749907f
--- /dev/null
+++ b/dessins/tubes/L10_Drawing.svg
@@ -0,0 +1,847 @@
+
+
diff --git a/dessins/tubes/L11_Drawing.svg b/dessins/tubes/L11_Drawing.svg
new file mode 100644
index 0000000..3197d7b
--- /dev/null
+++ b/dessins/tubes/L11_Drawing.svg
@@ -0,0 +1,688 @@
+
+
diff --git a/dessins/tubes/L12_Drawing.svg b/dessins/tubes/L12_Drawing.svg
new file mode 100644
index 0000000..102f9ee
--- /dev/null
+++ b/dessins/tubes/L12_Drawing.svg
@@ -0,0 +1,820 @@
+
+
diff --git a/electricite/ELE03.FCStd b/electricite/ELE03.FCStd
index bf8dc42..da7637b 100644
Binary files a/electricite/ELE03.FCStd and b/electricite/ELE03.FCStd differ
diff --git a/electricite/ELE04.FCStd b/electricite/ELE04.FCStd
index 909d01c..fd2e595 100644
Binary files a/electricite/ELE04.FCStd and b/electricite/ELE04.FCStd differ
diff --git a/electricite/ELE07.FCStd b/electricite/ELE07.FCStd
index a459818..c28ea5a 100644
Binary files a/electricite/ELE07.FCStd and b/electricite/ELE07.FCStd differ
diff --git a/electricite/ELE08.FCStd b/electricite/ELE08.FCStd
index 25454df..5309cf6 100644
Binary files a/electricite/ELE08.FCStd and b/electricite/ELE08.FCStd differ
diff --git a/electricite/ELE12.FCStd b/electricite/ELE12.FCStd
index e294928..d48ebbf 100644
Binary files a/electricite/ELE12.FCStd and b/electricite/ELE12.FCStd differ
diff --git a/electricite/ELE15.FCStd b/electricite/ELE15.FCStd
index 9149dd3..2f5a2c7 100644
Binary files a/electricite/ELE15.FCStd and b/electricite/ELE15.FCStd differ
diff --git a/electricite/ELE19.FCStd b/electricite/ELE19.FCStd
index bef9182..5494cb8 100644
Binary files a/electricite/ELE19.FCStd and b/electricite/ELE19.FCStd differ
diff --git a/electricite/ELE37.FCStd b/electricite/ELE37.FCStd
index 049fd11..ebf56f6 100644
Binary files a/electricite/ELE37.FCStd and b/electricite/ELE37.FCStd differ
diff --git a/electricite/ELE99.FCStd b/electricite/ELE99.FCStd
index f352df6..ff16014 100644
Binary files a/electricite/ELE99.FCStd and b/electricite/ELE99.FCStd differ
diff --git a/lib/A4_Landscape_VSPT.svg b/lib/A4_Landscape_VSPT.svg
new file mode 100644
index 0000000..fc31f4d
--- /dev/null
+++ b/lib/A4_Landscape_VSPT.svg
@@ -0,0 +1,332 @@
+
+
diff --git a/lib/humain_pilote.FCStd b/lib/humain_pilote.FCStd
new file mode 100644
index 0000000..c37fe6d
Binary files /dev/null and b/lib/humain_pilote.FCStd differ
diff --git a/lib/pont-avant.FCStd b/lib/pont-avant.FCStd
index 0e48de0..f1e2cf2 100644
Binary files a/lib/pont-avant.FCStd and b/lib/pont-avant.FCStd differ
diff --git a/quincaillerie/QIN02.FCStd b/quincaillerie/QIN02.FCStd
index 475d0ab..7bf45d4 100644
Binary files a/quincaillerie/QIN02.FCStd and b/quincaillerie/QIN02.FCStd differ
diff --git a/quincaillerie/QIN03.FCStd b/quincaillerie/QIN03.FCStd
index 90ebdfa..10c3e98 100644
Binary files a/quincaillerie/QIN03.FCStd and b/quincaillerie/QIN03.FCStd differ
diff --git a/quincaillerie/QIN07.FCStd b/quincaillerie/QIN07.FCStd
index 1c2e9eb..a8f0c40 100644
Binary files a/quincaillerie/QIN07.FCStd and b/quincaillerie/QIN07.FCStd differ
diff --git a/quincaillerie/QIN17.FCStd b/quincaillerie/QIN17.FCStd
index 56fbb73..5f7da62 100644
Binary files a/quincaillerie/QIN17.FCStd and b/quincaillerie/QIN17.FCStd differ
diff --git a/quincaillerie/QIN18.FCStd b/quincaillerie/QIN18.FCStd
index 1acfd77..aafec76 100644
Binary files a/quincaillerie/QIN18.FCStd and b/quincaillerie/QIN18.FCStd differ
diff --git a/quincaillerie/QIN24.FCStd b/quincaillerie/QIN24.FCStd
index ebf6019..8b7c85b 100644
Binary files a/quincaillerie/QIN24.FCStd and b/quincaillerie/QIN24.FCStd differ
diff --git a/quincaillerie/QIN25.FCStd b/quincaillerie/QIN25.FCStd
index 42d534f..07a2916 100644
Binary files a/quincaillerie/QIN25.FCStd and b/quincaillerie/QIN25.FCStd differ
diff --git a/quincaillerie/QIN26.FCStd b/quincaillerie/QIN26.FCStd
index f6b2528..a34435b 100644
Binary files a/quincaillerie/QIN26.FCStd and b/quincaillerie/QIN26.FCStd differ
diff --git a/quincaillerie/QIN49.FCStd b/quincaillerie/QIN49.FCStd
index 1550dca..2ca8ebb 100644
Binary files a/quincaillerie/QIN49.FCStd and b/quincaillerie/QIN49.FCStd differ
diff --git a/quincaillerie/QIN51.FCStd b/quincaillerie/QIN51.FCStd
index b306edd..99961f6 100644
Binary files a/quincaillerie/QIN51.FCStd and b/quincaillerie/QIN51.FCStd differ
diff --git a/quincaillerie/QIN52.FCStd b/quincaillerie/QIN52.FCStd
index 7bf8ad9..3ba5921 100644
Binary files a/quincaillerie/QIN52.FCStd and b/quincaillerie/QIN52.FCStd differ
diff --git a/quincaillerie/QIN59.FCStd b/quincaillerie/QIN59.FCStd
new file mode 100644
index 0000000..29c5527
Binary files /dev/null and b/quincaillerie/QIN59.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_CHO47_Biellette.FCStd b/quincaillerie/boulons/Boulon_CHO47_Biellette.FCStd
index 978d757..67dfde6 100644
Binary files a/quincaillerie/boulons/Boulon_CHO47_Biellette.FCStd and b/quincaillerie/boulons/Boulon_CHO47_Biellette.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_CHO53_AxeRoueAvant.FCStd b/quincaillerie/boulons/Boulon_CHO53_AxeRoueAvant.FCStd
index 0009347..7771772 100644
Binary files a/quincaillerie/boulons/Boulon_CHO53_AxeRoueAvant.FCStd and b/quincaillerie/boulons/Boulon_CHO53_AxeRoueAvant.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_Guidon.FCStd b/quincaillerie/boulons/Boulon_Guidon.FCStd
index eff21dd..b0a19bd 100644
Binary files a/quincaillerie/boulons/Boulon_Guidon.FCStd and b/quincaillerie/boulons/Boulon_Guidon.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M12x150TRCC_128_R_E_E.FCStd b/quincaillerie/boulons/Boulon_M12x150TRCC_128_R_E_E.FCStd
index 354e821..d63a489 100644
Binary files a/quincaillerie/boulons/Boulon_M12x150TRCC_128_R_E_E.FCStd and b/quincaillerie/boulons/Boulon_M12x150TRCC_128_R_E_E.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M12x300TRCC_277_R_E_E.FCStd b/quincaillerie/boulons/Boulon_M12x300TRCC_277_R_E_E.FCStd
index 2fab0c3..25ab9dd 100644
Binary files a/quincaillerie/boulons/Boulon_M12x300TRCC_277_R_E_E.FCStd and b/quincaillerie/boulons/Boulon_M12x300TRCC_277_R_E_E.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M4x16THC_09-85_EF.FCStd b/quincaillerie/boulons/Boulon_M4x16THC_09-85_EF.FCStd
index 9c5f2c4..fac4bf4 100644
Binary files a/quincaillerie/boulons/Boulon_M4x16THC_09-85_EF.FCStd and b/quincaillerie/boulons/Boulon_M4x16THC_09-85_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x14Hex_xx_EF.FCStd b/quincaillerie/boulons/Boulon_M6x14Hex_xx_EF.FCStd
index 4a7693d..ca5a2cd 100644
Binary files a/quincaillerie/boulons/Boulon_M6x14Hex_xx_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x14Hex_xx_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x35Hex_24_EA.FCStd b/quincaillerie/boulons/Boulon_M6x35Hex_24_EA.FCStd
index 0610ebe..68b6d02 100644
Binary files a/quincaillerie/boulons/Boulon_M6x35Hex_24_EA.FCStd and b/quincaillerie/boulons/Boulon_M6x35Hex_24_EA.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x35Hex_24_EF.FCStd b/quincaillerie/boulons/Boulon_M6x35Hex_24_EF.FCStd
index feac036..ce51b77 100644
Binary files a/quincaillerie/boulons/Boulon_M6x35Hex_24_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x35Hex_24_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x35Hex_26_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x35Hex_26_R_EF.FCStd
index 932ad1b..9d05a8d 100644
Binary files a/quincaillerie/boulons/Boulon_M6x35Hex_26_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x35Hex_26_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x35Hex_29_EF.FCStd b/quincaillerie/boulons/Boulon_M6x35Hex_29_EF.FCStd
new file mode 100644
index 0000000..d226a56
Binary files /dev/null and b/quincaillerie/boulons/Boulon_M6x35Hex_29_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x35Hex_R_xx_EF.FCStd b/quincaillerie/boulons/Boulon_M6x35Hex_R_xx_EF.FCStd
index 71dcffd..a6cebb9 100644
Binary files a/quincaillerie/boulons/Boulon_M6x35Hex_R_xx_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x35Hex_R_xx_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x35Hex_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x35Hex_xx_R_EF.FCStd
index 6b8859a..f46c46e 100644
Binary files a/quincaillerie/boulons/Boulon_M6x35Hex_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x35Hex_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x40Hex_29_EF.FCStd b/quincaillerie/boulons/Boulon_M6x40Hex_29_EF.FCStd
index 2b700e6..6b3b04a 100644
Binary files a/quincaillerie/boulons/Boulon_M6x40Hex_29_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x40Hex_29_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x40Hex_xx_EF.FCStd b/quincaillerie/boulons/Boulon_M6x40Hex_xx_EF.FCStd
index d8ea60b..2d4ffd9 100644
Binary files a/quincaillerie/boulons/Boulon_M6x40Hex_xx_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x40Hex_xx_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x40Hex_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x40Hex_xx_R_EF.FCStd
index f63fa96..117817c 100644
Binary files a/quincaillerie/boulons/Boulon_M6x40Hex_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x40Hex_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x45FHC_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x45FHC_xx_R_EF.FCStd
index ab10197..324317f 100644
Binary files a/quincaillerie/boulons/Boulon_M6x45FHC_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x45FHC_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x50FHC_37-5_EF.FCStd b/quincaillerie/boulons/Boulon_M6x50FHC_37-5_EF.FCStd
index d723bd6..c0bbf35 100644
Binary files a/quincaillerie/boulons/Boulon_M6x50FHC_37-5_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x50FHC_37-5_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_EF.FCStd b/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_EF.FCStd
index 2642071..df10a43 100644
Binary files a/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EA.FCStd b/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EA.FCStd
index 2676b95..2ebe146 100644
Binary files a/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EA.FCStd and b/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EA.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EF.FCStd
index 87918e2..e49bb9c 100644
Binary files a/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x60Hex_R_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x60Hex_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x60Hex_xx_R_EF.FCStd
index 2cdadbb..67d4a91 100644
Binary files a/quincaillerie/boulons/Boulon_M6x60Hex_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x60Hex_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EA.FCStd b/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EA.FCStd
index 016a874..833c97d 100644
Binary files a/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EA.FCStd and b/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EA.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EF.FCStd
index 2a93a91..ed1956b 100644
Binary files a/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x65Hex_R_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M6x90Hex_R_xx_R_EF.FCStd b/quincaillerie/boulons/Boulon_M6x90Hex_R_xx_R_EF.FCStd
index 0156a8a..1006450 100644
Binary files a/quincaillerie/boulons/Boulon_M6x90Hex_R_xx_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M6x90Hex_R_xx_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_M8x140Hex_R_130_R_EF.FCStd b/quincaillerie/boulons/Boulon_M8x140Hex_R_130_R_EF.FCStd
index 5289da8..8a908e6 100644
Binary files a/quincaillerie/boulons/Boulon_M8x140Hex_R_130_R_EF.FCStd and b/quincaillerie/boulons/Boulon_M8x140Hex_R_130_R_EF.FCStd differ
diff --git a/quincaillerie/boulons/Boulon_Triangle_Biellette.FCStd b/quincaillerie/boulons/Boulon_Triangle_Biellette.FCStd
index ee6b1c8..823148f 100644
Binary files a/quincaillerie/boulons/Boulon_Triangle_Biellette.FCStd and b/quincaillerie/boulons/Boulon_Triangle_Biellette.FCStd differ
diff --git a/quincaillerie/visserie/QIN04.FCStd b/quincaillerie/visserie/QIN04.FCStd
index a3a0844..30ffae4 100644
Binary files a/quincaillerie/visserie/QIN04.FCStd and b/quincaillerie/visserie/QIN04.FCStd differ
diff --git a/quincaillerie/visserie/QIN06.FCStd b/quincaillerie/visserie/QIN06.FCStd
index 1afac8f..4501071 100644
Binary files a/quincaillerie/visserie/QIN06.FCStd and b/quincaillerie/visserie/QIN06.FCStd differ
diff --git a/quincaillerie/visserie/QIN12.FCStd b/quincaillerie/visserie/QIN12.FCStd
index 3583d5c..937cfb0 100644
Binary files a/quincaillerie/visserie/QIN12.FCStd and b/quincaillerie/visserie/QIN12.FCStd differ
diff --git a/quincaillerie/visserie/QIN13.FCStd b/quincaillerie/visserie/QIN13.FCStd
index 9a4c015..be72f2d 100644
Binary files a/quincaillerie/visserie/QIN13.FCStd and b/quincaillerie/visserie/QIN13.FCStd differ
diff --git a/quincaillerie/visserie/QIN14.FCStd b/quincaillerie/visserie/QIN14.FCStd
index 36922b1..a861b6d 100644
Binary files a/quincaillerie/visserie/QIN14.FCStd and b/quincaillerie/visserie/QIN14.FCStd differ
diff --git a/quincaillerie/visserie/QIN15.FCStd b/quincaillerie/visserie/QIN15.FCStd
new file mode 100644
index 0000000..cef5983
Binary files /dev/null and b/quincaillerie/visserie/QIN15.FCStd differ
diff --git a/quincaillerie/visserie/QIN16.FCStd b/quincaillerie/visserie/QIN16.FCStd
new file mode 100644
index 0000000..10f729d
Binary files /dev/null and b/quincaillerie/visserie/QIN16.FCStd differ
diff --git a/quincaillerie/visserie/QIN20.FCStd b/quincaillerie/visserie/QIN20.FCStd
index 3afd86d..6a60b66 100644
Binary files a/quincaillerie/visserie/QIN20.FCStd and b/quincaillerie/visserie/QIN20.FCStd differ
diff --git a/quincaillerie/visserie/QIN23.FCStd b/quincaillerie/visserie/QIN23.FCStd
index 1085383..013051e 100644
Binary files a/quincaillerie/visserie/QIN23.FCStd and b/quincaillerie/visserie/QIN23.FCStd differ
diff --git a/quincaillerie/visserie/QIN28.FCStd b/quincaillerie/visserie/QIN28.FCStd
index 6d12106..b427f2a 100644
Binary files a/quincaillerie/visserie/QIN28.FCStd and b/quincaillerie/visserie/QIN28.FCStd differ
diff --git a/quincaillerie/visserie/QIN29.FCStd b/quincaillerie/visserie/QIN29.FCStd
index 8d456ad..7b30558 100644
Binary files a/quincaillerie/visserie/QIN29.FCStd and b/quincaillerie/visserie/QIN29.FCStd differ
diff --git a/quincaillerie/visserie/QIN32.FCStd b/quincaillerie/visserie/QIN32.FCStd
index c2e08b1..bb274b0 100644
Binary files a/quincaillerie/visserie/QIN32.FCStd and b/quincaillerie/visserie/QIN32.FCStd differ
diff --git a/quincaillerie/visserie/QIN33.FCStd b/quincaillerie/visserie/QIN33.FCStd
index 5679716..115876f 100644
Binary files a/quincaillerie/visserie/QIN33.FCStd and b/quincaillerie/visserie/QIN33.FCStd differ
diff --git a/quincaillerie/visserie/QIN34.FCStd b/quincaillerie/visserie/QIN34.FCStd
index 5052388..0a79d6d 100644
Binary files a/quincaillerie/visserie/QIN34.FCStd and b/quincaillerie/visserie/QIN34.FCStd differ
diff --git a/quincaillerie/visserie/QIN35.FCStd b/quincaillerie/visserie/QIN35.FCStd
index 2187d6c..ede8f45 100644
Binary files a/quincaillerie/visserie/QIN35.FCStd and b/quincaillerie/visserie/QIN35.FCStd differ
diff --git a/quincaillerie/visserie/QIN36.FCStd b/quincaillerie/visserie/QIN36.FCStd
index 7f36ba3..811ac5f 100644
Binary files a/quincaillerie/visserie/QIN36.FCStd and b/quincaillerie/visserie/QIN36.FCStd differ
diff --git a/quincaillerie/visserie/QIN37.FCStd b/quincaillerie/visserie/QIN37.FCStd
new file mode 100644
index 0000000..a523560
Binary files /dev/null and b/quincaillerie/visserie/QIN37.FCStd differ
diff --git a/quincaillerie/visserie/QIN39.FCStd b/quincaillerie/visserie/QIN39.FCStd
index af12bba..7618192 100644
Binary files a/quincaillerie/visserie/QIN39.FCStd and b/quincaillerie/visserie/QIN39.FCStd differ
diff --git a/quincaillerie/visserie/QIN40.FCStd b/quincaillerie/visserie/QIN40.FCStd
index 9ee037a..627f068 100644
Binary files a/quincaillerie/visserie/QIN40.FCStd and b/quincaillerie/visserie/QIN40.FCStd differ
diff --git a/quincaillerie/visserie/QIN41.FCStd b/quincaillerie/visserie/QIN41.FCStd
index 4774683..f907c80 100644
Binary files a/quincaillerie/visserie/QIN41.FCStd and b/quincaillerie/visserie/QIN41.FCStd differ
diff --git a/quincaillerie/visserie/QIN43.FCStd b/quincaillerie/visserie/QIN43.FCStd
index a0a703d..4a1d8de 100644
Binary files a/quincaillerie/visserie/QIN43.FCStd and b/quincaillerie/visserie/QIN43.FCStd differ
diff --git a/quincaillerie/visserie/QIN44.FCStd b/quincaillerie/visserie/QIN44.FCStd
index a330951..52a7ce8 100644
Binary files a/quincaillerie/visserie/QIN44.FCStd and b/quincaillerie/visserie/QIN44.FCStd differ
diff --git a/quincaillerie/visserie/QIN45.FCStd b/quincaillerie/visserie/QIN45.FCStd
index db90e3e..1c7e8b9 100644
Binary files a/quincaillerie/visserie/QIN45.FCStd and b/quincaillerie/visserie/QIN45.FCStd differ
diff --git a/quincaillerie/visserie/QIN46.FCStd b/quincaillerie/visserie/QIN46.FCStd
index 830f6c2..db2aa88 100644
Binary files a/quincaillerie/visserie/QIN46.FCStd and b/quincaillerie/visserie/QIN46.FCStd differ
diff --git a/quincaillerie/visserie/QIN50.FCStd b/quincaillerie/visserie/QIN50.FCStd
index 18e41f6..dd05c0b 100644
Binary files a/quincaillerie/visserie/QIN50.FCStd and b/quincaillerie/visserie/QIN50.FCStd differ
diff --git a/quincaillerie/visserie/QIN56.FCStd b/quincaillerie/visserie/QIN56.FCStd
index def1129..d7430dd 100644
Binary files a/quincaillerie/visserie/QIN56.FCStd and b/quincaillerie/visserie/QIN56.FCStd differ
diff --git a/quincaillerie/visserie/QIN57.FCStd b/quincaillerie/visserie/QIN57.FCStd
new file mode 100644
index 0000000..cc4da27
Binary files /dev/null and b/quincaillerie/visserie/QIN57.FCStd differ
diff --git a/quincaillerie/visserie/QIN58.FCStd b/quincaillerie/visserie/QIN58.FCStd
new file mode 100644
index 0000000..2ee6ded
Binary files /dev/null and b/quincaillerie/visserie/QIN58.FCStd differ
diff --git a/quincaillerie/visserie/QIN60.FCStd b/quincaillerie/visserie/QIN60.FCStd
index 20d77ef..fd8bf6b 100644
Binary files a/quincaillerie/visserie/QIN60.FCStd and b/quincaillerie/visserie/QIN60.FCStd differ
diff --git a/quincaillerie/visserie/QIN65.FCStd b/quincaillerie/visserie/QIN65.FCStd
index a8b797c..704aba4 100644
Binary files a/quincaillerie/visserie/QIN65.FCStd and b/quincaillerie/visserie/QIN65.FCStd differ
diff --git a/quincaillerie/visserie/QIN90.FCStd b/quincaillerie/visserie/QIN90.FCStd
index 284945f..62f4c06 100644
Binary files a/quincaillerie/visserie/QIN90.FCStd and b/quincaillerie/visserie/QIN90.FCStd differ
diff --git a/roues/ROU05.FCStd b/roues/ROU05.FCStd
index 6ac644a..243ad0e 100644
Binary files a/roues/ROU05.FCStd and b/roues/ROU05.FCStd differ
diff --git a/roues/ROU98.FCStd b/roues/ROU98.FCStd
index 9ad551e..82896e9 100644
Binary files a/roues/ROU98.FCStd and b/roues/ROU98.FCStd differ
diff --git a/roues/ROU98_Natif.FCStd b/roues/ROU98_Natif.FCStd
index 98a5496..0b3613b 100644
Binary files a/roues/ROU98_Natif.FCStd and b/roues/ROU98_Natif.FCStd differ
diff --git a/roues/ROU99.FCStd b/roues/ROU99.FCStd
index c061a3e..8e56211 100644
Binary files a/roues/ROU99.FCStd and b/roues/ROU99.FCStd differ
diff --git a/sous-assemblages/AttacheRemorque.FCStd b/sous-assemblages/AttacheRemorque.FCStd
index b6fec9e..252058a 100644
Binary files a/sous-assemblages/AttacheRemorque.FCStd and b/sous-assemblages/AttacheRemorque.FCStd differ
diff --git a/sous-assemblages/CapteurVitesse.FCStd b/sous-assemblages/CapteurVitesse.FCStd
index e361d5d..15ef323 100644
Binary files a/sous-assemblages/CapteurVitesse.FCStd and b/sous-assemblages/CapteurVitesse.FCStd differ
diff --git a/sous-assemblages/EmbaseUniverselle.FCStd b/sous-assemblages/EmbaseUniverselle.FCStd
index b163fc8..4857b7c 100644
Binary files a/sous-assemblages/EmbaseUniverselle.FCStd and b/sous-assemblages/EmbaseUniverselle.FCStd differ
diff --git a/sous-assemblages/MoteurM400.FCStd b/sous-assemblages/MoteurM400.FCStd
index 3c46c31..25dc9ae 100644
Binary files a/sous-assemblages/MoteurM400.FCStd and b/sous-assemblages/MoteurM400.FCStd differ
diff --git a/sous-assemblages/PlatineArriere.FCStd b/sous-assemblages/PlatineArriere.FCStd
index 7f50b74..33a4662 100644
Binary files a/sous-assemblages/PlatineArriere.FCStd and b/sous-assemblages/PlatineArriere.FCStd differ
diff --git a/sous-assemblages/PlatineAvant.FCStd b/sous-assemblages/PlatineAvant.FCStd
index 3df987e..3363e05 100644
Binary files a/sous-assemblages/PlatineAvant.FCStd and b/sous-assemblages/PlatineAvant.FCStd differ
diff --git a/sous-assemblages/PochetteLaterale.FCStd b/sous-assemblages/PochetteLaterale.FCStd
index d3d89ae..cd2c500 100644
Binary files a/sous-assemblages/PochetteLaterale.FCStd and b/sous-assemblages/PochetteLaterale.FCStd differ
diff --git a/sous-assemblages/RoueStabilisation.FCStd b/sous-assemblages/RoueStabilisation.FCStd
index 6f69bb3..4693b28 100644
Binary files a/sous-assemblages/RoueStabilisation.FCStd and b/sous-assemblages/RoueStabilisation.FCStd differ
diff --git a/sous-assemblages/SiegeAdulte.FCStd b/sous-assemblages/SiegeAdulte.FCStd
index 801def0..d407cf4 100644
Binary files a/sous-assemblages/SiegeAdulte.FCStd and b/sous-assemblages/SiegeAdulte.FCStd differ
diff --git a/sous-assemblages/SiegeAdulteLowCost.FCStd b/sous-assemblages/SiegeAdulteLowCost.FCStd
new file mode 100644
index 0000000..dc286a5
Binary files /dev/null and b/sous-assemblages/SiegeAdulteLowCost.FCStd differ
diff --git a/sous-assemblages/SiegeAdulteSansFixation.FCStd b/sous-assemblages/SiegeAdulteSansFixation.FCStd
new file mode 100644
index 0000000..5ada4b6
Binary files /dev/null and b/sous-assemblages/SiegeAdulteSansFixation.FCStd differ
diff --git a/sous-assemblages/SiegesEnfant.FCStd b/sous-assemblages/SiegesEnfant.FCStd
index e32f24e..54aaeb5 100644
Binary files a/sous-assemblages/SiegesEnfant.FCStd and b/sous-assemblages/SiegesEnfant.FCStd differ
diff --git a/sous-assemblages/StructureSiege.FCStd b/sous-assemblages/StructureSiege.FCStd
index 98c3e04..93099e1 100644
Binary files a/sous-assemblages/StructureSiege.FCStd and b/sous-assemblages/StructureSiege.FCStd differ
diff --git a/sous-assemblages/TendeurChaine.FCStd b/sous-assemblages/TendeurChaine.FCStd
index 5410f16..1d00e0f 100644
Binary files a/sous-assemblages/TendeurChaine.FCStd and b/sous-assemblages/TendeurChaine.FCStd differ
diff --git a/textiles/TXT01.FCStd b/textiles/TXT01.FCStd
index 00be69a..f5bf059 100644
Binary files a/textiles/TXT01.FCStd and b/textiles/TXT01.FCStd differ
diff --git a/textiles/TXT02.FCStd b/textiles/TXT02.FCStd
index c4e8739..95faddf 100644
Binary files a/textiles/TXT02.FCStd and b/textiles/TXT02.FCStd differ
diff --git a/textiles/TXT03.FCStd b/textiles/TXT03.FCStd
index 6c115af..2b6787e 100644
Binary files a/textiles/TXT03.FCStd and b/textiles/TXT03.FCStd differ
diff --git a/textiles/TXT04.FCStd b/textiles/TXT04.FCStd
index 2a47bc6..142a4ab 100644
Binary files a/textiles/TXT04.FCStd and b/textiles/TXT04.FCStd differ
diff --git a/textiles/TXT05.FCStd b/textiles/TXT05.FCStd
index 07946bf..e3630ac 100644
Binary files a/textiles/TXT05.FCStd and b/textiles/TXT05.FCStd differ
diff --git a/tools/export-all-parts.py b/tools/export-all-parts.py
index 436b2fb..0245503 100644
--- a/tools/export-all-parts.py
+++ b/tools/export-all-parts.py
@@ -1,16 +1,19 @@
-freecad_install_path = '/home/youen/dev/FreeCAD-asm3-Daily-Conda-Py3.10-20221128-glibc2.12-x86_64'
-
+from pathlib import Path
+import os
import sys
-sys.path.insert(0,freecad_install_path + '/usr/lib')
-from pathlib import Path
+sys.path.append(os.path.join(os.path.dirname(__file__), 'utils'))
+import vspt_freecad
import FreeCAD as App
import Import
+import ImportGui
+import TechDrawGui
-script_folder = os.path.dirname(__file__)
-project_folder = os.path.realpath(script_folder + '/..')
-output_folder = project_folder + '-STEP'
+project_folder = os.getcwd()
+output_folder = project_folder + '/dist/STEP'
+assemblies_output_folder = project_folder + '/dist/FCStd'
+drawings_output_folder = project_folder + '/dist/PDF'
def convert_file(file_name, output_format):
doc = App.open(project_folder + '/' + file_name)
@@ -23,7 +26,7 @@ def convert_file(file_name, output_format):
if len(obj.Parents) == 0:
#print(obj.Label)
root_objects.append(obj)
- if obj.Label == doc.Name:
+ if obj.Label == doc.Name or obj.Label == doc.Name + ' (experimental)':
main_object = obj
if main_object is None and len(root_objects) == 1:
@@ -32,6 +35,11 @@ def convert_file(file_name, output_format):
if main_object is None:
raise Exception("Can't find main object in file " + file_name + " (found " + str(len(root_objects)) + " root object(s), none named like the document " + doc.Name + ")")
+ if 'experimental' in main_object.Label or 'expérimental' in main_object.Label:
+ print('Document ' + doc.Name + ' is marked as experimental and will be ignored')
+ vspt_freecad.close_all_docs()
+ return
+
secondary_objects = []
code_obj = doc.getObjectsByLabel('Code_Tube_Draft')
if len(code_obj) == 1:
@@ -58,22 +66,111 @@ def convert_file(file_name, output_format):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
- Import.export([main_object], output_path)
+ if output_format.lower() == 'stpz':
+ import stepZ
+ stepZ.export([main_object], output_path)
+ else:
+ Import.export([main_object], output_path)
+
+ # Export 2D drawing
+ page_name = doc.Name + '_Drawing'
+ drawing_page = doc.getObject(page_name)
+ if drawing_page is not None:
+ drawing_output_path = drawings_output_folder + '/' + os.path.dirname(file_name) + '/' + Path(file_name).stem + '.pdf'
+ drawing_output_dir = os.path.dirname(drawing_output_path)
+ if not os.path.exists(drawing_output_dir):
+ os.makedirs(drawing_output_dir)
+ drawing_page.ViewObject.Visibility = True
+ TechDrawGui.export([drawing_page], drawing_output_path)
- # close all documents
- while len(FreeCAD.listDocuments().values()) > 0:
- FreeCAD.closeDocument(list(FreeCAD.listDocuments().values())[0].Name)
+ vspt_freecad.close_all_docs()
-folders = [
- 'chaudronnerie',
- 'tubes'
-]
+def export_assembly(doc, file_name, output_format):
+ root_objects = []
+ main_object = None
+
+ # remove all objects that are not visible, or not in the TypeId whitelist, because we don't want to export those
+ need_check_objects = True
+ while need_check_objects:
+ need_check_objects = False
+ for obj in doc.Objects:
+ if not obj.Visibility or obj.TypeId not in ['Part::Feature', 'Part::FeaturePython', 'PartDesign::Body', 'Part::Mirroring', 'Part::Cut', 'Part::Part2DObjectPython', 'Part::MultiFuse', 'Part::Loft', 'Part::Torus', 'Part::Cylinder', 'App::DocumentObjectGroup', 'App::Part', 'App::Link']:
+ #print('removing ' + obj.Name + ' ('+obj.Label+')')
+ doc.removeObject(obj.Name)
+ need_check_objects = True
+ break
+
+ for obj in doc.Objects:
+ if len(obj.Parents) == 0:
+ #print(obj.Label)
+ root_objects.append(obj)
+ if obj.Label == doc.Name:
+ main_object = obj
+
+ if main_object is None and len(root_objects) == 1:
+ main_object = root_objects[0]
+
+ if main_object is None:
+ raise Exception("Can't find main assembly in file " + file_name + " (found " + str(len(root_objects)) + " root object(s), none named like the document " + doc.Name + ")")
+
+ output_path = output_folder + '/' + os.path.dirname(file_name) + '/' + Path(file_name).stem + '.' + output_format
+ output_dir = os.path.dirname(output_path)
+ if not os.path.exists(output_dir):
+ os.makedirs(output_dir)
+
+ if output_format.lower() == 'stpz':
+ import stepZ
+ stepZ.export([main_object], output_path)
+ else:
+ ImportGui.export([main_object], output_path)
+
+def convert_assembly(file_name, output_format):
+ print("Exporting assembly " + file_name + "...")
+ doc = App.open(project_folder + '/' + file_name)
+ export_assembly(doc, file_name, output_format)
+ vspt_freecad.close_all_docs()
+
+def export_configuration(file_name, config_name, output_filename, output_format):
+ print('Generating assembly for configuration '+config_name+'...')
+
+ doc = App.open(project_folder + '/' + file_name)
+
+ Gui.Selection.clearSelection()
+ Gui.Selection.addSelection('vheliotech','Model','Configurations.'+doc.getObjectsByLabel(config_name)[0].Name+'.')
+ Gui.runCommand('Asm4_applyConfiguration')
+ Gui.Selection.clearSelection()
+
+ export_assembly(doc, output_filename, output_format)
+
+ #doc.saveAs(assemblies_output_folder + '/' + output_filename + '.FCStd')
+
+ vspt_freecad.close_all_docs()
+
+try:
+ folders = [
+ 'chaudronnerie',
+ 'tubes'
+ ]
+
+ for folder in folders:
+ files = os.listdir(project_folder + '/' + folder)
+ for source_file in files:
+ if not source_file.endswith('.FCStd'): continue
+ source_path = folder + '/' + source_file
+ print(source_path)
+ convert_file(source_path, 'step')
+
+ #convert_assembly('vheliotech.FCStd', 'step')
+
+ export_configuration('vheliotech.FCStd', 'Config_Integrale', 'vheliotech-integral', 'step')
+ export_configuration('vheliotech.FCStd', 'Config_Solaire', 'vheliotech-solaire', 'step')
+ export_configuration('vheliotech.FCStd', 'Config_Motorisee', 'vheliotech-motorise', 'step')
+ export_configuration('vheliotech.FCStd', 'Config_Basique', 'vheliotech-basique', 'step')
+
+except Exception as e:
+ print(e)
-for folder in folders:
- files = os.listdir(project_folder + '/' + folder)
- for source_file in files:
- if not source_file.endswith('.FCStd'): continue
- source_path = folder + '/' + source_file
- print(source_path)
- convert_file(source_path, 'step')
+# exit FreeCAD
+vspt_freecad.close_all_docs()
+FreeCADGui.getMainWindow().close()
diff --git a/tools/export-all-parts.sh b/tools/export-all-parts.sh
new file mode 100755
index 0000000..ca9dbd6
--- /dev/null
+++ b/tools/export-all-parts.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+set -e
+
+# Set the path to your FreeCAD executable here
+FREECAD=~/dev/FreeCAD-asm3-Daily-Conda-Py3.10-20221128-glibc2.12-x86_64.AppImage
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+cd $SCRIPT_DIR/..
+
+rm -rf ./dist
+
+# Check script syntax before starting freecad
+python3 -m py_compile tools/export-all-parts.py
+
+# Export all versioned files
+mkdir -p dist/FCStd
+git archive HEAD . | tar -x -C dist/FCStd
+
+# Start freecad to run the script. We must start freecad with GUI (otherwise we can't export colors). We start it hidden in a virtual framebuffer (xvfb) so that it can run cleanly in the background.
+xvfb-run $FREECAD tools/export-all-parts.py
+
+# Concatenate all PDFs in a single file
+pdfunite dist/PDF/tubes/* dist/PDF/tubes.pdf
diff --git a/tools/generate-2d-drawings.py b/tools/generate-2d-drawings.py
new file mode 100644
index 0000000..3840ece
--- /dev/null
+++ b/tools/generate-2d-drawings.py
@@ -0,0 +1,304 @@
+import os
+import sys
+import asyncio
+import math
+
+sys.path.append(os.path.join(os.path.dirname(__file__), 'utils'))
+import vspt_freecad
+import vspt_coroutine
+
+verbose = False
+
+project_folder = os.getcwd()
+
+def apply_styles(page):
+ modified = False
+
+ dim_font_size = 3.0
+
+ for view in page.Views:
+ if view.TypeId == 'TechDraw::DrawViewDimension':
+ if view.ViewObject.Fontsize != dim_font_size:
+ view.ViewObject.Fontsize = dim_font_size
+ modified = True
+
+ return modified
+
+async def generate_2d_drawing(file_name):
+ doc = App.open(project_folder + '/' + file_name)
+
+ modified = False
+
+ page_name = doc.Name + '_Drawing'
+
+ page = doc.getObject(page_name)
+ if page is not None:
+ print('2D drawing already exists - skipped')
+
+ else:
+ modified = True
+ template_file_name = project_folder + '/lib/A4_Landscape_VSPT.svg'
+
+ root_objects = []
+ main_object = None
+
+ for obj in doc.Objects:
+ if len(obj.Parents) == 0:
+ root_objects.append(obj)
+ if obj.Label == doc.Name:
+ main_object = obj
+
+ if main_object is None and len(root_objects) == 1:
+ main_object = root_objects[0]
+
+ if main_object is None:
+ raise Exception("Can't find main object in file " + doc.FileName + " (found " + str(len(root_objects)) + " root object(s), none named like the document " + doc.Name + ")")
+
+ code_obj = doc.getObjectsByLabel('Code_Tube_Draft')
+ if len(code_obj) == 1:
+ code_obj = code_obj[0]
+ else:
+ code_obj = None
+
+ sources = [main_object]
+
+ bound_box = main_object.Shape.BoundBox
+ proj_size = [0, 0, 0] # size of the original part front view after projection at scale 1:1
+ if bound_box.XLength > bound_box.YLength:
+ if bound_box.XLength > bound_box.ZLength:
+ main_axis = 0
+ proj_size[0] = bound_box.XLength
+ proj_size[1] = bound_box.ZLength
+ proj_size[2] = bound_box.YLength
+ else:
+ main_axis = 2
+ proj_size[0] = bound_box.ZLength
+ proj_size[1] = bound_box.XLength
+ proj_size[2] = bound_box.YLength
+ else:
+ if bound_box.YLength > bound_box.ZLength:
+ main_axis = 1
+ proj_size[0] = bound_box.YLength
+ proj_size[1] = bound_box.ZLength
+ proj_size[2] = bound_box.XLength
+ else:
+ main_axis = 2
+ proj_size[0] = bound_box.ZLength
+ proj_size[1] = bound_box.XLength
+ proj_size[2] = bound_box.YLength
+
+ if verbose: print("Adding drawing page...");
+
+ page = doc.addObject('TechDraw::DrawPage', page_name)
+ template = doc.addObject('TechDraw::DrawSVGTemplate', 'Template')
+
+ template.Template = template_file_name
+ page.Template = template
+
+ if verbose: print("Computing best scale...");
+ scale_denominators = [4.0, 5.0, 6.0, 8.0, 10.0]
+ scale_numerator = 1.0
+ scale_denominator = scale_denominators[0]
+ proj_total_size = [proj_size[0] + proj_size[2], proj_size[1] + proj_size[2]] # projected size of all views (without spacing) at scale 1:1
+ spacingX = 20.0
+ spacingY = 50.0
+ maxSizeX = 280.0
+ maxSizeY = 160.0
+ for denom in scale_denominators:
+ scale_denominator = denom
+ if proj_total_size[0]*scale_numerator/denom + spacingX <= maxSizeX and proj_total_size[1]*scale_numerator/denom + spacingY <= maxSizeY:
+ break
+
+ if verbose: print("Adding projection group...");
+
+ projGroup = doc.addObject('TechDraw::DrawProjGroup', doc.Name + '_ProjGroup')
+ page.addView(projGroup)
+ projGroup.ScaleType = 'Custom'
+ projGroup.Scale = scale_numerator/scale_denominator
+ projGroup.spacingX = 20.0
+ projGroup.spacingY = 50.0
+ projGroup.Source = sources
+ projGroup.addProjection('Front')
+ if main_axis == 0:
+ projGroup.Anchor.Direction = App.Vector(0,1,0)
+ projGroup.Anchor.XDirection = App.Vector(-1,0,0)
+ projGroup.Anchor.RotationVector = App.Vector(-1,0,0)
+ elif main_axis == 1:
+ projGroup.Anchor.Direction = App.Vector(1,0,0)
+ projGroup.Anchor.XDirection = App.Vector(0,1,0)
+ projGroup.Anchor.RotationVector = App.Vector(0,1,0)
+ elif main_axis == 2:
+ projGroup.Anchor.Direction = App.Vector(0,1,0)
+ projGroup.Anchor.XDirection = App.Vector(0,0,1)
+ projGroup.Anchor.RotationVector = App.Vector(0,0,1)
+ projGroup.addProjection('Top')
+ projGroup.addProjection('Left')
+ projGroup.X = 130.0
+ projGroup.Y = 150.0
+
+ texts = page.Template.EditableTexts
+ texts['SCALE'] = str(int(scale_numerator+0.5))+':'+str(int(scale_denominator+0.5))
+ try:
+ texts['PM'] = main_object.Assembly_handbook_Material
+ except:
+ pass
+ texts['PN'] = doc.Name
+ texts['TITLELINE-1'] = doc.Name
+ page.Template.EditableTexts = texts
+
+ async def addDimensions():
+ for view in projGroup.Views:
+ if verbose: print("View: " + view.Label + "...")
+
+ edges = []
+ visibleEdges = view.getVisibleEdges()
+ edgeIdx = 0
+ lowestEdgeName = ''
+ lowestEdgePos = 1000000
+ while True:
+ try:
+ edge = view.getEdgeByIndex(edgeIdx)
+ except:
+ break
+ edges.append(edge)
+
+ if edge.BoundBox.YLength < 0.01 and edge.BoundBox.Center.y < lowestEdgePos:
+ lowestEdgePos = edge.BoundBox.Center.y
+ lowestEdgeName = 'Edge' + str(edgeIdx)
+
+ edgeIdx = edgeIdx + 1
+
+ vertices = []
+ vertIdx = 0
+ while True:
+ try:
+ vert = view.getVertexByIndex(vertIdx)
+ except:
+ break
+ vertices.append(vert)
+ vertIdx = vertIdx + 1
+
+ def getFeatureName(edge):
+ if edge.Curve.TypeId == 'Part::GeomCircle':
+ vertIdx = 0
+ c = edge.BoundBox.Center
+ closestDist = 100000000
+ closestVert = None
+ for vert in vertices:
+ dx = vert.X - c.x
+ dy = vert.Y - c.y
+ dist = math.sqrt(dx*dx + dy*dy)
+ if dist < closestDist:
+ closestDist = dist
+ closestVert = vert
+ vertIdx = vertIdx + 1
+ if closestVert is not None:
+ return 'Vertex' + str(vertices.index(closestVert))
+ else:
+ return ''
+ else:
+ return 'Edge'+str(edges.index(edge))
+
+ if verbose: print("Listing features...")
+ features = []
+ for edge in edges:
+ if (edge.Curve.TypeId == 'Part::GeomLine' and edge.BoundBox.XLength <= 0.01) or (edge.Curve.TypeId == 'Part::GeomCircle' and abs(edge.Curve.Radius * 2.0 - edge.BoundBox.XLength) < 0.001 and abs(edge.Curve.Radius * 2.0 - edge.BoundBox.YLength) < 0.001):
+ featureName = getFeatureName(edge)
+ if featureName == '':
+ continue
+
+ pos = edge.BoundBox.Center.x
+ duplicate = False
+ for otherFeature in features:
+ if abs(otherFeature[0] - pos) < 0.1:
+ duplicate = True
+ break
+ if not duplicate:
+ features.append((pos, edge, featureName))
+ features.sort(key=lambda e: e[0])
+
+ def addDimension(edgeA, edgeB, posY):
+ dim = doc.addObject('TechDraw::DrawViewDimension','Dimension')
+ dim.Type = 'DistanceX'
+ dim.FormatSpec = '%.1f'
+ dim.References2D = [(view, (getFeatureName(edgeA), getFeatureName(edgeB)))]
+ visibleEdgeA = visibleEdges[edges.index(edgeA)]
+ visibleEdgeB = visibleEdges[edges.index(edgeB)]
+ dim.X = (visibleEdgeA.BoundBox.Center.x + visibleEdgeB.BoundBox.Center.x) * 0.5
+ dim.Y = posY
+ page.addView(dim)
+
+ if edgeB.Curve.TypeId == 'Part::GeomCircle':
+ if abs(edgeB.BoundBox.XLength - 6.5) > 0.01:
+ dim = doc.addObject('TechDraw::DrawViewDimension','Dimension')
+ dim.Type = 'Diameter'
+ dim.FormatSpec = '%.1f'
+ dim.References2D = [(view, ('Edge'+str(edges.index(edgeB)),))]
+ dim.X = visibleEdgeB.BoundBox.Center.x + 6.0
+ dim.Y = -6.0
+ page.addView(dim)
+
+ if abs(edgeB.BoundBox.Center.y) > 0.01 and lowestEdgeName != '':
+ dim = doc.addObject('TechDraw::DrawViewDimension','Dimension')
+ dim.Type = 'DistanceY'
+ dim.FormatSpec = '%.1f'
+ dim.References2D = [(view, (getFeatureName(edgeB),lowestEdgeName))]
+ dim.X = visibleEdgeB.BoundBox.Center.x + 2.0
+ dim.Y = -6.0
+ page.addView(dim)
+
+ if verbose: print("Adding dimensions...")
+
+ if len(features) >= 2:
+ if projGroup.Views.index(view) != 0:
+ addDimension(features[0][1], features[len(features)-1][1], -25.0)
+
+ if len(features) > 2:
+ for featureIdx in range(0, len(features) - 1):
+ if featureIdx == 0 or features[featureIdx][1].Curve.TypeId != 'Part::GeomLine':
+ addDimension(features[featureIdx][1], features[featureIdx + 1][1], 15.0)
+
+ if verbose: print("Adding secondary objects...")
+ if code_obj is not None:
+ projGroup.Source = projGroup.Source + [code_obj]
+
+ page.recompute(True)
+ await vspt_coroutine.get_main_loop().wait(1)
+ await addDimensions()
+
+ if apply_styles(page):
+ modified = True
+
+ if modified:
+ if verbose: print("Saving...")
+ page.recompute(True)
+ page.ViewObject.Visibility = False # don't save the document with the page open or it will automatically reopen on load
+ await vspt_coroutine.get_main_loop().wait(1)
+ doc.save()
+
+ if verbose: print("Closing...")
+ vspt_freecad.close_all_docs()
+
+async def run():
+ try:
+ folders = [
+ 'tubes'
+ ]
+
+ for folder in folders:
+ files = os.listdir(project_folder + '/' + folder)
+ for source_file in files:
+ if not source_file.endswith('.FCStd'): continue
+ source_path = folder + '/' + source_file
+ print(source_path)
+ await generate_2d_drawing(source_path)
+
+ # exit FreeCAD
+ vspt_freecad.close_all_docs()
+ FreeCADGui.getMainWindow().close()
+
+ except Exception as e:
+ print(e)
+
+vspt_coroutine.get_main_loop().create_task(run())
+
diff --git a/tools/generate-2d-drawings.sh b/tools/generate-2d-drawings.sh
new file mode 100755
index 0000000..9e74862
--- /dev/null
+++ b/tools/generate-2d-drawings.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+# Set the path to your FreeCAD executable here
+FREECAD=~/dev/FreeCAD-asm3-Daily-Conda-Py3.10-20221128-glibc2.12-x86_64.AppImage
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+cd $SCRIPT_DIR/..
+
+# Check script syntax before starting freecad
+python3 -m py_compile tools/generate-2d-drawings.py
+
+# Start freecad to run the script. We must start freecad with GUI. We start it hidden in a virtual framebuffer (xvfb) so that it can run cleanly in the background.
+xvfb-run $FREECAD tools/generate-2d-drawings.py
+#$FREECAD tools/generate-2d-drawings.py
diff --git a/tools/utils/vspt_coroutine.py b/tools/utils/vspt_coroutine.py
new file mode 100644
index 0000000..cdb032f
--- /dev/null
+++ b/tools/utils/vspt_coroutine.py
@@ -0,0 +1,38 @@
+import asyncio
+from PySide.QtCore import QTimer
+
+class EventLoop:
+ loop = None
+
+ def __init__(self):
+ self.loop = asyncio.new_event_loop()
+
+ def create_task(self, coro):
+ self.loop.create_task(coro)
+ self.update()
+
+ def update(self):
+ self.loop.stop()
+ self.loop.run_forever()
+
+ async def wait(self, time_milliseconds):
+ #print("waiting " + str(time_milliseconds) + "ms...")
+ currentLoop = self
+ fut = self.loop.create_future()
+ def callback():
+ #print("wait callback")
+ fut.set_result(True)
+ currentLoop.update()
+ QTimer.singleShot(time_milliseconds, callback)
+ await fut
+ #print("end wait")
+
+main_loop = None
+
+def get_main_loop():
+ global main_loop
+ if main_loop is None:
+ #print("Creating main loop")
+ main_loop = EventLoop()
+ return main_loop
+
diff --git a/tools/utils/vspt_freecad.py b/tools/utils/vspt_freecad.py
new file mode 100644
index 0000000..96af865
--- /dev/null
+++ b/tools/utils/vspt_freecad.py
@@ -0,0 +1,6 @@
+import FreeCAD as App
+
+def close_all_docs():
+ #print("close_all_docs")
+ while len(App.listDocuments().values()) > 0:
+ App.closeDocument(list(App.listDocuments().values())[0].Name)
diff --git a/tubes/E16.FCStd b/tubes/E16.FCStd
index 1d31e96..f40f184 100644
Binary files a/tubes/E16.FCStd and b/tubes/E16.FCStd differ
diff --git a/tubes/E20.FCStd b/tubes/E20.FCStd
index eaacf35..7e2a791 100644
Binary files a/tubes/E20.FCStd and b/tubes/E20.FCStd differ
diff --git a/tubes/E21.FCStd b/tubes/E21.FCStd
index 6622e6f..ffab880 100644
Binary files a/tubes/E21.FCStd and b/tubes/E21.FCStd differ
diff --git a/tubes/E36.FCStd b/tubes/E36.FCStd
index ff622c1..b028fe1 100644
Binary files a/tubes/E36.FCStd and b/tubes/E36.FCStd differ
diff --git a/tubes/L00.FCStd b/tubes/L00.FCStd
index c781fd5..1f7ff4c 100644
Binary files a/tubes/L00.FCStd and b/tubes/L00.FCStd differ
diff --git a/tubes/L00_Drawing.svg b/tubes/L00_Drawing.svg
deleted file mode 100644
index 658c03f..0000000
--- a/tubes/L00_Drawing.svg
+++ /dev/null
@@ -1,1636 +0,0 @@
-
-
diff --git a/tubes/L01.FCStd b/tubes/L01.FCStd
index 946bfa3..1a80caa 100644
Binary files a/tubes/L01.FCStd and b/tubes/L01.FCStd differ
diff --git a/tubes/L01_Drawing.svg b/tubes/L01_Drawing.svg
deleted file mode 100644
index acc0e8d..0000000
--- a/tubes/L01_Drawing.svg
+++ /dev/null
@@ -1,1261 +0,0 @@
-
-
diff --git a/tubes/L02.FCStd b/tubes/L02.FCStd
index 8bfeae0..bee7847 100644
Binary files a/tubes/L02.FCStd and b/tubes/L02.FCStd differ
diff --git a/tubes/L02_Drawing.svg b/tubes/L02_Drawing.svg
deleted file mode 100644
index 47c31aa..0000000
--- a/tubes/L02_Drawing.svg
+++ /dev/null
@@ -1,1333 +0,0 @@
-
-
diff --git a/tubes/L03.FCStd b/tubes/L03.FCStd
index bd42b1c..00eb667 100644
Binary files a/tubes/L03.FCStd and b/tubes/L03.FCStd differ
diff --git a/tubes/L04.FCStd b/tubes/L04.FCStd
index d06511d..1200c04 100644
Binary files a/tubes/L04.FCStd and b/tubes/L04.FCStd differ
diff --git a/tubes/L05.FCStd b/tubes/L05.FCStd
index b344165..714e5a1 100644
Binary files a/tubes/L05.FCStd and b/tubes/L05.FCStd differ
diff --git a/tubes/L06.FCStd b/tubes/L06.FCStd
index 6d1fd21..b156f43 100644
Binary files a/tubes/L06.FCStd and b/tubes/L06.FCStd differ
diff --git a/tubes/L07.FCStd b/tubes/L07.FCStd
index f8ac160..2edaded 100644
Binary files a/tubes/L07.FCStd and b/tubes/L07.FCStd differ
diff --git a/tubes/L08.FCStd b/tubes/L08.FCStd
index 185396c..6170e8c 100644
Binary files a/tubes/L08.FCStd and b/tubes/L08.FCStd differ
diff --git a/tubes/L09.FCStd b/tubes/L09.FCStd
index 1e9dd2e..f6be6bd 100644
Binary files a/tubes/L09.FCStd and b/tubes/L09.FCStd differ
diff --git a/tubes/L10.FCStd b/tubes/L10.FCStd
index dcdb368..e92b85d 100644
Binary files a/tubes/L10.FCStd and b/tubes/L10.FCStd differ
diff --git a/tubes/L11.FCStd b/tubes/L11.FCStd
index 44cfb44..2bcb69d 100644
Binary files a/tubes/L11.FCStd and b/tubes/L11.FCStd differ
diff --git a/tubes/L12.FCStd b/tubes/L12.FCStd
index ea65fc4..e50e90b 100644
Binary files a/tubes/L12.FCStd and b/tubes/L12.FCStd differ
diff --git a/tubes/M00.FCStd b/tubes/M00.FCStd
index 4c0fb4a..7b0397d 100644
Binary files a/tubes/M00.FCStd and b/tubes/M00.FCStd differ
diff --git a/tubes/M01.FCStd b/tubes/M01.FCStd
index cf60acc..2c0839f 100644
Binary files a/tubes/M01.FCStd and b/tubes/M01.FCStd differ
diff --git a/tubes/M02.FCStd b/tubes/M02.FCStd
index 24ebef5..a223422 100644
Binary files a/tubes/M02.FCStd and b/tubes/M02.FCStd differ
diff --git a/tubes/M03.FCStd b/tubes/M03.FCStd
index 38f4b74..6e31f60 100644
Binary files a/tubes/M03.FCStd and b/tubes/M03.FCStd differ
diff --git a/tubes/M04.FCStd b/tubes/M04.FCStd
index d94fe6f..e9d280f 100644
Binary files a/tubes/M04.FCStd and b/tubes/M04.FCStd differ
diff --git a/tubes/M05.FCStd b/tubes/M05.FCStd
index 434d5e5..51dbc56 100644
Binary files a/tubes/M05.FCStd and b/tubes/M05.FCStd differ
diff --git a/tubes/M06.FCStd b/tubes/M06.FCStd
index 7782cb2..fde37e3 100644
Binary files a/tubes/M06.FCStd and b/tubes/M06.FCStd differ
diff --git a/tubes/M07.FCStd b/tubes/M07.FCStd
index 89381a3..df8a035 100644
Binary files a/tubes/M07.FCStd and b/tubes/M07.FCStd differ
diff --git a/tubes/R00.FCStd b/tubes/R00.FCStd
index 79674ed..7402f32 100644
Binary files a/tubes/R00.FCStd and b/tubes/R00.FCStd differ
diff --git a/tubes/R01.FCStd b/tubes/R01.FCStd
index 1b352ca..ededba9 100644
Binary files a/tubes/R01.FCStd and b/tubes/R01.FCStd differ
diff --git a/tubes/R02.FCStd b/tubes/R02.FCStd
index 6740fd2..9cd3cd5 100644
Binary files a/tubes/R02.FCStd and b/tubes/R02.FCStd differ
diff --git a/tubes/R03.FCStd b/tubes/R03.FCStd
index 10c0259..2389d49 100644
Binary files a/tubes/R03.FCStd and b/tubes/R03.FCStd differ
diff --git a/tubes/R04.FCStd b/tubes/R04.FCStd
new file mode 100644
index 0000000..208ae50
Binary files /dev/null and b/tubes/R04.FCStd differ
diff --git a/tubes/T00.FCStd b/tubes/T00.FCStd
index 7c542d5..85d375c 100644
Binary files a/tubes/T00.FCStd and b/tubes/T00.FCStd differ
diff --git a/tubes/T01.FCStd b/tubes/T01.FCStd
index 5eb3dee..e221bda 100644
Binary files a/tubes/T01.FCStd and b/tubes/T01.FCStd differ
diff --git a/tubes/T02.FCStd b/tubes/T02.FCStd
index 701d8f1..c18737b 100644
Binary files a/tubes/T02.FCStd and b/tubes/T02.FCStd differ
diff --git a/tubes/T03.FCStd b/tubes/T03.FCStd
index 215ff79..eb159da 100644
Binary files a/tubes/T03.FCStd and b/tubes/T03.FCStd differ
diff --git a/tubes/T04.FCStd b/tubes/T04.FCStd
index f00331f..1ac91b6 100644
Binary files a/tubes/T04.FCStd and b/tubes/T04.FCStd differ
diff --git a/tubes/T05.FCStd b/tubes/T05.FCStd
index 34c202d..71e8669 100644
Binary files a/tubes/T05.FCStd and b/tubes/T05.FCStd differ
diff --git a/tubes/T06.FCStd b/tubes/T06.FCStd
index ec42312..5a16659 100644
Binary files a/tubes/T06.FCStd and b/tubes/T06.FCStd differ
diff --git a/tubes/T07.FCStd b/tubes/T07.FCStd
index ca51e48..bc0f0cf 100644
Binary files a/tubes/T07.FCStd and b/tubes/T07.FCStd differ
diff --git a/tubes/T08.FCStd b/tubes/T08.FCStd
index c0825c9..bff1213 100644
Binary files a/tubes/T08.FCStd and b/tubes/T08.FCStd differ
diff --git a/tubes/T09.FCStd b/tubes/T09.FCStd
index 516f0c4..26b3dfd 100644
Binary files a/tubes/T09.FCStd and b/tubes/T09.FCStd differ
diff --git a/tubes/T10.FCStd b/tubes/T10.FCStd
index 4b8877f..3bc5739 100644
Binary files a/tubes/T10.FCStd and b/tubes/T10.FCStd differ
diff --git a/tubes/T11.FCStd b/tubes/T11.FCStd
index b45836c..b6fe837 100644
Binary files a/tubes/T11.FCStd and b/tubes/T11.FCStd differ
diff --git a/tubes/T12.FCStd b/tubes/T12.FCStd
index 69962c6..137d6db 100644
Binary files a/tubes/T12.FCStd and b/tubes/T12.FCStd differ
diff --git a/tubes/T13.FCStd b/tubes/T13.FCStd
index d7e847a..08b3c2b 100644
Binary files a/tubes/T13.FCStd and b/tubes/T13.FCStd differ
diff --git a/tubes/T14.FCStd b/tubes/T14.FCStd
index 7445148..3d83aa5 100644
Binary files a/tubes/T14.FCStd and b/tubes/T14.FCStd differ
diff --git a/tubes/T15.FCStd b/tubes/T15.FCStd
index 873ac28..f63239f 100644
Binary files a/tubes/T15.FCStd and b/tubes/T15.FCStd differ
diff --git a/tubes/T16.FCStd b/tubes/T16.FCStd
index d876838..f57e44c 100644
Binary files a/tubes/T16.FCStd and b/tubes/T16.FCStd differ
diff --git a/tubes/T17.FCStd b/tubes/T17.FCStd
index 6d438cc..9e1cc12 100644
Binary files a/tubes/T17.FCStd and b/tubes/T17.FCStd differ
diff --git a/tubes/T18.FCStd b/tubes/T18.FCStd
index 048e3ae..24becd1 100644
Binary files a/tubes/T18.FCStd and b/tubes/T18.FCStd differ
diff --git a/tubes/T19.FCStd b/tubes/T19.FCStd
index 6558627..19e1f62 100644
Binary files a/tubes/T19.FCStd and b/tubes/T19.FCStd differ
diff --git a/tubes/T20.FCStd b/tubes/T20.FCStd
index e55af7e..96baf98 100644
Binary files a/tubes/T20.FCStd and b/tubes/T20.FCStd differ
diff --git a/tubes/T21.FCStd b/tubes/T21.FCStd
index e4f9698..5aba4b0 100644
Binary files a/tubes/T21.FCStd and b/tubes/T21.FCStd differ
diff --git a/tubes/T22.FCStd b/tubes/T22.FCStd
index 252c560..c354824 100644
Binary files a/tubes/T22.FCStd and b/tubes/T22.FCStd differ
diff --git a/tubes/T23.FCStd b/tubes/T23.FCStd
index 177cf4c..01a246b 100644
Binary files a/tubes/T23.FCStd and b/tubes/T23.FCStd differ
diff --git a/tubes/T24.FCStd b/tubes/T24.FCStd
new file mode 100644
index 0000000..914be88
Binary files /dev/null and b/tubes/T24.FCStd differ
diff --git a/tubes/T25.FCStd b/tubes/T25.FCStd
new file mode 100644
index 0000000..8566f74
Binary files /dev/null and b/tubes/T25.FCStd differ
diff --git a/vheliotech-basique.FCStd b/vheliotech-basique.FCStd
deleted file mode 100644
index a883d92..0000000
Binary files a/vheliotech-basique.FCStd and /dev/null differ
diff --git a/vheliotech-basique_list.csv b/vheliotech-basique_list.csv
deleted file mode 100644
index 6e772ca..0000000
--- a/vheliotech-basique_list.csv
+++ /dev/null
@@ -1,88 +0,0 @@
-Document, Reference, Count
-QIN53, QIN53, 6
-CHO47, CHO47, 2
-CHO44, CHO44, 1
-CHO46, CHO46, 2
-T18, T18, 2
-L04, L04, 2
-M04, M04, 1
-T05, T05, 2
-M05, M05, 2
-L05, L05, 1
-L02, L02, 2
-M02, M02, 2
-M03, M03, 1
-L00, L00, 1
-T13, T13, 2
-M06, M06, 2
-CHO45, CHO45, 1
-M01, M01, 2
-L07, L07, 2
-T11, T11, 1
-L01, L01, 1
-T12, T12, 1
-L06, L06, 1
-T16, T16, 1
-CHO17, CHO17, 12
-CHO13, CHO13, 1
-CHO14, CHO14, 1
-ROU99, ROU99, 1
-T04, T04, 1
-ROU98, ROU98, 2
-CHO34, CHO34, 3
-FRN04, FRN04, 3
-CHO48, CHO48, 1
-CHO04, CHO04, 1
-CHO51, CHO51, 12
-CHO10, CHO10, 1
-CHO55, CHO55, 1
-CHO5x, CHO5x, 2
-CHO56, CHO56, 1
-QIN35, QIN35, 63
-QIN06, QIN06, 208
-QIN23, QIN23, 4
-TXT04, TXT04, 1
-TXT05, TXT05, 1
-CHO26, CHO26, 1
-CHO11, CHO11, 1
-R00, R00, 2
-R01, R01, 2
-R03, R03, 1
-T14, T14, 1
-CHO16, CHO16, 2
-CHO25, CHO25, 1
-CHO15, CHO15, 2
-CHO21, CHO21, 1
-CHO23, CHO23, 1
-QIN45, QIN45, 2
-QIN12, QIN12, 272
-QIN60, QIN60, 74
-QIN90, QIN90, 13
-CHO49, CHO49, 3
-CHO50, CHO50, 4
-QIN14, QIN14, 14
-QIN40, QIN40, 30
-QIN65, QIN65, 7
-QIN33, QIN33, 2
-QIN36, QIN36, 4
-QIN34, QIN34, 6
-E21, E21, 6
-QIN32, QIN32, 1
-E16, E16, 1
-QIN50, QIN50, 4
-QIN39, QIN39, 2
-QIN41, QIN41, 8
-QIN29, QIN29, 4
-QIN44, QIN44, 4
-QIN43, QIN43, 2
-FRN03, FRN03, 2
-TXT03, TXT03, 1
-TXT02, TXT02, 1
-CHO53, CHO53, 2
-QIN49, QIN49, 4
-TSM02, TSM02, 1
-QIN20, QIN20, 3
-TSM01, TSM01, 1
-QIN18, QIN18, 1
-varTmpDoc_9, QIN24, 1
-CHO57, CHO57, 1
diff --git a/vheliotech-motorise.FCStd b/vheliotech-motorise.FCStd
deleted file mode 100644
index 2b55ea7..0000000
Binary files a/vheliotech-motorise.FCStd and /dev/null differ
diff --git a/vheliotech-motorise_list.csv b/vheliotech-motorise_list.csv
deleted file mode 100644
index b4e194d..0000000
--- a/vheliotech-motorise_list.csv
+++ /dev/null
@@ -1,102 +0,0 @@
-Document, Reference, Count
-QIN53, QIN53, 6
-CHO47, CHO47, 2
-CHO44, CHO44, 1
-CHO46, CHO46, 2
-T18, T18, 2
-L04, L04, 2
-M04, M04, 1
-T05, T05, 2
-M05, M05, 2
-L05, L05, 1
-L02, L02, 2
-M02, M02, 2
-M03, M03, 1
-L00, L00, 1
-T13, T13, 2
-M06, M06, 2
-CHO45, CHO45, 1
-M01, M01, 2
-L07, L07, 2
-T11, T11, 1
-L01, L01, 1
-T12, T12, 1
-L06, L06, 1
-T16, T16, 1
-CHO17, CHO17, 12
-CHO13, CHO13, 1
-CHO14, CHO14, 1
-ROU99, ROU99, 1
-T04, T04, 1
-ROU98, ROU98, 2
-CHO34, CHO34, 3
-FRN04, FRN04, 3
-CHO48, CHO48, 1
-CHO04, CHO04, 1
-CHO51, CHO51, 12
-CHO30, CHO30, 1
-CHO31, CHO31, 1
-CHO32, CHO32, 1
-CHO33, CHO33, 1
-CHO10, CHO10, 1
-CHO55, CHO55, 2
-CHO5x, CHO5x, 4
-CHO56, CHO56, 2
-QIN35, QIN35, 73
-QIN06, QIN06, 224
-QIN23, QIN23, 8
-TXT04, TXT04, 2
-TXT05, TXT05, 2
-CHO24, CHO24, 1
-CHO26, CHO26, 1
-ELE04, ELE04, 1
-CHO11, CHO11, 1
-R00, R00, 2
-R01, R01, 2
-R03, R03, 1
-T14, T14, 1
-CHO16, CHO16, 2
-CHO25, CHO25, 1
-CHO15, CHO15, 2
-CHO21, CHO21, 1
-CHO23, CHO23, 1
-QIN45, QIN45, 2
-QIN12, QIN12, 276
-QIN60, QIN60, 74
-QIN90, QIN90, 13
-CHO49, CHO49, 3
-CHO50, CHO50, 4
-QIN14, QIN14, 22
-QIN40, QIN40, 32
-QIN65, QIN65, 7
-CHO08, CHO08, 1
-CHO09, CHO09, 1
-TSM99, TSM99, 1
-E20, E20, 8
-E36, E36, 4
-E21, E21, 14
-QIN28, QIN28, 4
-QIN13, QIN13, 8
-QIN29, QIN29, 8
-ELE37, ELE37, 1
-QIN33, QIN33, 2
-QIN36, QIN36, 4
-QIN34, QIN34, 6
-QIN32, QIN32, 1
-E16, E16, 1
-QIN50, QIN50, 4
-QIN39, QIN39, 2
-QIN41, QIN41, 8
-QIN44, QIN44, 4
-QIN43, QIN43, 2
-FRN03, FRN03, 2
-TXT03, TXT03, 1
-TXT02, TXT02, 1
-CHO53, CHO53, 2
-QIN49, QIN49, 4
-TSM02, TSM02, 1
-QIN20, QIN20, 3
-TSM01, TSM01, 1
-QIN18, QIN18, 1
-varTmpDoc_9, QIN24, 1
-CHO57, CHO57, 1
diff --git a/vheliotech-solaire.FCStd b/vheliotech-solaire.FCStd
deleted file mode 100644
index 7cd3440..0000000
Binary files a/vheliotech-solaire.FCStd and /dev/null differ
diff --git a/vheliotech-solaire_list.csv b/vheliotech-solaire_list.csv
deleted file mode 100644
index 365c71d..0000000
--- a/vheliotech-solaire_list.csv
+++ /dev/null
@@ -1,144 +0,0 @@
-Document, Reference, Count
-QIN53, QIN53, 6
-CHO47, CHO47, 2
-CHO44, CHO44, 1
-CHO46, CHO46, 2
-T18, T18, 2
-L04, L04, 2
-M04, M04, 1
-T05, T05, 2
-M05, M05, 2
-L05, L05, 1
-L02, L02, 2
-M02, M02, 2
-M03, M03, 1
-L00, L00, 1
-T13, T13, 2
-M06, M06, 2
-CHO45, CHO45, 1
-M01, M01, 2
-L07, L07, 2
-T11, T11, 1
-L01, L01, 1
-T12, T12, 1
-L06, L06, 1
-T16, T16, 1
-CHO17, CHO17, 26
-CHO13, CHO13, 1
-CHO14, CHO14, 1
-ROU99, ROU99, 1
-T04, T04, 1
-ROU98, ROU98, 2
-CHO34, CHO34, 3
-FRN04, FRN04, 3
-CHO06, CHO06, 4
-ELE07, ELE07, 4
-QIN35, QIN35, 159
-QIN12, QIN12, 412
-QIN06, QIN06, 372
-QIN46, QIN46, 12
-QIN04, QIN04, 12
-ELE15, ELE15, 2
-CHO48, CHO48, 1
-CHO04, CHO04, 1
-CHO51, CHO51, 12
-CHO30, CHO30, 1
-CHO31, CHO31, 1
-CHO32, CHO32, 1
-CHO33, CHO33, 1
-CHO10, CHO10, 1
-CHO55, CHO55, 2
-CHO5x, CHO5x, 8
-CHO56, CHO56, 2
-QIN23, QIN23, 8
-TXT04, TXT04, 2
-TXT05, TXT05, 2
-CHO24, CHO24, 1
-CHO26, CHO26, 1
-ELE08, ELE08, 2
-ELE03, ELE03, 1
-ELE04, ELE04, 1
-CHO11, CHO11, 1
-ELE12, ELE12, 1
-ELE19, ELE19, 1
-R00, R00, 2
-R01, R01, 2
-R03, R03, 1
-T14, T14, 1
-CHO16, CHO16, 2
-CHO25, CHO25, 1
-CHO15, CHO15, 2
-CHO21, CHO21, 1
-CHO23, CHO23, 1
-QIN45, QIN45, 2
-QIN60, QIN60, 94
-QIN90, QIN90, 23
-CHO49, CHO49, 3
-CHO50, CHO50, 4
-QIN14, QIN14, 22
-QIN40, QIN40, 64
-QIN65, QIN65, 7
-CHO08, CHO08, 1
-CHO09, CHO09, 1
-TSM99, TSM99, 1
-E20, E20, 8
-E36, E36, 4
-E21, E21, 14
-QIN28, QIN28, 4
-QIN13, QIN13, 16
-QIN29, QIN29, 10
-ELE37, ELE37, 1
-QIN33, QIN33, 2
-QIN36, QIN36, 4
-QIN34, QIN34, 6
-QIN32, QIN32, 1
-E16, E16, 1
-QIN50, QIN50, 4
-QIN39, QIN39, 2
-QIN41, QIN41, 8
-QIN44, QIN44, 4
-QIN43, QIN43, 2
-FRN03, FRN03, 2
-TXT03, TXT03, 1
-TXT02, TXT02, 1
-CHO52, CHO52, 2
-TXT01, TXT01, 2
-CHO53, CHO53, 2
-QIN49, QIN49, 4
-TSM02, TSM02, 1
-QIN20, QIN20, 3
-TSM01, TSM01, 1
-QIN18, QIN18, 1
-varTmpDoc_9, QIN24, 1
-CHO57, CHO57, 1
-T06, T06, 1
-T01, T01, 1
-T00, T00, 1
-T02, T02, 1
-L03, L03, 2
-T07, T07, 1
-T03, T03, 2
-R02, R02, 2
-T15, T15, 4
-T19, T19, 4
-L11, L11, 4
-L10, L10, 4
-CHO41, CHO41, 1
-CHO40, CHO40, 1
-CHO20, CHO20, 4
-CHO43, CHO43, 1
-CHO42, CHO42, 1
-M00, M00, 2
-M07, M07, 2
-L08, L08, 2
-CHO35, CHO35, 2
-L09, L09, 2
-T09, T09, 2
-T10, T10, 1
-T08, T08, 1
-T22, T22, 1
-CHO03, CHO03, 6
-CHO19, CHO19, 1
-CHO18, CHO18, 1
-QIN25, QIN25, 2
-ROU05, ROU05, 2
diff --git a/vheliotech.FCStd b/vheliotech.FCStd
index 0e1e423..c1ba0a3 100644
Binary files a/vheliotech.FCStd and b/vheliotech.FCStd differ
diff --git a/vheliotech_list.csv b/vheliotech_list.csv
deleted file mode 100644
index bb84904..0000000
--- a/vheliotech_list.csv
+++ /dev/null
@@ -1,158 +0,0 @@
-Document, Reference, Count
-QIN53, QIN53, 6
-CHO47, CHO47, 2
-CHO44, CHO44, 1
-CHO46, CHO46, 2
-T18, T18, 2
-L04, L04, 2
-M04, M04, 1
-T05, T05, 2
-M05, M05, 2
-L05, L05, 1
-L02, L02, 2
-M02, M02, 2
-M03, M03, 1
-L00, L00, 1
-T13, T13, 2
-M06, M06, 2
-CHO45, CHO45, 1
-M01, M01, 2
-L07, L07, 2
-T11, T11, 1
-L01, L01, 1
-T12, T12, 1
-L06, L06, 1
-T16, T16, 1
-CHO17, CHO17, 26
-CHO13, CHO13, 1
-CHO14, CHO14, 1
-ROU99, ROU99, 1
-T04, T04, 1
-ROU98, ROU98, 2
-CHO34, CHO34, 3
-FRN04, FRN04, 3
-CHO06, CHO06, 4
-ELE07, ELE07, 4
-QIN35, QIN35, 163
-QIN12, QIN12, 455
-QIN06, QIN06, 401
-QIN46, QIN46, 12
-QIN04, QIN04, 12
-ELE15, ELE15, 2
-CHO48, CHO48, 1
-CHO04, CHO04, 1
-CHO51, CHO51, 14
-CHO30, CHO30, 1
-CHO31, CHO31, 1
-CHO32, CHO32, 1
-CHO33, CHO33, 1
-CHO10, CHO10, 1
-CHO54, CHO54, 3
-QIN54, QIN54, 18
-T23, T23, 3
-QIN40, QIN40, 67
-T20, T20, 2
-ACC03, ACC03, 2
-CHO02, CHO02, 4
-CHO55, CHO55, 2
-CHO5x, CHO5x, 8
-CHO56, CHO56, 2
-QIN23, QIN23, 12
-TXT04, TXT04, 2
-TXT05, TXT05, 2
-QIN51, QIN51, 4
-QIN52, QIN52, 4
-CHO24, CHO24, 1
-CHO26, CHO26, 1
-ELE08, ELE08, 2
-ELE03, ELE03, 1
-ELE04, ELE04, 2
-ELE99, ELE99, 1
-T21, T21, 2
-L12, L12, 2
-ACC05, ACC05, 1
-QIN60, QIN60, 102
-QIN65, QIN65, 9
-CHO11, CHO11, 1
-ELE12, ELE12, 1
-ELE19, ELE19, 1
-R00, R00, 2
-R01, R01, 2
-R03, R03, 1
-T14, T14, 1
-CHO16, CHO16, 2
-CHO25, CHO25, 1
-CHO15, CHO15, 2
-CHO21, CHO21, 1
-CHO23, CHO23, 1
-QIN45, QIN45, 2
-QIN90, QIN90, 23
-CHO49, CHO49, 3
-CHO50, CHO50, 4
-QIN14, QIN14, 22
-CHO08, CHO08, 1
-CHO09, CHO09, 1
-TSM99, TSM99, 1
-E20, E20, 8
-E36, E36, 4
-E21, E21, 14
-QIN28, QIN28, 4
-QIN13, QIN13, 16
-QIN29, QIN29, 14
-ELE37, ELE37, 1
-QIN26, QIN26, 2
-QIN33, QIN33, 2
-QIN36, QIN36, 4
-QIN34, QIN34, 6
-QIN32, QIN32, 1
-E16, E16, 1
-QIN50, QIN50, 4
-QIN39, QIN39, 2
-QIN41, QIN41, 8
-QIN44, QIN44, 4
-QIN43, QIN43, 2
-FRN03, FRN03, 2
-TXT03, TXT03, 1
-TXT02, TXT02, 1
-CHO52, CHO52, 2
-TXT01, TXT01, 2
-CHO53, CHO53, 2
-QIN49, QIN49, 4
-TSM02, TSM02, 1
-QIN20, QIN20, 3
-TSM01, TSM01, 1
-QIN18, QIN18, 1
-varTmpDoc_9, QIN24, 1
-CHO39, CHO39, 2
-CHO57, CHO57, 1
-T06, T06, 1
-T01, T01, 1
-T00, T00, 1
-T02, T02, 1
-L03, L03, 2
-T07, T07, 1
-T03, T03, 2
-R02, R02, 2
-T15, T15, 4
-T19, T19, 4
-L11, L11, 4
-L10, L10, 4
-CHO41, CHO41, 1
-CHO40, CHO40, 1
-CHO20, CHO20, 4
-CHO43, CHO43, 1
-CHO42, CHO42, 1
-M00, M00, 2
-M07, M07, 2
-L08, L08, 2
-CHO35, CHO35, 2
-L09, L09, 2
-T09, T09, 2
-T10, T10, 1
-T08, T08, 1
-T22, T22, 1
-CHO03, CHO03, 6
-CHO19, CHO19, 1
-CHO18, CHO18, 1
-QIN25, QIN25, 2
-ROU05, ROU05, 2