Florian Festi
6440bcb639
Get text working for both SVG and PS
...
Move coordiate translation to to finish() method
Use Latin1 encoding for text PS in output
Add Boxes.set_font() to support basic font styles:
serif, sans-serif and monospaced
in normal, bold, italic and both bold and italic
2020-05-18 22:30:28 +02:00
Florian Festi
fddf78fcc3
Add metadata to the SVG files right away
2020-05-18 22:30:28 +02:00
Thomas Kalka
fd48e57f33
Implement new backend without cairo
...
by providing SVGSurface, PSSurface and Context classes
Disable post processing as we want to create proper files right away
2020-05-18 22:30:28 +02:00
Thomas Kalka
da0e390789
do not start holes with the corner
2020-05-18 22:30:28 +02:00
Florian Festi
6091cf955f
Comsole2: Move to Box group in the UI
2020-05-10 16:13:54 +02:00
Florian Festi
27264f8c08
New fingerHoleRectangle() function
2020-05-10 16:12:27 +02:00
Florian Festi
949c8d8324
Fix polygonWalls() for uneven number of walls and symetrical==True
...
For an uneven number of walls one needs to have two different edges
to be able to close the loop.
2020-05-02 00:43:33 +02:00
Florian Festi
966a6c77cf
Add "rotated" to possible move terms
2020-05-01 23:35:55 +02:00
Florian Festi
c4ca1b4dfa
Also translate Edge descriptions in ArgparseEdgeType
2020-04-13 18:45:17 +02:00
Florian Festi
0178a853c3
Add Inkscape style meta data to SVG output
2020-03-01 16:53:41 +01:00
Florian Festi
22450a6fe7
roundedPlate: Fix placement
2020-02-28 17:52:49 +01:00
Florian Festi
6476a51fc4
roundedPlate: Fix callback positioning
2020-02-28 17:52:49 +01:00
Florian Festi
223ac26122
roundedPlate: new extend_corners param
2020-02-28 17:52:18 +01:00
Florian Festi
26b33d62ff
roundedPlate: Properly lookup edge
2020-02-28 17:46:44 +01:00
Florian Festi
7c004e2d2c
New primitive: Boxes.step()
...
Outset a line by a given margin - negative values for insetting
2020-02-28 17:46:44 +01:00
Florian Festi
0394d418c1
dHole: Prevent division by zero
2020-02-01 15:30:18 +01:00
Florian Festi
7943fa2390
flex2D: Fix division by zero for too small patterns
2020-02-01 15:22:35 +01:00
Florian Festi
95f2fbeb82
corner(): Make more robust against division by zero
2020-02-01 15:03:49 +01:00
Florian Festi
f8401aac75
rectangularRectangle: Make angle calculation more robust
2020-02-01 14:43:45 +01:00
Florian Festi
10e2085eef
Remove Python 2 compat foo
2019-12-21 17:47:54 +01:00
Florian Festi
4d53bd17cc
partsMatrix: support width=0 for all parts in one row
2019-12-16 20:07:30 +01:00
Florian Festi
182d222f01
Prevent not having any sections at all for argparseSections
2019-11-24 19:10:35 +01:00
Florian Festi
d2d97b01c9
grip(): Prevent division by zero
2019-11-24 16:42:47 +01:00
Florian Festi
b0b35d6084
Mention BurnTest in docs and in the burn parameter description
2019-10-19 12:29:56 +02:00
Florian Festi
52484b0d55
adjustSize(): add support for edge chars
2019-09-08 23:26:23 +02:00
Marko Luther
ca1a3575d0
forward holesSettings to hexHolesRectangle from within rectangularWall
2019-07-21 01:21:55 +02:00
Florian Festi
fff74cf382
Add metadata as a xml comment
...
Resolves #66
2019-07-07 13:43:04 +02:00
Florian Festi
6c85ae7ea2
Add trapezoidSideWall() that supports radius param for additional strength
2019-06-21 23:16:59 +02:00
Florian Festi
6a809e17e7
Move trapezoidWall() from UnevenHeightBox to Boxes class
2019-06-21 21:37:57 +02:00
Florian Festi
01ca56fdce
Support all different section syntaxes (sx, sy, ...) side by side
2019-06-21 21:37:57 +02:00
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