151 lines
7.3 KiB
Markdown
151 lines
7.3 KiB
Markdown
# YAPP_Box
|
|
Yet Another Parametric Projectbox generator
|
|
|
|
This OpenSCAD project can be used to create extremely comprehensive and customizable project boxes/enclosures using OpenSCAD.
|
|
|
|
The [complete and official documentation gitbook](https://mrwheel-docs.gitbook.io/yappgenerator_en/) explains the entire API.
|
|
|
|
You can open Issues here, but please also place them in a comment at one of the following blog posts:
|
|
* "<a href="https://willem.aandewiel.nl/index.php/2022/01/02/yet-another-parametric-projectbox-generator/">Yet Another Parametric Projectbox generator blog post</a>" (English)
|
|
* "<a href="https://willem.aandewiel.nl/index.php/2022/01/01/nog-een-geparameteriseerde-projectbox-generator/">Nog een geparametriseerde projectbox generator</a>" (Dutch).
|
|
|
|
<hr>
|
|
|
|
I have done my best, but it can probably be done simpler.
|
|
If you think you can help, please contact me or make a Pull Request.
|
|
|
|
## How to program your Project Box
|
|
It all starts with the dimensions of the PCB going inside your Project Box, as well as a few other dimensions:
|
|
|
|
```openscad
|
|
printBaseShell = true;
|
|
printLidShell = true;
|
|
|
|
// Edit these parameters for your own board dimensions
|
|
wallThickness = 1.0;
|
|
basePlaneThickness = 1.0;
|
|
lidPlaneThickness = 1.0;
|
|
|
|
// Total height of box = basePlaneThickness + lidPlaneThickness
|
|
// + baseWallHeight + lidWallHeight
|
|
|
|
baseWallHeight = 7;
|
|
lidWallHeight = 4;
|
|
|
|
pcbLength = 88;
|
|
pcbWidth = 49;
|
|
pcbThickness = 1.5;
|
|
|
|
// padding between pcb and inside wall
|
|
paddingFront = 4;
|
|
paddingBack = 1;
|
|
paddingRight = 1;
|
|
paddingLeft = 1;
|
|
|
|
// ridge where Base- and Lid- off the box can overlap
|
|
// Make sure this isn't less than lidWallHeight
|
|
ridgeHeight = 3;
|
|
ridgeSlack = 0.2;
|
|
roundRadius = 2.0; // don't make this to big..
|
|
|
|
//-- How much the PCB needs to be raised from the base
|
|
//-- to leave room for solderings and whatnot
|
|
standoffHeight = 5.0;
|
|
pinDiameter = 1.0;
|
|
pinHoleSlack = 0.5;
|
|
standoffDiameter = 4;
|
|
```
|
|
|
|
You probably want some cutouts in your box for connectors and stuff.
|
|
For every plane (side) of the Project Box, there is an array that holds the cutouts for that plane.
|
|
|
|
A picture is worth a thousand words ...
|
|
|
|
### Cutouts in the *Right* Plane:
|
|

|
|
|
|
### Cutouts in the *Left* Plane:
|
|

|
|
|
|
### Cutouts in the *Back* Plane:
|
|

|
|
|
|
### Cutouts in the *Front* Plane:
|
|

|
|
|
|
### Cutouts in the *Base*:
|
|

|
|
|
|
### Cutouts in the *Lid*:
|
|

|
|
|
|
### Using the *angle* param (rotate around the x/y corner):
|
|

|
|
|
|
#### With `yappCenter`, the rectangle will rotate around its center point:
|
|

|
|
|
|
### Base mounts:
|
|

|
|
|
|
### `pcbStands`:
|
|
`pcbStands` fixate the PCB between the base and the lid.
|
|

|
|
|
|
### Connectors between *Base* and *Lid*:
|
|

|
|
|
|
### ConnectorsPCB between *Base* and *Lid* that fixates the PCB:
|
|

|
|
|
|

|
|
|
|
Inserts are great for making a screw connection between the base and the lid.
|
|

|
|
|
|
|
|
### Snap Joins:
|
|

|
|
|
|

|
|
|
|
#### Snap Joins *Symmetrical*:
|
|

|
|
|
|
### (more) Base Mounts:
|
|

|
|
|
|

|
|
|
|
### Hooks:
|
|
There are two type of "hooks"; at the inside of the box or at the outside of the box
|
|
#### `baseHookOutside()`:
|
|

|
|
|
|

|
|
#### `lidHookInside()`:
|
|

|
|
|
|

|
|
|
|

|
|
|
|
<hr>
|
|
|
|
## Buy me a coffee (please)!
|
|
|
|
If you like this project or it saved you time, you can give me a cup of coffee :)
|
|
|
|
<p>
|
|
<a href="https://www.paypal.me/WillemAandewiel/3">
|
|
<img width="300" alt="bmc-button-75" src="https://user-images.githubusercontent.com/5585427/192536527-306e1082-7d4e-402c-b024-658d9e334356.png" alt="Coffee">
|
|
</a>
|
|
</p>
|
|
|
|
## Versioning
|
|
* All major releases (v1, v2, v3) are intended to be compatible with all files previously designed for v3 (e.g., the v3.1 release will not remove features or make any breaking changes, compared to v3.0).
|
|
* The filename of the library (e.g., `YAPPgenerator_v3.scad`) will thus have only the major version in its filename.
|
|
* When a new major version is released, a branch will be created from the `main` branch at the last commit before work is started on the next major version. This branch can be used to fix bugs and add features to the old release version, if desired. These lineage branches will not be merged to `main`, and will continue on their own path.
|
|
* All future tagged versions will have GitHub Releases created for them, which will include the changelog for the release. The `YAPP_Template_vx.scad` and `YAPPgenerator_vx.scad` files will also be attached to the release.
|
|
* The ISO8601 international standard date format (yyyy-mm-dd) will be used for documenting dates.
|