-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #67 from jsconan/release-1.0.0
Release 1.0.0
- Loading branch information
Showing
66 changed files
with
2,467 additions
and
1,785 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,8 @@ | |
*.log | ||
|
||
# Results | ||
scripts/output | ||
output | ||
dist | ||
*.csg | ||
*.csv | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# things history | ||
|
||
## [Version 1.0.0](https://github.com/jsconan/things/releases/tag/1.0.0) | ||
|
||
First release of the project. | ||
|
||
Added models: | ||
|
||
- [eyelet](parts/misc/eyelet.scad) | ||
- [triominos holder](parts/misc/triominos-holder.scad) | ||
- [spacer](parts/misc/spacer.scad) | ||
- [dart target](parts/misc/dart-target.scad) | ||
- [hook](parts/misc/hook.scad) | ||
- [simple box](parts/misc/simple-box.scad) | ||
- [hanging star](parts/misc/hanging-star.scad) | ||
- [curtain rod](parts/misc/rod/curtain-rod.scad) | ||
- [curtain rod bracket](parts/misc/rod/curtain-rod-bracket.scad) | ||
- [curtain rod sleeve](parts/misc/rod/curtain-rod-sleeve.scad) | ||
- [curtain rod stoppers](parts/misc/rod/curtain-rod-stoppers.scad) | ||
- [honeycomb box](parts/misc/honeycomb-box.scad) | ||
- [label](parts/misc/label.scad) | ||
- [wires separator](parts/misc/wires-separator.scad) | ||
- [mesh grid](parts/misc/mesh-grid.scad) | ||
- [card holder](parts/misc/card-holder.scad) | ||
- [fridge door fastener](parts/misc/fridge-door-fastener.scad) | ||
- [led strip holder](parts/misc/led-strip-holder.scad) | ||
- [simple storage rack](parts/misc/simple-storage-rack.scad) | ||
- [spatula](parts/tools/spatula.scad) | ||
- [angle guide](parts/tools/angle-guide.scad) | ||
- [magimix screw driver](parts/tools/magimix-screw-driver.scad) | ||
- [handle helper](parts/tools/handle-helper.scad) | ||
- [enclosure filament passage groove](parts/printer/enclosure-filament-passage-groove.scad) | ||
- [wheel spool holder](parts/printer/wheel-spool-holder.scad) | ||
- [dehydratator feet](parts/printer/dehydratator-feet.scad) | ||
- [dehydratator spool holder](parts/printer/dehydratator-spool-holder.scad) | ||
- [dehydratator spool holder v2](parts/printer/dehydratator-spool-holder-v2.scad) | ||
- [sleeve spool holder](parts/printer/sleeve-spool-holder.scad) | ||
- [bearing spool holder](parts/printer/bearing-spool-holder.scad) | ||
- [betafpv beta85x needle](parts/rcmodels/betafpv-beta85x/betafpv-beta85x-needle.scad) | ||
- [betafpv beta85x stand](parts/rcmodels/betafpv-beta85x/betafpv-beta85x-stand.scad) | ||
- [FC case](parts/rcmodels/fc-case.scad) | ||
- [battery sleeve](parts/rcmodels/utils/battery-sleeve.scad) | ||
- [batteries organizer](parts/rcmodels/utils/batteries-organizer.scad) | ||
- [hex knob](parts/rcmodels/utils/hex-knob.scad) | ||
- [blade torrent battery spacer](parts/rcmodels/blade-torrent-110/blade-torrent-battery-spacer.scad) | ||
- [blade torrent stand](parts/rcmodels/blade-torrent-110/blade-torrent-stand.scad) | ||
- [blade torrent landing gear](parts/rcmodels/blade-torrent-110/blade-torrent-landing-gear.scad) | ||
- [tiny whoop camera holder](parts/rcmodels/blade-inductrix/tiny-whoop-camera-holder.scad) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,94 @@ | ||
# things | ||
|
||
Some 3D printing purpose things | ||
|
||
<!-- vscode-markdown-toc --> | ||
|
||
- [At a glance](#Ataglance) | ||
- [Install and requirements](#Installandrequirements) | ||
- [OpenSCAD](#OpenSCAD) | ||
- [Source code](#Sourcecode) | ||
- [Download the zip file](#Downloadthezipfile) | ||
- [Get the code from the repository](#Getthecodefromtherepository) | ||
- [Render the parts](#Rendertheparts) | ||
|
||
<!-- vscode-markdown-toc-config | ||
numbering=false | ||
autoSave=true | ||
/vscode-markdown-toc-config --> | ||
<!-- /vscode-markdown-toc --> | ||
|
||
## <a name='Ataglance'></a>At a glance | ||
|
||
The project contains designs for various purposes. The parts are designed using a scripting language, processed by [OpenSCAD](https://openscad.org/about.html). There is no ready to use 3D model files in the source code. If you are interested in such files, please look at the [released versions](https://github.com/jsconan/things/releases) which contains 3D model files built with default parameters. However, if you want to customize these parts, tailoring them with your measures, you should rather download the source code and then tweak the configuration files before generating your own 3D model files. | ||
|
||
## <a name='Installandrequirements'></a>Install and requirements | ||
|
||
To properly use the project you first need to do some installations steps. | ||
|
||
### <a name='OpenSCAD'></a>OpenSCAD | ||
|
||
First of all you need [OpenSCAD](https://openscad.org/) to be installed. To do so, please go to the [OpenSCAD download page](https://openscad.org/downloads.html), an get the version suitable for your operating system. | ||
|
||
### <a name='Sourcecode'></a>Source code | ||
|
||
The source code is hosted on a [Git](https://git-scm.com/) repository. To get it you can either download a [zip file](https://github.com/jsconan/things/archive/refs/heads/main.zip), or clone the repository locally. | ||
|
||
Note: the easiest way is to call the `init.sh` script, that will take care of this for you. | ||
|
||
#### <a name='Downloadthezipfile'></a>Download the zip file | ||
|
||
The source code can be downloaded from the [GitHub repository](https://github.com/jsconan/things). | ||
|
||
You can download it as zip file from this [link](https://github.com/jsconan/things/archive/refs/heads/main.zip). | ||
|
||
As the project is using a shared library, that is not supplied with the package, you will need to also download it. | ||
|
||
Download the zip file from this [link](https://github.com/jsconan/camelSCAD/archive/refs/heads/main.zip). | ||
|
||
Then extract its content inside the folder `lib/camelSCAD`. Please make sure the folder directly contains the library and not an intermediate folder like `lib/camelSCAD/camelSCAD-master`. If this is the case, please move the content one folder up and delete the extra folder. | ||
|
||
#### <a name='Getthecodefromtherepository'></a>Get the code from the repository | ||
|
||
A git tool is needed if you intend to get the source code from the git repository. You can download one either from the [main git website](https://git-scm.com/downloads), or from [GitHub](https://docs.github.com/en/github-cli). | ||
|
||
Once you have your git tool installed, open a console window, select a project folder (create it if needed), then run the following commands: | ||
|
||
``` | ||
git clone https://github.com/jsconan/things.git | ||
cd things | ||
git submodule init | ||
git submodule update | ||
``` | ||
|
||
The source code should have been downloaded, as well as the libraries. | ||
|
||
Note: you can also use a graphical interface tool. In this case, please make it can also install the submodules. | ||
|
||
## <a name='Rendertheparts'></a>Render the parts | ||
|
||
The parts are all located into the `parts` folder. They can all be opened separately in [OpenSCAD](https://openscad.org/) and rendered. | ||
|
||
However, it is possible to render all parts in batch. The script `render.sh` takes care of this. | ||
|
||
This is a command-line tool, which accept several parameters. By default, it will render the preset selected in the config. | ||
|
||
It is possible to select another preset, as well as set a different number of cells for the containers. | ||
|
||
The parameter `-h` make it show the help. | ||
|
||
Running the command `render.sh -h` will show this message: | ||
|
||
``` | ||
Renders OpenSCAD files | ||
Usage: | ||
./render.sh [command] [-h|--help] [-o|--option value] files | ||
-h, --help Show this help | ||
-d --dir Select a particular parts directory to render | ||
-f --format Set the output format | ||
-p --parallel Set the number of parallel processes | ||
-c --clean Clean up the output folder before rendering | ||
``` | ||
|
||
The STL files are rendered to the `dist` folder. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/** | ||
* @license | ||
* GPLv3 License | ||
* | ||
* Copyright (c) 2022 Jean-Sebastien CONAN | ||
* | ||
* This file is part of jsconan/things. | ||
* | ||
* jsconan/things is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* jsconan/things is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with jsconan/things. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
/** | ||
* Global configuration. | ||
* | ||
* @author jsconan | ||
*/ | ||
|
||
// We will render the object using the specifications of this mode | ||
renderMode = MODE_PROD; | ||
|
||
// Defines the characteristics of the printer | ||
layerHeight = 0.2; // The height of the printed layers. | ||
nozzleWidth = 0.4; // The size of the printer's nozzle. | ||
printTolerance = 0.1; // The print tolerance when pieces need to be assembled. | ||
printInterval = 5; // The interval between 2 pieces when presented together. | ||
printerLength = 250; // The length of the printer's build plate. | ||
printerWidth = 210; // The width of the printer's build plate. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
/** | ||
* @license | ||
* GPLv3 License | ||
* | ||
* Copyright (c) 2022 Jean-Sebastien CONAN | ||
* | ||
* This file is part of jsconan/things. | ||
* | ||
* jsconan/things is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* jsconan/things is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with jsconan/things. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
/** | ||
* Global functions. | ||
* | ||
* @author jsconan | ||
*/ | ||
|
||
/** | ||
* Aligns a value with respect to the target layer height. | ||
* @param Number value | ||
* @returns Number | ||
*/ | ||
function layerAligned(value) = roundBy(value, layerHeight); | ||
|
||
/** | ||
* Aligns a value with respect to the target nozzle size. | ||
* @param Number value | ||
* @returns Number | ||
*/ | ||
function nozzleAligned(value) = roundBy(value, nozzleWidth); | ||
|
||
/** | ||
* Gets the thickness of N layers. | ||
* @param Number N | ||
* @returns Number | ||
*/ | ||
function layers(N) = N * layerHeight; | ||
|
||
/** | ||
* Gets the width of N times the nozzle width. | ||
* @param Number N | ||
* @returns Number | ||
*/ | ||
function shells(N) = N * nozzleWidth; | ||
|
||
/** | ||
* Computes the print interval between the centers of 2 objects. | ||
* @param Number size - The size of the shape. | ||
* @returns Number | ||
*/ | ||
function getPrintInterval(size) = size + printInterval; | ||
|
||
/** | ||
* Gets the adjusted quantity of shapes to place on a grid with respect to the size of one shape. | ||
* @param Number length - The length of the shape. | ||
* @param Number width - The width of the shape. | ||
* @param Number [quantity] - The number of shapes to place. | ||
* @returns Number | ||
*/ | ||
function getMaxQuantity(length, width, quantity=1) = | ||
let( | ||
maxLine = floor(printerLength / length), | ||
maxCol = floor(printerWidth / width) | ||
) | ||
min(maxLine * maxCol, quantity) | ||
; | ||
|
||
/** | ||
* Gets the maximal number of shapes that can be placed on a line with respect the size of one shape. | ||
* @param Number length - The length of the shape. | ||
* @param Number width - The width of the shape. | ||
* @param Number [quantity] - The number of shapes to place. | ||
* @param Number [line] - The expected number of shapes per line. | ||
* @returns Number | ||
*/ | ||
function getMaxLine(length, width, quantity=1, line=undef) = | ||
let( | ||
maxLine = floor(printerLength / length) | ||
) | ||
min(uor(line, ceil(sqrt(quantity))), maxLine) | ||
; | ||
|
||
/** | ||
* Gets the overall length of the area taken to place the repeated shapes on a grid with respect to the expected quantity. | ||
* @param Number length - The length of the shape. | ||
* @param Number width - The width of the shape. | ||
* @param Number [quantity] - The number of shapes to place. | ||
* @param Number [line] - The expected number of shapes per line. | ||
* @returns Number | ||
*/ | ||
function getGridLength(length, width, quantity=1, line=undef) = | ||
let( | ||
length = getPrintInterval(length), | ||
width = getPrintInterval(width), | ||
quantity = getMaxQuantity(length, width, quantity) | ||
) | ||
min(quantity, getMaxLine(length, width, quantity, line)) * length | ||
; | ||
|
||
/** | ||
* Gets the overall width of the area taken to place the repeated shapes on a grid with respect to the expected quantity. | ||
* @param Number length - The length of the shape. | ||
* @param Number width - The width of the shape. | ||
* @param Number [quantity] - The number of shapes to place. | ||
* @param Number [line] - The expected number of shapes per line. | ||
* @returns Number | ||
*/ | ||
function getGridWidth(length, width, quantity=1, line=undef) = | ||
let( | ||
length = getPrintInterval(length), | ||
width = getPrintInterval(width), | ||
quantity = getMaxQuantity(length, width, quantity), | ||
line = getMaxLine(length, width, quantity, line) | ||
) | ||
ceil(quantity / line) * width | ||
; | ||
|
||
/** | ||
* Prints the project version, including the package version. | ||
* @returns String | ||
*/ | ||
function printVersion() = str(PROJECT_VERSION); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/** | ||
* @license | ||
* GPLv3 License | ||
* | ||
* Copyright (c) 2020-2022 Jean-Sebastien CONAN | ||
* | ||
* This file is part of jsconan/things. | ||
* | ||
* jsconan/things is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* jsconan/things is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with jsconan/things. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
/** | ||
* A curtain rod system. | ||
* | ||
* Configures the project. | ||
* | ||
* @author jsconan | ||
*/ | ||
|
||
projectVersion = "0.1.0"; | ||
|
||
// The dimensions and constraints of the elements | ||
panelThickness = 23; // The thickness of the panel the bracket must fit | ||
|
||
rodWidth = 15; // The width of the rod | ||
rodLength = 165; // The length of a rod piece | ||
rodDiameter = [8, 10]; // The diameter of the rounded part of the rod and the bracket | ||
rodThickness = 6; // The thickness of the rod | ||
|
||
rodStopperWidth = 30; // The width of the rod stoppers | ||
rodStopperHeight = 30; // The height of the rod stoppers | ||
rodStopperDiameter = 20; // The diameter of round part of the rod stoppers | ||
|
||
rodSleeveThickness = 1; // The thickness of the sleeve that will cover the rod at the link area | ||
rodSleeveLength = 15; // The length of a rod sleeve | ||
|
||
rodBracketWidth = 10; // The width of a bracket | ||
rodBracketHeight = 30; // The height of a bracket, including the rodThickness | ||
rodBracketThickness = 2; // The thickness of a bracket | ||
rodBracketHookThickness = 0.6; // The thickness of the hook that will clamp the panel | ||
rodBracketHookHeight = 15; // The height of the hook that will clamp the panel |
Oops, something went wrong.