Florian Festi
8bacd1f766
UniversalBox: Fix missing lids for various top_edges
...
Call got refactored away
Resolves : #121
2019-02-27 22:58:05 +01:00
Martin Müller
fb4791f803
Fix typo in help text for tabs
2019-02-26 00:02:30 +01:00
Florian Festi
cbb000f12e
DoveTailJoint: remove no longer needed ctx.translate
2019-02-24 14:45:57 +01:00
Florian Festi
abed8c06ac
FingerHoles: use .saved_context()
2019-02-24 14:42:48 +01:00
Florian Festi
72617110cf
FingerHoleEdge: Use modern code and add tab support
2019-02-24 13:14:21 +01:00
Florian Festi
eb5f3008da
RoundedTriangleEdge: Add tabs
2019-02-24 12:16:47 +01:00
Florian Festi
8640514daf
Omit reference for svg_Ponoko format
2019-02-14 21:36:54 +01:00
Florian Festi
8db3942757
UniversalBox: Fix positioning of lid parts
2019-02-14 21:32:27 +01:00
Florian Festi
25ea02d317
Handle the drawing reaching into the negative x axis properly
2019-02-14 21:15:28 +01:00
Florian Festi
c6e872a146
Add tabs to .parts
2019-02-14 17:34:22 +01:00
Florian Festi
81708bbbca
.polyline: mention tabs feature in doc string
2019-02-14 17:32:59 +01:00
Florian Festi
3a0e34eed8
Fix NutHole which broke after switching over to saved_context
2019-02-14 17:31:56 +01:00
Florian Festi
679234afd3
Fix docstrings of .open() and .close() to match new use pattern
2019-02-13 09:04:57 +01:00
Florian Festi
9b1ce265bf
Make docstrings ready for autodoc
2019-02-13 09:01:20 +01:00
Florian Festi
e3ba617f22
Fix traceback for top_edge == "L"
...
No longer access the t1 edge type after changing it which may lead
to t1 being a char instead of a Edge instance
Thanks to michael (https://hackaday.io/hacker/381347-michael ) for
pointing this out!
2019-02-10 19:49:51 +01:00
Florian Festi
0d07f48b7f
Remove .open() call from the .render() method
...
Having this call there was necessary in the past as the open() method would
need the canvas size as a parameter. This is now determined automatically
after rendering.
Still calling open() is deprecated but won't result in an error.
2019-02-08 17:43:15 +01:00
Florian Festi
861c8451e2
Remove call to .close() from .render() method
...
There is really no need for all the generator to care
Still calling it is deprecated but won't result in an error
2019-02-08 17:32:04 +01:00
Florian Festi
2ba6fa1bf3
Use .saved_context() instead of .ctx.save() and .restore()
2019-02-07 22:43:04 +01:00
Florian Festi
1724f67bdf
Delete never to be finished printer generator
...
This should have become a 3D printer using strings in a delta configuration.
2019-02-07 22:43:04 +01:00
Florian Festi
ded5addbe9
Remove no longer needed calls to ctx.stroke()
...
Boxes.move() take care of that nowadays
2019-02-07 22:43:04 +01:00
Florian Festi
80ab24dceb
Fix format of doc strings
2019-02-07 17:42:41 +01:00
Wayne Wylupski
c5d434105b
Add svg_Ponoko output format
...
This is just regular SVG with Ponoko-specific line properties
Yes, the lines are too thin to be seen in a regular web browser.
Resolves : #112
2019-02-03 16:30:28 +01:00
Wayne Wylupski
abacdd486e
Implement proper color handling
...
Avoid accessing Boxes.ctx (the cairo context) all over the code.
Have named colors
2019-02-03 16:28:02 +01:00
Wayne Wylupski
c573914bcd
Add Boxes.saved_context() context manager
...
Avoid directly accessing Boxes.ctx (the cairo context) all over the place.
Also have a more modern API for returning to a previous spot.
2019-02-03 16:25:31 +01:00
Wayne Wylupski
acb457be2a
Add GPL copy right header
2019-02-02 18:05:04 +01:00
Florian Festi
2e5a19a40f
Python 2 compat fix
2019-01-12 18:42:44 +01:00
Florian Festi
6f4e94577b
New generator: RectangularWall
2019-01-12 15:28:17 +01:00
Florian Festi
dac6b3ac3d
Fix Edge descriptions
...
Add descriptions for edges that don't have their own class
Make ChestHingeFront sub class of Edge as BaseEdge no longer draws anything
2019-01-12 15:28:17 +01:00
Florian Festi
1739d11af5
Doc string for GearSettings
2019-01-12 15:28:17 +01:00
Florian Festi
d0356a12a3
Add parameters to addTopEdgeSettings() for changed defaults
2019-01-12 00:07:37 +01:00
Florian Festi
ba3cacbf93
RoundedTriangleEdge: Add outset setting
2019-01-12 00:07:22 +01:00
Florian Festi
2747d9719a
Add RoundedTriangleEdge to top_edges
2019-01-12 00:00:55 +01:00
Florian Festi
31fd0024ee
Add RoundedTriangleEdge t
...
Based on the Caddy generator by bobm123 in the PR #14
(https://github.com/florianfesti/boxes/pull/14 )
Edge will be added to the TypeTray generator to achieve similar results as Caddy
Co-authored-by: bobm123 <bobm123@gmail.com>
2019-01-11 23:56:28 +01:00
Florian Festi
64fb498e6e
UniversalBox: Use a more robust way of placing the pieces
...
No longer rely on all side walls having the same height
2019-01-11 19:41:02 +01:00
Florian Festi
97e7e3b68f
TypeTray: Swap vertical edge types to match the layout of the UniversalBox
2019-01-11 19:41:02 +01:00
Florian Festi
5c70515f01
TypeTray: Add lids matching top_edge
2019-01-10 22:27:36 +01:00
Florian Festi
371097aa89
PaintStorage: Make grip hole smaller and more rounded
...
Fixes #108
2019-01-10 22:09:45 +01:00
Florian Festi
c0a782b745
TypeTray: Add support for all top_edges
2019-01-03 11:13:27 +01:00
Florian Festi
c2615d4b38
TypeTray: rearrange parts
2018-12-27 17:19:10 +01:00
Florian Festi
73050d4969
Make .continueDirection() more private
2018-12-22 17:23:33 +01:00
Florian Festi
2df63b6ec8
ShutterBox: Add style with two rounded corners
...
Move generator to FlexBox category
2018-12-19 18:04:34 +01:00
Florian Festi
879b3149bb
New generator: ShutterBox
...
A box with a rolling shutter made out of flex
2018-12-13 18:39:01 +01:00
Florian Festi
4a79c37e71
CardBox: Add gripping ledge to the lid
2018-12-11 19:33:52 +01:00
Florian Festi
4d2592fecf
Add e edge to bottom_edge selection
2018-12-08 18:22:13 +01:00
Florian Festi
fd956d1f08
rectangularHole(): clamp corner radius to available space
2018-12-08 12:42:36 +01:00
Florian Festi
8f03030c53
PaintStorage: Add carrying hole
2018-12-08 12:37:20 +01:00
Florian Festi
925c6ce6dc
PaintStand: Fix previous change
2018-11-24 22:47:35 +01:00
Florian Festi
17e4eb8563
PaintStorage: Fix heights
2018-11-15 22:10:19 +01:00
Florian Festi
ed6855d79c
RoundedPlate: Call first callback only once
...
Remove left over call to .cc()
2018-11-09 21:01:00 +01:00
Florian Festi
d85fa4e849
LaserClamp: Improve design
...
Extend bottom bracket and add hook
Use only one bottom bracket
Add finger ring to allow easier placement
Improve top hook
2018-11-05 22:08:23 +01:00
Florian Festi
0f999a89ad
New generator: AllEdges showing all the standard edge types
2018-11-05 21:38:49 +01:00
Florian Festi
b7bd6306d1
Fix division by zero in FlexEdge
2018-11-05 21:38:49 +01:00
Florian Festi
fe89528e05
PaintStorage: Add support for hexagonal hole patterns
2018-10-29 18:16:16 +01:00
Florian Festi
36077e6cb0
PaintStorage: Optimize part placement
2018-10-29 15:44:18 +01:00
jens persson
c28541a977
Add a generator for paintstand
...
A simple stackable paintstand, very much inspired by:
https://www.youtube.com/watch?v=6HJarJg1npk
2018-10-29 15:11:35 +01:00
jens persson
e95f36a18a
Parameterize Silverwarebox
...
Make the messurements selectable
2018-10-28 13:19:37 +01:00
Florian Festi
80288079af
New generator: TwoPiece
...
Based on a generator with the same name by bobm123<bobm123@gmail.com>
2018-10-25 22:35:20 +02:00
Florian Festi
5b93c1228d
CardBox: Add num param for the number of decks
2018-10-25 17:36:46 +02:00
Alexander Bulimov
5a13fbea8b
Add DisplayCase generator
2018-10-24 21:28:54 +02:00
Florian Festi
2060293cf3
New generator: RoyalGame of Ur
2018-10-24 21:23:57 +02:00
Florian Festi
397cc81690
FlexBox3: Use .move()
...
Use .edgeCorner() instead of own implementation
2018-10-19 22:12:13 +02:00
Florian Festi
f7c2d91e42
FlexBox2: Make latchsize configurable
2018-10-19 21:46:30 +02:00
Florian Festi
417a053ad3
FlexBox2: Use .move()
2018-10-19 21:45:26 +02:00
Florian Festi
4d76457d3a
FlexBox: Make latchsize configurable
2018-10-19 21:35:11 +02:00
Florian Festi
791ef0fdca
FlexBox: Use .move()
2018-10-19 21:33:52 +02:00
Florian Festi
a9009732ac
FlexBox4: Make latchsize configurable
2018-10-19 19:20:23 +02:00
Florian Festi
4ba18d87b7
FlexBox4: Modernize a bit and use .move()
2018-10-19 19:15:55 +02:00
Florian Festi
a4b5af98e2
Add new "mirror" key word to the where parameter of Boxes.move()
2018-10-19 19:05:07 +02:00
Florian Festi
c45b5cd30b
Add debug rectangle for move commands
2018-10-19 18:58:29 +02:00
Florian Festi
1cf671ddd2
FlexBox4: Calculate length of flex after adjusting the radius
2018-10-19 10:02:16 +02:00
jens persson
716fd389e3
Add a box for storage of playingcards
...
The box have place for two stacks of cards with a divider between.
It have a slide in lid.
2018-10-09 16:55:34 +02:00
Florian Festi
14c6338713
New generator: LaserClamp
2018-10-06 22:55:46 +02:00
Florian Festi
60cb0eed87
CabinetHinge: Add style param with new value outside
2018-10-04 22:18:07 +02:00
Florian Festi
b07983582e
HingeBox: Add support for split lids
2018-09-30 15:31:16 +02:00
Florian Festi
db16b16533
.rectangularWall(): Fix placement for hex holes enabled by holesMargin param
2018-09-13 09:23:56 +02:00
Florian Festi
9ad64a1764
Boxes.buildArgParser: Update doc string
2018-09-10 10:00:02 +02:00
Florian Festi
259834a983
ArgparseEdgeType: Add doc string
2018-09-10 10:00:02 +02:00
Florian Festi
84df48ba1d
Add units (mm) to the tabs param description
2018-09-10 10:00:02 +02:00
Rotzbua
84ce484f93
[doc] add hint to disable reference
2018-09-08 15:33:09 +02:00
Florian Festi
b8ff1b8cf6
TrayLayout: Make parsing a bit more robust
...
Ignore white space at the end of lines with horizontal walls
2018-08-27 16:55:00 +02:00
Florian Festi
b4a95aca15
TrayLayout: Fix burn correction for bottom plate
...
All edges were missing the burn correction outset (aka kerf).
2018-08-27 15:13:31 +02:00
Florian Festi
fc127237fd
Fix placement of fingerHoles in CrossingFingerHoleEdge
...
which were too low by one burn
2018-08-27 15:12:17 +02:00
Florian Festi
0e8a718a1b
Fix placement of debugging rectangel for FingerHoles
...
Not the outer border of the lines are exactly at the border of the matching
part
2018-08-27 15:10:50 +02:00
Florian Festi
3767598d5d
Fix placement of rectangularHole() which was off by one burn
2018-08-27 15:09:17 +02:00
Florian Festi
ec77d6aa22
Doc strings for Parts methods
2018-08-23 23:28:24 +02:00
Florian Festi
897fc23029
Doc string for Boxes.flex2D()
2018-08-23 23:28:24 +02:00
Florian Festi
6c43f4a382
Doc string for Boxes.TX()
2018-08-23 23:28:20 +02:00
Florian Festi
a99094b8d7
Doc string for Boxes.partsMatrix()
2018-08-23 23:27:35 +02:00
Florian Festi
d360703cba
TypeTray: Make bottom_edge parametric
...
This does not affect the inside walls
2018-08-16 20:49:12 +02:00
Florian Festi
46175dde11
Fix url params for checkboxes when re-opening an input form
...
Thanks to Rotzbua for pointing the issue out!
2018-08-16 08:54:52 +02:00
Florian Festi
8563818925
Hook: Boxify and parametrize generator
2018-08-14 14:01:59 +02:00
Marius Bergmann
2831b41d21
Add wall hook generator
2018-08-14 11:55:31 +02:00
Florian Festi
f83ca31a0a
RoundedBox: Add wallpieces param
2018-08-06 19:46:48 +02:00
Florian Festi
af7f29c51f
Add (wall)pieces param to roundedPlate() and surroundingWall()
2018-08-06 19:46:23 +02:00
Florian Festi
7c8ae621f7
CloseBox: Put bed blots at the right places
...
Keep them still disabled, though.
2018-07-25 16:34:58 +02:00
Florian Festi
05c41be4d1
Remove or comment debugging outputs
2018-07-24 20:36:13 +02:00
Florian Festi
cd0fcdcb96
Set a char for CrossingFingerHoleEdge tp avoid collision with the "e" edge.
2018-07-02 19:13:52 +02:00
Florian Festi
44bce898e0
UniversalBox: Add alternative "lid" for f and F top_edges:
...
A rim leaving the box open
2018-07-02 19:07:26 +02:00
Florian Festi
2c7f9f4dc0
UniversalBox: Add f and F as possible top_edge types
2018-07-02 19:07:26 +02:00
Florian Festi
37a798e91e
Add top "lid" for F edge
2018-07-02 19:07:25 +02:00
Sebastian Reichel
8b172cbddd
Add 10" rack box derived from 19" rack box
2018-06-27 21:48:35 +02:00
Sebastian Reichel
d75ea78196
Add support for specifying font color/size
2018-06-27 21:48:35 +02:00
Florian Festi
6538c92910
OrganPipe: Offer multiple units for the pressure given
2018-05-18 14:12:30 +02:00
Florian Festi
924372f79d
Use a minimal line width (0.05mm) even for very small burn values
...
to keep the lines visible in these cases.
2018-05-17 11:27:58 +02:00
Florian Festi
1d0aa05e9a
OrganPipe: Use unicode for Py 2 compat
2018-05-12 17:14:02 +02:00
Florian Festi
d9e8930e31
OrganPipe: Add encoding
2018-05-12 17:11:26 +02:00
Florian Festi
4798c24815
New generator: Organ pipe
...
Still untested
2018-05-12 17:06:10 +02:00
Florian Festi
f99bf32c85
Add hinges and spacing params to CabinetHingeEdge
2018-05-08 23:55:09 +02:00
Florian Festi
2828a85725
Add flatHole() for shafts that are flattened on both sides.
2018-05-05 19:08:37 +02:00
Florian Festi
50b9bc9ffb
TypeTray: Fix finger holes in bottom which had been mirrored in x direction
2018-04-25 23:36:32 +02:00
Florian Festi
616bf42239
RegularBox: Fix top edge for "angled hole" top
2018-04-25 22:02:52 +02:00
Florian Festi
d3c922d289
RegularBox: Use FingerJointSettings for vertical edges, too
...
Fixes #65
2018-04-25 22:02:24 +02:00
Florian Festi
73438fb614
Fix .__getattr__ of Settings class so it can be passed to copy.copy()
2018-04-25 21:52:51 +02:00
Florian Festi
879ae1af68
DisplayShelf: Do not render front wall if set to zero
2018-04-15 19:43:31 +02:00
Florian Festi
ebe02e2be5
DisplayShelf: Use better defaults
2018-04-15 19:43:31 +02:00
Florian Festi
65358c9fad
Add hint to outside param to nominally inner sizes
2018-04-05 22:55:23 +02:00
Florian Festi
b2c54310b6
UnevenHeightBox: Fix lid
...
Looks like it is difficult to come up with a really non symmectrical test case.
Thanks to Mekol for pointing this out!
Related #60
2018-03-17 21:04:24 +01:00
Florian Festi
fa44eb27cf
UneveHeigthBox: Minor tweaks
2018-03-17 17:32:21 +01:00
Florian Festi
58cb06ec94
UnevenHeightBox: Add lid
2018-03-17 17:19:47 +01:00
Florian Festi
7c716a9e5f
UnevenHeightBox: Make bottom edge parametric
2018-03-15 20:46:00 +01:00
Florian Festi
786ff222c2
New generator: UnevenHeightBox
...
Box with different height in each corner
2018-03-15 19:08:47 +01:00
Florian Festi
0604744284
OttoSoles: Add dove tail joints to the connecting edges
2018-03-11 17:43:55 +01:00
Florian Festi
f2106a2c8c
OttoSoles: Add support for tabs
2018-03-11 09:13:40 +01:00
Florian Festi
49ce2ed412
New generator: Ottosoles
...
Foam soles for the OttO Bot
2018-03-10 19:28:30 +01:00
Florian Festi
90ba9f8ee9
LidEdge: Fix duplicated option for spring
2018-03-05 20:10:55 +01:00
Florian Festi
dd7d282c65
Rack19Box: Fix width and placement of holes
2018-02-27 18:41:39 +01:00
Florian Festi
66c419ab7f
New generator: Rack19Box
...
Closed box with screw on top for mounting in a 19" rack.
2018-02-27 18:04:26 +01:00
Florian Festi
c3917d3292
IntegratedHingeBox: switch x and y measurements
...
So the hinge is at the backside along the x axis
2018-02-20 08:23:07 +01:00
Florian Festi
8cb9919968
FlexBox2: Rename params to reflect the actual axis of measurement
...
h -> x
y -> h
x -> y
2018-02-19 16:49:04 +01:00
Florian Festi
78d35a92e0
Fix CrossingFingerHoleEdge
...
which relies on __call__() of the super class drawing a line
2018-02-12 22:04:20 +01:00
Florian Festi
211e302b41
Fix devision by zero for zero lengths
2018-02-10 21:00:08 +01:00
Florian Festi
039fe5f2ee
ElectronicsBox: Fix holes in the lid
2018-02-03 22:33:27 +01:00
Florian Festi
a70222d646
New generator: RackBox
2018-02-03 22:31:53 +01:00
Florian Festi
6ef43a8f48
Add flangedWall() and use it in the ElectronicsBox
2018-02-03 21:52:12 +01:00
Florian Festi
b0bef745b2
ElectronicsBox: Fix top edge and height
2018-02-02 14:06:18 +01:00
Florian Festi
a53c5857c2
New generator: AngledCutJig
...
For making angled cuts in a laser cutter
2018-01-21 22:05:48 +01:00
Florian Festi
8314a413fd
Fix placement of rectangularTriangles
2018-01-21 16:48:43 +01:00
Florian Festi
4e034949d3
Fix tabs for straight edges (eE) with bed bolts
...
Add tabs param to bedBoltHole
2018-01-19 23:48:27 +01:00
Stefan Grosshauser
73e1821e71
enable bedbolts for Straight 'e' and OutSet edges 'E'
...
note that this mostly ignores that positioning bedbolts is done
in the BedBolt class for finger joints.
Coding style could be much improved.
2018-01-18 15:07:33 +01:00
Stefan Grosshauser
07f88cd8e5
make __call__() abstract for BaseEdge; and inherit OutSetEdge from Edge
2018-01-18 15:07:24 +01:00
Florian Festi
62b6016448
OttoLegs: Increase number of tabs for feet and ankles
2018-01-13 21:11:33 +01:00
Florian Festi
68f1c375f7
OttoLegs: Move tabs to outer ring
2017-12-20 18:25:55 +01:00
Florian Festi
7bd2b9e452
HingeEdge: Add tabs to hinge disk
2017-12-20 18:25:55 +01:00
Florian Festi
ce240105a8
Add tabs param to hole()
2017-12-20 18:25:55 +01:00
Florian Festi
c02cc1e95c
Add tabs to corner
2017-12-20 18:25:55 +01:00
Florian Festi
d2496df3bb
Boxes.moveArc()
2017-12-20 18:25:44 +01:00
Florian Festi
703d0e49db
OttoBody: Add tabs to the PCB clamps
2017-12-19 20:10:08 +01:00
Florian Festi
f44f87a25c
Remove print for Python 2 compat
2017-12-19 19:36:37 +01:00
Florian Festi
946d040bac
OttoBot: Move to Misc UI Group
...
Set default leg legth to 34mm
2017-12-18 23:49:18 +01:00
Florian Festi
e26991695a
Mark top side of servo mount.
...
Move servo mounts up as they need to be cut separately (in 5mm)
2017-12-17 15:30:32 +01:00
Florian Festi
e5bb6a5d7a
Add tabs to Boxes.edge() and most Edge classes
...
and Boxes.polyline()
Add to some parts of the Otto Bot
2017-12-15 16:45:32 +01:00
Florian Festi
e0caa3aad8
OttoBody: Add fix for changed ChestHinge
2017-12-09 16:54:20 +01:00
Florian Festi
f0dc89c617
Make play of ChestHinge a regular param
2017-12-09 16:54:10 +01:00
Florian Festi
9dfa95f45b
Fix ChestHinge
...
Add the play of the hinge to the width of the edge
Adjust IntegratedHingeBox
Fixes #45
2017-12-07 22:29:09 +01:00
Florian Festi
319b1f869f
Use unicode for Python 2 compat
2017-11-30 23:32:30 +01:00
Florian Festi
d52b561a2f
Use explicit encoding
2017-11-30 23:30:50 +01:00
Florian Festi
1b2f5791bd
Use Boxes.description in the cli help and the web interface
2017-11-30 22:48:02 +01:00
Florian Festi
3dfd99c68a
Rename method to not collide with new description property
2017-11-30 22:46:35 +01:00
Daniela Festi
72e6dd2213
Added a description to TrafficLight generator
2017-11-30 22:46:35 +01:00
Daniela Festi
fa9ac678c0
Added variables for description of generators to main class
2017-11-30 22:46:35 +01:00
Florian Festi
0d9885ad4c
Stachel: Fix length of pin clamp for middle layer
2017-11-23 21:04:54 +01:00
Florian Festi
2772eba87c
Gears: holes for the shafts
2017-11-22 21:32:25 +01:00
Florian Festi
a7f6ef1b62
Gears: Print sizes
2017-11-22 21:32:04 +01:00
Florian Festi
afbb8d11fd
Gear generator
2017-11-22 21:32:04 +01:00
Florian Festi
eb07c927c4
Support multi line .text()
2017-11-22 21:32:04 +01:00
Florian Festi
f77c19d839
Stachel: Clean up and move generator to Misc
2017-11-21 23:08:39 +01:00
Florian Festi
5a6bc71a7c
Stachel: replace absolute sizes with (internal) parameters
2017-11-21 22:39:57 +01:00
Florian Festi
941676d2b7
New generator: Stachel - an end pin for bass recorders
2017-11-21 22:39:57 +01:00
Florian Festi
08d7a026b1
NemaMount: Add finger holes to copy on another part
...
instead of using the base plate
2017-11-19 19:30:06 +01:00
Florian Festi
642212d2ce
New generator: NemaMount
2017-11-19 18:10:59 +01:00
Florian Festi
46c4960edc
New generator: Display
2017-11-18 18:28:13 +01:00
Florian Festi
45c73e57fb
New generator: EletronicsBox
...
Closed box with screw on top and mounting holes
2017-11-15 17:19:41 +01:00
Florian Festi
90078049f8
Also support d (diameter) param for Boxes.hole()
2017-11-15 17:19:41 +01:00
Florian Festi
36c0ec48fe
TypeTray: Add closedtop parameter
...
Add a top wall turning the type tray into a closed box with multiple
compartments
2017-11-14 20:21:01 +01:00
Florian Festi
7793729688
New generator:LBeam
...
Simple Lbeam made of two wall joint with a right angle
2017-11-14 20:20:08 +01:00
Florian Festi
8d846df9d1
Add D holes to knobs
2017-11-07 23:39:50 +01:00
Marius Bergmann
c0325b52ac
template: Remove invalid parameter and whitespace
2017-11-03 22:54:06 +01:00
Florian Festi
dd2cedeb57
Knobs: Improve param descriptions
2017-10-01 21:13:29 +02:00
Florian Festi
696307397d
Refuse knobs with less than 2 serrations
2017-10-01 21:01:18 +02:00
Florian Festi
98e9f827ec
waivyKnob: Fix number of serrations
...
Used to print only have the number of serrations and didn't close
on uneven numbers
2017-10-01 20:54:04 +02:00
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
Florian Festi
6f0a4cae86
Use polyline() for FingerJointEdge
2016-11-28 21:11:38 +01:00
Florian Festi
aa5fa73c8a
Add edgeObjects() method to Settings to create Edge objects
2016-11-28 21:11:38 +01:00
Florian Festi
f30221d265
Fix .margin() for CompondEdge
2016-11-26 13:40:27 +01:00
Florian Festi
a0be85764a
Use FingerJointSettings.height as margin of Finger Joints
2016-11-17 21:39:32 +01:00
Florian Festi
0fc6527150
BinTray: Switch slots between vertical and horizontal walls
...
to better support the floors.
Also fix margin of BinFront edge class(es)
2016-11-13 11:58:07 +01:00
Florian Festi
c39b33ad14
New BinTray generator
2016-11-13 00:40:55 +01:00
Florian Festi
69ac52aaab
Slide-on Edge: Add optional springs that hold the lid in place
...
Fix pin length to two thicknesses
2016-11-12 17:50:29 +01:00
Florian Festi
43c0178d14
Make fingers for slide-on lid bigger by defaut
2016-11-12 17:01:44 +01:00
Florian Festi
a8af428941
Manually use multiple arcs to get more precise curves
2016-11-02 21:50:44 +01:00
Florian Festi
fe79970cc3
Beautify web UI
...
Watch self.css
2016-11-01 23:46:25 +01:00
Florian Festi
0cde4a71e6
Add params for edge settings to all generators
2016-11-01 23:46:25 +01:00
Florian Festi
7baafebaea
Remove debug print
2016-11-01 23:46:25 +01:00
Florian Festi
748d8b3888
Remove arguments for FingerJoints from default arguments
2016-11-01 23:46:25 +01:00
Florian Festi
ec2a365598
Use arguments from default Setting classes when creating the default edges
2016-11-01 23:46:25 +01:00
Florian Festi
d980c6b95f
Add minimal doc strings to Settings
2016-11-01 23:46:25 +01:00
Florian Festi
c3e2470e8d
Rename style values to something more meaningful
2016-11-01 23:46:25 +01:00
Florian Festi
2ace15475a
Check types in Settings class and support choices
2016-11-01 23:46:25 +01:00
Florian Festi
699fb920bc
Make Hinges more robut against invalid style arguments
2016-11-01 14:04:35 +01:00
Florian Festi
fd3a333cb0
Allow passing new default values to Boxes.addSettingsArgs()
2016-11-01 14:04:35 +01:00
Florian Festi
c816de811b
Beautify doc strings of edge settings and sort argument entries
2016-10-31 22:16:51 +01:00
Florian Festi
3a0df10866
Create arguments from edge settings starting with FingerJointSettings
2016-10-31 22:13:09 +01:00
Florian Festi
5a721df82b
Put arguments into groups and use them to display them in the web interface
2016-10-31 22:11:54 +01:00
Florian Festi
9095c3934f
Return to original point after drawing finger holes
2016-10-30 20:20:56 +01:00
Florian Festi
44b55029a0
Do not break lines on empty callbacks
...
Boxes.cc() did move the coordinate system arround even if the callback is
None. This breaks the continuity of the border. If there is callback the
line is still broken.
2016-10-30 20:20:56 +01:00
Florian Festi
33d11487de
Add edges for a sliding lid
...
Add to top_edges and support in Box2
2016-10-30 20:17:13 +01:00
Florian Festi
2494aeb3ae
Add play param for FingerJoints
2016-10-30 19:48:59 +01:00
Florian Festi
7203320e70
Move finger calculation into FingerJointBase class
2016-10-30 19:48:59 +01:00
Florian Festi
dc045eefe2
Remove no longer needed local vars
2016-10-30 19:48:59 +01:00
Florian Festi
9220bccb68
Clarify burn param
2016-10-20 20:07:23 +02:00
Florian Festi
4e632325e3
Arcade: Increase height of keyboard
2016-10-17 21:29:58 +02:00
Florian Festi
9b4a45a1d5
Arcade: Add width as a parameter
...
Fix movement of side
2016-10-17 21:16:02 +02:00
Florian Festi
ff6ba3595d
New Generator: Arcade - a desktop arcade cabinet
2016-10-17 21:12:12 +02:00
Florian Festi
4f3883374d
Fix position of finger holes
2016-10-15 20:57:36 +02:00
Florian Festi
24a8588485
gears.py: allow zero spokes
2016-10-12 22:52:35 +02:00
Florian Festi
3ce2115365
Add RackEdge
2016-10-12 22:52:35 +02:00
Florian Festi
fc36515fbd
Properly center rack and make it a single line for negative base heights
...
Preparation for RackEdge
2016-10-12 22:52:35 +02:00
Florian Festi
accb6eb45d
gears.py: Support non closed line segments in drawPoints()
2016-10-12 22:52:35 +02:00
Florian Festi
33681db645
Add closed param to kerf()
...
Allow for non close line segments and handle ends correctly
2016-10-12 22:52:35 +02:00
Florian Festi
de7a168377
vectors.py: Don't error out when normalizing zero length vectors
2016-10-12 22:52:34 +02:00
Florian Festi
83f0c813dd
vectors.py: add circlepoint(r, a)
2016-10-02 20:48:22 +02:00
Florian Festi
ad00d64b26
partsMatrix()
2016-10-02 20:48:22 +02:00
Florian Festi
586aeb7fb3
Allow finger joints as top edge
...
Add matching lid to Box2
2016-10-02 20:47:02 +02:00
Florian Festi
0764a3660f
gears.p: More fixes for racks
2016-10-01 23:30:32 +02:00
Florian Festi
bc1d9ce19e
gears.py: fix rack with draw_guides=False
2016-10-01 22:35:32 +02:00
Florian Festi
b0fb04762b
Rotary: Make beam dimmensions parametric
2016-09-28 17:56:42 +02:00
Florian Festi
610a26736e
Support drawing multiple rectangularTriangle(s) at once
...
Add support for setting diagonal edge type
2016-09-26 21:59:52 +02:00
Florian Festi
cc42a8e165
Add rectangularTriangle()
2016-09-26 21:59:52 +02:00
Florian Festi
14acd07faf
Fix latch length
...
Remove no longer needed burn correction
2016-09-26 21:59:52 +02:00
Florian Festi
09ce2bd78b
Fix size virtual size of gear carrier
2016-09-26 21:59:52 +02:00
Florian Festi
46f40bdae6
Planetary: Fix description
2016-08-22 20:48:21 +02:00
schinken
93af56ff9c
Code Reformat #1
2016-08-17 15:07:41 +02:00
Florian Festi
af167295b8
Rotary: Fix spindle mechanism. Increase width of scissor lift to 70mm.
2016-08-05 22:59:35 +02:00
Florian Festi
828cd12d49
Rotary: Add knifethickness param and support variant for honey comb table
2016-08-05 22:59:35 +02:00
Florian Festi
072845be57
Rotary: Make some clearing space over the idle rollers
2016-08-05 22:59:22 +02:00
Florian Festi
77e39669e8
Rotary attachment for laser cutter - first steps
2016-08-05 22:58:39 +02:00
Florian Festi
36d6cd77c3
Fractal jigsaw puzzle. Alpha verion without splitting stuff into pieces.
2016-08-05 21:33:41 +02:00
Florian Festi
db2b753446
Adjust media size for post script output
2016-08-03 22:20:13 +02:00
Florian Festi
db38122125
Remove unnecessary moveTo() commands
...
.move() now leaves some space around parts
2016-08-03 22:20:13 +02:00
Florian Festi
ea0b088356
Add reference length to allow checking the scaling
2016-07-31 18:28:57 +02:00
Florian Festi
419cccc7dd
PlanetaryGear: add maxplanets and deltateeth params
2016-07-31 17:44:19 +02:00
Florian Festi
6dd482be9c
Generate the list of generators automatically
...
Generate new traylayout class to make this work with the web interface
Minor fix to not error out in web interface for non existing doc string
2016-07-31 17:18:17 +02:00
Florian Festi
b6d84b5c58
Mark generators which should not be shown in the web interface
2016-07-31 16:37:17 +02:00
Florian Festi
77ba187c70
Name generator classes properly
2016-07-31 14:15:06 +02:00
Florian Festi
f8b4ef2162
Remove DemoBox from boxes.__init__.py
2016-07-31 13:08:34 +02:00
Florian Festi
776b0a2c27
Fix for extended function signature
2016-07-28 22:46:06 +02:00
Florian Festi
6b30c60602
Fix parts and add hole parameter
...
Fix move params
Remove debugging frames
2016-07-27 23:32:36 +02:00
Florian Festi
4cf33dae50
Move spacing out of the Edge margin() and into Boxes.move()
...
Also move ctx.save() and restoreinto Boxes.move().
Adjust (hopefully) all places using it.
2016-07-27 22:19:32 +02:00
Florian Festi
558b63f20d
Fix size of base plate
...
Pass correct spoke_width
2016-07-25 23:37:12 +02:00
Florian Festi
1849bfd5ab
New PlanetaryGear generator
2016-07-25 19:14:35 +02:00
Florian Festi
7aac41339c
Add gearCarrier()
2016-07-25 18:59:50 +02:00
Florian Festi
e3d552fe91
Allow passing a list of angles to generate_spokes()
2016-07-25 18:56:00 +02:00
Florian Festi
1472d250bc
Draw spoke holes in correct direction (ccw)
2016-07-25 18:56:00 +02:00
Florian Festi
2117bfbc15
Do not error out if drawing does into the negative x direction
...
... unless there is not enough place for the viewport.
2016-07-25 18:56:00 +02:00
Florian Festi
c23b42a369
Fix size calculation for ring gears
2016-07-25 18:56:00 +02:00
Florian Festi
354063068a
Fix parts.disc()
2016-07-25 18:52:48 +02:00
Florian Festi
21948ade3b
Add ai, pdf output formats, tweak dxf and plt
2016-07-23 21:56:10 +02:00
Florian Festi
284857d94a
Fix typo
2016-07-22 00:18:32 +02:00
Florian Festi
575f41beff
Add param for gears
2016-07-19 19:37:21 +02:00
Florian Festi
ed8ab9a364
Fix width of gearbox to make space for two big gears
2016-07-19 19:37:21 +02:00
Florian Festi
a7728d8e32
New GearBox generator
2016-07-16 15:32:06 +02:00
Florian Festi
113783ce32
Add method fro getting sizes of the gears
2016-07-16 15:26:46 +02:00
Florian Festi
a344211a09
Add Parts class to collect stand alone parts like knobs
2016-07-15 18:32:37 +02:00
Florian Festi
d6bd708db5
Python2 compat fix
2016-07-13 20:10:13 +02:00
Florian Festi
5201138390
Add Pulley generator
2016-07-13 20:04:57 +02:00
Florian Festi
8ce1c926cd
Add diameter() and getProfiles() (class) methods
2016-07-13 19:55:04 +02:00
Florian Festi
bc50f3aeda
Fix GT2_2mm pulleys
2016-07-13 19:25:44 +02:00
Florian Festi
01312788bb
Make Pulley a part with callback and move params
2016-07-13 17:41:51 +02:00
Florian Festi
9cdb2e8dc4
Translate code from openscad to Boxes.py
2016-07-13 17:41:51 +02:00
Florian Festi
9a7a291efc
Turn teeth data into valid Python
2016-07-13 17:41:51 +02:00
Florian Festi
cc5fd1d651
Rename as Python module
2016-07-13 17:41:51 +02:00
Florian Festi
90835b6493
Add pulley scad file
2016-07-13 17:41:51 +02:00
Florian Festi
3abf95d665
Add callback and move param to regular gears
2016-07-13 17:41:44 +02:00
Florian Festi
a2a2695c03
Support single callback that do not get any number
2016-07-13 17:38:50 +02:00
Florian Festi
4dd61691d2
Remove no longer needed code
2016-07-13 17:38:50 +02:00
Florian Festi
8eea323718
Add gears to Boxes class
2016-07-13 17:37:57 +02:00
Florian Festi
2a849e7af6
Enable support for rack gears
2016-07-13 17:37:50 +02:00
Florian Festi
0b963f30a1
Fix units to mm
2016-07-13 17:31:36 +02:00
Florian Festi
c0a9d42abd
Cleanups and outer circle for inner gears
2016-07-13 17:31:35 +02:00
Florian Festi
c6b4fcc588
Centercross and pitchcircle
2016-07-13 17:31:35 +02:00
Florian Festi
b86146fe1c
Make generate_spokes a method and port it to boxes
2016-07-13 17:31:32 +02:00
Florian Festi
ff8117b8ba
Add burn correction to the gears
2016-07-13 17:30:23 +02:00
Florian Festi
3af1a11fbc
Draw lines instead of creating svg for the teeth
2016-07-12 16:55:12 +02:00
Florian Festi
56bd463b94
Gears: use argparse for argument handling instead of the Inkscape classes
2016-07-12 16:55:12 +02:00
Florian Festi
ab05372bcc
Fix indentiation
2016-07-12 16:55:12 +02:00
Florian Festi
1fcb6c67b1
Add gear generator plugin for inkscape as a base for own generator
...
This file is borrowed from https://github.com/jnweiger/inkscape-gears-dev
2016-07-12 16:55:12 +02:00
Florian Festi
33a1333ad9
Add FlexTest2 for new 2D flex pattern
2016-07-12 16:54:44 +02:00
Florian Festi
f33f74ab3f
Add 2D flex pattern
2016-07-12 16:54:44 +02:00
Marius Bergmann
6c82bb9e32
Use cairocffi instead of cairo - if available
...
cairocffi is available from pip, which makes setup much easier.
2016-07-12 16:54:07 +02:00
Marius Bergmann
4b487014d0
Fix project for use within virtualenv
...
- Use /usr/bin/env to determine path to python3 instead of a hard-coded
path, so that virtualenv stubs work properly.
- Change package name to 'boxes' ('boxes.py' did not work within
virtualenv).
2016-07-12 13:13:03 +02:00
Florian Festi
f3892b11b4
Fix typo
2016-07-09 23:15:10 +02:00
Florian Festi
3f97d7ad77
Add outside parameter to some generators
2016-07-09 23:10:43 +02:00
Florian Festi
261a6999f4
Add outside parameter that includes the walls into the mesurements
2016-07-09 23:05:07 +02:00
Florian Festi
70d46dd06a
Flexbox4: Limit radius to sane values
2016-07-09 10:55:42 +02:00
Florian Festi
281c80b4e9
flexbox4: Be more generous when merging flex on top
2016-07-09 10:55:42 +02:00
Florian Festi
ea6f45a24b
flexbox2: Be more generous when merging flex on top
2016-07-09 10:55:42 +02:00
Florian Festi
325ae8a134
Make flex centered
...
Leave one space before and after the first/last cut.
Resolves https://github.com/florianfesti/boxes/issues/11
2016-07-09 10:55:42 +02:00
Florian Festi
8f0dc0330e
Merge flex if rounded edges meet at top and bottom
2016-07-09 10:55:42 +02:00
Florian Festi
f65bafbcac
Flexbox2: Limit radius to sane values
2016-07-09 10:55:42 +02:00
Florian Festi
2043ee6d8a
Flexbox: Limit radius to sane values
2016-07-09 10:55:42 +02:00
Florian Festi
20e55ed1c9
Remove left over debug print
2016-07-08 22:17:37 +02:00
Florian Festi
fcda87d48a
Make A style hinges parametrical
2016-07-08 19:51:36 +02:00
Florian Festi
401ef597d8
Make axle disk out of the hinge hole
...
Remove no longer needed .parts() method
2016-07-06 23:07:44 +02:00
Florian Festi
d392f290e7
Move Boxes.fingerHoleEdgeWidth to FingerJointSettings
2016-07-03 16:42:21 +02:00
Florian Festi
28183257d6
Add optional gripping edges at the side of lids
...
And use it for double lid in box2
2016-07-03 16:00:25 +02:00
Florian Festi
a7f0e97012
Add GrippingEdge
...
Still needs to replace Boxes.grip()
2016-06-30 14:25:29 +02:00
Florian Festi
46f1e1d440
Change chars for custom edge from gG to aA
...
Free g for upcoming grip edge
2016-06-30 13:59:13 +02:00
Florian Festi
f3062a106f
Adjust description of box2
2016-06-30 11:50:01 +02:00
Florian Festi
c7dcaa40a2
Fix typo
2016-06-30 11:40:42 +02:00
Florian Festi
19dceeaf78
Add support for split lid to box2 (select top edge with two hinges)
2016-06-30 11:14:26 +02:00
Florian Festi
a032067c5b
Add edge with two hinges to top edge param and edge descriptions
2016-06-30 11:12:51 +02:00
Florian Festi
79b39fa0c0
Add option for a hinged lid to box2
...
Select edge with hinge as top edge to get the lid generated
2016-06-30 10:32:41 +02:00
Florian Festi
60d465c83a
Add edges for hinges
2016-06-30 10:32:41 +02:00
Florian Festi
a1c6652552
Use a more robust way to replace the size and viewport in the svg
...
Increase maximum size of canvas to 10000mm squared.
2016-06-29 14:07:51 +02:00
Florian Festi
9f4e115c9a
Support formats via pstoedit
2016-06-29 13:58:26 +02:00
Florian Festi
a1ab401be4
Remove old svg rewrite code that has alread moved to svgutil.py
2016-06-23 16:12:58 +02:00
Florian Festi
3d60aa096b
Fix default matrix used when parsing svg path without transform attribute
2016-06-22 23:10:26 +02:00
Florian Festi
1c0ec91fe1
Fix parsing for integer numbers
2016-06-22 23:09:16 +02:00
Florian Festi
8be789b134
Add flexbox4 to module list
2016-06-22 23:07:46 +02:00
Florian Festi
43c34e6a42
Fix start of viewport to x=0
...
as we do not have the place to write a different value anyway.
This fixes the scaling in x direction: gh#7
2016-06-22 10:47:47 +02:00
Florian Festi
200f473747
Fix wrong variable access
2016-06-22 10:22:07 +02:00
Florian Festi
9a0d91afcd
Use new name space for the argument parser to avoid non given args to linger
...
in the webserver
2016-06-21 22:08:31 +02:00
Florian Festi
6299e5202d
box2: Add chest like lid
2016-06-21 21:53:24 +02:00
Florian Festi
3c5b3147f4
Fix boolean params in web interface by switching to action=store, type=bool
...
instead of using action=store_true
2016-06-21 21:53:24 +02:00
Florian Festi
b5d74c2151
Make holes blue colored
2016-06-21 19:07:32 +02:00
Florian Festi
142469cc47
Use rectangularHole for FingerHoles
2016-06-21 11:25:17 +02:00
Florian Festi
6688957a72
New flexbox
2016-06-14 20:36:26 +02:00
Florian Festi
de3629eb96
Add new file rebased away during cleanup of previous patchset
2016-06-13 18:57:04 +02:00
Florian Festi
0ba0c19af2
Detect size of drawing and set svg viewport accordingly
...
Remove width and height parameter from Boxes.open()
Code for detecting the size ignores text. Until this is fixed you need
to surround text by lines of some sort.
2016-06-07 20:24:46 +02:00
Florian Festi
1425d730f5
Add support for (angle, radius) tuples as param of polyline
2016-05-25 19:29:35 +02:00
Florian Festi
6b1d1d94d1
One more super() fix
2016-05-22 12:37:02 +02:00
Florian Festi
87582ac535
Fix flextest
2016-05-20 21:33:22 +02:00
Florian Festi
6e9b70b248
Use super properly
...
Restore Python2 compatibility
2016-05-20 20:32:40 +02:00
Florian Festi
d61567d8f1
box2: Add optional click on top
2016-05-03 23:14:08 +02:00
Florian Festi
5250fc768f
New Edge type to clip on sides
...
Still untested due to lackof laser cutter
2016-05-03 23:02:50 +02:00
Florian Festi
c462b1fc4b
Make width of other side of DoveTailJoint width 0
...
This way the dove tails are completely in the inner space. This also makes it
easier to build surrounding walls as the dove tail joint doesn't need extra
space.
2016-04-26 21:52:41 +02:00
Florian Festi
f148421a39
Add edge choices to argparser
2016-04-26 20:17:01 +02:00
Florian Festi
b0fd80e188
Fix FingerJointEdgeCounterPart() width
2016-04-26 12:19:43 +02:00
Florian Festi
e3673df408
Fix surroundingWall to work with Edegs with non zero .(start|end)width()
...
Add Boxes.edgeCorner() to join to Edges with the proper width correction
and use it in rectangluarWall() and surroundingWall()
2016-04-26 11:54:37 +02:00
Florian Festi
3086485a25
traylayout: set size of canvas
2016-04-19 09:49:58 +02:00
Florian Festi
dad830d775
Remove unused helper methods
2016-04-19 09:36:14 +02:00
Florian Festi
b22ee1f760
Replace Edge.width() with .startwidth() and .endwidth()
...
to allow changes in the with of the edge. This is currently needed for the
CompoundEdge but may be used by future edges, too.
2016-04-19 09:33:33 +02:00
Florian Festi
ff1dc830e3
traylayout: fix cuts in inner corners of the floor plate
2016-04-18 17:42:29 +02:00
Florian Festi
b0a2ce8b22
Use local vars instead of calling len()
2016-04-18 17:41:26 +02:00
Florian Festi
3c56abf047
traylayout: Use straight edges on walls with no floor underneeth
...
Still need to move it over to use E in stead of e
2016-04-17 18:08:09 +02:00
Florian Festi
2ec1cb287c
More fixups...
...
Turns out BaseEdge.startAngle and BaseEdge.endAngle are already used - sortof
2016-04-17 18:04:23 +02:00
Florian Festi
ae0687d7f1
Fix rebase mixup
2016-04-17 17:43:16 +02:00
Florian Festi
00706ff3f6
Move description into Edge classes
...
Add boxes.edges.getDescriptions()
2016-04-17 16:37:29 +02:00
Florian Festi
a6fd8da8f1
Add an abstract BaseEdge class
2016-04-17 16:35:13 +02:00
Florian Festi
b4f4369faa
Add argparse type to handle edges
...
Switch over bottom_edge and top_edge args
Support this type in web UI
Refactor creating the table row out of the different UI inputs
2016-04-10 22:51:57 +02:00
Florian Festi
1115683449
Add separating comments
2016-04-10 22:51:25 +02:00
Florian Festi
5c20ecef12
Fix typos in docs
2016-04-09 20:54:05 +02:00
Florian Festi
68d3ed59f8
Add back callback 4 for surroundingWall when the y sides are zero
2016-04-09 20:52:48 +02:00
Florian Festi
8cd295328c
Use FingerHoles instance for drawing finger holes
...
Various places used Boxes.fingerHolesAt which did use the default setting. This way it was not possible to have multiple finger hole settings active at the same times for finger holes.
Now all parts that draw finger holes do no longer have FingerJointSettings but instead have an instance of FingerHoles. Boxes.fingerHolesAt also is an instance
of FingerHoles joining a setting with all the other default finger joint classes.
2016-04-09 16:18:05 +02:00
Florian Festi
223f078726
Add StackableEdge class
2016-04-09 15:44:27 +02:00
Florian Festi
311fef45bd
Mark sections dealing with different Edge types
2016-04-09 14:29:09 +02:00
Florian Festi
ee8bd1f02b
Save thickness in Settings instances
2016-04-09 14:29:09 +02:00
Florian Festi
7048681f3e
Add params for top and bottom edges of box2
2016-04-09 11:47:12 +02:00
Florian Festi
6cf7af75c6
Fix bedbolts in box2
2016-04-06 20:00:19 +02:00
Florian Festi
fa0181311e
Add to the documentation
...
Move content of API.txt into the docs
Rename TODO.txt and add it to the docs
2016-04-06 17:52:51 +02:00
Florian Festi
d2e1297875
Fix typo
2016-04-02 21:15:05 +02:00
Florian Festi
0399bafe1b
Remove the Edges instances form the Boxes name space.
...
Move over all generators to use Boxes.edges.
2016-04-02 20:52:27 +02:00
Florian Festi
6a6336c002
Fix finger setting messup
2016-04-02 20:29:09 +02:00
Florian Festi
b99a381b4f
Fix doc string to be used in UI
2016-04-02 18:02:00 +02:00
Florian Festi
25be6dbc94
Add CLI params for basic finger joint settings
...
Change generators over to set defaults instead of overwriting the settings
2016-04-02 17:39:26 +02:00
Florian Festi
a3ceb74024
Remove left over print
2016-03-30 21:11:42 +02:00
Florian Festi
9322467c7b
Use stretch setting in surroundingWall()
2016-03-30 21:09:19 +02:00
Florian Festi
f82bba9682
Add left and right param to surroundingWall()
2016-03-30 20:55:55 +02:00
Florian Festi
15cbc7d285
Fix Boxes.hole()
2016-03-30 20:52:21 +02:00
Florian Festi
e32a314c81
Add template for writing generators
2016-03-29 22:10:54 +02:00
Florian Festi
77773573fb
Ommit zero length sides in surroundingWall()
2016-03-29 21:29:57 +02:00
Florian Festi
27645cedbe
Add dummy .render() method
2016-03-29 19:15:32 +02:00
Florian Festi
cd598d541e
Add encoding
2016-03-29 19:15:13 +02:00
Florian Festi
09871be797
Add minimal doc strings
2016-03-28 18:35:32 +02:00
Florian Festi
34e06cace5
Use output param for generating layout file
2016-03-28 12:16:06 +02:00
Florian Festi
70bb1bf5af
Move box generators into boxes.generators sub module
2016-03-25 22:30:07 +01:00
Florian Festi
be6b02fe6f
Moved edges out into their own submodule
2016-03-25 14:10:14 +01:00
Florian Festi
9513d2520f
Make boxes a module
2016-03-25 14:10:14 +01:00
Florian Festi
7f8a3e7087
Add top level executable
2016-03-23 22:15:34 +01:00