I have a 1000 line openSCAD program/script that generates spiral passthrough fidgets. Except for the fidgets with texture or attachments (like bunny ears), I believe that this script can generate the spiral passthrough fidgets in any shape that I have seen on Makerworld.
Everything is parametric. The number and positions of the spiral arms, the shape of those arms, the general shape of the fidget - all are parametrically controlled. Pyramid shaped? Hexagonal prism with a superimposed Coke bottle shape? Yes. A fidget in the shape of a spool or cube? Easy. Aladdin's Genie bottle? No sweat.
With comments, the script has about 1000 lines. I tried to make as much as possible dependent on building the fidget from the inside out, so (for example) the size of the arm and about six other factors eventually result in the diameter of the fidget. There are currently about 30 parameters that can be specified. Some parameters, like height or twist, affect the fidget for every type, but others, like the list of struts for this (my notes) type 6 fidget only matter when you are generating this type of fidget.
The problem is that 30 parameters is too many,
I am currently writing a google doc to document this whole thing. I am using lots of illustrations. It is currently at 40 pages.
I decided I really liked this fidget so I decided to publish it separately. It uses my brand new H2D and I am using petg for the supports and PLA for the main body with zero clearance and it works really well.
Just as an example, here are the parameters that were used to generate this. An example of an unused parameter is “spiralhatsize”. That only applies to a certain configuration of the central spiral where I generate a pointed hat on the spiral. Since we are using a “type3innerspiral” then that parameter does not apply.
This parameter file defines a 6 pointed star with rounded (clubend) points, and so forth. The main twist is 540 degrees over 100 mm height, right handed but the struts are left handed, and their twist is 270 degrees over the same 100mm.
In my documentation, this is a type 6 fidget, with the below parameters. I am still struggling with naming those parameters, as I am trying to make things logical, so that someone can find things more intuitively without having to search the whole list. I may take inspiration from the openscad cheat sheet.
In any case, enjoy. If you really want a spiral fidget of some particular design or size, let me know. I mean, doesn't everyone need a 300mm by 300mm spiral fidget?
// ----- cut above here -----
/* [Hidden] */
;
include <sfidget v10.scad>;
// Logically, point variables are first.;
pointh = 15;
pointw = 2;
pointclubend = true;
pointrecttotrapezoid = -0.1;
pointclubendfactor=3;
// Now build the star.;
starclearance = 1;
starfillet = 0.5;
starpoints = 6;
starspiralpointlist =true;
starwrapperpointlist = starspiralpointlist;
// Since the star is built, work on the
// inner spiral.;
spiralhatsize = 45;
spiralminimumtopsize = 2;
// We now build the wrapper;
wrapperfaces = 0;
wrapperxtracylsize = 6;
// The main set of variables build the
// rest of the stasrting fidget structure.;
maintotal_height = 100;
maintwist = -540;
// Start working on the class 1 variables.;
type1fidget = false;
type1conez = 0;
type1conebaseadjust = 2;
// Class 2 variables;
type2fidget = false;
type2toroiddistance = -25;
type2applytospiral = true;
type2toruslobecount = 50;
type2toruslobelist = [20, 15];
type2torusfactors = [[1.1, 1.1], [0.75, 1.05]];
type2adjtoroiddistance = 0;
// Class 3 variables.;
type3innerspiral = true;
type3top = 2;
type3bottom = 2;
type3separate = 2.5;
// The single, unique type 4 enabler;
type4egg = false;
// The type 5 configuration variables;
type5multiball = false;
type5lobecount = 50;
type5lobelist = [10, 32, 40];
type5lobefactors = [1.1, [0.9, 0.6], [0.4, 1.6]];
type5applytype1towrapper=false;
type6wrapper=true;
type6endthickness=mm(7.5);
type6twist = 270;
type6factor = [1,0,1,0,1];
//Include file level is for my debugging.;
includefileversion = 10.01;
// Final ungrouped variables.;
maxinnerheight = 0;//maintotal_height/4;
maxouterheight = 0;
//outonly = true;
//inonly = true;
main();
;
// ----- cut below here -----
태그
모델 소스
