Commit Graph

448 Commits

Author SHA1 Message Date
Florian Festi dfcf3d65c8 New generator: ConcaveKnob in Parts 2017-10-01 20:34:19 +02:00
Florian Festi 647c5302b6 New generator: WaivyKnob 2017-10-01 20:20:36 +02:00
Florian Festi 241c65b244 .waivyKnob(): Fix start position for angles != 45 degees 2017-10-01 20:18:42 +02:00
Florian Festi 64c980817b Manully select font face 2017-09-19 22:53:27 +02:00
Florian Festi 9dbc8fd98b Modernize _template.py 2017-09-16 21:30:41 +02:00
Florian Festi f829ff2a82 PoleHook: Use screwhead param for knob 2017-09-16 21:30:41 +02:00
Florian Festi b7f877eacd Fix bedbolts
BedBoltSettings need to become a subclass of Settings instead of a list
of values at some point.
2017-09-13 11:39:03 +02:00
Florian Festi b623008ea3 ClosedBox: fix (commented out) BedBolt support 2017-09-13 11:39:03 +02:00
Florian Festi 23a1da105e WineRack: Remove debug code for checking number of walls needed. 2017-09-05 23:05:11 +02:00
Florian Festi 7453455512 WineRack: Make unnecessary walls optional 2017-09-05 23:00:54 +02:00
Florian Festi 0e7827f9a9 WineRack: Add front cover 2017-09-05 21:04:20 +02:00
Florian Festi fbfb851474 New generator: WineRack
A honey comb like wine rack
2017-09-05 21:04:20 +02:00
Florian Festi ab750077fa .partsMatrix(): Do not error out for zero or negative parts count 2017-08-28 23:10:56 +02:00
Florian Festi ddcf13bf6c svgutil: Make detection of view port a bit more robust 2017-08-20 19:56:33 +02:00
Florian Festi 592fbe95c4 OttoLegs: Change ankles. Fix servo horn with a C-ring
Fixes issue with servo horns only being adjustable in steps of 18 degrees
This led to missaligned feet which resulted in loss of freedom of movement.
2017-08-19 22:14:30 +02:00
Florian Festi 6fecb9aa29 OttoBody: Move main switch to outer wall
Shorten servo holder so it no longer needs a hole for the switch
2017-08-19 19:31:54 +02:00
Florian Festi 398851255d OttoLegs: Use servo horn for actuating the ankles 2017-08-12 00:07:34 +02:00
Florian Festi 4dd271df74 OttoLegs: Make ankle screw screwed into leg
to give more stability to the joint
2017-08-11 18:44:34 +02:00
Florian Festi bb76a8bd7b OttoLeg: Use partsMatrix to get multiple part 2017-08-11 17:46:50 +02:00
Florian Festi 93b94d6e70 Fix move="right" for partsMatrix 2017-08-07 17:08:16 +02:00
Florian Festi 09dd779cbd OttLegs: Make hole for servo cable over whole width of the leg 2017-08-07 17:03:57 +02:00
Florian Festi fafc1c01ef OttoLegs: break ankles into separate paths 2017-08-03 23:19:32 +02:00
Florian Festi e91f53b0fa OttoLegs: Change design of ankles 2017-08-03 23:00:20 +02:00
Florian Festi b4b6799721 OttoBody: Add hook to PCB Clip 2017-08-03 22:32:33 +02:00
Florian Festi e3035da713 OttoBody: Move hole for push button 2017-08-01 21:19:01 +02:00
Florian Festi 2e9ac29d01 OttoLegs: Make length of legs configurable 2017-08-01 21:17:35 +02:00
Florian Festi 979b6ae936 OttoBody: Add push button 2017-07-31 21:18:06 +02:00
Florian Festi a639c04de2 OttoBody: Clips for keeping the mouth shut 2017-07-31 21:08:26 +02:00
Florian Festi 31e3817f32 OttoBody: New PCB Clamps 2017-07-31 20:46:41 +02:00
Florian Festi fd23c74e07 Otto Body: parts for mounting the PCB 2017-07-30 21:23:00 +02:00
Florian Festi e26d17c840 AngledBox: Don't overwrite h param
Using h as temporary variable was overwriting the variable containing the
height of the box.

