Germain Lemasson
e8e248994b
Add a StorageSelf generator. This is a shelf for storing TypeTray boxes.
...
It is based on TypeTray generator. The sh parameter replace the sx parameter.
It is not a subclasse of TypeTray in order to have the top and bottom at
the right place.
2019-06-01 12:52:34 +02:00
Florian Festi
46157b2030
Add .mirrorX() and .mirrorY() wrappers
...
These are especially useful for warpping callbacks.
2019-05-11 17:17:11 +02:00
Florian Festi
f22be6f6d5
Fix polygonWalls for inner corners
2019-04-14 18:17:09 +02:00
Florian Festi
0b781ce7ef
Add turtle param to polygonWall
...
to allow using it as turtle graphic command instead of a part
2019-04-14 18:17:09 +02:00
Florian Festi
dc11929258
Fix _polygonWallExtend for corners with negative angles
2019-04-14 18:17:09 +02:00
chrysn
95dba0dee7
box: raise NotImplementedError
...
NotImplemented is a sentinel for comparisons; encountering this as an
exception would result in a meta-error.
2019-04-10 17:56:12 +02:00
Florian Festi
7aec26e893
New .polygonWall() part
...
Similar to .polyline() but with (f) edges on the outside
.polygonWalls draws the surrounding walls
2019-03-24 21:50:36 +01:00
Florian Festi
4f4d947253
.corner(): Fix tabs for small arcs
2019-03-24 21:50:11 +01:00
Florian Festi
f178215f20
.corner(): Also accept (angle, radius) tuples
2019-03-24 21:50:11 +01:00
Martin Müller
fb4791f803
Fix typo in help text for tabs
2019-02-26 00:02:30 +01:00
Florian Festi
8640514daf
Omit reference for svg_Ponoko format
2019-02-14 21:36:54 +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
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
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
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
73050d4969
Make .continueDirection() more private
2018-12-22 17:23:33 +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
ed6855d79c
RoundedPlate: Call first callback only once
...
Remove left over call to .cc()
2018-11-09 21:01:00 +01: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
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
3767598d5d
Fix placement of rectangularHole() which was off by one burn
2018-08-27 15:09:17 +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
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
af7f29c51f
Add (wall)pieces param to roundedPlate() and surroundingWall()
2018-08-06 19:46:23 +02:00
Florian Festi
05c41be4d1
Remove or comment debugging outputs
2018-07-24 20:36:13 +02:00
Florian Festi
2c7f9f4dc0
UniversalBox: Add f and F as possible top_edge types
2018-07-02 19:07:26 +02:00
Sebastian Reichel
d75ea78196
Add support for specifying font color/size
2018-06-27 21:48:35 +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
2828a85725
Add flatHole() for shafts that are flattened on both sides.
2018-05-05 19:08:37 +02:00
Florian Festi
65358c9fad
Add hint to outside param to nominally inner sizes
2018-04-05 22:55:23 +02:00
Florian Festi
211e302b41
Fix devision by zero for zero lengths
2018-02-10 21:00:08 +01:00
Florian Festi
6ef43a8f48
Add flangedWall() and use it in the ElectronicsBox
2018-02-03 21:52:12 +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
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
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
1b2f5791bd
Use Boxes.description in the cli help and the web interface
2017-11-30 22:48:02 +01:00
Daniela Festi
fa9ac678c0
Added variables for description of generators to main class
2017-11-30 22:46:35 +01:00
Florian Festi
eb07c927c4
Support multi line .text()
2017-11-22 21:32:04 +01:00
Florian Festi
90078049f8
Also support d (diameter) param for Boxes.hole()
2017-11-15 17:19:41 +01:00
Florian Festi
64c980817b
Manully select font face
2017-09-19 22:53:27 +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
93b94d6e70
Fix move="right" for partsMatrix
2017-08-07 17:08:16 +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
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
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
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
c2ab70eefe
Add Boxes.circle() primitive
2017-03-22 22:03:09 +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
e0a4d06c43
Hackish way to make scriptsboxes to work with Inkscape.
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
1bed3f2a39
rectangularWall() fix positioning with ignore_widths
...
containing parts of the lower left corner.
2017-02-22 20:01:29 +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
dd6c5560f9
Support chars es edge parameters in Boxes.edgeCorner()
2017-02-12 15:00:17 +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
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
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
f982918205
Add r param to rectangularTriangle()
2017-02-04 15:01:16 +01:00
christopher
c36d819e10
Change defaults
2017-01-30 09:37:10 +01:00
Florian Festi
6ef950816e
Add edge parameter to Boxes.roundedPlate
2017-01-21 13:54:58 +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
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
aa5fa73c8a
Add edgeObjects() method to Settings to create Edge objects
2016-11-28 21:11:38 +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
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
fd3a333cb0
Allow passing new default values to Boxes.addSettingsArgs()
2016-11-01 14:04:35 +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
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