diff --git a/Readme.md b/Readme.md
index 1715853..99bb7b7 100644
--- a/Readme.md
+++ b/Readme.md
@@ -99,13 +99,13 @@ This guide was developed to work with Inkscape 1.2.2, Blender 5.0.0 and KiCad 9.
1. Open your PCB project in the KiCad PCB Editor.
2. Go to **File -> Plot** and select `Plot format` as `SVG` and set the `Output directory`.
3. In the `Include Layers` section select layers `B.Cu`, `B.Mask` and `F.Silkscreen`. Each layer will be ploted as a separate SVG file.
-4. Optionaly, select additional layer(s) e.g. `Edge.Cuts` in the `Plot on All Layers` section. This way you can merge layers i.e. add board outset into each file generated.
+4. Optionaly, select additional layer(s) e.g. `Edge.Cuts` in the `Plot on All Layers` section. This way you can merge layers i.e. add board outset into each file generated. *This is usually not needed.*
5. Click **Plot** and **Close**.
### 2. SVG to STL Conversion
-The SVG file will be converted to STL in two steps. This can be done manually or with an automated script.
+The SVG file will be converted to STL in two steps. This can be done either manually or automatically with the script.
#### Manual Conversion
@@ -189,13 +189,7 @@ Check `Apply Modifiers` and save the file.
This entire workflow can be automated in the Linux terminal using **Inkscape's command-line mode** and **Blender's Python scripting API**.
-Use the single shell script [svg2stl.sh](svg2stl.sh) to do the whole job in one go:
-
-**Download:**
-```bash
-wget https://gitea.virtonline.eu/2HoursProject/svg2stl/raw/branch/main/svg2stl.sh
-wget https://gitea.virtonline.eu/2HoursProject/svg2stl/raw/branch/main/pcb_to_stl.py
-```
+Use the shell script [svg2stl.sh](svg2stl.sh) to do the whole job in one go:
**Setup:**
@@ -203,14 +197,9 @@ wget https://gitea.virtonline.eu/2HoursProject/svg2stl/raw/branch/main/pcb_to_st
chmod +x svg2stl.sh
nano svg2stl.sh
```
-Make sure you set the exact width of your model in `TARGET_WIDTH_MM`. Take the width from the outset measurement shown in the KiCad. The height will adjust itself proportionaly. The thickness `THICKNESS_MM` of the model can be adjusted as well. Set the resolution of your 3D printer's screen in `EXPORT_DPI`.
+The thickness `THICKNESS_MM` of the model can be adjusted. Set the resolution of your 3D printer's screen in `EXPORT_DPI`.
```bash
-# Dimensions (Millimeters)
-# Set the desired width in mm (e.g. 55.15).
-# Leave as "0" to keep the original size from the SVG.
-TARGET_WIDTH_MM="45.08"
-
-# Thickness of the 3D model in mm
+# Thickness of the generated 3D model in mm
THICKNESS_MM="0.1"
# Print resolution
@@ -219,21 +208,32 @@ EXPORT_DPI=1494
```
**Usage:**
+Convert all `svg` files having the prefix `Step_Down_Carrier_Board` and apply inversion for file with postfix `B_Mask`.
```bash
-./svg2stl.sh my_design.svg
+./svg2stl.sh -i B_Mask examples/3D_print_svg_2_stl/Step_Down_Carrier_Board
```
### 3. Slicing in Chitubox
-This is where you set the exposure time. The Chitubox slicer (without hacking) requires at least one bottom and one normal layer to be defined. So, the idea is to split the thickness of the model into two or more layers and define the exposure time for each layer.
+This is where you set the exposure time. The Chitubox slicer requires at least one bottom and one normal layer to be defined. So, the idea is to split the thickness of the model into two or more layers and define the exposure time for each layer.
-1. Open Chitubox and import your STL file. Lay it flat on the build plate.
-2. Go to the **Parameter Settings**.
+1. Open Chitubox
+```Bash
+cd /opt/CBD/CHITUBOX_Basic
+./CHITUBOX_Basic.sh
+```
+2. Import your STL file. Lay it flat and center on the build plate.
+
+
+3. Go to the **Slice Settings** and set the following parameters.
+*Note: You can also import the print profile from [Anycubic_Photon_Mono_4_profile_00.cfgx](profile/Anycubic_Photon_Mono_4_profile_00.cfgx).*
+
+
#### Exposure Time Examples:
* Pre-sensitized boards from Bungard requre 2 minutes to cure.
-* Solder mask in a syringe from Mechanic require 10 minutes to harden.
+* Solder mask in a syringe from Mechanic require 30 minutes to harden.
Since the minimum exposure time per layer is 0.1s and maximum 200s, calculate the total exposure time.
* **1 minutes (60 seconds)**
@@ -256,10 +256,12 @@ Since the minimum exposure time per layer is 0.1s and maximum 200s, calculate th
* Bottom Layer Count: `1`
* **Bottom Exposure Time:** `0.1 s` (minimum value)
* **Normal Exposure Time:** `200 s` (This will apply to the 3 normal layers, giving 3*200 = 600s total).
+
4. **Crucially, turn off Anti-aliasing**. Go to the "Advanced" tab and set **Anti-aliasing**. This ensures the sharpest possible pixels for crisp traces.
+
+
5. Slice the model and save the file to the USB drive.
-
### 4. Exposing the Board
diff --git a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.01_100_2025_12_12_08_08_00.pm4n b/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.01_100_2025_12_12_08_08_00.pm4n
deleted file mode 100644
index 3a1434c..0000000
Binary files a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.01_100_2025_12_12_08_08_00.pm4n and /dev/null differ
diff --git a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.01_200_2025_12_11_22_09_00.pm4n b/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.01_200_2025_12_11_22_09_00.pm4n
deleted file mode 100644
index 2ec322d..0000000
Binary files a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.01_200_2025_12_11_22_09_00.pm4n and /dev/null differ
diff --git a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.05_150_2025_12_12_13_33_00.pm4n b/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.05_150_2025_12_12_13_33_00.pm4n
deleted file mode 100644
index 8cd381f..0000000
Binary files a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.05_150_2025_12_12_13_33_00.pm4n and /dev/null differ
diff --git a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.05_200_2025_12_12_11_44_00.pm4n b/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.05_200_2025_12_12_11_44_00.pm4n
deleted file mode 100644
index a6800c1..0000000
Binary files a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.05_200_2025_12_12_11_44_00.pm4n and /dev/null differ
diff --git a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.1_200_2025_12_12_12_35_00.pm4n b/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.1_200_2025_12_12_12_35_00.pm4n
deleted file mode 100644
index 1e9d702..0000000
Binary files a/examples/3D_print_svg_2_stl/Step_Down_Carrier_Board-B_Mask_inverted.stl_0.1_200_2025_12_12_12_35_00.pm4n and /dev/null differ
diff --git a/images/Print_configuration-Advance.png b/images/Print_configuration-Advance.png
new file mode 100644
index 0000000..b907a54
Binary files /dev/null and b/images/Print_configuration-Advance.png differ
diff --git a/images/Print_configuration-Machine.png b/images/Print_configuration-Machine.png
new file mode 100644
index 0000000..9b5e3fd
Binary files /dev/null and b/images/Print_configuration-Machine.png differ
diff --git a/images/Print_configuration-Print.png b/images/Print_configuration-Print.png
new file mode 100644
index 0000000..8425b1f
Binary files /dev/null and b/images/Print_configuration-Print.png differ
diff --git a/images/Print_configuration-Resin.png b/images/Print_configuration-Resin.png
new file mode 100644
index 0000000..f01549b
Binary files /dev/null and b/images/Print_configuration-Resin.png differ
diff --git a/profile/Anycubic_Photon_Mono_4_profile_00.cfgx b/profile/Anycubic_Photon_Mono_4_profile_00.cfgx
new file mode 100644
index 0000000..3693924
--- /dev/null
+++ b/profile/Anycubic_Photon_Mono_4_profile_00.cfgx
@@ -0,0 +1,429 @@
+{
+ "create_time": "",
+ "id": "",
+ "version": "",
+ "printerinfo": {
+ "vendor": "AnyCubic",
+ "direction_type": "Front",
+ "input_slice_suffixs": "",
+ "output_slice_suffixs": "",
+ "net_send_slice_suffixs": "",
+ "netsending": {
+ "currentvalue": false
+ },
+ "machinetype": {
+ "currentvalue": "Anycubic Photon Mono 4"
+ },
+ "machinename": {
+ "currentvalue": "Anycubic Photon Mono 4"
+ },
+ "projecttype": {
+ "currentvalue": 0
+ },
+ "resolutionx": {
+ "currentvalue": 9024
+ },
+ "resolutiony": {
+ "currentvalue": 5120
+ },
+ "machinewidth": {
+ "currentvalue": 153.4080047607422
+ },
+ "machinedepth": {
+ "currentvalue": 87.04000091552734
+ },
+ "machineheight": {
+ "currentvalue": 165.0
+ },
+ "blockxysizeRatio": {
+ "currentvalue": false
+ },
+ "resolutionLock": {
+ "currentvalue": false
+ },
+ "sizeLock": {
+ "currentvalue": false
+ },
+ "bdisplaycorrectenable": {
+ "currentvalue": false
+ },
+ "displaycorrectlefttopx": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectlefttopy": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectrighttopx": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectrighttopy": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectleftbottomx": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectleftbottomy": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectrightbottomx": {
+ "currentvalue": 0.0
+ },
+ "displaycorrectrightbottomy": {
+ "currentvalue": 0.0
+ },
+ "bbuildareaoffsetenable": {
+ "currentvalue": false
+ },
+ "buildareaoffsetleft": {
+ "currentvalue": 0.0
+ },
+ "buildareaoffsetright": {
+ "currentvalue": 0.0
+ },
+ "buildareaoffsettop": {
+ "currentvalue": 0.0
+ },
+ "buildareaoffsetbottom": {
+ "currentvalue": 0.0
+ },
+ "printtype": {
+ "currentvalue": 0
+ },
+ "mirrortype": {
+ "currentvalue": 0
+ },
+ "sliceformat": {
+ "currentvalue": 0
+ },
+ "zliftheightinsupportmode": {
+ "currentvalue": 4.74e-322
+ },
+ "raftshape": {
+ "currentvalue": 0
+ },
+ "autoSupportMode": {
+ "currentvalue": 0
+ },
+ "autoSupportType": {
+ "currentvalue": 0
+ }
+ },
+ "current_support": 1,
+ "current_material": 0,
+ "current_magic": 25606,
+ "material": [
+ {
+ "name": "Default",
+ "visible": true,
+ "current_slice": 0,
+ "current_support": 0,
+ "slice": [
+ {
+ "visible": true,
+ "name": "profile",
+ "resin": {
+ "visible": true,
+ "resintype": {
+ "currentvalue": "normal"
+ },
+ "resindensity": {
+ "currentvalue": 1.100000023841858
+ },
+ "resincost": {
+ "currentvalue": 30.0
+ },
+ "resinunit": {
+ "currentvalue": 1
+ },
+ "resincostmeasure": {
+ "currentvalue": 0
+ },
+ "resinmassunit": {
+ "currentvalue": 0
+ },
+ "color": {
+ "currentvalue": 0
+ },
+ "is_transparent": {
+ "currentvalue": true
+ },
+ "name": {
+ "currentvalue": "normal"
+ }
+ },
+ "print": {
+ "visible": true,
+ "bottom_layer_drop_height_visible": false,
+ "normal_layer_drop_height_visible": false,
+ "matchingresinmodel": {
+ "currentvalue": 0
+ },
+ "matchingresintips": {
+ "currentvalue": ""
+ },
+ "layerheight": {
+ "currentvalue": 0.05000000074505806
+ },
+ "bottomlayercount": {
+ "currentvalue": 1
+ },
+ "normalexposuretime": {
+ "currentvalue": 150.0
+ },
+ "bottomlayerexposuretime": {
+ "currentvalue": 150.0
+ },
+ "transitionlayercount": {
+ "currentvalue": 0
+ },
+ "transitionlayertype": {
+ "currentvalue": 0
+ },
+ "printwaitmode": {
+ "currentvalue": 1
+ },
+ "normalresttimebeforelift": {
+ "currentvalue": 0.0
+ },
+ "bottomresttimebeforelift": {
+ "currentvalue": 0.0
+ },
+ "normalresttimeafterretract": {
+ "currentvalue": 0.0
+ },
+ "bottomresttimeafterretract": {
+ "currentvalue": 0.0
+ },
+ "normalresttimeafterlift": {
+ "currentvalue": 0.0
+ },
+ "bottomresttimeafterlift": {
+ "currentvalue": 0.0
+ },
+ "lightofftime": {
+ "currentvalue": 0.0
+ },
+ "bottomlightofftime": {
+ "currentvalue": 5.0
+ },
+ "bottomlayerliftheight": {
+ "currentvalue": 5.0
+ },
+ "normallayerliftheight": {
+ "currentvalue": 2.0
+ },
+ "bottomlayerliftheight2": {
+ "currentvalue": 3.0
+ },
+ "normallayerliftheight2": {
+ "currentvalue": 4.0
+ },
+ "bottomlayerliftspeed": {
+ "currentvalue": 120.0
+ },
+ "normallayerliftspeed": {
+ "currentvalue": 120.0
+ },
+ "bottomlayerliftspeed2": {
+ "currentvalue": 180.0
+ },
+ "normallayerliftspeed2": {
+ "currentvalue": 360.0
+ },
+ "bottomlayerdropspeed": {
+ "currentvalue": 240.0
+ },
+ "normallayerdropspeed": {
+ "currentvalue": 360.0
+ },
+ "bottomlayerdropspeed2": {
+ "currentvalue": 180.0
+ },
+ "normallayerdropspeed2": {
+ "currentvalue": 180.0
+ },
+ "normallayerdropheight2": {
+ "currentvalue": 3.0
+ },
+ "bottomlayerdropheight2": {
+ "currentvalue": 4.0
+ },
+ "edgeexposuremm": {
+ "currentvalue": 0.0
+ },
+ "bottomedgeexposuremm": {
+ "currentvalue": 0.0
+ },
+ "edgeexposuretimes": {
+ "currentvalue": 4.0
+ },
+ "bottomedgeexposuretimes": {
+ "currentvalue": 4.0
+ },
+ "ac_mode_type": {
+ "currentvalue": true
+ }
+ },
+ "gcode": {
+ "visible": false,
+ "bgcode": {
+ "currentvalue": true
+ },
+ "startgcode": {
+ "currentvalue": ""
+ },
+ "layergcode": {
+ "currentvalue": ""
+ },
+ "endgcode": {
+ "currentvalue": ""
+ }
+ },
+ "advanced": {
+ "visible": true,
+ "bottomlightintensitypwm": {
+ "currentvalue": 255
+ },
+ "bottomlightintensitypwmshowmode": {
+ "currentvalue": 0
+ },
+ "normallightintensitypwm": {
+ "currentvalue": 255
+ },
+ "normallightintensitypwmshowmode": {
+ "currentvalue": 0
+ },
+ "bantialiasing": {
+ "currentvalue": false
+ },
+ "edgeblurtype": {
+ "currentvalue": 0
+ },
+ "antialiaslevel": {
+ "currentvalue": 0
+ },
+ "midgreylevel": {
+ "currentvalue": 255
+ },
+ "mingreylevel": {
+ "currentvalue": 63
+ },
+ "maxgreylevel": {
+ "currentvalue": 255
+ },
+ "bimageblur": {
+ "currentvalue": true
+ },
+ "imageblurpixel": {
+ "currentvalue": 1
+ },
+ "binnerouttercircleoffsetenable": {
+ "currentvalue": false
+ },
+ "bprinttimecompensationenable": {
+ "currentvalue": false
+ },
+ "innercircleoffset": {
+ "currentvalue": 0.0
+ },
+ "outtercircleoffset": {
+ "currentvalue": 0.0
+ },
+ "circleparitydifference": {
+ "currentvalue": 0.0
+ },
+ "bbottominnerouttercircleoffsetenable": {
+ "currentvalue": false
+ },
+ "bottominnercircleoffset": {
+ "currentvalue": 0.0
+ },
+ "bottomouttercircleoffset": {
+ "currentvalue": 0.0
+ },
+ "bimagemask": {
+ "currentvalue": false
+ },
+ "imagemaskfile": {
+ "currentvalue": ""
+ },
+ "bsurfacerougheditable": {
+ "currentvalue": false
+ },
+ "surfaceroughlevel": {
+ "currentvalue": 1
+ },
+ "maskgrayscaleunit": {
+ "currentvalue": 4
+ },
+ "modelsupporttimesub": {
+ "currentvalue": 0.0
+ },
+ "softwareprintingtimehour": {
+ "currentvalue": 0
+ },
+ "softwareprintingtimeminute": {
+ "currentvalue": 0
+ },
+ "softwareprintingtimesecond": {
+ "currentvalue": 0
+ },
+ "actualprintingtimehour": {
+ "currentvalue": 0
+ },
+ "actualprintingtimeminute": {
+ "currentvalue": 0
+ },
+ "actualprintingtimesecond": {
+ "currentvalue": 0
+ },
+ "printinglayer": {
+ "currentvalue": 1
+ },
+ "layerprinttime": {
+ "currentvalue": 0.0
+ },
+ "enable_obscure": {
+ "currentvalue": false
+ },
+ "obscure_level": {
+ "currentvalue": 0
+ },
+ "enable_scale_compensation": {
+ "currentvalue": false
+ },
+ "compensation_x": {
+ "currentvalue": 100.0
+ },
+ "compensation_y": {
+ "currentvalue": 100.0
+ },
+ "compensation_z": {
+ "currentvalue": 100.0
+ },
+ "centerOffsetX": {
+ "currentvalue": 0.0
+ },
+ "centerOffsetY": {
+ "currentvalue": 0.0
+ },
+ "centerCount": {
+ "currentvalue": 5
+ },
+ "centerRadius": {
+ "currentvalue": 50.0
+ },
+ "matrixXCount": {
+ "currentvalue": 5
+ },
+ "matrixYCount": {
+ "currentvalue": 5
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "support": [],
+ "magic": []
+}
\ No newline at end of file