Fixes #41
2017-07-28 23:33:36 +02:00
Florian Festi 83a72552e2 Ottobot: Make hole for USB plug a bit smaller again 2017-07-25 22:43:11 +02:00
Florian Festi c823cb78d6 OttoBot: Add Hole for on/off switch 2017-07-25 21:57:58 +02:00
Florian Festi 3876ea5ddd Ottobot: Increase hole for USB plug 2017-07-23 21:29:14 +02:00
Florian Festi 074646fdec _template.py tweaks 2017-05-20 20:41:51 +02:00
Florian Festi 82463317bb Edges generator for printing the registerd Edge types
Not really a generator...
2017-05-20 20:41:51 +02:00
Florian Festi abb7706b6d Python2 compat for Inkscape 2017-05-14 21:47:49 +02:00
Florian Festi 770b3dc02f Add .dHole() 2017-05-05 16:52:42 +02:00
Florian Festi d7aadc9b72 Add callback param to gears.gearCarrier() 2017-05-04 21:41:18 +02:00
Florian Festi 07ede0a5c5 Add support for "only" in the move param of .partsMatrix() 2017-05-04 21:41:18 +02:00
Florian Festi 9bf9922d28 Stroke in move after part is completed 2017-05-04 21:41:18 +02:00
Florian Festi 3822cc4882 Add TX holes 2017-05-04 21:41:18 +02:00
Florian Festi ae619aabea Flexbox4: Fix length of lid
to overlap the side wall
2017-04-11 21:09:41 +02:00
Florian Festi 7bbf82c958 UBox: Fix size of lid 2017-04-11 20:55:21 +02:00
Florian Festi b63dcfeee6 Make Traylayout work without main function 2017-04-05 04:33:42 +02:00
Florian Festi 5b9c8e4d71 Remove main function from generators
Generators are no longer executable on their own. Use scripts/boxes
instead.
2017-04-05 04:33:42 +02:00
Florian Festi bffd732c3f scripts/boxes: Use generator classes instead of main functions
Make Boxes.parseArgs more robust
--list generators by UI group.
Pass arguments explicitly instead of fiddling with sys.argv
2017-04-05 04:33:28 +02:00
Florian Festi f9c0cb8cab Support putting class and instances into UI Groups 2017-04-02 02:31:37 +02:00
Florian Festi 8e65298c6b Planetary2: Print gearing ratio and change default for sun gear 2017-04-01 23:54:44 +02:00
Florian Festi 12f2cbc1e2 Planetary2: Add allignment pins to sun gear 2017-04-01 21:18:48 +02:00
Florian Festi 273190932f Planetary2: Order part the way they need to go together 2017-04-01 21:06:57 +02:00
Florian Festi 4c17d6a4a1 Planetary2: Put planet gears in the order they need to go together 2017-04-01 20:59:19 +02:00
Florian Festi 7f1e54be15 Planetary2: Add pin holes for ring gear and add second ring 2017-03-30 20:59:13 +02:00
Florian Festi 8487d5c379 Planetary2: New generator for a ~100 reduction to belt pulley 2017-03-29 07:44:48 +02:00
Florian Festi 93480e082d gears: Add teeth_only param to allow using gears as lines and not only as parts 2017-03-29 07:42:57 +02:00
Florian Festi 427a6fc54b Change default of mount_hole to 0 2017-03-29 07:42:15 +02:00
Florian Festi bad114400f Use better default for height of pulley (using the new keyword style) 2017-03-29 07:41:05 +02:00
Florian Festi ff6da9eb80 Fix pulley size calculation for r_axle being None 2017-03-29 07:40:17 +02:00
Florian Festi c7490155f7 Add nema_mount default parameter
Make nema_sizes available outside of NEMA() function.
This whole stuff should probably move into it's own file/class at some point
2017-03-29 07:38:10 +02:00
Florian Festi 53cbed768b Allow using keyword args for buildArgParser for setting the defaults 2017-03-29 07:36:50 +02:00
Florian Festi c2fa8c85cf Pulley: Add insideout param
This allows using timing belts as strainwaves in harmonic drives.
2017-03-22 22:03:09 +01:00
Florian Festi c2ab70eefe Add Boxes.circle() primitive 2017-03-22 22:03:09 +01:00
Florian Festi 71bd013f3f RegularBox: Better description 2017-03-13 11:41:12 +01:00
Florian Festi cd0d49bf6f OttoLegs: Use two different hole sizes for the ankle
to allow screwing it into one side while moving freely on the other
2017-03-12 14:47:21 +01:00
Florian Festi cd3fee5e76 OttoLegs: More tweaks
Lengthen front by 1mm to close gap to servo
Lower ankle hole at leg by 0.5mm
Shorten internal wall holding the servo at top
2017-03-11 20:14:29 +01:00
Florian Festi 672295310b OttoBody: Body for Otto LC 2017-03-11 18:22:41 +01:00
Florian Festi c6c2e203f2 OttoLegs: Make ankle bolt diameter configurable 2017-03-11 18:22:41 +01:00
Florian Festi 271bed0308 OttoLegs: wall for better fixating the servos 2017-03-11 18:22:41 +01:00
Florian Festi 6bc695a418 OttoLegs: Add second leg 2017-03-11 18:22:41 +01:00
Florian Festi e316877d06 OttoLegs: Make room for cables 2017-03-11 18:22:41 +01:00
Florian Festi db4e878bb4 OttoLegs: Legs for Otto LC 2017-03-11 18:22:41 +01:00
Florian Festi 121e2107fb Import lxml locally to avoid hard dependency
The code is used in the Inkscape plugin only.
2017-03-10 23:00:41 +01:00
Florian Festi 4ab1dcc323 RoundedBox: Fix description 2017-03-06 22:24:05 +01:00
Florian Festi eecbceda11 Rename Box2 -> UniversalBox 2017-03-06 22:24:05 +01:00
Florian Festi 47f3037e23 rename Box3 -> OpenBox 2017-03-06 22:24:05 +01:00
Florian Festi 5026c2bc03 Rename Box5 -> HingeBox 2017-03-06 22:24:05 +01:00
Florian Festi e5b19978dd Rename Box4 -> IntegratedHingeBox 2017-03-06 22:24:05 +01:00
Florian Festi 75b7724255 Rename Box -> ClosedBox 2017-03-06 22:24:05 +01:00
Florian Festi 5956182328 Parts.ringSegment() 2017-03-05 12:52:44 +01:00
Florian Festi 5e33d057fc UBox: Limit radius to possible values and merge flex if radii touch 2017-03-04 15:29:28 +01:00
Florian Festi a0d992f43a Stop printing random stuff on stdout 2017-02-26 17:02:16 +01:00
Florian Festi 41bc4d028f Use sys.stdout.buffer to be able to write bytes (for Python 3 compat) 2017-02-25 19:59:53 +01:00
Florian Festi cb8ebefeb1 Fix Servo.choices() and use it in robotarm 2017-02-25 19:59:16 +01:00
Florian Festi 174b20fc11 Fix main 2017-02-25 19:40:24 +01:00
Florian Festi a81ba48d45 Take viewBox and size of SVG documents into account when merging them 2017-02-25 16:10:28 +01:00
Florian Festi ce87babfdd RoundedBox: Fix hole size
Size calculation was wrong but compensated the broken size adjustment with
"outside" set.
2017-02-25 15:52:51 +01:00
Florian Festi 490d089a83 Planetary: Python2 fix. // doesn't allow floats in Python 2 2017-02-25 11:24:58 +01:00
Florian Festi d4edafe2d9 Fix ChestHingeSetting
Got broken by 6756d16b67
2017-02-23 20:57:01 +01:00
Florian Festi e0a4d06c43 Hackish way to make scriptsboxes to work with Inkscape. 2017-02-23 17:38:26 +01:00
Florian Festi ff7ee22885 Add svgutil.svgMerge() allwing to add generated box into anoterh svg
Implemetation has still many short comings. E.g. assumes units and layout of
document passed in. Also assumes to be merged document to be generated by
boxes.py.
2017-02-23 17:38:26 +01:00
Florian Festi 39e74e67ba Add scripts/boxes2inkscape for generating inx files from box generators
Code for handling traylayout still missing.
2017-02-23 17:38:26 +01:00
Florian Festi a93e280477 Make reference a separate path object
Avoid it being merged with teh first par tof the drawing
2017-02-23 17:38:26 +01:00
Florian Festi e23d8034c5 Make BoolArg accept upper and lower case values 2017-02-23 17:38:26 +01:00
Florian Festi b440d1c767 Use BoolArg when creating arg parser for edges.Settings 2017-02-23 17:38:26 +01:00
Florian Festi 1b3f9dbc3a Robotarm: Generator for servo powered robot arm segments 2017-02-22 22:33:22 +01:00
Florian Festi 40d53ac1ba Robot parts: Initial commit 2017-02-22 22:33:22 +01:00
Florian Festi 1bed3f2a39 rectangularWall() fix positioning with ignore_widths
containing parts of the lower left corner.
2017-02-22 20:01:29 +01:00
Florian Festi 3cad4f27af Add tangent() function 2017-02-22 20:01:28 +01:00
Florian Festi d2774f151d Lamp: fix no longer valid default in setting 2017-02-18 19:13:57 +01:00
Florian Festi cc577956a4 Flexbox3: Fix radius of lid
May still be off a bit. But I can't see why...
2017-02-18 19:06:10 +01:00
Florian Festi 117ace3233 FlexBox3: Fix finger joints of lid 2017-02-18 19:06:10 +01:00
Florian Festi 1f9342b678 Castle: Make available in UI and adjust to current code base 2017-02-18 19:06:10 +01:00
Florian Festi 6756d16b67 Use .settings.thickness in edges instead of global value 2017-02-18 19:05:21 +01:00
Florian Festi 561eb0034c Add "Unstable" UIGroup 2017-02-15 15:55:01 +01:00
Florian Festi d3c76f2b9e Put box generator into groups and adjust the menu web page accordingly 2017-02-13 17:31:58 +01:00
Florian Festi 5a0f3d42ea Add UIGroup class and instances for structuring the box generators 2017-02-13 17:31:02 +01:00
Florian Festi c820c1b77d Move lid code from boxes/generators/box2.py to boxes/lids.py
Rename the classes to no longer show up in the list of generators
2017-02-12 23:18:37 +01:00
Florian Festi 0739fd0b94 Exclude Boxes classes starting with _ in getAllBoxGenerators()
Exclude mix-in classes that are not supposed to be used on their own
2017-02-12 22:20:32 +01:00
Florian Festi 399e5b468f New generator: UBox - a box with rounded corner at the bottom 2017-02-12 15:00:17 +01:00
Florian Festi b59de950c0 Box2: Refactor lid generation out of the Box2 class 2017-02-12 15:00:17 +01:00
Florian Festi dd6c5560f9 Support chars es edge parameters in Boxes.edgeCorner() 2017-02-12 15:00:17 +01:00
Florian Festi a7d0dda9f8 New generator: Box5 box with lid attached with cabinet hinges 2017-02-11 18:15:44 +01:00
Florian Festi 305986dad8 Add cabinet hinge to top_edge and support it in Box2 2017-02-11 18:15:44 +01:00
Florian Festi 94c727cc30 Add CabinetHingeEdge 2017-02-11 18:15:44 +01:00
Florian Festi fb5398b30d PoleHook: Initial commit 2017-02-11 18:15:34 +01:00
Florian Festi f1b8d68d65 Fix bedbolts for finger holes 2017-02-11 18:15:34 +01:00
Florian Festi 250131e152 Fix previous fix *sigh* 2017-02-09 18:47:20 +01:00
Florian Festi 3e3ed3b0dd Add finger joint settings again
Got removed accidentially in 8d754c
2017-02-09 00:02:41 +01:00
Florian Festi da6dcb4c68 Box4: Use ignore_widths to get finger joints on the whole length of all edges 2017-02-07 20:18:48 +01:00
Florian Festi 3daa9a846a Add ignore_widths param for rectangularWall()
It does not pass the width of edges to edgeCorner but instead lengthen the
neighboring edge. The widths are numbered from 0 to 7 starting with the
horizontal part of the lower right corner.
2017-02-07 18:56:07 +01:00
Florian Festi 1e6893d0b1 Box4: Box with boxy lid and built-in hinge 2017-02-06 22:36:11 +01:00
Florian Festi 544c40a0d3 Add Chest Hinge edge classes 2017-02-06 22:35:26 +01:00
Florian Festi 70574056d6 Fixes for rectangularTriangle 2017-02-05 21:02:46 +01:00
Florian Festi 2fa07190ff Fix finger joint setting defaults
space and width got mixed up in 8d754c3855
2017-02-05 16:30:37 +01:00
Florian Festi f982918205 Add r param to rectangularTriangle() 2017-02-04 15:01:16 +01:00
Florian Festi 07661b1eae Formats: Generate tempfile in same directory to ensure rename works. 2017-02-04 15:01:16 +01:00
christopher 8d754c3855 Use default finger/width settings of 2.0 for every box 2017-01-30 10:12:27 +01:00
christopher c36d819e10 Change defaults 2017-01-30 09:37:10 +01:00
Florian Festi 17e2b55fcf Box2: Add flat lid
Make chestlid param a general lid param
2017-01-24 22:49:25 +01:00
Florian Festi 28ad1c6dc3 RoundedBox: Add top param for top opening and lid 2017-01-21 13:54:58 +01:00
Florian Festi 6ef950816e Add edge parameter to Boxes.roundedPlate 2017-01-21 13:54:58 +01:00
Florian Festi a8241b2118 New generator: RoundedBox
Still very basic. Needs top parameter similar to AngledBox
2017-01-19 21:36:43 +01:00
Florian Festi fa4fd943ca New generator: DisplayShelf - a shelf with forward slanted floors 2017-01-14 23:13:22 +01:00
Florian Festi 8514ede2c3 AngledBox: Fix fingers on top of walls for "angled hole" 2017-01-08 18:56:05 +01:00
Florian Festi 7b5614659a New generator: AngledBox 2017-01-08 17:25:36 +01:00
Florian Festi 8dc13440ee Fix boolean params. Not passing 0, None, False or off works for setting them to False
Thanks to chrisjshull for pointing out how to fix this in the web UI.
Fixes #19
2017-01-08 17:25:36 +01:00
Florian Festi 13cdb35954 Make RegularPolygonWall a path of its own 2016-12-17 11:37:11 +01:00
Florian Festi 0cbd713718 RegularBox: Fix outside parameter 2016-12-17 11:36:26 +01:00
Florian Festi 0dc6aef5d4 RegularBox: Add angled hole top style 2016-12-17 11:24:47 +01:00
Florian Festi b2b0ccd6f1 Fix FingerJoints with angles != 90 degrees
Fix margins
Fix amount of recess for spaces
2016-12-14 22:07:36 +01:00
Florian Festi 6298c80527 RegularBox: Fix angled lid 2016-12-14 21:02:49 +01:00
Florian Festi a5fd1775e0 New generator: RegularBox 2016-12-13 22:58:56 +01:00
Florian Festi cbe32cc5a7 Code for Regular Polygons
* Boxes.regularPolygon for calculation
 * Boxes.regularPolygonAt for simple polygon
 * Boxes.regularPolygonWall

Also fix edgeCorner() for angles != 90 degrees
2016-12-13 22:58:10 +01:00
Florian Festi 75adf0b15f TrafficLight: Add support for horizontal layout of lights 2016-11-30 21:45:17 +01:00
Florian Festi f133e2aa12 TrafficLight: Add windows to be cut from transparent (and colored) material 2016-11-30 18:31:44 +01:00
Florian Festi 16e93ca086 TrafficLight: Fix edge type for front panels 2016-11-30 11:29:55 +01:00
Florian Festi 23cf0eaa3a TrafficLight: Add param for number of lights 2016-11-29 23:43:01 +01:00
Florian Festi 273174fae8 New generator: TrafficLight 2016-11-29 23:42:17 +01:00
Florian Festi aa4c0fd1d4 Add FingerJoints to the bottom of the front plates 2016-11-28 21:11:38 +01:00
Florian Festi be6de6a793 Support FingerJoints with less than 90 degrees.
This means bending angle < 90. The actual angle is bigger than 90
2016-11-28 21:11:38 +01:00