laser-cutter 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -10,7 +10,6 @@ Gemfile.lock
10
10
  InstalledFiles
11
11
  _yardoc
12
12
  coverage
13
- doc/
14
13
  lib/bundler/man
15
14
  pkg
16
15
  rdoc
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,117 @@
1
+ Contributing to Laser-Cutter
2
+ ======================
3
+
4
+ You're encouraged to submit [pull requests](https://github.com/kigster/laser-cutter/pulls), [propose features and discuss issues](https://github.com/kigster/laser-cutter/issues).
5
+
6
+ #### Fork the Project
7
+
8
+ Fork the [project on Github](https://github.com/kigster/laser-cutter) and check out your copy.
9
+
10
+ ```
11
+ git clone https://github.com/contributor/laser-cutter.git
12
+ cd laser-cutter
13
+ git remote add upstream https://github.com/kigster/laser-cutter.git
14
+ ```
15
+
16
+ #### Create a Topic Branch
17
+
18
+ Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.
19
+
20
+ ```
21
+ git checkout master
22
+ git pull upstream master
23
+ git checkout -b my-feature-branch
24
+ ```
25
+
26
+ #### Bundle Install and Test
27
+
28
+ Ensure that you can build the project and run tests.
29
+
30
+ ```
31
+ bundle install
32
+ bundle exec rake
33
+ ```
34
+
35
+ #### Write Tests
36
+
37
+ Try to write a test that reproduces the problem you're trying to fix or describes a
38
+ feature that you want to build. Add to [spec/laser-cutter](spec/laser-cutter).
39
+
40
+ We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.
41
+
42
+ #### Write Code
43
+
44
+ Implement your feature or bug fix.
45
+
46
+ Make sure that `bundle exec rspec` completes without errors.
47
+
48
+ #### Write Documentation
49
+
50
+ Document any external behavior in the [README](README.md).
51
+
52
+ #### Update Changelog
53
+
54
+ Add a line to [CHANGELOG](CHANGELOG.md) under *Next Release*. Make it look like every other line, including your name and link to your Github account.
55
+
56
+ #### Commit Changes
57
+
58
+ Make sure git knows your name and email address:
59
+
60
+ ```
61
+ git config --global user.name "Your Name"
62
+ git config --global user.email "contributor@example.com"
63
+ ```
64
+
65
+ Writing good commit logs is important. A commit log should describe what changed and why.
66
+
67
+ ```
68
+ git add ...
69
+ git commit
70
+ ```
71
+
72
+ #### Push
73
+
74
+ ```
75
+ git push origin my-feature-branch
76
+ ```
77
+
78
+ #### Make a Pull Request
79
+
80
+ Go to https://github.com/contributor/laser-cutter and select your feature branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
81
+
82
+ #### Rebase
83
+
84
+ If you've been working on a change for a while, rebase with upstream/master.
85
+
86
+ ```
87
+ git fetch upstream
88
+ git rebase upstream/master
89
+ git push origin my-feature-branch -f
90
+ ```
91
+
92
+ #### Update CHANGELOG Again
93
+
94
+ Update the [CHANGELOG](CHANGELOG.md) with the pull request number. A typical entry looks as follows.
95
+
96
+ ```
97
+ * [#123](https://github.com/kigster/laser-cutter/pull/123): Reticulated splines - [@contributor](https://github.com/contributor).
98
+ ```
99
+
100
+ Amend your previous commit and force push the changes.
101
+
102
+ ```
103
+ git commit --amend
104
+ git push origin my-feature-branch -f
105
+ ```
106
+
107
+ #### Check on Your Pull Request
108
+
109
+ Go back to your pull request after a few minutes and see whether it passed muster with Travis-CI. Everything should look green, otherwise fix issues and amend your commit as described above.
110
+
111
+ #### Be Patient
112
+
113
+ It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang on there!
114
+
115
+ #### Thank You
116
+
117
+ Please do know that we really appreciate and value your time and work. We love you, really.
data/README.md CHANGED
@@ -1,11 +1,52 @@
1
1
  [![Build status](https://secure.travis-ci.org/kigster/laser-cutter.png)](http://travis-ci.org/kigster/laser-cutter)
2
2
  [![Code Climate](https://codeclimate.com/github/kigster/laser-cutter.png)](https://codeclimate.com/github/kigster/laser-cutter)
3
3
 
4
- LaserCutter
5
- ============
4
+ ## LaserCutter
6
5
 
7
- Similar to boxmaker, this ruby gem generates PDFs that can be used as a
8
- basis for cutting boxes on a typical laser cutter.
6
+ Similar to [BoxMaker](https://github.com/rahulbot/boxmaker/) (which is written in Java a long time ago),
7
+ this ruby gem generates PDFs that can be used as a basis for cutting boxes on a typical laser cutter.
8
+
9
+ Unlike ```BoxMaker```, this gem has a lot of automated tests around creating the geometry of the notches
10
+ and calculating locations. This welcomes additional feature contributions from other developers,
11
+ as existing test suite offers confidence around not introducing bugs or regressions.
12
+
13
+ BoxMaker's algorithm _ensures that the same notch length is across all sides, but sacrifices
14
+ symmetry as a result_. So you may have your font panel's left and right sides be pretty different.
15
+
16
+ ```laser-cutter```'s algorithm will create a _symmetric design for most panels_, but it might sacrifice
17
+ identical notch length_. Depending on the box dimensions you may end up with a slightly different notch
18
+ length on each side of the box.
19
+
20
+ Finally, ```laser-cutter``` has a ton of options, that allow you to set stroke width, page size,
21
+ layout, margins, padding (spacing between boxes), open the PDF file using system viewer right
22
+ after generation, and many more are coming.
23
+
24
+ The choice ultimately comes down to the preference and feature set, so here I show you two boxes made with
25
+ each program, so you can pick what you prefer.
26
+
27
+ Below are two examples of boxes with identical dimensions produced with ```laser-cutter``` and ```boxmaker```:
28
+
29
+ #### BoxMaker Example
30
+
31
+ ```bash
32
+ > java -cp BOX.jar com.rahulbotics.boxmaker.BoxMaker -i -W 2.5 -H 2 -D 1 -T 0.25 -n 0.5 -f file.pdf
33
+ ```
34
+
35
+ ![BoxMaker Example](doc/boxmaker.jpg).
36
+
37
+ #### LaserCutter Example
38
+
39
+ ```bash
40
+ > laser-cutter -u in -s 2.5x1x2/0.25/0.5 -o file.pdf
41
+ ```
42
+
43
+ ![LaserCutter Example](doc/laser-cutter.jpg).
44
+
45
+ ## Future Features
46
+
47
+ * Creating T-style holes and spacers for various sized nuts and bolts (such as common #4-40 and M2)
48
+ * Creating lids and front panels that are larger than the box
49
+ * Your brilliant idea can be here! Please see [contributing](CONTRIBUTING.md) for more info.
9
50
 
10
51
  ## Installation
11
52
 
@@ -24,7 +65,7 @@ Or install it yourself as:
24
65
  ## Usage
25
66
 
26
67
  ```bash
27
- > bundle exec laser-cutter --help
68
+ > laser-cutter --help
28
69
  Usage: laser-cutter [options]'
29
70
 
30
71
  eg: laser-cutter --units in -s 2x3x2/0.125/0.5 -o box.pdf'
data/doc/boxmaker.jpg ADDED
Binary file
Binary file
data/laser-cutter.gemspec CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Laser::Cutter::VERSION
9
9
  spec.authors = ['Konstantin Gredeskoul']
10
10
  spec.email = ["kigster@gmail.com"]
11
- spec.summary = %q{Creates box outlines for laser-cut boxes.}
12
- spec.description = %q{}
13
- spec.homepage = ""
11
+ spec.summary = %q{Creates notched box outlines for laser-cut boxes which are geometrically symmetric and pleasing to the eye.}
12
+ spec.description = %q{Similar to the older BoxMaker, this ruby gem generates PDFs that can be used as a basis for cutting boxes on a typical laser cutter. The intention was to create an extensible, well tested, and modern ruby gem for generating PDF templates used in laser cutting.}
13
+ spec.homepage = "https://github.com/kigster/laser-cutter"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -4,10 +4,7 @@ module Laser
4
4
  module Cutter
5
5
  module Renderer
6
6
  class BoxRenderer < AbstractRenderer
7
-
8
- def box
9
- subject
10
- end
7
+ alias_method :box, :subject
11
8
 
12
9
  def render pdf = nil
13
10
  pdf = Prawn::Document.new(:margin => options.margin.send(options.units),
@@ -2,9 +2,7 @@ module Laser
2
2
  module Cutter
3
3
  module Renderer
4
4
  class LineRenderer < AbstractRenderer
5
- def line
6
- subject
7
- end
5
+ alias_method :line, :subject
8
6
  def render pdf = nil
9
7
  pdf.stroke { pdf.line [line.p1.x, line.p1.y].map{ |p| p.send(units) },
10
8
  [line.p2.x, line.p2.y].map{ |p| p.send(units) }}
@@ -2,9 +2,7 @@ module Laser
2
2
  module Cutter
3
3
  module Renderer
4
4
  class RectRenderer < AbstractRenderer
5
- def rect
6
- subject
7
- end
5
+ alias_method :rect, :subject
8
6
 
9
7
  def render pdf
10
8
  rect.sides.each do |side|
@@ -1,5 +1,5 @@
1
1
  module Laser
2
2
  module Cutter
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: laser-cutter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -107,7 +107,10 @@ dependencies:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
- description: ''
110
+ description: Similar to the older BoxMaker, this ruby gem generates PDFs that can
111
+ be used as a basis for cutting boxes on a typical laser cutter. The intention was
112
+ to create an extensible, well tested, and modern ruby gem for generating PDF templates
113
+ used in laser cutting.
111
114
  email:
112
115
  - kigster@gmail.com
113
116
  executables:
@@ -119,12 +122,15 @@ files:
119
122
  - .rspec
120
123
  - .ruby-version
121
124
  - .travis.yml
125
+ - CONTRIBUTING.md
122
126
  - Gemfile
123
127
  - LICENSE
124
128
  - LICENSE.txt
125
129
  - README.md
126
130
  - Rakefile
127
131
  - bin/laser-cutter
132
+ - doc/boxmaker.jpg
133
+ - doc/laser-cutter.jpg
128
134
  - laser-cutter.gemspec
129
135
  - lib/laser-cutter.rb
130
136
  - lib/laser-cutter/box.rb
@@ -153,7 +159,7 @@ files:
153
159
  - spec/rect_spec.rb
154
160
  - spec/renderer_spec.rb
155
161
  - spec/spec_helper.rb
156
- homepage: ''
162
+ homepage: https://github.com/kigster/laser-cutter
157
163
  licenses:
158
164
  - MIT
159
165
  post_install_message:
@@ -177,7 +183,8 @@ rubyforge_project:
177
183
  rubygems_version: 1.8.23
178
184
  signing_key:
179
185
  specification_version: 3
180
- summary: Creates box outlines for laser-cut boxes.
186
+ summary: Creates notched box outlines for laser-cut boxes which are geometrically
187
+ symmetric and pleasing to the eye.
181
188
  test_files:
182
189
  - spec/box_spec.rb
183
190
  - spec/configuration_spec.rb