Florian Festi
6cd6e1826e
Close paths in SVG back end
2020-05-23 15:03:16 +02:00
Florian Festi
07e53868f6
Remove duplicated "f" option in top_edge parameter
...
Thanks to Zhong for pointing this out!
2020-05-22 13:32:43 +02:00
Florian Festi
c978266906
DividerTray: Fix bottom edge for middle walls
2020-05-22 10:25:55 +02:00
Florian Festi
2fc59b48df
Remove reference to cairo
2020-05-18 22:30:28 +02:00
Florian Festi
46b1e8684f
Add estimate for extents of text
...
Fix adjustment of SVG coordinates
2020-05-18 22:30:28 +02:00
Florian Festi
95dc7f5731
Fix padding for SVG
2020-05-18 22:30:28 +02:00
Florian Festi
39e2b0cfc3
Split all arcs > 100° into smaller pieces
...
This is necessary to make the approximation with Bezier curves work
2020-05-18 22:30:28 +02:00
Florian Festi
3c94b4bf76
Don't try to draw arcs with an zero angle
...
Thanks to Bruno Ferrarese <https://github.com/bferrarese > for finding and
reporting this issue!
2020-05-18 22:30:28 +02:00
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
492e7fb4dd
SVGSurface: Use horizontal and vertial lines
...
instead for just regular lines. This saves one number per point involved.
2020-05-18 22:30:28 +02:00
Florian Festi
9e08691e15
Remove SVG and PS post processing code
...
Remove Extend class from svgutil
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
Florian Festi
0594ee703d
Replace svgwrite with xml.ElementTree
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
89805b4804
New generator: SideDoorHousing
2020-05-12 21:54:59 +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
928be1620b
UniversalBox: Change default for outset to True
...
for edge with hinge eye (i) top_edge
2020-05-05 22:03:20 +02:00
Florian Festi
1f2d35082d
Console2: Properly name front_height parameter
2020-05-05 18:28:52 +02:00
Florian Festi
0acc9c2a38
Console2: Move back wall latch down
...
to reduce chance of it conflicting with the front panel
2020-05-05 18:13:03 +02:00
Florian Festi
05a7e02486
Console2: Images, descriptions and parameters for hatches
...
Add three new parameters: removable_backwall, removable_panel and glued_panel
that control which of the service hatches are present and how to attach
the front panel
2020-05-05 09:44:07 +02:00
Florian Festi
93273f2fc7
Console2: Improve and fix latches
2020-05-02 18:42:36 +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
e2d716aeb8
Console2: Fix bottom edge for front and back
2020-05-01 23:49:05 +02:00
Florian Festi
d45ccba307
New generator: Console2
2020-05-01 23:36:44 +02:00
Florian Festi
966a6c77cf
Add "rotated" to possible move terms
2020-05-01 23:35:55 +02:00
Florian Festi
54d4b6bebd
Console: Fix x, y confusion
2020-04-29 12:25:46 +02:00
Florian Festi
279b60abc8
New generator: Console
2020-04-28 22:25:47 +02:00
Florian Festi
9ea1d55a94
Add translate param
2020-04-20 16:30:33 +02:00
Stefan Schwarz
2f2256ec7d
Keypad support for CPG151101S11 hotplug sockets
2020-04-13 20:11:44 +02:00
Florian Festi
c4ca1b4dfa
Also translate Edge descriptions in ArgparseEdgeType
2020-04-13 18:45:17 +02:00
Florian Festi
f961cd533d
KeyPad: Improve parameter descriptions
2020-04-13 13:53:38 +02:00
Florian Festi
195c68c28f
Rail holes dist ( #213 )
...
* added EurorackSkiff Generator
* fixed holes distribution
2020-03-05 23:09:03 +01:00
Stefan Schwarz
3a14e1796b
Generator for keypads with mechanical switches
2020-03-04 20:24:47 +01:00
Florian Festi
0178a853c3
Add Inkscape style meta data to SVG output
2020-03-01 16:53:41 +01:00
Florian Festi
80edaf5ac4
New generator: BottleStack
2020-02-29 18:19:59 +01:00
Florian Festi
4c338e1c62
RoundedBox: Add edge_style parameter
2020-02-28 17:52:57 +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
Erwin Jansen
a0338a559f
Add a bottom to the divider tray.
...
This add support for the generation of a bottom for the divider tray.
The bottom can be generated by passing the --bottom=True flag.
This makes it possible to generate ./static/samples/DividerTray.jpg
2020-02-26 21:00:26 +01:00
Florian Festi
eeb1baf352
Gear: don't allow less than 2 teeth
2020-02-01 15:30:53 +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
ec9d911142
DividerTray: Use ValueError instead of assert to treat this as wrong user input
2020-02-01 15:17:18 +01:00
Florian Festi
069dd853aa
BinTray: limit front parameter
2020-02-01 15:14:12 +01:00
Florian Festi
95f2fbeb82
corner(): Make more robust against division by zero
2020-02-01 15:03:49 +01:00
Florian Festi
2121228036
TrayLayout: Error out if tray is just a single wall
2020-02-01 14:51:38 +01:00
Florian Festi
f8401aac75
rectangularRectangle: Make angle calculation more robust
2020-02-01 14:43:45 +01:00
Florian Festi
2a7e1e62d1
PaintStorage: Prevent division by zero
2020-02-01 14:31:24 +01:00
Florian Festi
dd0f2d748c
ChestHingeSettings: check pin_height for minimal size
2020-02-01 14:27:17 +01:00
Florian Festi
0f3eb5b21a
StackableSettings: check angle for invalid values
2020-02-01 14:16:26 +01:00
Florian Festi
9706816fe4
gears: prevent division by zero
2020-02-01 13:59:30 +01:00
Stefan Reichhard
37bff9d358
fixed d3 diameter (mounting screw holes)
2020-01-22 16:11:18 +01:00
Florian Festi
1f3110c6fa
New generator: TriangleLamp
2020-01-21 21:34:02 +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
e2b87af2a4
UniversalBox: Add outside parameter
...
Fixes : #144
2019-12-14 19:13:40 +01:00
Florian Festi
aba9631b00
Make joints of box sides go to the very bottom
...
for NotesHolder, TypeTray and UniversalBox.
The same should be done to many other boxes as soon as they get the
bottom_edge parameter
Resolves : #111
2019-12-14 14:18:38 +01:00
Florian Festi
8cb5a8e042
Check values of flex settings
2019-12-14 13:09:43 +01:00
Florian Festi
fe9555a79f
checkValues
2019-12-14 13:09:43 +01:00
Florian Festi
c5474e7488
DiscRack: Limit lower_factor and rear_factor to smaller than one
2019-12-14 12:23:08 +01:00
Florian Festi
024b574763
TrayLayout: Add default for layout param
2019-12-14 12:14:24 +01:00
Florian Festi
093e10a3ac
AngledBox: Use FingerJointSettings for vertical edges, too
2019-12-06 23:37:22 +01:00
Florian Festi
bd1db150c7
New geneator: SpicesRack
2019-11-29 19:58:27 +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
Marius Bergmann
9f8b84b3f1
add parameters for banana socket and flipswitch diameters
2019-11-20 11:57:13 +01:00
Marius Bergmann
2c367562a9
remove commented code
2019-11-20 11:57:13 +01:00
Marius Bergmann
90fdf897a9
formatting: whitespace cleanup
2019-11-20 11:57:13 +01:00
Florian Festi
c67d1f874c
StorageShelf: Add retainer_hole_edge param
...
to allow strengthening the retainer walls by using an h edge.
Also use a h edge on the bottom retainer wall if selected as bottom_edge.
2019-11-09 23:32:12 +01:00
Florian Festi
e8cda89381
StorageShelf: Fix holes for inner vertical walls
2019-11-09 23:31:26 +01:00
Florian Festi
71711baa1a
StorageShelf: Add retainer wall
...
This patch does not add finger joints to the vertical walls to attach the
retainer walls as the walls are likely to be to small to be able to make use
of them. In hte long run they should be added, though.
2019-11-09 17:10:23 +01:00
Florian Festi
0cdc930459
StorageShelf: Change front edge from E to e
...
This makes the shelf one thickness less deep - as it should be
2019-11-09 16:10:30 +01:00
Florian Festi
923798beb9
SBCMicroRack: Fix dowel diameter
2019-11-07 15:38:16 +01:00
Florian Festi
2860a32360
SBCMicroRack: Comment out unfinished fan parameter
2019-11-07 15:38:16 +01:00
Florian Festi
d9c190073b
SBCMicroRack: Don't draw bottom fingerholes twice
2019-11-07 15:38:16 +01:00
Florian Festi
af6c9be8f7
SBCMicroRack: Rearrange parts
2019-11-07 15:38:16 +01:00
gmorell
569eb2f49c
New generator: SBCMicroRack
2019-11-07 15:37:57 +01:00
Florian Festi
199251ae52
Add lid for StackableEdge (S) as top_edge
2019-11-04 17:13:12 +01:00
Florian Festi
83b5363bc8
StackableEdge: Fix margin for upper (S) variant
2019-11-04 17:05:18 +01:00
Florian Festi
4ac46840d2
NotesHolder: Fix various issues
...
Code for opening == 0.0 was broken (See #187 )
Fixed placement of bottom
Fixed margin of USlotEdge
Resolves : #187
2019-11-04 08:52:26 +01:00
Florian Festi
927f483c19
New generator: LaserHoldfast - A holdfast for honey comb tables
2019-10-19 23:47:44 +02:00
Florian Festi
e2cb90db89
NotesHolder: Split front into two pieces and set better default values
...
Resolves : #129
2019-10-19 21:49:43 +02:00
Florian Festi
b0b35d6084
Mention BurnTest in docs and in the burn parameter description
2019-10-19 12:29:56 +02:00
Florian Festi
cfbcbb065c
Clarify doc string for FingerJointSettings.play
2019-10-19 12:03:57 +02:00
Florian Festi
011024f0a4
TrayLayout: Add comment to clarify the purpose of the classes
...
Resolves : #179
2019-10-18 19:06:07 +02:00
Florian Festi
228335a993
BurnTest: fix part placement
2019-10-13 18:42:40 +02:00
Florian Festi
89ea774a39
New generator: BurnTest
2019-10-13 18:39:06 +02:00
Florian Festi
13ecfc9914
Support springs for finger joints (FingerJointSettings.style)
...
Resolves : #177
2019-10-11 22:32:57 +02:00
Florian Festi
f5ed90ca88
SlatwallWrenchHolder: Add extra_distance parameter for Jonas
2019-10-10 20:00:22 +02:00
Florian Festi
8afdfdf3f5
New generator: BaynonetBox
2019-09-23 23:44:02 +02:00
Florian Festi
877915eb74
Arcade: Make height of monitor and depth of keyboard adjustable
...
Resolves : #166
2019-09-23 21:42:57 +02:00
Florian Festi
d6495fc7b4
DrillBox: Fix font size
...
Now that the text() function has a fontsize parameter, setting the font size
on ctx before calling text() has no impact.
Resolves : #173
Thanks to Marko Luther for reporting and suggesting this fix!
2019-09-23 12:15:49 +02:00
Florian Festi
3ba90c517c
TrayLayout: Fix cli
...
TrayLayout was still trying to produce a drawing and failed. Now TrayLayout is
not using most of the infrastructure and only TrayLayout2 has the capacity to
create a drawing.
Resolves : #172
2019-09-22 22:37:33 +02:00
Florian Festi
b124c96c63
UnevenHeightBox: Use lid and bottom_egde for height calculation
...
when "outside" is set
2019-09-08 23:26:23 +02:00
Florian Festi
657b978aa0
StorageShelf: Use top and bottom_egde for height calculation with "outside" set
2019-09-08 23:26:23 +02:00
Florian Festi
605692f751
StorageRack: Use top and bottom_egde for height calculation with "outside" set
2019-09-08 23:26:23 +02:00
Florian Festi
5c0cc4d732
SlatwallTypeTray: Remove unused code carried over from TypeTray
2019-09-08 23:26:23 +02:00
Florian Festi
2b0bdde145
SlatwallTypeTray: Adjust height according to bottom_edge if outside selected
2019-09-08 23:26:23 +02:00
Florian Festi
52484b0d55
adjustSize(): add support for edge chars
2019-09-08 23:26:23 +02:00
Guillaume Collic
6c9d23af6e
New generator DividerTray
2019-08-30 21:00:32 +02:00
Florian Festi
c3185f5129
Rename to Rack19HalfWidth to better fit with other Rack boxes
...
Move to Box group
Support more than one row of equipement
Move defaults to arguments to conform with general coding style
2019-08-30 12:27:13 +02:00
Stefan Schwarz
681ebbb694
add h19rack for a ported half 19inch rackmount
2019-08-30 11:58:21 +02:00
Florian Festi
9a17e3efa9
Precompile optimizations REs and fix performance issue
2019-08-22 00:31:45 +02:00
Florian Festi
39bd912c90
Harden Extend.addPoint for None arguments
2019-08-18 14:46:13 +02:00
Florian Festi
9db79243f8
Make Slide-on Lid with pin easier to insert
...
Make slot half a thickness wider and round the corners
Resolves : #156
Thanks to Matthijs Kooijman for suggesting this change!
2019-08-17 00:05:13 +02:00
Florian Festi
0409bcbe65
Fix SVG merging for Inkscape
...
Resolves : #163
2019-08-16 22:37:42 +02:00
Florian Festi
65d2293e25
Fix Extend.__add__ for None values
2019-08-15 23:12:35 +02:00
Florian Festi
02988d12c5
Catch exceptions from failed ps2edit calls
2019-08-15 23:12:35 +02:00
Florian Festi
c81d23e605
SlatwallDrillBox: Fix all kind of errors
2019-08-15 23:12:35 +02:00
Florian Festi
e4bdc190bb
Flexbox3: Fix lid length
2019-08-08 22:53:08 +02:00
Florian Festi
73422b0faf
Fix name space handling in new svg code
2019-07-31 23:40:48 +02:00
Florian Festi
6a3a9b984a
SlatwallTypetray: Fix side joints of front wall (F -> f)
2019-07-31 23:40:06 +02:00
Matthijs Kooijman
8ecf04cbe8
Fix handling of space in LidSideRight/Left
...
Previously, the extra space was added above the first pin and below the
(optional) second pin. This would cause the lid to misalign with the
holes in the back wall, making it harder to close the lid.
With this commit, the extra space is divided evenly above and below the
nominal position of the pin.
For this to work, the startwidth (or endwidth, depending on the side) is
slightly adjusted (since the start of the first pin slot is actually
generated by the adjacent edge). This moves the starting point, so the
location of the spring hole is adjusted to compensate for that.
2019-07-27 13:30:06 +02:00
Matthijs Kooijman
3bd4dc9907
Fix spring hole offsets by burn in LidSideRight/Left
2019-07-27 13:30:06 +02:00
Matthijs Kooijman
4691a65a29
Let LidSideRight/Left respect edge_width
...
This allows modifying the height of the wall that extends above the lid.
The box back wall (with holes) would already support edge_width, so this
makes it supported on all three walls where needed.
2019-07-27 13:30:06 +02:00
Matthijs Kooijman
db1da4ec12
Fix hole positions offset by burn in FingerHoleEdge
...
When rendering the FingerHoleEdge, the current position would be
corrected for burn (e.g. it would be on the center of the laser path,
rather than the actual edge of the final part). However, the FingerHoles
class (or actually the rectangularHole method called by it) that draws
the actual holes already corrects for burn, which caused the hole
position to be offset by the burn value.
This offset was particularly problematic when making a sliding lid,
since the holes would not align perfectly with the lid, making it hard
to close the lid. With this change, the sliding slots in the side walls
and the holes in the back wall align perfectly (though only when the lid
settings have zero play, which is a separate problem).
This commit fixes FingerHoleEdge (and its subclass LidHoleEdge), but
there might be other users of the FingerHole class (usually indirectly
through boxes.fingerHolesAt) that still have the same problem.
2019-07-27 13:30:06 +02:00
Matthijs Kooijman
eeb2c344d5
Clarify where l and L edges should be used
2019-07-27 13:30:06 +02:00
Marko Luther
ca1a3575d0
forward holesSettings to hexHolesRectangle from within rectangularWall
2019-07-21 01:21:55 +02:00
Rotzbua
c06b95d2d0
link: http -> https
2019-07-20 00:23:29 +02:00
Florian Festi
0a55e9ca6b
Optimize SVG paths
...
Resolves #63
2019-07-19 21:49:55 +02:00
Florian Festi
a38254667c
Remove no longer needed line in _template.py
2019-07-18 20:55:07 +02:00
Florian Festi
17d7cd80ab
Don't show generators in modules starting with underscore (templates)
2019-07-12 00:47:09 +02:00
Florian Festi
11174f2ecc
New generator SlatwallDrillBox
2019-07-12 00:43:06 +02:00
Florian Festi
88e99a5726
New generator: FlexBox5
...
Resolves #147
2019-07-12 00:24:50 +02:00
Florian Festi
e6f431ab15
New generator: MakitaPowerSupply
2019-07-07 16:26:29 +02:00
Florian Festi
fff74cf382
Add metadata as a xml comment
...
Resolves #66
2019-07-07 13:43:04 +02:00
Florian Festi
a19debf1bd
Rename remaining Slatwall generators from Sw* to Slatwall*
2019-07-04 22:59:32 +02:00
Florian Festi
573b630adc
New generator: SlatwallPlaneHolder
2019-07-04 22:39:34 +02:00
Florian Festi
31d46088c2
Move drawing to origin for SVGs
2019-07-04 17:52:28 +02:00
Florian Festi
635a42a25e
Use eTree to caclulate the eytend of the drawing
...
Also check symbols (text character) now
2019-07-04 17:52:28 +02:00
Florian Festi
d162c769b4
Use built in eTree implementation instead of lxml
2019-07-04 17:52:08 +02:00
Florian Festi
4a9cdc8d8e
Switch to eTree as a xml library (instead of minidom)
2019-07-04 17:48:53 +02:00
Stefan Grosshauser
443c8a1c38
properly rewrite svg viewPort using minidom for xml
...
This avoids raising the 'Not enough space for size' exception.
2019-07-04 17:48:53 +02:00
Florian Festi
abdab6866a
New generator: StorageRack - Box with rails to slide other boxes in
2019-06-30 20:53:42 +02:00
Florian Festi
2f7603b4b4
New generator: SlatWallWrenchHolder
2019-06-30 20:53:42 +02:00
Florian Festi
0105957c05
New generator: SlatWallChiselHolder
2019-06-30 17:19:02 +02:00
Florian Festi
138dffbf2a
New generator: SlatWallCaliperHolder
2019-06-30 15:48:09 +02:00
Florian Festi
be8aed394a
New generator: Slatwall PlaneHolder
2019-06-30 15:18:11 +02:00
Florian Festi
09df973d69
New generator: SlatwallConsole - an outset and angled plate to mount stuff to
2019-06-22 00:07:23 +02:00
Florian Festi
810c3dbe3e
New generator: SwTypeTray - a tray to hang at a slat wall
2019-06-22 00:05:57 +02:00
Florian Festi
f1ce996aae
New generator: SwPliersHolder - a bar to hang pliers on
2019-06-22 00:04:30 +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
Florian Festi
db706fc939
SlatWall edges: Make bottom hook selectable, various fixes
2019-06-21 21:36:28 +02:00
Florian Festi
1e35a3b9ed
New generator: SwSlottedHolder
...
A tool holder for slat wall
2019-06-21 21:22:10 +02:00
Florian Festi
5cef906a9a
Add SlatWallHoleEdge (dD) classes
...
Similar to FigerHolesEdge (h)
2019-06-21 18:47:29 +02:00
Florian Festi
9415a6864f
Add boxes/generators/_swtemplate.py as a starting point for Slat Wall boxes
2019-06-13 19:02:02 +02:00
Florian Festi
aadf5ceafc
Add Edge types, example and UIGroup for slat wall compatible boxes
2019-06-13 19:00:32 +02:00
chrysn
753422fa46
New generator DiscRack
...
A rack for storing disk-shaped objects vertically next to each other
2019-06-01 13:09:01 +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
a6ca723759
Mirror holes on the other walls
...
to have them match up. Otherwise boxes with non symetric top edges don't fit
together.
Fixes #141
2019-05-11 17:18:10 +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
93c2093ef3
AllEdges: Fix spacing and add edegs around the corner
...
to make it more clear which direction the edges are pointing.
Related #132
2019-04-14 18:17:09 +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
ce8576d39e
New generator: HeartBox
2019-03-24 21:52:26 +01: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
Florian Festi
c09ee50fbd
New generator: NotesHolder
2019-03-23 12:36:21 +01:00
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