[Emc-users] gcmc - 1.4.3

2014-02-05 Thread Bertho Stultiens
Hi All,

A new version 1.4.3 of gcmc has been released.
The major change is a bugfix in the execution of if/elif/else
statements, where the final else would fail to executo when all if/elif
clauses were false.

Changes include:
- Feature: Add option --gcode-nom2 to replace ending M2 with % in gcode
as function generation
- Feature: Add --pedantic to hide not-to-bad warnings
- Feature: Implement comment() function to embed comments and debug
statements easily without too much risk into the output
- Feature/Change: Allow negative values on head()/tail() to ommit values
without knowing the count
- Change: Exit the gcmc binary with zero on --version
- Change: Increase EPSILON to 1e-14 to catch rounding errors
- Fix: Add missing --gcode-function option to command-line help
- Fix: Add --define to command-line help
- Fix: Fix 180 degree arcs to cope with calculation rounding errors
- Fix: Fix if/elif/else execution where the else clause would fail to
execute if all if/elif clauses were false


You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The updated documentation is online at:
  http://www.vagrearg.org/content/gcmc-man
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref

All documentation is, of course, included in the tar-ball distribution
and now also added to the windows zip-file.

As usual, let me know if you encounter bugs or have any questions or wishes.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] Canned cycle relative motion weirdness

2014-02-20 Thread Bertho Stultiens
Hi,

I've been looking into the canned cycles in LinuxCNC and the relative
version is odd.

The gcode documentation has an example:
G0 X1 Y2 Z3
G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3

It should make a nice pattern, but it drills in the wrong direction
(down-to-up). The R-word need to be -1.8 (negative) to make it drill in
the right direction.

However, the documentation states a sequence of rapids/moves and
indicates the positions which I cannot reproduce. F.ex. I cannot create
a parameter combination that would move to the noted Z positions.

Am I missing something or is there bitrot in either the documentation or
interpreter?

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - 1.5.0

2014-02-21 Thread Bertho Stultiens
Hi All,

A new version 1.5.0 of gcmc has been released.
There have been quite a few changes on the syntax and semantic level, as
well as additional built-in functions for various things.

An important semantic change is how add/subtract (+ and -) handles undef
values. A second set of operators +| and -| supplement the new semantics.

Another feature is passing function arguments by reference. This allows
for better abstractions for some types of constructs (as multiple return
values) and can improve execution speed if you are handling huge
vector-lists.

Several more language features are implemented to make gcmc more
expressive and closer to what other programming languages provide, such
as ternary operator (?:) and pre/post increment/decrement as part of
expressions. A repeat() {} construct enables quick and simple loops that
need to be executed a fixed number of times.

Canned cycles have been added as library functions. There is no point in
calling underlying canned-cycle-gcode because gcmc already possesses all
tools to perform the operations using G0/G1/G4 primitives. Letting gcmc
handle canned cycles also makes the resulting gcode more portable. An
example is provided in the tarball.

The documentation has been updated to include all the changes and adds a
new documentation for library functions (see below for link).

The list of changes for version 1.5.0 is long, so I'm not going to
include the details here. You can find the list on the gcmc homepage.


You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The updated documentation is online at:
  http://www.vagrearg.org/content/gcmc-man
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref
  http://www.vagrearg.org/content/gcmc-library

All documentation is, of course, included in the tar-ball distribution
and now also added to the windows zip-file.

As usual, let me know if you encounter bugs or have any questions or wishes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Canned cycle relative motion weirdness

2014-02-22 Thread Bertho Stultiens
On 02/22/2014 05:33 AM, Greg Bentzinger wrote:
 Yeah - I did some digging and that whole L word in a fixed cycle
 dates back to the original NIST RS-274D-NGC. IMHO - Its a dinosaur
 that should have died out. I consider it an accident waiting to be
 activated by the user.

I agree that it is ancient and quite dangerous to use. However, since
there is support for it, should it not work as advertised? The LinuxCNC
docs say that it does one thing, but when I try the example, something
different happens.

Either the docu is wrong, or there is bitrot in the implementation. Even
though it is ancient, it should then be fixed or removed. Having a wrong
interpretation can lead to greater disaster.


 One of the most powerful reasons to switch to LCNC is the faster
 processing power and virtually unlimited program length. We have
 O-loops and plenty of other tools to make good G-code without using
 commands that are not so apparent in the actual actions they will
 execute. I assume since it was all ready supported in the early
 source code it has been kept as legacy support. I dare say most
 modern machine controls do not support this without additional
 verbose codes.

Backwards compatibility is a good thing, which allows old code to run as
expected.

I agree that you should be severely disouraged from using it in the
modern times. As you say, storage and computing power is no limitation
nowadays.


 As is, I try not to use fixed cycles in incremental (G91) mode if
 possible. There can be enough confusion with the G98|G99 R and
 initial points in Inc mode without other issues. Negative R values
 are something to use with caution.

The absolute mode (G90) cýclces do work as documented. They are actually
useful. I also think that the relative mode cycles are useful, but they
are a lot harder to grasp.

That said, I implemented a couple of library calls for gcmc to emulate
the canned cycles. There I just map it to G0/G1/G4 and perform the cycle
programatically.

Maybe I should not bother to implement the relative cousins and leave it
at absolute canned- drill/drill_dwell/drill_peck cycles. You can always
code your own version if you like.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Canned cycle relative motion weirdness

2014-02-22 Thread Bertho Stultiens
On 02/22/2014 11:16 PM, Stuart Stevenson wrote:
 What is the L supposed to do?
 The way I read the program the tool would:
 
 G0 X1 Y2 Z3 - move (in G90) to X1 Y2 Z3 or (in G91) move 1 inch X
 , 2 inches Y and 3 inches Z

See:
http://www.linuxcnc.org/docs/html/gcode/gcode.html#sec:G81-Drilling-Cycle

Example 2 - Relative Position G81


 G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3 - in the drill cycle the tool would rapid
 1.8 inches positive Z , move 4 inches positive X and 5 inches positive Y
 then drill .06 negative Z then rapid 1.2 inches negative Z to the starting
 point is L supposed to repeat the complete cycle 3 times?

Yes, the L is a repeat of 3 times.

We are at XYZ=1,2,3. What is supposed to happen according to the
documentation is that the sequence G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3
translates into:
G91
G0 Z1.8 ; end at 1, 2, 4.8  initial rapid
G0 X4 Y5; end at 5, 7, 4.8  first cycle
G1 Z-0.6; end at 5, 7, 4.2
G0 Z0.6 ; end at 5, 7, 4.8
G0 X4 Y5; end at 9, 12, 4.8 second cycle
G1 Z-0.6; end at 9, 12, 4.2
G0 Z0.6 ; end at 9, 12, 4.8
G0 X4 Y5; end at 13, 17, 4.8third cycle
G1 Z-0.6; end at 13, 17, 4.2
G0 Z0.6 ; end at 13, 17, 4.8

The attached image shows what LinuxCNC actually does (same for version 2.5):
G91
G0 Z1.8 ; end at 1, 2, 4.8  initial rapid
G0 X4 Y5 Z-1.8  ; end at 5, 7, 3first cycle
G1 Z1.2 ; end at 5, 7, 4.2
G0 Z0.6 ; end at 5, 7, 4.8
G0 X4 Y5 Z-1.8  ; end at 9, 12, 3   second cycle
G1 Z1.2 ; end at 9, 12, 4.2
G0 Z0.6 ; end at 9, 12, 4.8
G0 X4 Y5 Z-1.8  ; end at 13, 17, 3  third cycle
G1 Z1.2 ; end at 13, 17, 4.2
G0 Z0.6 ; end at 13, 17, 4.8

I can imaging that the G98 (return to old_z) would initiate the return
to Z-level at 3, but changing the G98 to a G99 does not change anything
at all. The sequence is still not conforming to the documentation.


-- 
Greetings Bertho

(disclaimers are disclaimed)
attachment: g81-relative.png--
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471iu=/4140/ostg.clktrk___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Little OT, but...

2014-03-02 Thread Bertho Stultiens
On 03/02/2014 01:14 PM, Mark Wendt wrote:
 One can also use  http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Emcrsh or
 http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Halrmt for remote controlling.
 It's an easy thing to use telnet socket in and Android app.
 Telnet is extremely unsecure, with no encryption.  In fact, at work, we
 have to disable all telnet services.  ssh is much more secure, with both
 the username/password transaction and the the data flow being encrypted.

Unfortunately, there is no way to specify for LinuxCNC only to bind to
localhost (127.0.0.1) for the remote services as they are apparently
hardcoded to listen on any address.

However, instead of disabling the service you could simply block outside
access with a machine internal iptables rule and use ssh forwarding to
tunnel the request.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis  security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] G93 Inverse Time Mode

2014-03-07 Thread Bertho Stultiens
On 03/07/2014 02:12 PM, Mark Wendt wrote:
 snippage
 Does anyone have any ideas about how to calculate the F word?
 
 Sorry John, I just had to have a chuckle about that...  ;-)

Oh my...

Doesn't the /not working/ of the code already calculate the remaining
letters?

Please don't tell me a mill or a lathe has no humor. They both cut deep.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Subversion Kills Productivity. Get off Subversion  Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - 1.5.1

2014-03-14 Thread Bertho Stultiens
Hi All,

A new version 1.5.1 of gcmc has been released.

Important fix in this release are correction of a couple of memory
issues that could lead to wrong results and corruption. You should
upgrade to 1.5.1 to avoid running into these problems.

The syntax documentation has been expanded and a new introduction
document is available. The introduction starts with basic language
outline and describes a program to create involute gears.

Additional examples were created to show off the language. The examples
include:
- Involute gears
- Floret hole-arrangement (sunflower pattern) with hole sorting
- Continuous curvature pocketing
- Generic tool-size compensation on either side of a path
- Trochoidal milling (high-speed milling)

The examples have screen-shots on the gcmc homepage for quick inspiration.


You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The updated documentation is online at:
  http://www.vagrearg.org/content/gcmc-into
  http://www.vagrearg.org/content/gcmc-man
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref
  http://www.vagrearg.org/content/gcmc-library

All documentation is, of course, included in the tar-ball distribution
and now also added to the windows zip-file.

As usual, let me know if you encounter bugs or have any questions or wishes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-20 Thread Bertho Stultiens
On 03/20/2014 01:28 PM, sam sokolik wrote:
 some more random paths running the circular arc blend rc3...

I just tested trochoidal milling using the example I created for gcmc:
- image:  http://www.vagrearg.org/gcmc/example-trochoidal-large.png
- source: https://gitorious.org/gcmc/gcmc/source/example/trochoidal.gcmc

Target: axis_mm simulator

The runtime on 2.5.3:
- trochoidal milling: 386s
- total time: 482s

Runtime on 2.6.0~pre, branch circular-blend-arc-rc3:
- trochoidal milling: 110s
- total time: 205s

LinuxCNC reports the runtime at 2.7min (162s).

It is clear that the old LinuxCNC version cannot keep the speed high and
wanders between 500..600mm/min. The code sets the speed for the
trochoidal path at 3000mm/min.

The effective speed is still not entirely up to the requested speed and
seems to hover arround 1900mm/min. That may be due to the simulator
setup (maybe acceleration limits?) or the arc-blending not looking ahead
far enough.

Still, a very impressive improvement.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-20 Thread Bertho Stultiens
On 03/20/2014 02:38 PM, sam sokolik wrote:
 Could you post that gcode somewhere? (I don't have time right now to 
 play with your cool scripting language..) It could be the
 centripetal accel limits of the spirals..

Yes, I also suspect the centripetal accel limits may be a problem here.

You can get the gcode here:
  http://www.vagrearg.org/gcmc/trochoidal.ngc.gz


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-20 Thread Bertho Stultiens
On 03/20/2014 02:46 PM, Bertho Stultiens wrote:
 On 03/20/2014 02:38 PM, sam sokolik wrote:
 Could you post that gcode somewhere? (I don't have time right now to 
 play with your cool scripting language..) It could be the
 centripetal accel limits of the spirals..
 
 Yes, I also suspect the centripetal accel limits may be a problem here.
 
 You can get the gcode here:
   http://www.vagrearg.org/gcmc/trochoidal.ngc.gz

I just set the axis accelerations in the INI file from 508 to 1000, but
the result is the same. Actual result is 109s vs. 110s, which is within
the tolerance of my eye-on-the-clock timing.

This is where my expertise end ;-)

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-20 Thread Bertho Stultiens
On 03/20/2014 03:19 PM, sam sokolik wrote:
 the limit of sim is 1800mm/m - so if you change all the axis velocities 
 to 58mm/s (3500mm/m) it peaks at 2900mm/min.  Upping the acceleration to 
 1000mm/s^2 makes the program run at 3000mm/m steady.

Indeed, with that setup the trochoidal path will be finished in ~73s and
the total time ~168s.

Also, LinuxCNC's runtime calculation of 2.7min will finally be correct
for all practical purposes and intents.


 with my setup of 30in/s^2 - I get 3000mm/m (cool) the current TP
 peaks at about 600-700mm/s

It works :-) However, if you are going to do trochoidal milling at those
speeds, then you better make sure that you have one of those machines
that weighs too much and is bolted securely or it will start dancing in
the room.


Great work! keep it up.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-21 Thread Bertho Stultiens
On 03/21/2014 05:05 PM, sam sokolik wrote:
 heh - isn't that how we all dress?

That depends on how many lumps still hang together on my coat. It has
some signs of wear and tear.


 I had to post some scopes of the torodal gcode.
 The new tp - strait G64
 http://imagebin.org/300857
 xyz - velocity gets to the programmed speed (aprox 1.96in/s - 3000mm/min)
 x acc, y acc.  nice sin/cos graphs.  sexy!  (yes - I think it is sexy...)

Ah yes, for trochoidal curves the accelerations of X and Y should be
exactly sinusoidal. The first derivative (velocity) should show a static
offset on the sinusoidal curves, which represents the direction of motion.

Do you have a measurement of what the magnitude of path-deviation is
from the programmed path? The path deviations may also be slightly
reduced when the trochoidal path is generated with higher resolution
(smaller angular step interval in the calculation).

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-21 Thread Bertho Stultiens
On 03/21/2014 07:06 PM, sam sokolik wrote:
 I was wondering how I could check that..  I don't know - but I can tell 
 you this..
 At G64p.002q0
 P is in mm and my config.  30in/s^2 and 500ipm per axis..
 the velocity just starts to dip - just wiggles between 3000 and 
 2999mm/min.  If I do p.001q0 it fluxuates around 2200mm/min.  The 
 accelleration graph looks a but harry at that thoug though.. (wipping 
 around to try to keep up the path tolerance and velocity up..)
[snip]
 so with the path programmed - it can follow at cutting speed with 
 tollerances below what is sane... (with that config)

That looks pretty impressive to follow within 50 micrometer. I prepared
a few versions of the same patters. Each with a different angular
interval to generate the curve from 10deg...0.2deg steps. That results
in linear segments with lengths from ~0.75mm to ~0.01mm.

http://media.vagrearg.org/gcmc/trochoidal-steps.tar.gz

I wonder if the smallest angular interval would improve the following
and where the breakdown occurs.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code (sam sokolik)

2014-03-21 Thread Bertho Stultiens
On 03/21/2014 07:43 PM, sam sokolik wrote:
 there is a limitation of 'too short' Rob explained it in a dev email 
 (discusing the Q part of G64)..
 
 Unfortunately, the new TP still has the restriction that you have to touch
 each segment at least once. A small NCD tolerance is still useful to
 combine stupidly short segments, in particular ones that would be skipped
 over in a single cycle of the trajectory planner.
[snip]

That explains the limits nicely, thanks.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Toolchanges

2014-03-24 Thread Bertho Stultiens
On 03/24/2014 08:28 PM, andy pugh wrote:
 Maybe check your phone provider for a SMS e-mail or other port?
 http://www.ehow.co.uk/how_6510217_send-message-o2-cell-phone.html
 Hmm, certainly looks simpler than stopping the spindle and stabbing
 the quick-dial button with the tool :-)

Why would you want to stop the spindle?

:-)


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Toolchanges

2014-03-24 Thread Bertho Stultiens
On 03/24/2014 09:34 PM, Gene Heskett wrote:
 Maybe check your phone provider for a SMS e-mail or other port?
 http://www.ehow.co.uk/how_6510217_send-message-o2-cell-phone.html
 Hmm, certainly looks simpler than stopping the spindle and stabbing
 the quick-dial button with the tool :-)

 Why would you want to stop the spindle?
 :-)
 
 So your 2 armed tool changer can change the tool? :-)

Please change tool with /remaining/ arm and fingers...

But seriously, you could always hook a custom M-code and have a script
send an SMS using an attached modem.

However, I guess that you never should be too far away from a running
machine. Maybe a siren and/or a blinking lamp?

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Toolchanges

2014-03-25 Thread Bertho Stultiens
On 03/26/2014 12:59 AM, Dave Cole wrote:
 No.  To carry this to its logical conclusion, fix the phone to the
 table, locate the keys, then lay an 1/8 sheet of rubber over the
 phone which will have the side effect of keeping the swarf out of the
 keypad, stop the spindle and use the existing tool to dial the phone.
   As long as there is room on the table for the phone, problem solved.
 C'mon Gene.  Get into the 21st century.  iPhones and Androids don't have
 keypads.  They're touch pads and already sealed for swarf.  The phone
 can then be mounted as an offset to the machine's 0 and you can G5x
 your way to the touchpad...  ;-)
 Ahh shaddup.  My last cell phone was the economy ATT that I had signed up
 for a 29$ month 200 minute account that I never used more than 10% of
 unless I was up in Iron Mountain MI.  Had a keypad.  Did phone  voicemail.
 But the monthly kept going up and when it got to $109.99 a month I told
 them where to stick it and it wasn't on the table of my mill. ;-)  So I've
 been cell-less for about 6 months now. Don't miss it a bit.

 Gene, you are fortunate that you don't have to keep one in your pocket.

Having the phone in your pocket would seriously complicate the CNC
machine from reaching it to send you a message. On the other hand,
achieving that goal of having the CNC to reach into your pcoket would
likely draw enough attention to just change the tool while you're at it.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Learn Graph Databases - Download FREE O'Reilly Book
Graph Databases is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] New trajectory planner merged into LinuxCNC's development branch

2014-06-12 Thread Bertho Stultiens
On 06/12/2014 05:38 PM, sam sokolik wrote:
 This is even sexier
 Torchoidal path..  (graphing x and y acceleration and xyz velocity)
[snip]

Now I am a bit proud of myself with making the trochoidal example code.
Oh vanity, sometimes nice, other times it has a price ;-)


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing  Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
Hi all,

Every time I had to write a CNC-mill program using G-codes I got annoyed
by the archaic format and syntax. Especially when needing to convert
positional data from mil to mm, having recurring patterns and then also
trying to keep track of everything.

I looked for a meta compiler or generic pre-processor, but could not
find anything that satisfied me. Being able to program should be easy.

The G-Code Meta Compiler (gcmc) is just that, a scripting meta language,
using modern procedural paradigms and a context free grammar, to
generate G-code. It takes in a script and generates all the movements.

Units can be assigned/attached to values to do metric/imperial
conversions automatically. A rich set of built-in functions for G-codes
and mathematical manipulations make it easy to keep track.

Variables are typed into integer/floating point (scalars), vectors and
vector-lists. You can define functions and use local variables. Standard
loop-control is performed using foreach/for/while/do-while constructs as
well as conditional execution with if/if-else constructs.

The context-free grammar allows you to make sources more readable and
therefore more debug-able.

You can find the code at my git repository:
 https://gitorious.org/gcmc/gcmc

An example script can be found in the tests directory (cutter.gcmc)
and some preliminary documentation about the grammar and built-in
functions can be found in the doc directory (gcmc.txt).

Please note that the code is not entirely mature as of yet. However, the
basics should function properly and you are encouraged to use it and
take a look.

If you have any comments you are welcome to provide feedback.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 01:33 PM, Kent A. Reed wrote:
 Every time I had to write a CNC-mill program using G-codes I got annoyed
 by the archaic format and syntax.
 Archaic? How could you say that? Why it's 10 years younger than I am. 
 Oh, wait

Shall I provide you with a script to mill a walking-cane?


[snip]
 I look forward to taking it for a spin. Those of us who handcode can
 use all the tools we can get.

Yes, I sincerely sympathize with all who have hand-coded. My brain still
hurts from it.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 01:41 PM, andy pugh wrote:
 Whist not wanting to defend G-code, which is, as you say, horrible as
 a programming language, it does already contain G-codes to switch
 between units and (At least with the LinuxCNC variant) repeating
 patterns are reasonably manageable with the use of subroutines, loops
 and conditionals.

The unit switching (G20/G21) makes life more difficult (IMO) in all
cases where you have to calculate your position in a mixed setup. It is
much easier to associate a unit to a variable and let it be converted
automatically. It is less error-prone.
Secondly, reading G-code that switches between units is a real hell. The
problem is that you have to keep track manually (in your mind) which
unit target is active. Again, very error prone.

The loops and conditionals provided by G-code are, well, archaic. The
format is context-sensitive and uses line numbers to keep track. Moving
things around in a G-code program is a pain.

The reason for a context-free grammar is to make coding more flexible
without having to think about line numbers. A paradigm that has proven
to be very successful.


 I looked for a meta compiler or generic pre-processor, but could not
 find anything that satisfied me. Being able to program should be easy.
 There is an alternative (and possibly more interesting) approach, you
 could develop your meta-language into an alternative interpreter for
 LinuxCNC.
 The interpreter doesn't _have _ to read G-code. It is just that the
 only one we have does so. Pluggable interpreters have been an option
 for a while.

That would certainly be an option for future development. However, my
first milestone was to be compatible with existing setups (primarily to
make my own stuff).

That is to say, I could have written my G-code program that started this
project in two days. Instead I opted for using two weeks making gcmc. :-)

For a future as a secondary/pluggable interpreter, it would be required
to finalize the grammar, discuss required built-in functionality,
discuss how to handle rotational axes and get a grip on all bugs.

I think it would be a great idea, but I do not want to rush things.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 02:00 PM, Marius Liebenberg wrote:
 I downloaded, extracted, configured and maked it. Now what, I cant get 
 any further than that. I like the idea and want to test it but you are 
 going to have to give some small bit of guidance as to how we get to use 
 it please.

You should have an executable named 'gcmc' in the src directory.

You can type (assuming you are in the src directory:
 $ ./gcmc -o output.ngc ../tests/cutter.gcmc

That should give you an output file output.ngc in the current
directory which is the intepretation of the testfile.

You can get a brief option help by typing:
 $ ./gcmc -h

Also have a look at the example script and the doc/gcmc.txt file for
more information on the functionality provided.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 02:07 PM, andy pugh wrote:
 A way to configure CSS and feed-per-rev would be useful.

Hm, yes, those will need to be implemented.

As a hack...
You can put anything into the generated code with the literal()
function. It simply outputs anything you like.


 Also the other typical switches, such as radius comp on/off,
 absolute/relative (G90, G90.1)

The relative/absolute question is actually a bit more involved. I have
been pondering that one from when I started.

The question is whether you want the meta-language or the generated code
to support relative/absolute.

Currently, the generated G-code is absolute by choice because it is
easier to debug. There is, as such, no added value to mix
relative/absolute in the generated target.

Supporting relative addressing at the meta-language level /is/ a good
thing. I just have not yet addressed that point. Some functions need to
be added for relative movement and at least:
- move()move_r()
- goto()goto_r()
- arc_cw()  arc_cw_r()
- arc_ccw() arc_ccw_r()

I do track the current absolute position internally, and it is exposed
to the script under the variable name global_position.

There is also a variable called global_offset, which holds the
command-line added offset for all generated code.


 Is G43 implicit in toolchange() ?

No, currently the toolchange() only emits a T code. I think it may be
appropriate to send a Tx followed by G43 Hx. It may also be
appropriate to enable/disable this behavior with an optional second
boolean parameter to toolchange().


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 02:53 PM, andy pugh wrote:
 Getting a bit off topic here

Well, if I cannot defend the choices made in the creation of gcmc, then
they may not be valid choices and should be thought about.


 , but the RS274NGC version of G-code doesn't use line-numbers at all.
 While/Wend If/Endif are matched by numerical tags, so canbe moved
 about (but can't be repeated unless you change their identifier
 tags)
 http://www.linuxcnc.org/docs/html/gcode/o-code.html

What is more readable?

o100 sub
(notice that the if-endif block uses a different number)
  o110 if [#2 GT 5]
(some code here)
  o110 endif
  (some more code here)
o100 endsub

... or ...

function blabla(arg1, arg2)
{
if(arg2  5) {
/* Some code here */
}
}


 I have a feeling that a few years ago someone wrote a system to
 allow use of something Python-like to create G-code, but I can't find
 it.

I vaguely remember seeing some python style attempt, but I have one
*very* large objection to python: it is context-sensitive.

IMO, it is brain-dead to use indenting for scoping purposes where
context-free grammars have proven to be so useful over the years. But
that is my opinion.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 05:11 PM, Gene Heskett wrote:
 I downloaded, extracted, configured and maked it. Now what, I cant get
 any further than that. I like the idea and want to test it but you are
 going to have to give some small bit of guidance as to how we get to use
 it please.
 Needs an installer script written, so I ran it in place from the cli.

Well, it uses standard automake/autoconf tools and thus has make
install ;-)

No, you are right, it has a lot of rough edges. I wrote the announcement
mail to the list to get early feedback. You know, publish early, publish
often. It should improve over time.


 I ran it on the two test files, with cutter.gcmc being able to be executed 
 on my mill, but arccw.test.gcmc failed.  Good sized radius error at end of 
 the arc according to linuxcnc.

I added the arc-code this morning. However, the testfile just lacks a
feedrate() line above the arc_cw() call according to my dry-test-run
(also on 2.5.3).

A file containing the following should work fine:
feedrate(100);
arc_cw([10, 10, 10], 10, 3);


 I think we need some docs too.

Agree...

As stated, I just started writing this code and  it just grew as I was
going along. The text-file doc about the grammar/functions was just a
feable start to get something written down.


 But the .ngc file it generated for cutter.gcmc as a demo was
 impressive, actually generating more ncg code than I expected. No
 clue what it is, but it ran to completion in LCNC-2.5.3 as of
 yesterdays pull.

It is a plate to be pressed onto a PCB (aligned with the components on
it). Most of it is touch-off for drill-holes. However, it is why I
wanted the mil/mm conversions in the first place.

It generates quite a bit of G-code because it traces paths that I set
up. I do not think that it is too much though ;-)


 So I think we have the makings of another very useful tool once we have 
 some instructive docs.

I certainly hope so.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 04:27 PM, TJoseph Powderly wrote:
 http://wiki.linuxcnc.org/cgi-bin/wiki.pl?AptProgrammingForEMC
 look at the screenshots of the generic path description.
 This is high level and abstracted. The output is filtered
 according to machine style ( horiz, vertical, special kins,
 special variant of gcode )

I did take a look at Apt programming, but decided against it as being a
bit exotic in syntax. I was looking for a C-like syntax, which is
familiar more people afaik.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 04:29 PM, Gene Heskett wrote:
 As someone from the other side of the pond, I am far more comfortable in 
 inches than in mm or mils for everyday work, but I think I need to 
 understand what a mil is in the definitions you use?

A 'mil' is one thousands of an inch or exactly 0.0254mm.

My own interest is from my work with PCB design, which uses mils all the
time. But all mechanics are done in mm. The disparity always annoyed me.


 Please, can you define the mm to mil conversion, and how that relates to 
 inches for an old man like me who is used to speaking in thousandths for 
 everyday precision measurements?

mil -- mm == value * 0.0254
mm -- mil == value / 0.0254
1 inch = 1000 mil


 I am in electronics, so to me metric always made sense, but I've been stuck 
 in Rome, doing as the Romans did for 79 years.  This old dog needs to 
 learn metric in the physical world, not just in wavelengths.

Well, electronics still has a lot of imperial measures in use for PCB
design.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 06:42 PM, Gene Heskett wrote:
[snip]
 Generates:
[snip]
 G2 X9.97547740 Y9.97547764 Z9.97547781 I10. J0. P3

That is seriously wrong...

The generated code should read:
...
G2 X10. Y10. Z10. I10. J0. P3
...

Is you add a move([0,0,0]); before the arc, does it still come out
with a fractional XYZ position?

You may want to try:
spindlespeed(400);
feedrate(100);
spindle(1);
literal(( initial global pos , global_position,  )\n);
literal(( global offset , global_offset,  )\n);
move([0,0,0]);
literal(( before arc global pos , global_position,  )\n);
arc_cw([10, 10, 10], 10, 3);
literal(( after arc global pos , global_position,  )\n);
spindle(0);

Then you can see in the generated code what the positions evaluated to.
The initial position should have been initialized to zero on all axes
and the offset should read zero if none set on the command-line.

My local compile gives:
...
S400.
F100.
M3
( initial global pos
[0.00mm,0.00mm,0.00mm,0.00mm,0.00mm,0.00mm] )
( global offset
[0.00mm,0.00mm,0.00mm,0.00mm,0.00mm,0.00mm] )
G1 X0. Y0. Z0.
( before arc global pos
[0.00mm,0.00mm,0.00mm,0.00mm,0.00mm,0.00mm] )
G2 X10. Y10. Z10. I10. J0. P3
( after arc global pos
[10.00mm,10.00mm,10.00mm,0.00mm,0.00mm,0.00mm] )
M5
...

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 05:13 PM, Kent A. Reed wrote:
 It seems to me your to-do list is relevant independently of whether gcmc 
 remains a standalone tool or mutates into another LinuxCNC interpreter.

Agreed.


 It would be nice to have a  wiki page, forum section, or some such where 
 we can capture feedback, discussions, and desiderata. These email 
 discussions get disjointed and are difficult to mine after the fact.

Yes, I am wondering whether I should get this on LCNC wiki, or just make
my own homepage or gitorious wiki to do this.

Documentation is always twice as hard as writing the code. I try, at
least, to update some documents as I go. But, you are right, it needs
quite a bit of improvement, including proper discussion space.


 As for added functionality, I'd certainly want to see a meta-level 
 ability in gcmc to include*  user-defined units of functionality** at 
 runtime. Otherwise I have to do it myself while preparing an input file 
 to gcmc. This forces me to do bookkeeping better left to the computer.

The include facility is a must to be part of the language. Will require
a bit work, but is an important feature.

Once an include facility is in place, then a user-space library can be
created for common (more complex) tasks.

Some (simple) functions may become built-ins once it is established what
common requirements are.


 Some other messages have flashed by which border on programming-language 
 bashing. I hope we can avoid yet another flame-war and concentrate on 
 scoping, completing, and using your gcmc.

Agreed.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 07:01 PM, Bertho Stultiens wrote:
 On 10/30/2013 06:42 PM, Gene Heskett wrote:
 [snip]
 Generates:
 [snip]
 G2 X9.97547740 Y9.97547764 Z9.97547781 I10. J0. P3

It was probably caused because I had been compiling with -O0 (for
debugging) and that does not detect uninitialized variables.

I pushed an update to gitorious that should fix that.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-30 Thread Bertho Stultiens
On 10/30/2013 08:58 PM, Gene Heskett wrote:
[snip]
 H, not at all what I got:
[snip]
 ( global offset 
 [-0.026255mm,-0.026255mm,-0.026255mm,0.00mm,0.00mm,0.00mm]
 )

This is why it fails. My code did not initialize the global offsets
correctly, which had the consequence that the tracked global position
was off.


 G1 X-0.02625543 Y-0.02625519 Z-0.02625501

The move([0,0,0]) corrected the discrepancy and then the arc works.


[snip]
 Works, draws a nominally 20mm diameter spiral, moving z up for nominally 
 2.25 revolutions in the xy plane.  So starting at XYZA = 0.0, 0.0, 0.0, 
 0.0, the ending position is
 0.975, 0.975, 0.975, 0.0.
 
 Is that the intended action?  Spindle-at-speed display=400, so that works.

The intended action was to start at [0,0,0] and end at [10,10,10] with
2.25 revolutions in the xy plane.

The uninitialized global offsets made the IJ calculations of the arc
incorrect.

As replied earlier, that should now have been fixed in my commit (and
pushed to the gitorious repo). You should be able to do a git pull and
recompile. Then the coordinates should match up correctly.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-31 Thread Bertho Stultiens
On 10/31/2013 07:38 AM, Gregg Eshelman wrote:
 Once achieving a state where all of a program works, it's a good idea to 
 do a renumber then continue work on a copy.
 
 If G-Code cannot handle gaps in its line numbers, then perhaps an editor 
 could do so, then have a Save As runnable output function which 
 automatically renumbers with a step of one and another option to save 
 the editing version with the gaps?

If you already are in need for a program to help you to fix a program,
then why not fix the language in the first place?

G-code has already evolved through time to support many more features
than originally envisioned, but it still suffers from the the same
archaic syntax. That was (and is) my objection. Even basic evolved into
a (almost) context-free grammar, for the better or worse, in visual
basic. Please note that you can write bad code in any language...

I am not forcing anybody to change their habbits or preferences, only
hoping to. I am trying to provide an alternative. Explaining why I want
to provide an alternative seems a reasonable thing to do.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-10-31 Thread Bertho Stultiens
On 10/31/2013 01:25 PM, Kent Reed wrote:
 There is no need to dwell on the justification for providing an
 alternative, either. As my grandmother was fond of saying, the proof of
 the pudding is in the eating. Let's get on with finishing the pudding and
 let the CNC world decide if it likes the taste. If it does, then gcmc will
 be its own justification. If it doesn't, you'll still have a program which
 satisfies your needs and sensibilities. My guess is that some will like it,
 some won't. A long-ago friend liked to remind me, there's no accounting
 for taste.

Well said, thanks.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - Updates

2013-11-01 Thread Bertho Stultiens
Hi All,

I've been updating the gcmc code quite a bit with stuff that was missing
and several bug fixes.
The syntax and semantics are now at a stage where most vector
calculations can be performed and is illustrated with an example in
tests/star.test.gcmc. The star is a convex polygon and is contracted
with an offset from the corners.

Other changes include:
- include() function to include other files (and uses one or more -I
cmd-line options for search path)
- isXXX() functions to determine types
- local keyword for forced local variables in functions
- error()/warning()/message() functions to provide console output
- Allow empty vectors and vectorlists
- Added modulo (%) expression and abs() function
- Syntax error checking with better indication what the problem is

You can get it at https://gitorious.org/gcmc/gcmc or you can do a git
pull to update your local copy.

The doc/gcmc.txt file should be up to date on all changes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-11-01 Thread Bertho Stultiens
On 11/01/2013 11:40 PM, Tony Zampini wrote:
 I've been following this thread, and I'm very intrigued by your program - 
 gcmc.
 What would it take to get gcmc to run in the Windows environment? For
  example, a windows console application?

Gcmc has no external library dependency, so it should be fairly painless.

I just did a cross-compile on my Linux-box with mingw, resulting in the
following windows executable:
http://www.vagrearg.org/gcmc/gcmc.zip

SHA1 sum:
6e375d1ff8dd77cdd7c66a8e4d6002c98a381e5a  gcmc/gcmc.zip

SHA256 sum:
932baab00e6fef9844634c69e0e29b78c09fb067a4b1b6a3928c734b245a7304
gcmc/gcmc.zip


If you have mingw+msys installed (and git) then you should be able to
compile locally.

Alternatively, if you have cygwin installed with git, then you should be
able to do it too.

If you decide to hack the parser or lexer, then you will need bison and
flex installed too.

Commands needed to compile:
$ git clone https://git.gitorious.org/gcmc/gcmc.git
$ cd gcmc
$ ./configure
$ make
$ src/gcmc -o outfile.ngc inputfile.gcmc


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-11-02 Thread Bertho Stultiens
On 11/02/2013 05:44 PM, Tony Zampini wrote:
 Thanks so much!! I was able run gcmc in a Command Window on my Win7
 laptop. I tested it on your cutter.gcmc test program and it compiled without
 error.

You are welcome. Please report any errors you may encounter.


 In the future, would it be possible for you to provide an updated gcmc.exe
 whenever you update the linux version? Or is this asking too much :)

I am going to write a webpage dedicated to gcmc and I hope to be able to
have multiple builds on there as well.

Please do not expect everything to be done tomorrow. It is a lot of
work to get everything in place. I also appreciate feedback and
bugreports as well as examples and functions/apps any of you think are
interesting to have bundled.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-11-03 Thread Bertho Stultiens
On 11/03/2013 03:08 PM, Tony Zampini wrote:
 A quick question about gcmc. Are the contents of the prologue and
 epilogue hard-coded into the program? Or can I make them anything I want.

They are hard-coded, but you can disable its generation by adding the
-q option on the command-line.

The reason for being hard-coded is that the generated G-code depends on
a few settings of G-code interpreter, which are setup in the prologue.
Dependencies include:
- G21 ( Use mm )
- G40 ( Cancel cutter radius compensation )
- G90 ( Use absolute distance mode )

Strictly seen, the cutter radius compensation is not required if your
program keeps track of its effect in the program.

The active plane in the prologue can be set with the command-line option
-p. The feedrate mode can be changed in the program by calling feedmode().

In principle, it should be possible to alter gcmc to output relative
position code, which subsequently can be reused in other programs. It
has been a thought I have been playing with.

The epilogue simply terminates the program with M2.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-11-03 Thread Bertho Stultiens
On 11/03/2013 03:32 PM, Bertho Stultiens wrote:
 In principle, it should be possible to alter gcmc to output relative
 position code, which subsequently can be reused in other programs. It
 has been a thought I have been playing with.

To that end,...

I just had a look at relative outputs and it was actually quite simple
to implement. I pushed an update to gitorious that implements the -r
command-line option, which in turn will output the G-code using relative
addressing.

That means that you can generate a fragment of code and include it into
other programs quite easily:
...
 (your gcode here)
...
G0 Xxx Yxx Zxx
G91
 (imported code from gcmc -r -q ...)
G90
...
 (back to your code)
M2


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-11-03 Thread Bertho Stultiens
On 11/02/2013 08:10 PM, Bertho Stultiens wrote:
 In the future, would it be possible for you to provide an updated gcmc.exe
 whenever you update the linux version? Or is this asking too much :)
 I am going to write a webpage dedicated to gcmc and I hope to be able to
 have multiple builds on there as well.

I have the current documentation, and then some more, online on my homepage:
  http://www.vagrearg.org/content/gcmc

It has links to the sources, tarballs and a windows exe. Currently at
version 1.0.1, adding the relative option.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - Updates 2

2013-11-06 Thread Bertho Stultiens
Hi All,

I've been updating the gcmc code continually.

Current version 1.1.0 highlights are:
- Add angular value units (degree and radian)
- Add value unit query functions
- Make LHS dominant for unit conversions in operations
- Divide operation strips units if both LHS and RHS are of same unit class
- Implement boolean short-circuit on  and ||
- Add option to exit non-zero on warnings

There are also some other small bugfixes (I hope).


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - Updates 2

2013-11-06 Thread Bertho Stultiens
On 11/06/2013 03:06 PM, Gene Heskett wrote:
 A suggestion Bertho.  Your original message and the link to the tarball is 
 now well off screen in the message list.  Could you add it to your sig?

I will add a link for future update messages.

All should be available from:
http://www.vagrearg.org/content/gcmc

I hope that will provide you with all information. Let me know if there
is anything else.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] USB Camera for edge finder?

2013-11-07 Thread Bertho Stultiens
On 11/07/2013 12:34 PM, Sebastian Bachmann wrote:
 The problem ist that the terms high magnification and depth of field does
 not fit well together.

You can improve on the DOF if you use a very small apperture: a
pin-hole. You will need a lot of light to image anything through a
pin-hole and a good objective lens on your camera system to image
properly on the sensor.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - v1.1.1

2013-11-08 Thread Bertho Stultiens
Hi all,

This new version allows index [] on vector- and vectorlist-variables to
function as you'd expect. The syntax page has updated information and an
example under the operator heading. This version also includes library
functions in the tar-ball, a beginning of a test-framework and bugfixes.

You can get it at:
 http://www.vagrearg.org/content/gcmc
See the changes as noted on the page.


If you have examples or tests you are willing to share, please let me
know (on- or off-list). I'd be happy to include them. More examples
means better understanding for all.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-08 Thread Bertho Stultiens
On 11/08/2013 09:18 PM, Tony Zampini wrote:
 Thank you for maintaining and improving GCMC. I'm finding it
 very useful and powerful. It makes it so easy to whip up quick
 machining operations. I can do things with GCMC that I simply
 can't do with my CAM program(CamBam). Don't get me wrong,
 I love CamBam, but GCMC provides a high-level way to do
 *anything* you want.

I am happy that you find it useful. As you have experienced, it is very
easy to make a quick-and-dirty script that does what you want, which
would be a painful experience in most, if not all, CAD/CAM packages.

(And doing anything quick-and-dirty in gcode directly is usually pure
torture ;-)

You have confirmed my own experience and the reason why I created gcmc.
If you have any scripts you want to share, please contact me because I
really want more examples in the distribution.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Controlling an infrared reflow oven using LinuxCNC

2013-11-08 Thread Bertho Stultiens
On 11/08/2013 11:38 PM, Jean-Michel Pouré - GOOZE wrote:
 I need to know to what extend Linux CNC could be used to manage an
 infrared SMT reflow oven. Any ideas are welcome.

That sounds a bit like using a hammer to screw a bolt...

Sure, you could modify configs and make it work, if maybe not all of it,
but why would you? This application screams for some custom software IMO.

The easiest thing to do is wire up a micro-controller that reads the
temperatures and can move the caddy, as well as controlling the heating
elements/ventilators. Then you put a serial port on the microcontroller
which you connect to a PC. You could also just do all of this on a
Raspberry Pi as controlling PC and micro-controller if you extend the IO
connector a bit.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-09 Thread Bertho Stultiens
On 11/09/2013 07:40 PM, alan wrote:
 I also think this is a good idea.
 To test it I have quickly rewritten my g-code wheels program see
 attached file.
 It currently works only for paths cut in XY plane using XY movements. I
 cannot check this but  the axis path plot look ok.

Nice pattern. I'll include it, but may alter the formulation of the code
a bit (see below).

I am really excited that the grammar performs this well :-)


 My setup is a rotary system so I need to convert all cartesian XYZ
 movements into polar R theta depth movements where rotation is around
 the Z axis.  Instead of move emitting g1 X?? Y?? Z?? I need to emit g1
 x?? C?? Z?? . I am not sure how to do this. I havent looked yet in
 detail at the source code . I would appreciate any help / suggestions
 you have for creating a polar version of the goto and move functions.

The current gcmc version uses a 6-axis system XYZABC in the vectors to
move/goto calls. Arcs only use XYZ.

However, there is a bug that fails the output at the moment because the
ABC axes are converted to mm and not to degrees. A fix is in git (and
pushed to gitorious).

To move in a XZC axis system, you have vectors that look like:
vec = [x, -, z, -, -, c];

An additional fix is in the pipeline which includes a 9-axis system
XYZABCUVW, where XYZ and UVW are distance based and ABC angular based
(also pushed to gitorious).



A few comments on the code.
You write:
  function CreateWheel(r,s,p) {
local w;
w = [r,s,p];
return w;
  }

It could be simply written as (faster at runtime):
  function CreateWheel(r,s,p)
  {
return [r,s,p];
  }


FWIW, you do not need the function as such... You call it with explicit
addressing as:
  wheels = {};
  wheels[0] = CreateWheel(10,1,0);
  wheels[1] = CreateWheel(5,7,0);
  wheels[2] = CreateWheel(3.333,-17,90);

I would have written:
  wheels = {};
  wheels += { CreateWheel(10,1,0) };
  wheels += { CreateWheel(5,7,0) };
  wheels += { CreateWheel(3.333,-17,90) };
or
  wheels = { [10, 1, 0], [5, 7, 0], [3.333, -17, 90] };
Both alternatives have the advantage that you do not need to keep track
of the indices yourself. However, the latter may be more difficult to
understand. There are more ways to come to the same result.


Something not documented correctly (or not extensively enough) is the
conversions of sin() arguments and to_XXX() functions. You do explicit
radians conversion in CalcPoint() using to_rad().

If you have defined the angles from the start, then the conversions will
be implicit in the grammar:
wheels = { [10, 1, 0deg], [5, 7, 0deg], [3.333, -17, 90deg] };
...and...
CutPath(wheels, 0deg, 0.01deg, 360deg, cuttingdepth, svec);

The sin(), cos() and tan() functions will internally convert from
degrees to radians before calling the underlying system sin/cos/tan
function.


Your example has made it clear that I need to implement a vector
slice/combine operator to isolate and combine XYZ, ABC and UVW parts of
any vector. Also shift/rotate must be implemented for vectors (I already
did that for vectorlists). Such operations would help vector
calculations in some instances. Alternative is that a final calculation
must do coordinate-system conversion, but that may be quite hard as it
depends on the physical setup of the target.

Some input on axis conversion and geometry conversion calculations and
options is appreciated to find a generalized and easily comprehensible
solution.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-09 Thread Bertho Stultiens
On 11/09/2013 07:40 PM, alan wrote:
 To test it I have quickly rewritten my g-code wheels program see
 attached file.
 It currently works only for paths cut in XY plane using XY movements. I
 cannot check this but  the axis path plot look ok.

I made some small changes to the code. It runs a bit faster than the
original version.


Please note, gcmc 1.1.1 cannot compile it, you need version 1.1.2 or the
git version. Version 1.1.1 lacks the ability to accept function calls as
arguments in the creation of vector-lists (dies on an assert()).

Get version 1.1.2 at:
  http://www.vagrearg.org/content/gcmc

The documentation is also updated.

-- 
Greetings Bertho

(disclaimers are disclaimed)
//
/* Code to produce wheels paths */
/* Using GCMC Compiler  */
/* Author: Alan Battersby   */
/* Version: 1.0 */
//

//
/* Each wheel is a vector of three components   */
/* Radius - The radius of the wheel */
/* Speed  - The speed of the wheel  */
/* Phase  - The phase of the wheel  */

function Radius(wheel)
{
return wheel[0];
}

function Speed(wheel)
{
return wheel[1];
}

function Phase(wheel)
{
return wheel[2];
}

function CreateWheel(r, s, p)
{
return [r,s,p];
}

/* Wheels are held in global vector list called wheels  */

function CalcPoint(wheels, angle)
{
local at, posn, r, s, p, w;

posn = [0, 0];

foreach (wheels; w)
{
r = Radius(w);
s = Speed(w);
p = Phase(w);
at = s * angle + p;
posn += [r * cos(at), r * sin(at) ];
}

return posn;
}

function CutPath(wheels, start, inc, end, cdepth, scale)
{
local angle, point;
/* move to first point at safe height */
for(angle = start; angle = end; angle += inc)
{
if (angle == start)
{
  /* we should be at safe height */
  /* so move to cutting depth*/
point = CalcPoint(wheels, angle);
point = ScaleBy(scale, point);
goto(point);
goto([-,-,cdepth * scale[2]]);
}
else
{
point = CalcPoint(wheels, angle);
point = ScaleBy(scale, point);
move(point);
}
}
}
/*** Library /
function GoAtSafeHeight(x,y)
{
goto([-,-,safeheight]);
goto([x,y,safeheight]);
}

function ScaleBy(sv, v)
{
return [sv[0] * v[0], sv[1] * v[1]];
}
/*** main program ***/
safeheight = 1mm;
cuttingdepth = -1mm;
svec = [5,5,1];
wheels = {
CreateWheel(10, 1, 0deg),
CreateWheel(5, 7, 0deg),
CreateWheel(3.333, -17, 90deg)
};
feedrate(60);
GoAtSafeHeight(0, 0);
CutPath(wheels, 0deg, 0.01deg, 360deg, cuttingdepth, svec);
GoAtSafeHeight(0, 0);

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - v1.2.0

2013-11-11 Thread Bertho Stultiens
Hi All,

A new release, 1.2.0, has been made for the G-code meta compiler.
Changes include:
-  and  operators on scalars, vectors and vector-lists
- full axis support for XYZ, ABC and UVW
- fixed arcs to output valid IJK values and correct XYZ coordinates
(thanks Tony for spotting the problem)
- slight performance improvement using value structure caching reducing
malloc/free overhead.

You can get the tar-ball and a windows executable at:
  http://www.vagrearg.org/content/gcmc

The online documentation has been updated to include a functional
description of the shift operators and additionally a description how
undefined values are handles in calculations.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-11 Thread Bertho Stultiens
On 11/11/2013 09:50 PM, alan wrote:
 I did originally write both parts as per your changes. But kept getting 
 a compilation error. I cannot remember what the message was and it was 
 probably because of something else. So made those changes and it all 
 seemed to work . I probably inadvertantly fixed the real problem but not 
 having written C in such a long time I am not sure what was wrong.

Yes, the error was probably hitting the mm/deg conversion bug. That
should be fixed in version 1.2.0, which I released earlier today.

I am happy to fix any bugs you encounter as long as I get an example
that triggers it.

Anyone who is not versed in C may prefer not to delve into the code and
I am just as happy to receive examples, comments and suggestions. My
background is EE/CS, so my strengths are more in the computer stuff than
the mechanics.


 The sin(), cos() and tan() functions will internally convert from
 degrees to radians before calling the underlying system sin/cos/tan
 function.
 Didnt know about that thanks for the information

Yeah, the automatic conversion of units was one of my original design
parameters of the language. I have had so many problems and stupid
errors when doing it manually that I considered it to be a requirement.


 Finally a comment about angles. I found when generating gcode in my own 
 windows based program that I had to be careful with angles greater than 
 360. (This was before wrapped axes havent tried wrapped axes so dont 
 know what will happen) . If I generated a path with multiple turns 
 around the origin (easy to do with the wheels patterns), so that for 
 example the polar coordinates (radius, angle,depth) of successive points 
 was say (10,360,-1) then (12,10,-1) then (15,40,-1) in the same 
 direction which for my setup is anticlockwise. Linuxcnc would get to 360 
 then do a clockwise move back to 10 ploughing a nice big path through 
 the work and spoiling the pattern. So I have to generate positions 
 (10,360,-1) (12,370,-1),(15,400,-1) to keep rotating in the same 
 direction.  So I keep a note of how many times the cutter crosses the x 
 axis in an anticlockwise direction (the winding number) and use this to 
 calculate the angle. If the cutter has a retrograde move and crosses the 
 x in a clockwise direction I reduce this winding number.

I do not use any modulo or other alteration in the coordinates, polar or
Cartesian (expect for unit conversion and relative output option). You
are absolutely right that 361 degrees and -1 degree are not the same in
terms of machining as it encodes directional information. Also, as you
correctly comment, 0, 360 and 720 degrees are distinct separate
positions, considering the winding of the axis.

I actually do not know how LinuxCNC handles this because I never /used/
a mill with a rotational axis, but my guess is that it does not do some
modulo or other stupid stuff...

I had some consideration about the angular axes, but decided quite early
on that the user-program had to decide the actual magnitude and not some
mathematical idea of modulo calculus.


 I mention this because generating polar coordinates is not quite so
 straightforward as cartesians. So even using your example below
 vec = [x, -, z, -, -, c];

I agree. Polar coordinate systems are much harder to use than Cartesian.
Especially because there is no general agreement on where which
rotational axis is mounted. Some may be on the mill's spindle (robotic
finger-joints), while others are part of the X or Y axis.

I have been pondering some generalizations, but have not come to any
result that could be used.

However, the example is still reasonably easy to handle. The trick lies
in the use of undef values in the vectors. The rules for undef are
such that simple operations have predictable result.

With the addition of shifts ( and ) in the new 1.2.0 it should even
be easier to handle coordinate subsets.

But still, you need to keep track while writing the program.


 There has to be some pre-processing. Can this be accomodated by your
 meta compiler? Just thinking about your explicit angle conversions
 mentioned above.

I have no plans of doing pre-processing at this moment. I do have some
considerations of defining values on the command-line, which then can be
used in the program. But I have not yet decided how to handle that.

You can always use the C-pre-processor as a front-end, which is a
text-substitution processor.

Anyway, if you have some ideas for pre-processing, let me know and we'll
debate the issue.


 Anyway keep up the good work, How far do you intend to take this
 structs? classes?

I'll take gcmc as far as is necessary for replacing manual gcode
programming. The sky is the limit :-)

Classes... no plans at all. It is not an Object Oriented mill I try to
control. There would be some few cases where it /might/ be useful, but
my intuition tells me that the complexity of OO is a bad fit for a mill
or a lathe.

Structs, that is another case. I have been 

[Emc-users] gcmc - v1.2.1

2013-11-13 Thread Bertho Stultiens
Hi all,

A new gcmc release was made which fixes a couple of problems and adds
some useful features. Changes include:
- Change epilogue to use M30 for end program. M2 has been obsolete for
quite a while
- Add G49, G54 and G80 to the prologue to ensure known setup
- Implement imperial units output using -i option. Gcmc still defaults to mm
- Add head() and tail() functions to isolate parts of vectors and
vectorlists
- Change precedence of modulo (%) to same as multiply/divide to conform
to other langauges
- Fix default cutting plane selection

You can get the tar-ball and windows executable at:
  http://www.vagrearg.org/content/gcmc

The online documentation has been updated to reflect the changes. Please
let me know of any problems and suggestions you may have.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] ldconfig question

2013-11-13 Thread Bertho Stultiens
On 11/13/2013 09:59 PM, Gene Heskett wrote:
 I have added /usr/lib/camunits to one of the files in /etc/ld.so.conf.d, 
 and have verified that path is correct, but I don't seem to be able to make 
 a sudo ldconfig -v|less show me that it is seeing a single one of the 
 dozen plus .so files there.  I was under the impression all we ever had to 
 give it was the top level of a tree it (ldconfig) was supposed to process.
 Perhaps I'm running it wrong?

Did you rebuild the cache before running ldconfig -v?


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] ldconfig question

2013-11-13 Thread Bertho Stultiens
On 11/13/2013 10:37 PM, Gene Heskett wrote:
 I have added /usr/lib/camunits to one of the files in
 /etc/ld.so.conf.d, and have verified that path is correct, but I
 don't seem to be able to make a sudo ldconfig -v|less show me that
 it is seeing a single one of the dozen plus .so files there.  I was
 under the impression all we ever had to give it was the top level of
 a tree it (ldconfig) was supposed to process. Perhaps I'm running it
 wrong?

 Did you rebuild the cache before running ldconfig -v?
 
 I thought that was what did it?  Plz explain further.

Ehm, yes, but there are other options that prevent the cache from being
written to disk/being rebuilt. However, if you only use ldconfig -v,
then it should be rebuild.

Have you checked that the .so files in question have the execute and
read bits set?

Another possibility is that the internal info of the .so does not match
the version in the name. In that case, creating the symlinks may fail
and the .so must be patched or rebuilt.

You can actually test whether the files will load at all using
LD_LIBRARY_PATH and maybe LD_PRELOAD environment variables (as long as
the executable is not suid/sgid). See also man ld.so for detailed info.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-16 Thread Bertho Stultiens
On 11/16/2013 05:33 PM, Tony Zampini wrote:
 for( x = 0; x = 10; x += 0.5 )
 {
 for ( y = 0; y = 4; y += 0.5 )
 {
 drill( [x, y, -0.5], 0.1, 0.1);
 }
 }

Please note that gcmc defaults to mm if no units are specified. The
above will move 0.5mm each step. For inches, you should explicitly
specify it in the code:

for( x = 0mil; x = 1mil; x += 500mil )
{
for ( y = 0mil; y = 4000mil; y += 500mil )
{
drill( [x, y, -500mil], 100mil, 100mil);
}
}

I am considering to implement in-suffix for inches, but there are some
annoying side-effects when doing so because there will be more than one
conversion possibility. Should 1in + 1 be 2in or 1001mil. The former
would be more logical, but has the problem that you no longer can assume
a variable's magnitude. The latter has consistent magnitude, but is a
bit harder to understand/grasp/use.

Comments welcome.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-17 Thread Bertho Stultiens
On 11/16/2013 07:06 PM, John Kasunich wrote:
 In non-metric countries, mil is typically used only when making
 printed circuit boards.  Ordinary mechanical design is done in either
 inches or mm.
 
 In other words, inches and millimeters are the mainstream units,
 and mils are a niche application.  It almost seems like you have
 it the other way around.

You are right. Inches are the norm.

The next version will use inches as the default imperial measurement and
have mil as a derivative.

This change will have some consequenses, but they are relatively easy to
grasp:
1 in + 1 = 2 in
1 in + 1 mil = 1.001 in
1 mil + 1 = 0.001 in + 1 = 1.001 in


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-17 Thread Bertho Stultiens
On 11/16/2013 11:37 PM, Tony Zampini wrote:
 The way I have been using GCMC is to not use any unit specifiers after 
 numbers.
 This way, all I have to do is make sure I include G20 (program in inches) at 
 the top, and everything is
 treated as inches, since GCMC will not do any conversions when no explicit 
 units are
 specified (am I correct, Bertho?)
 
 In my example, I failed to mention that I used G20 at the beginning of the 
 program.

Yes, specifying no units at all will treat all measures as none and
translate the values as is to the output.

However, you must take extreme caution because some built-in functions
will add units due to implicit conversions. I do not think that it is
wise not to specify units because future versions of gcmc may interpret
things differently (see below).


 To clarify my previous email, I use the literal statement to
 include the G20. I don't use the -i switch. So GCMC thinks its
 working in mm, and by not using any explicit unit specifiers, no
 conversions are done. Then when I run the gcode, all values are
 treated as inches.

Adding literal to the code is like specifying assembly-code in a
C-program. It is non-portable as hell. It works fine for your use in a
specific case, but may have side-effects as things evolve.

The -i option was introduced to enable change of metric/imperial
defaults. That was not implemented at first, but the new version *will*
implement complete and throughout change of default. That change also
covers the implicit conversions in built-in functions and therefore will
no longre require you to insert a literal change of units.

The reason for this change is that I want metric/imperial conversions to
work transparant and correctly under all circumstances. Part of the
reason for gcmc's existance is the automatic unit conversions and that
should simply work.

[if I rant to much here just ignore me :-]
Not using explicit units in the source will result in interpretation
differences, depending how you compile. This is a consequence of the
grammar and design. However, it does not follow that you should exploit
this exeptional case. At least not when you want something to be portable.

It is fine to use/abuse for your own projects, but you should be careful
and painfully aware that you are on thinner and thinner ice as gcmc
evolves and time progresses.

All that said, making -i work on the global default improves
predictablility of the generated code and does not worsen the situation
(until I get a brainfart that has burning side-effects).

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-17 Thread Bertho Stultiens
On 11/17/2013 07:31 AM, Marius Liebenberg wrote:
 ... As I said, being a programmer I understand the C language. Its
 getting to think out of the box that is required. Would you attempt
 more complex parts with this tool or just repetitive type of jobs?

I too am more versed in C than mechanical engineering (well, 25 years of
CS, that is).

If gcmc is not capable of making complex parts, then there is something
missing. I am not talking about replacing CAD, but pieces where you know
your setup and can specify your piece algorithmically should be a piece
of (milled) cake.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-17 Thread Bertho Stultiens
On 11/17/2013 10:16 PM, Tony Zampini wrote:
 I understand your concern about portability, and I think the changes
 you are contemplating for the -i switch will allow me to eliminate
 the literal G20 statement.

Yes, having -i to work consistently was the idea. A commit/push in git
has been made to support that.


 So is it your recommendation that we *always* use units after all
 numeric values, even if we only plan to use, say, inches throughout a
 program?

If you want your program to be portable, then yes, you should always use
units when you are specifying a distance. The intricacies are of course
a bit more nuanced and require due consideration.

Nobody is forcing you to abide by any standards. However, you have to
consider that you can get into trouble if you do not organize your own
work. The arguments are basically the same for any type of software
development.

As an example, you wrote that lovely subroutine and want to reuse it in
a different setting, but you allowed ambiguous distances to be defined
and after a year you can't remember why/what you wrote (common example
of any code-writing experience).

If you decide to pass your lovely function to someone else, who does not
use your unit-system, does your function still work the same or will it
plow the walls of the mill?

The example may look far fetched, but once written code has a tendency
of surviving longer than you imagine. Especially temporary hacks are the
most permanent and cause the biggest headaches.

Once you get accustomed to writing programs, routines and functions with
gcmc, you want to reuse more and more in library settings. A good
library does its best to do what you tell it and is generally not
dependent on circumstantial configuration.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - G-Code Meta Compiler

2013-11-18 Thread Bertho Stultiens
On 11/18/2013 02:36 AM, Kent A. Reed wrote:
 Congratulations, Bertho. I see that gcmc has been included in the 
 Hackaday Links for November 17, 2013.

Thanks, it is good to have more people see it.


 I hope your server can withstand the inevitable onslaught of curious 
 browsers!

It is not the first time that I get hit like that, so the site will
probably manage. Luckily I offload much of the images and large files to
another server.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-18 Thread Bertho Stultiens
On 11/18/2013 03:00 AM, Steve Blackmore wrote:
 Ahhh - from another perspective. I am a mechanical engineer. I have a
 degree. I specialised in gas engineering, I worked for several years in
 a factory that made gas valves. We embraced CNC and I was there from the
 inception in the 80's.  I know virtually nothing about C, but I do know
 a lot about commercial CAD/CAM. I would never hand write anything but
 the simplest code, or use gcmc, much easier for me to draw a 3D part,
 import, produce code and run.

That is a refreshing perspective.

I can understand your view, but the commercial CAD/CAM packages are out
of reach for the hobbyist. There are many open and free CAD/CAM
alternatives nowadays, however, the concepts in drawing a piece is a
different paradigm and not suited for everyone.

I too use 3D drawing for some pieces when they become too complex, but
that is usual for 3D printing. My milling skills are lacking and I do
not have access to the expensive tools ;-)

Still, even the simplest code is easier to write with gcmc than
hand-code gcode. But no need to be apologetic, everybody should use the
tools he/she thinks are easiest or best suited.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-18 Thread Bertho Stultiens
On 11/18/2013 06:06 AM, Rafael Skodlar wrote:
 First, I'm not familiar with the program details. However, I wonder why 
 unit of measure throughout the program matters at all?

There is a simple reason why it matters. The output stage, where values
are output to XYZ coordinates, will use a conversion depending on how
you run gcmc (-i option).

(Please note that the following interpretation will be consistent from
version 1.3.0 (which is in the pipeline).)

Without -i, gcmc will default all none units to mm.
With -i, gcmc will default all none units to inch.

If you use scripts solely for your own use, then there is probably no
problem. However, when you start to share, then differences will
eventually pop up. It is the eternal portability problem all coders have
to deal with.


 Mixed hardcoded measurement units inside functions is unnecessary or 
 even dangerous [1] I believe. Mixing metric, inches, etc. is like saying 
 I'm going to create a program that will compile code written in python 
 sprinkled with some functions in java, or perl in between into a running 
 program.

Not necessarily a bad thing. It depends on what you are trying to
achieve. Units are a far cry from mixing languages. Units are a concept.


 If I understand this correctly, default units are metric. Why not 
 convert everything to metric? Don't all CNC machines understand it?

Gcmc will convert everything to millimeter on output by default (unless
you specify -i). Using units at the output-level should in my opinion
always be either/or, but the problem resides not in the output.

The reason for units in gcmc is to support designs that are mixed units.
The problem I regularly deal with is making a box (metric) for a PCB
(imperial). Now I can specify the coordinates in the design's source
units and have everything fit correctly. No longer any need to do manual
conversions, which are prone to error.


 A unit is a unit and should not change throughout the gcmc program. 
 Units represent distance relationship between places of work (drilling, 
 welding, tapping, extruding material, etc.).

Units do not change as such. You have distance units and angular units.

You normally only deal with units when adding them to constants. The
point being, calculation will be distance or angular throughout the
calculations.

The problem is when you start mixing it with none. A value with no
units associated can be interpreted in different ways, due to scaling.
You need to /know/ what you are doing.

Gcmc has a fixed set of rules to deal with these cases. Like any
programming language, the programmer must express things in a way that
will reach the proper result.


 Well designed programs come with configuration file(s) which define 
 default values. If you work with inches all the time then set that in 
 the configuration file and all will be translated to metric in the 
 final code. If you use something else, like the ear size of current 
 crown prince of England, then that would translate to G-code 
 accordingly. [2]

Configuration files are a hell to work with. Which files make up a
project? I'd rather have everything in one source and define a few
variables at the top to make the setup flexible.


 It would also be easy to resize (scale) working units on the fly, i.e. 
 change from the original to whatever you want. At the top of gcmc 
 programs you would change/redefine default variables into whatever is 
 needed in a particular program. Ex.
 units = inch
 scale_x = 1.75
 scale_y = 1.75
 scale_z = 1

Scaling is an issue that can be seen on different levels. It is easy to
scale any defined path in gcmc using vector math. However, there is no
scaling at the output-level. The program defines what is output.

Scaling at the output level raises a lot of issues, but you surely could
implement an affine matrix to post-process all output.


 Knowing you dare dealing with inches, a special function would be called 
 to swap metric G-code to US specific (G20 and G21, etc.). There are 
 other G-codes exceptions, specific to some older machines, that would 
 need code adaptation but everything else can stay the same for basic 
 positioning functions I believe.

Gcmc will not insert G20/G21 anywhere in the output other than in the
prologue, which defines the initial setup. Everything else in the g-code
will always use the same output unit format.

You can, of course, insert them yourselves, but that may lead to
unpredictable results. It is like changing a CPU from binary to decimal
in the middle of a program.


 [1] If you are going to mix units (cutter.gcmc):
 
  move([-,-,-2.0mm]);
  tracepath(padpath + offset, -2.0mm, DWELL);
  move([-,-,-1.0mm]);
 
  goto([50mil, 0mil] + offset);

This example is exactly why there are units.
The above snippet uses a path that cuts out space for components (which
are on a PCB). The components are placed in imperial units. However, I
just want to cut 2mm into a block of plastic, which is 

Re: [Emc-users] More flexible handling for coordinate systems?

2013-11-18 Thread Bertho Stultiens
On 11/18/2013 08:09 AM, Gregg Eshelman wrote:
 Could the vision system do realtime tracking and position error 
 correction, continuously comparing the board to an accurate image?

That is how pick-and-place machines work. They adapt to what they see.

Integrating this into the g-code backend may prove to be difficult and
it is probaby easier to create a feedback-loop in the generation of the
movements/g-code.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - v1.3.0

2013-11-18 Thread Bertho Stultiens
Hi all,

A new release, version 1.3.0, of the G-Code Meta Compiler has been made.

The new version includes a set of changes, improvements and bug fixes:
- Inch units (in suffix) has been introduced and mil will now be
converted to inch when parsed. Using inch as a base measure brings gcmc
more in line with general imperial measure usage.

- The -i option for output in imperial units now also consistently
uses imperial units internally for all built-in functions. All values
without units upon output are treated depending the default set on the
command-line.

- The command-line now supports both long and short options (use -h or
--help for a complete list).

- Prologue and epilogue code can now be imported from files specified on
the command-line, replacing the built-in version.

- Break and continue statements are fixed to actually break/continue the
loop they are used in. (Thanks to Tony for spotting and reporting the
problem).


You can get the tar-ball and windows executable at:
  http://www.vagrearg.org/content/gcmc

The online documentation has been updated to reflect the changes. Please
let me know of any problems and suggestions you may have.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] More flexible handling for coordinate systems?

2013-11-18 Thread Bertho Stultiens
On 11/18/2013 03:43 PM, Philipp Burch wrote:
 Integrating this into the g-code backend may prove to be difficult and
 it is probaby easier to create a feedback-loop in the generation of the
 movements/g-code.
 Probably this is indeed the way to go. Creating a G-Code template for 
 exactly one part in the panel and then letting the script generate the 
 full program for the array.
 Right now, I'm using AXIS as a GUI with a GladeVCP extension for the 
 alignment. Can I feed a string directly to the interpreter without 
 creating a temporary program file first?

Well, you have the MDI manual input tab, so there certainly is a manual
hook in there to force-feed the interpreter with G-code lines.

You could probably hook that with a named pipe or a socket.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
DreamFactory - Open Source REST  JSON Services for HTML5  Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.1.1

2013-11-19 Thread Bertho Stultiens
On 11/19/2013 06:59 AM, Rafael Skodlar wrote:
 The problem is when you start mixing it with none. A value with no
 units associated can be interpreted in different ways, due to scaling.
 You need to /know/ what you are doing.
 
 Don't assume things. I see programmers assume too many things and the 
 rest of us have to deal with it later on.

Gcmc does not assume, programmers do. Writing (good) code is hard,
regardless of language. Some languages may be easier, but that is
always a very subjective view. Any programmer needs to get familiar with
the tools he/she uses before a full synergy can unfold.

A programming language is a static set of rules by which you can model a
problem. You need to learn to model correctly before you can get the
best out of things.


 This example is exactly why there are units.
 This is where I disagree. Your example program has
 TW2 = TW / 2.0;
 used later as
 padpath = {
  [0mil+TW2, -75mil+TW2], [0mil+TW2, 75mil-TW2],
  [550mil-TW2, 75mil-TW2], [550mil-TW2, -75mil+TW2]
 };
 
 If you can declare some value at the top, then everything could be 
 assumed to be a (metric) unit and adjusted later with added or 
 subtracted value stored in a variable. Why use special command line 
 option when you can declare it in the program?

I think you misunderstand the reason for units i gcmc.

Units are there to have 1) ability to mix units without interference and
2) consistent output.

The first part is that you want to be able to work in any units you like
and have the machine take care of the conversions for you.
The second part is that what /matters/ is the output. The output is
either metric /or/ imperial, subject to the -i option.


 I understand. However, danger in mixing different units is very big. 
 That's how NASA crashed a satellite on Mars mixing metric and US units.

And therefore you should use units /correctly/ on all values. Then using
gcmc will not result in wrong interpretations.

BTW, the unit confusion of the Mars probe was in the software radar
range interpretation iirc. Had the protocol included units, then it
would have been spotted...


 move([-,-,-1.0mm]) will *only* move the Z-axis
 move([0,0,-1.0]) will move axes X, Y and Z
 
 My expectation was that move 0 is no move. Are you saying this are 
 coordinates not a relative move? Learning curve .../

All gcmc coordinates are in the absolute XYZ/ABC/UVW space.

You can move relative using move_r(), goto_r() and arcXX_r() functions.
You *still* have a difference between undef values and explicit values.
The conversion to G-code omits the coordinate only if you specify undef
as value:

  move([0,0,1]);
  move_r([0,0,1]);
becomes
  G1 X0 Y0 Z1
  G1 X0 Y0 Z2

  move([-,-,1]);
  move_r([-,-,1]);
becomes
  G1 Z1
  G1 Z2

Gcmc keeps track of the absolute position internally while executing the
script, which can be retrieved at any point using the position() function.

You can instruct gcmc to output relative movements (-r option), in which
case all G-code uses turtle moves.


 The ';' is part of the statement and terminates a statement. It is a
 grammar thing to ensure that you can easily parse the syntax with a
 LALR(1) parser. The ';' is there because gcmc uses a context-free
 grammar, i.e. white-space is inconsequential.
 
 It's my belief that there is no need for redundancy. While it's easy to 
 see new lines, what happens if you forget ;?

It is not redundant in my view.

If you forget a semi-colon, you get an error from the compiler.


 Not at all. All variables are instantiated at the spot where you write
 them. There is no need to declare anything.
[snip function]
 It was local n, i, ... and res = {}; that led me to believe you need 
 to initialize variables or arrays.

The local keyword is to force variables in the local scope of the
function.

The reason is that you need a way to prevent variable-name collisions
when you write a function. You often use i, n, x,... as variable
names, which would collide on execution if not forced to be local to the
function.

Gcmc has no way of detecting whether the programmer wants to access a
global variable or intends to instantiate a local variable. Therefore
you use the local keyword to force the issue.

You still need to initialize a variable before it can be used as an
rvalue. Gcmc needs to know the value/content of a variable before you
can use that value/content.


 Gcmc is not an interactive program and it will never be interactive.
 Sure. And it won't need more than 1MB of memory ;-)
 Don't be modest, think big. Based on previous experience we know that 
 programs evolve into ever more productive tools.

There is a difference between what is good for a program and what could
be done with a program.

If you take the extreme view, Zawinski's Law, then you would suggest
that gcmc will eventually read email.

I do not agree and resist that view with every fiber in my body.

A program should do _one_ simple thing and should excel at it. The Unix
philosophy of 

Re: [Emc-users] gcmc - v1.1.1

2013-11-19 Thread Bertho Stultiens
On 11/19/2013 03:43 PM, Tony Zampini wrote:
 If you want a menu, then you can write a script as a wrapper.
 Gcmc is a command-line program and works in the tradition of all/most
 unix style commands.
 That's fine. What I'm concerned about is users that need to run
 repetitive tasks but don't understand CLI at all.
 Well, when the time is ripe, then someone will write an IDE or integrate
 it into an existing IDE.
 FWIW, under Win7, I was easily able to wrap an existing IDE around 
 gcmc. For my work, I use the Keil uVision IDE for 8051 based
 development. This IDE has the capability to run a command line MS DOS
 batch file after the build.

See, I didn't even have to suggest it... Integration is already done.

Many brains thrown together (sometimes) create fantastic solutions. :-)

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Gcmc test with an SVG backend

2013-11-19 Thread Bertho Stultiens
On 11/19/2013 04:35 PM, David Armstrong wrote:
 I was hacking a bit on gcmc and got the idea that it might be used for
 the local hacker-space's PhotonSaw too (home-made laser cutter at
 osaa.dk). The PhotonSaw uses svg as input and cuts the paths from that file.
 While pondering, I thought it could also be used to visualize the path
 taken in general. Attached are two images of the gcmc examples as SVG
 paths images.
 is it feasable to load dxf's the same way as svg ?
 i'd definately have a need for that for 2d laser cutting

It doesn't load SVG's, it /writes/ them.

But, yes, it should be just as easy to write a DXF backend.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Gcmc test with an SVG backend

2013-11-20 Thread Bertho Stultiens
On 11/19/2013 04:35 PM, David Armstrong wrote:
 While pondering, I thought it could also be used to visualize the path
 taken in general. Attached are two images of the gcmc examples as SVG
 paths images.
 is it feasable to load dxf's the same way as svg ?
 i'd definately have a need for that for 2d laser cutting

There is now a branch in git called backend_svg which includes both
SVG and DXF output. If you compile locally, then you can switch branches
to test like:

$ cd ...local/gcmc/git/clone...
$ git pull
$ git checkout backend_svg
$ ./configure
$ make
$ src/gcmc --help

The selection of backend uses command-line switches --svg and --dxf.
It should be intuitive, I hope.

The SVG backend only uses the XY plane and ignores all Z. It also has
the ability to output the goto()s from the script, which it puts in a
separate layer. You can disable that using the --svg-no-movelayer
switch. The line-width of the cut-path can be set with
--svg-toolwidth=XXX, where XXX is in mm or inch, depending the -i switch.

The DXF backend does record XYZ on lines and arcs, but I have not tested
any 3D correctness, only checked that the 2D (XY) mapping lookes correct
(using QCad). It only outputs the cut-path (i.e. move() and arc*()).

Neither SVG nor DXF backend has implemented full circles (the P in the
G2/G3). That I have to look into yet.

I'm rather sure that the SVG backend's output is correct, but the DXF
format may need tuning/fixing (dxf is a format that makes me sigh...).
QCad seems happy, but that is not a general standard.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - v1.3.1

2013-11-21 Thread Bertho Stultiens
Hi All,

An updated version 1.3.1 of gcmc is available. Changes include:

- Add circle_cw(_r) and circle_ccw(_r) functions for full circles. Arcs
cannot unambiguously create circles because the center-point cannot be
calculated from the radius alone.
- Fix command-line segfault in long options --include and --output. The
options were missing the required_argument tags.
- Fix relative arcs to perform correctly on using arc_{cw,ccw}_r.
- Fix global Z position update of drill() function.

You can get the newest version at:
  http://www.vagrearg.org/content/gcmc

The on-line documentation is updated to reflect the changes.

Note: This release does not yet include the svg/dxf backends. These are
not yet in the main trunk and are scheduled to be released shortly, when
I get to tidy it a bit.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Gcmc test with an SVG backend

2013-11-21 Thread Bertho Stultiens
On 11/21/2013 12:57 AM, Bertho Stultiens wrote:
 While pondering, I thought it could also be used to visualize the path
 taken in general. Attached are two images of the gcmc examples as SVG
 paths images.
 is it feasable to load dxf's the same way as svg ?
 i'd definately have a need for that for 2d laser cutting
 There is now a branch in git called backend_svg which includes both
 SVG and DXF output. If you compile locally, then you can switch branches
 to test like:

Both SVG and DXF backends are now merged into the master branch, so you
may swicth back to the master branch to follow the development. All
backends should be able to process all built-in functions, including the
added circle functions.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - v1.4.0 - Now supportting multiple backends

2013-11-24 Thread Bertho Stultiens
Hi All,

I've been incrementally improving gcmc to support more and more features
for easier and more general use. The new 1.4.0 version is a larger step
forward and includes multiple backends to output in G-code, SVG and DXF
formats. This enables gcmc to be used not only for mills/lathes, but
also for laser cutters (and everything else I have not thought of yet ;-)

The new backends can be selected on the command-line; see
http://www.vagrearg.org/content/gcmc#running for details on all
command-line options.

Changes include:
- Feature: add elif() construct in flow control to allow if(){}
  elif{}... else{} constructs
- Feature: add SVG and DXF backends. Now gcmc can output in g-code, svg
  and dxf in either metric or imperial units
- Feature: rotate_XX() functions now accept both vectors and vectorlists
- Feature: array indices may now be negative to address from the last
  entry in a vector or vectorlist
- Feature: svg backend may use svg_closepath() to ensure closed SVG
  paths
- Feature: add isgcode(), issvg() and isdxf() query functions to detect
  target backend in scripts
- Feature: add scale() function to scale vectors and vectorlists
- Feature: add example of a laser-cut box
- Fix: filemode for windows must take text/binary into account
- Fix: properly test arc's radius vs start-/end-point to detect invalid
  arcs
- Fix: allow stand-alone function calls in conditional expressions
- Fix: coolant() function now accepts string argument to bring it
  inline with other g-code control functions
- Fix: allow all examples to be built within the source-tree (make
  examples)
- Fix: prevent several potential NULL pointer dereferences in value
  handling

You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The set of examples can be compiled to all three output formats and
screenshots of the results can be found at:
  http://www.vagrearg.org/content/gcmc#screenshots

The online documentation is updated to reflect the changes:
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref


Let me know if you run into any problems or have requests for changes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.4.0 - Now supportting multiple backends

2013-11-24 Thread Bertho Stultiens
On 11/24/2013 06:40 PM, Lars Andersson wrote:
 thanks for your fine work! Really enjoy this.

You are welcome. I also enjoy creating the program :-)


 I'm wondering about a small detail; how do I convert a vectorlist with 
 one element as returned from tail(vectorlist, 1) into a vector as 
 expected by move(vector)?

To return the last vector in a list you can simply use:
   lastvector = vectorlist[-1];
or as a one-liner for the move you describe:
   move(vectorlist[-1]);

The negative index was introduced with 1.4.0 to make it easier to get
entries from the back.

Pre 1.4.0 you had to write:
 lastvector = vectorlist[count(vectorlist)-1];


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - v1.4.0 - Now supporting multiple backends

2013-11-24 Thread Bertho Stultiens
On 11/24/2013 08:09 PM, Tony Zampini wrote:
 In general, if you have a one element vector list, and want to use it
 where a vector is required (such as the move() statement), you can simply
 include the index of the first (and only) element, which is 0. For example:
move(vectorlist); // Compile error
move(vectorlist[0]);// Legal statement
 Bertho, please correct me if I'm wrong.

You are right. You can always index the vectorlist, and, if you know
there is only one vector in it, the index at 0 will give you that vector.

pedantic_mode
There is a small nuance in your example regarding the comment. The
compile error is actually a run-time error. Gcmc does not know the
type of a variable until it is evalueted at run-time (it uses lazy
evaluation and late binding). The first move would be syntactically
correct, but it is semantically wrong, due to a type-mismatch, and
therefore still result in an error.
/pedantic_mode

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Is there an open source program similar to Vericut?

2013-11-25 Thread Bertho Stultiens
On 11/25/2013 10:25 AM, Dave Caroline wrote:
 I have not seen http://openscam.com/ mentioned yet.
 also there are a couple of other experiments
 http://www.anderswallin.net/tag/cutsim/
 gdepth at http://emergent.unpythonic.net/01169521961

This is a bit of a sad story... I too have been looking for a simulator
and just tested the above suggestions. (BTW, I am on Fedora 19)

OpenSCAM: depends on dxflib, not available in fedora repos
  -- build fail

gdepth: Last update Nov. 2008. Depends on Python numarray, apparently,
Py 2.7 does not cut it
  -- build fail

Cutsim: Last update ~2years ago. Uses external ngc interpreter and
tooltable. After some minor g++ code fixing compiled. Running on an
example -- Segfault


Of the above, only OpenSCAM seems to be in active development.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Is there an open source program similar to Vericut?

2013-11-25 Thread Bertho Stultiens
On 11/25/2013 02:47 PM, Anders Wallin wrote:
 I have a feeling many of these CAD/CAM things require more knowledge than
 fits in the average open-source developers brain.

I would not quite put it like that. There are some brilliant people out
there. Not all will perform equally on all subjects. As they say, YMMV.

The problem is to get the right minds interested into the right
projects ;-)


 the code for my efforts is at:
 https://github.com/aewallin/libcutsim

Ok, I'll take a look. That is not to say that my brain can fit the
N-dimensional world with all associated tricks. But I can try and ask,
at least, stupid questions.


 *your* help/patches is required with:
 - use of the linuxcnc g-code interpreter (through c++ or python). I don't
 think it makes sense to write a new g-code interpreter. Would it make sense
 to package the interpreter library into a separate .deb package, if there
 are other 'clients' than just linuxcnc?

That would be a good idea. The rs274 binary could be used as a front-end
for many other things too. But I guess that would be a matter for the
emc-develop list and a patch in that direction.


 - GUI and 3D view based on polygon-arrays and vertex-arrays (I've used VTK,
 but something lower-level and faster might be better). I would suggest Qt
 for the GUI but opinions will differ..

Qt is easy in comparison to all other toolkits, so, yes, a good option.
The question would be if it is possible to integrate it into an existing
viewer, or take an existing code-frame of reference.


 - multi-threading so that the GUI remains responsive and the 3D view of the
 model updates while the simulation-engine runs

Details of implementation; but still a consideration.


 - actual updates/improvements to the cutting-simulation engine:
 -- support for different shapes of cutters
 -- support for other G-codes than G1
 -- data-structure and algorithm changes for e.g. Dual Contouring or one of
 the other improved isosurface extraction algorithms
 
 The README file lists a few references which explain most of the background.
 I will try to help and explain how the code works to anyone asking even
 semi-intelligent questions.

I'll take your word for it and try to ask semi-intelligent questions
when I get there ;-)


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Is there an open source program similar to Vericut?

2013-11-25 Thread Bertho Stultiens
On 11/25/2013 04:26 PM, John Murphy wrote:
 I use opensCAM and it works great, trivial install on ubuntu.

Well, I tried to install ubuntu 12.04 LTS in a VM, but it locks up X all
the time.

However, I've been thinking about exporting to an openSCAD script
through rs274 (or sai through linking tolibrs274.so).

OpenSCAD is quite mature and already has all the primitives you want and
you only need to generate a script that sums the tool-paths and
subtracts it from a block.
It may take a wile to render for larger G-code scripts, though, but I
guess that will be a problem for most if not all imlementations when
things get big.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Is there an open source program similar to Vericut?

2013-11-26 Thread Bertho Stultiens
On 11/25/2013 08:09 PM, Bertho Stultiens wrote:
 However, I've been thinking about exporting to an openSCAD script
 through rs274 (or sai through linking tolibrs274.so).

I did a really quick hack to export the feed movement to a script and
could create a 3D representation of the cut result (is is an example
file taken from gcmc).

The scad-file and c-source used to create the scad file are attached too.

The first few tries caused openscad to crash, which I could trace to
some errors of mine. However, I do think that there are some bugs in
openscad that will cause larger files to exhibit serious problems.

There are some optimizations that could be considered. Currently, I just
use any feed movement and create a hull of the start- to end-position.
That is inefficient if some paths could be reused. Also, it is not clear
whether calculation of sums and differences can be sped up by reordering
them in a better way.

-- 
Greetings Bertho

(disclaimers are disclaimed)
attachment: cutter-3D.png

cutter-3D.scad.gz
Description: application/gzip


ngc2openscad.c.gz
Description: application/gzip
--
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311iu=/4140/ostg.clktrk___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - v1.4.1

2013-11-29 Thread Bertho Stultiens
Hi All,

A new version 1.4.1 of gcmc has been released.
The major changes are adding the command-line defines (-D option),
revamped documentation and RPM and DEB package management files for
automatic package generation.

Changes include:
- Feature: include unix man-page
- Feature: revamp documentation to html-pages
- Feature: allow empty statements termnated by semi-colon
- Feature: implement command-line defines using -D option
- Feature: add isdefined() function to test variables
- Feature: add isrelative() function to test global relative setting
- Feature: add .spec-file and debian-control for RPM and DEB packages
- Fix: error recovery in parser should not crash
- Fix: preologue/epilogue may only change for g-code backend
- Fix: comparisons must take units into account and EPSILON boundary
- Fix: move_r/goto_r and global relative moves corrected to generate
correct code
- Fix: use bsearch in finding functions to speed things up
- Fix: incorrect help message for short options


You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The updated documentation is online at:
  http://www.vagrearg.org/content/gcmc-man
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref

All documentation is, of course, also included in the tar-ball distribution.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Is there an open source program similar to Vericut?

2013-12-05 Thread Bertho Stultiens
On 12/05/2013 11:52 AM, andy pugh wrote:
 But showing and moving machine and vises is a minor thing compared to
 material removal I think. Although I don't think it is trivial.
 I wonder if a voxel-based approach is simpler, but it rather depends
 on the required precision.
 If 1mm voxels on a 100mm cube give a good enough preview then you only
 need 125kB of data.
 If you want to simulate 1' cubes to 0.001 then you start looking at
 200GB of data.

The voxel approach is a valid one. You can reduce the data-set size by
merging voxels in a plane and volume. There are tree-algorithms to
handle such cases and there is an advantage that you only need to split,
never merge. However, using trees can be computationally (a lot) more
work. But then, it can be used for very high resolution and can be
parallelized quite well.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Is there an open source program similar to Vericut?

2013-12-05 Thread Bertho Stultiens
On 12/05/2013 12:05 PM, Bertho Stultiens wrote:
 The voxel approach is a valid one. You can reduce the data-set size by
 merging voxels in a plane and volume. There are tree-algorithms to
 handle such cases and there is an advantage that you only need to split,
 never merge. However, using trees can be computationally (a lot) more
 work. But then, it can be used for very high resolution and can be
 parallelized quite well.

BTW, the splitting is usually done with the octtree approach (which was
mentioned before).

It can still generate a huge amount of data. If you want a block of 10
split down to 1mil (0.001), or 4 orders of magnitude, then you need a
tree-depth of 14. That would be worst case 10^12 leaf nodes, which is
computationally unfeasible. Even a measly 1% fill is 10^10 leaf nodes,
which no ordinary computer would want to deal with.

My guess is that you could get max. ~2.5 orders of magnitude resolution
for any result that should complete in the near future.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code

2013-12-05 Thread Bertho Stultiens
On 12/06/2013 01:46 AM, Robert Ellenberg wrote:
 As some of you know already, I'm working on an improvement to the linuxcnc
 trajectory planner that will allow much faster movement for engraving-type
 programs with lots of short segments. As part of this effort, I need test
 cases, both to find rare errors, and to estimate performance improvements.

You could use the wheels.gcmc example from gcmc (contributed by Alan
Battersby). It creates a lot of small segments of 10..100um. You can
even increase the number of segments by decreasing the angle-interval of
the calculation (currently at 0.01 degrees).

I am a bit reluctant to attach the file due to the size (1.1MByte
uncompressed, 450k gzip,  380k bz2 and ~200k with 7-zip). You should
easily be able to generate the example yourself. Otherwise let me know.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Slow G code

2013-12-05 Thread Bertho Stultiens
On 12/06/2013 02:37 AM, Robert Ellenberg wrote:
 You could use the wheels.gcmc example from gcmc (contributed by Alan
 Battersby). It creates a lot of small segments of 10..100um. You can
 even increase the number of segments by decreasing the angle-interval of
 the calculation (currently at 0.01 degrees).
 Thanks, Bertho, I'll give this a shot.

Great.


 By the way, I launched gcmc accidentally with no input, and it seemed
 to hang. Running with --help listed the arguments nicely, so you
 might want to treat no arguments the same as --help.

Running gcmc with no file as input will read input from stdin (the
command-line) as in good unix tradition. If you do not specify an output
file (-o option) then all output is written to stdout. This is done so
you can form command-chains with pipes on the command-line.

The behavior is described in the man-page
(http://www.vagrearg.org/content/gcmc-man).

You can terminate with ^C (break) or ^D, which is EOF on *nix systems
(or, if using windows, ^Z to indicate EOF).


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Laser engravng

2013-12-06 Thread Bertho Stultiens
On 12/06/2013 07:07 PM, Florian Rist wrote:
 So my question is, to someone who may have tried/done this, is can a 1
 ounce layer of copper be burned away rapidly enough so as not to leave a 
 burned, conductive path where the copper was?
 I tried this with two different Lasers sources:
 120 W CW CO2 Laser at 10600 µm wavelength:
 Result: no way to 'burn' the copper. It was hardly possible to burn away
 a the play of photosensitive coating used in the normal 'wet' process.
 200W q-switched Yb:Yag Laser at 1064 µm:
 Result: even the 25 kW max. pulse energy were not sufficient to burn
 away the copper properly. It is possible to cut through the coper layer
 by the precess is not controlled enough. The pulse energy would probably
 have to be at least 10 times higher to establish a decent process. But
 this laser removes the light sensitive coating quite well at low power
 settings.

Copper boils at ~2560 deg C and has a thermal conductivity of ~400W/(mK).

Compare this to aluminium: 2520deg and 237W/(mK) and iron: 2860deg and
80W/(mK).

Getting any copper vaporized, you need a *huge* amount of energy. We are
talking about 100..250kW pulses to make any proper cut and more if it
needs to be nice.

Aluminium also has a great problem because it is very close to copper.
Iron has 5 times less heat transport and even though it has a higher
boiling temperature, it will vaporize more easily than copper and
aluminium due to the reduced heat transport.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Laser engravng

2013-12-06 Thread Bertho Stultiens
On 12/06/2013 07:56 PM, Gene Heskett wrote:
 PS: There was a ns pulsed UV Laser (quadrupled YAG) on ebay recently,
 this would be the right one for the job. I was close to buying it was
 quite cheap.
 unfortunatly not , copper for one will absorb the heat .
 and for a laser to work it realy needs to vaporise the metal , which is
 one reason you see dvd lasers burning wood or plastics
 rather than a clean cut .
 iv'e try'd copper and even with 600w + it's difficult to even mark it
 although the fr4 will burn quite nicely and be nice and crisp and fill
 your room with unfortunate toxins
 Just one of the reasons to have a 4 hose from my dust collector arranged 
 to keep the area clear, and the stink outside, where my home sewn 2' 
 diameter, 10' foot long collector bag lives.

Also, you need an inert gas enclosure (argon) to prevent catastrophic
results. Vaporizing metals at these temperatures are extremely reactive
and any oxygen will result in a burning cloud.


 Not to mention eyeball wreckers just from the reflections off the 
 surrounding walls. Bad idea for someone not well versed in the tech.

Yes, the laser should be tuned to an absorption line of metal/material
being cut to prevent too much energy loss due to reflection.


 Humm, thats beginning to sound like non-exportable munitions.

Indeed, it is not a hobby-laser anymore...


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Laser engravng

2013-12-06 Thread Bertho Stultiens
On 12/06/2013 08:24 PM, Gene Heskett wrote:
 Hence the cataract warnings that seem to surround the long IR CO2 models.  
 Unforch I do have some already.

Cataract inducing lasers are at ~1500nm (often Yag type lasers). The
1.5um is small enough to pass through the cornea and will induce
coagulation in the lens (making it milky-white). Your cornea also will
take damage, but the bulk energy at these wavelengths (1..2um) are
absorbed by the lens.

Longer wavelengths are readily absorbed by water and will cause the
tearfilm to boil off. If any appreciable amount of energy still passes
onto the anterior chamber (between lens and cornea) then the water there
will heat. Too long exposure will cause the lens to coagulate (at about
55..60 degrees C) and therefore also induce a cataract.


When you get into such situation, you'd be swearing and grumbling that
you /should/ have been wearing eye protection. ;-)

Do not mess with your eyes.


(full disclosure: I workes at a hospital's department of ophthalmology
for 10 years).

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc 1.4.2

2013-12-11 Thread Bertho Stultiens
Hi All,

A new version 1.4.2 of gcmc has been released.
The major change is the addition of g-code function generation
(--gcode-function option) as well as the ability to reverse vectorlists
for easier alternating path movements. The documentation now also
includes the return values of the built-in functions.

Changes include:
- Feature: Add reverse() function to reverse vectorlist's vectors and
vector's coordinates
- Feature: Add --gcode-function option to generate gcode subroutines
- Fix: toolchange() must emit M6 for actual change to happen
- Fix: position() must return coordinates in correct units
- Fix: documentation updated to include built-in function return
types/values


You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The updated documentation is online at:
  http://www.vagrearg.org/content/gcmc-man
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref

All documentation is, of course, included in the tar-ball distribution
and now also added to the windows zip-file.

As usual, let me know if you encounter bugs or have any questions or wishes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] jerk discussion

2013-12-17 Thread Bertho Stultiens
On 12/17/2013 12:23 PM, Gene Heskett wrote:
 I wonder if this is anything like that?
 http://www.youtube.com/watch?v=2SozZ7af3wg

 No, no resemblance to my idea, and TBT that driver would be dangerous 
 unless its feedback does go into LCNC so LCNC knows it is not where LCNC 
 told it to be.  Cute demo yes but could you trust 9 of them to stay within 
 a thou of the programmed path?  Scary.

But that is the point; if you do not have feedback, then you will never
be able to ensure that you are anywhere on the programmed path. No
matter what driver you use. If one axis is slowed down externally, then
all others need to be adjusted too.

The real problem is, if the slowing force is reduced, who is controlling
the axis' (re-)acceleration? If the HW driver is (partly) autonomous,
then your controlling SW will always lag behind and create a larger path
deviation than if the SW has full control. I.e. reactionary vs.
actionary control.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] Number of available variables

2013-12-17 Thread Bertho Stultiens
Hi,

Is there a reason, other than the RS274 standard, why there are only
5000 numbered variables available?

I am trying to create a compiling backend to gcmc and the maximum
complexity of the program will depend on the available storage. The
gcode interpreter has enough Turing completeness to calculate anything,
but the available memory size is a limiting factor.

Wouldn't it be trivial to support numbered variables to any number N?

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] Number of available variables

2013-12-17 Thread Bertho Stultiens
On 12/17/2013 03:33 PM, andy pugh wrote:
 I am trying to create a compiling backend to gcmc and the maximum
 complexity of the program will depend on the available storage.
 You could use named variables instead.

Not for indirect addressing. A lot of the memory needs to be addressed
using #[var] or #[#123] constructs and the target is always a numerical
variable.

Unless you know of a way to store strings in variables and dereference them.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET,  PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


[Emc-users] gcmc - 1.5.2

2014-11-27 Thread Bertho Stultiens
Hi All,

A new version 1.5.2 of gcmc has been released.

This release is a primarily a bug-fix release to fix arcs in the YZ
plane. The release also adds new examples and a language feature to
address vector coordinates as fields (v[0] can now be written as
v.x). The documentation has been updated.


Changes include:
- Add Ball-in-Cube example
- Add hypo-/epi-trochoids example
- Add vim syntax-highlight file
- Add field-addressing to vectors using '.' operator and axis names
- Add to_inch() function as an alias to to_in() for consistency
- Add RPM and Debian build documentation
- Arcs in plane YZ modified wrong coordinates
- Html errors in docs

The examples have screen-shots on the gcmc homepage for quick inspiration.


You can get the new version from the homepage:
  http://www.vagrearg.org/content/gcmc

The updated documentation is online at:
  http://www.vagrearg.org/content/gcmc-into
  http://www.vagrearg.org/content/gcmc-man
  http://www.vagrearg.org/content/gcmc-syntax
  http://www.vagrearg.org/content/gcmc-funcref
  http://www.vagrearg.org/content/gcmc-library

All documentation is, of course, included in the tar-ball distribution
and now also added to the windows zip-file.

As usual, let me know if you encounter bugs or have any questions or wishes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-11-29 Thread Bertho Stultiens
On 11/30/2014 01:02 AM, TZ(Paypal) wrote:
 Thanks for writing/maintaining gcmc. I like the addition of the . operator 
 for vector field access.
 I can't wait to try it!

It is my pleasure to maintain the code. I find it useful too ;-)

The addition was suggested and I actually wondered why I did not think
of it before. It does make some things more readable.

I am wondering what is required to get the word out to more people. I
had a page and release anouncement on freecode, but they shut down some
time ago now. I'm better at coding than doing publishing.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-11-30 Thread Bertho Stultiens
On 11/30/2014 03:46 PM, Gene Heskett wrote:
 On Sunday 30 November 2014 07:04:10 W. Martinjak did opine
 And Gene did reply:
 On 2014-11-27 15:46, Bertho Stultiens wrote:
 The updated documentation is online at:
   http://www.vagrearg.org/content/gcmc-into

 Should be:
 http://www.vagrearg.org/content/gcmc-intro
 
 Yes. is this very complete web page available in pdf for making dead tree 
 copies? It would be bound and occupy the shelf beside the monitor in my 
 case.

Hm, no, not as such. But you could get the source html in the browser
(from the distro or webpage) and do a Print to File as a Postscript
file. Then run:
$ ps2pdf -dOptimize=true -dEmbedAllFonts=true -sPAPERSIZE=a4 myfile.ps
(or whatever papaer size you require) that will give you a myfile.pdf
file. Then you can print that pdf on a printer using dead trees, bind it
and put it on the shelf.

However, it might be easier to save the html locally and read it locally
in the browser or print it from your browser directly then ;-)

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-12-01 Thread Bertho Stultiens
On 12/01/2014 12:46 AM, Gene Heskett wrote:
 The updated documentation is online at:
   http://www.vagrearg.org/content/gcmc-into
 Should be:
 http://www.vagrearg.org/content/gcmc-intro
 Yes. is this very complete web page available in pdf for making dead
 tree copies? It would be bound and occupy the shelf beside the
 monitor in my case.
 Hm, no, not as such. But you could get the source html in the browser
 (from the distro or webpage) and do a Print to File as a Postscript
 file. Then run:
 $ ps2pdf -dOptimize=true -dEmbedAllFonts=true -sPAPERSIZE=a4 myfile.ps
 (or whatever papaer size you require) that will give you a myfile.pdf
 file. Then you can print that pdf on a printer using dead trees, bind
 it and put it on the shelf.
 However, it might be easier to save the html locally and read it
 locally in the browser or print it from your browser directly then ;-)
 
 Which is what I just did, and punched  mounted in a folder.  But in 
 looking it over, it seems to me that writing what I want it to do in a new 
 language, and then translating it into gcode adds more complexity than I 
 would have just writing it in gcode in the first place.

Well, that is a matter of opinion, I guess. It is often easier to revert
to old habits instead of learning new tricks. I know because I tend to
do that too all too often (boy I feel old now ;-)

The point being, using a new language means thinking at a different
level of abstraction, which is always a steep learning curve.

Speaking for my self, I just got fed up with plain gcode's archaics and
wanted more structure.


 I have it in mind 
 to have a couple vars in it which will be used as multipliers so I can 
 control which set of these huge box fingers is being cut by inverting the 
 shape of the cut in the y direction depending on whether a var is  1. 
 or 0.0.
... [snip] ...

Wow, you lost me there.


 Today is a good day, I woke up. :)

This I can relate to :-)


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-12-01 Thread Bertho Stultiens
On 11/30/2014 11:08 PM, TZ(Paypal) wrote:
 Have you considered doing a YouTube video that shows how gcmc is
 used? If you include CNC and Gcode in the title, I think you will get
 a lot of exposure.
 For example, take a look at the following video. He already has 5600+
 views since Nov. 6th 2014. https://www.youtube.com/watch?v=CJFp9YjDqiY

Well, considered, yes, but have no clue what or how to demonstrate.
Also, it looks easy to make a video, but it is actually a lot of work
and I'm not that good at visual media.

I certainly see the point in doing so, which is why I wrote the intro
document. I'd like to write more, but I have no current projects to use
as an inspiration to go through all the movements.

Maybe all I have is bad excuses...


 Besides, doing a video will take some of the mystery out of gcmc, for
 those people who might not know quite what it is, and the power of
 it. I'm a C programmer, so I recognized the power of gcmc
 immediately. :)

Well, yes, gcmc is a paradigm shift from plain gcode. That leap is
easiest to see for those who have coded before in similar languages. New
paradigs take time to be incorporated into the general knowledge base to
be seen as the way to do it.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-12-01 Thread Bertho Stultiens
On 12/01/2014 09:08 AM, alex chiosso wrote:
 I'm following you since the beginning on this list and I've to say
 that your work is really nice and professionally made.

I try to bo my best ;-)


 I usually don't use cnc's for machining parts but to do material
 handling or such so I need to make jumps within the G code
 (conditional or unconditional) but the LCNC interpreter don't have
 this feature. I've look at your instruction/functions sets but seem
 that in gcmc this feature is missing too.
 Is this because at the end of the conversion from gcmc to LCNC G code
 you have to rely on LCNC G code interpreter , isn't it ? Is there any
 way to improve this feature on gcmc ?

I do not understand what you mean by jumps. All CNC machines use
turtle graphics in 2D, 3D, 4D, etc. Gcmc is an abstract way to program
the path of the turtle (mill) based on fairly standard math
descriptions (vectors).

CNC machines cannot physically jump. Well, they might do that, but that
would not be a good thing, I guess.

Can you give me an example when you want to jump and what that
actually means for you? My guess is that you can use sub-routines to
encapsulate functional routines for your handling machine and bind
them together in conditional/uncoditional way.

However, if you have (complex) feedback from your machine to decide what
to do next, then you will find it difficult to use gcmc. It could be
solved by using a different backend in gcmc to do other interactions,
but that requires some development work and would depend highly on the
application.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-12-01 Thread Bertho Stultiens
On 12/01/2014 06:25 PM, alex chiosso wrote:
 This is an abstract of a post (that I opened a couple of months ago) on the
 conditional-unconditional nc program flow control .
  USA brand CNC manufacturer (Delta Tau PMAC-NC Pro2
 http://www.deltatau.com/manuals/pdfs/PMAC-NC%20Pro2.pdf) and they use
 GOTO as a standard function for the NC program control into parametric
 programming FANUC style .
 And they declare :
 To maintain FANUC compatibility, this form of a conditional expression
 should be adhered to.
 GOTO expressions goto can be followed by an expression 
 I used the term jumps because you already use an instruction called
 goto .
 So to be not ambiguous I used a different term to express myself.

I guess you mean the programming construct go to.

For gcmc, the goto(arg) function translates to rapid move to position
arg, which has nothing at all to do with the language construct go to.

If my interpretation is the case, then read on, else please elaborate.

First of all, you may want to google Go To Considered Harmful. The
argument is that a structured language should not have an explicit go to
functionalty to alter program flow.

In general, I subscribe to that sentiment, in which a structured
language, like gcmc, never should allow to alter the program flow in
unexpected ways. The language's control statements (if, while, for,
repeat, etc.) already allow for the required flexibility in program
flow-control.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-12-01 Thread Bertho Stultiens
On 12/01/2014 06:52 PM, Jon Elson wrote:
 All CNC machines use turtle graphics in 2D, 3D, 4D, etc.
 No, turtle graphics is a scheme where the coordinate system is 
 centered on the turtle, and everything is relative to which way the
 turtle is pointing now. So, if the turtle makes a 90 degree turn to
 the left, and then moves forward, it will go in a different direction
 than it would have before turning. So, the only operations permitted
 are turning left or right by some angle, and moving forward in
 whatever way the turtle is pointing.

That I would call a semantic interpretation. Whether you turn the turtle
or the coordinate system is a matter of frame of reference, which,
mathematically, is a simple trick. The distinction is IMO irrelevant as
you can always define the exact transformation matrix to any frame of
reference (and we are not going to come close to speed c).

Your assertion does not hold entirely, because some machines have a
rotational axis, which alter the coordinate system, as seen from the
object under construction.

The point of turtle graphics is that the the point-of-operation is a
continuous and uninterrupted curve (in the zero order; derivatives may
be discontinuous). A milling bit does not magically appear/disappear at
the operator's whim and will thus follow a continuous path in the zero
order with respect to the object.

(let us not split hairs on doing tool-changes)


 Most CNC machines have a fixed coordinate system, with an X axis, and
 a Y (or Z) axis that is 90 degrees to the X. There is no operation to
 turn left or right, and a +X move will always be in the same
 direction.

Actually, the /machine/ usually has a fixed frame of reference. The
programmer is welcome to use a different one as long as it is ultimately
translated to the machine's coordinate system. As I said, it is a matter
of frame of reference.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] gcmc - 1.5.2

2014-12-01 Thread Bertho Stultiens
On 12/01/2014 07:01 PM, andy pugh wrote:
 On 1 December 2014 at 16:58, Bertho Stultiens ber...@vagrearg.org wrote:
 Well, yes, gcmc is a paradigm shift from plain gcode. That leap is
 easiest to see for those who have coded before in similar languages.
 I am not suggesting that you (or anyone) should do this, but it would
 be a logical extension to eliminate the G-code phase, and use a
 different interpreter to convert the gcmc code directly to machine
 motion primitives.

I'd like that very much, replacing gcode with another top-level
language. But the language should be developed far enough and have a
good and broad userbase to be viable.


 There are other competitor codes to G-code which have failed to
 replace it, however, and adding another to the list would probably be
 frustrating.

Indeed, if the effort goes lost in the infinite bitstream, then it would
be frustrating. Therefore, building a stable and solid userbase is the
first part that should be established. Broader use would also develop
the language more to be as expressive as necessary for general purpose
operation.

The real point here is that broader use requires publishing it to a
wider (targeted) audience. CNC machining is not my area of expertise (I
am a noob in that respect) and come from electronics and computer
science. So getting in touch with and convincing an unfamiliar group of
people of my ideas is hard for me. Finding the right outlets and
speaking the right language is a hurdle.


-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] AUTO: Jan Maier is out of the office

2014-12-20 Thread Bertho Stultiens
On 12/20/2014 04:18 PM, Pete Matos wrote:
 I am out of the office until 07.01.2015.
 LOLMerry Christmas!!

Do such messages still get you banned (permanently)?

I surely hope so... The autoreply of the digest's digest can send
another away message, then another and another.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration  more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151iu=/4140/ostg.clktrk
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


Re: [Emc-users] VFD causing limits to trip. Huh?

2015-03-16 Thread Bertho Stultiens
On 03/16/2015 09:40 PM, Karlsson  Wang wrote:
 A shield is primarily intended to prevent electrostatic coupling from
 the outside world. So by grounding in the consuming end the shield
 will get the ground potential of the consumer and the signal cables
 will be shielded from different external electric fields. This should
 motivate why as you say the shield should be connected in this end
 only. If there are current there is also a potential difference.

There are generally three cases to consider:
1) a shield as a Faraday cage; this means that only one side of the
shield may be connected to go into the earth/ground star-point where you
maintain an absolute reference of zero (0V). The shield is used to dump
all (most) cable-internal EM radiation into a low-impedance star-point
via the shield.

2) a shield as in a coaxial conductor; here the signal is contained in
the cable and the shield is part of the conducting circuit. This works
on basis of very tightly controlled cable properties and is generally
limited to a specific frequency range per cable specs.

3) all other cases; the shield is connected at both sides and is
intentionally or unintentionally part of the conducting circuit. This
case will generally give you worse results in terms of EMI emissions and
protection. The shield will radiate and may act as an antenna to worsen
the situation.


 I consider the VFD to be a noise source since it have common mode
 voltage which will emit an electrical field. There is also a
 capacitance between the VFD cables and shield. Since Shield impedance
 on high frequency is far from zero the shield around the VFD cables
 will not be at GND potential. The most common method is to increase
 common mode inductance by a filter but I have also seen active
 filters which reduce the common mode voltage and multiple step
 voltage inverters.

With respect to VFD systems; the amount of junk they produce depends on
the quality of the converter.

The best version generates a relatively pure sinusoidal output and the
EMI it generates is very minimal. Such VFD can normally be connected
without problem with unshielded cabling.

The lesser quality emulates a sinusoidal output, but has substantial
higher harmonics. These VFDs are not too shabby, but they can cause
interference. The best solution is to filter the output before putting
it on (long) cables. No shielding is required when the harmonics are
under control, but it generally does not hurt to use a Faraday cage type
shield.

The cheap VFDs are poor substitutes and generate nearing square-wave
output. The amount of EMI from higher harmonics is high and is often
difficult to filter at the source. These VFDs should be used with both
output filters and shielded cabling.

The remaining problem that may arise is EMI from the motor. The
remaining harmonics may radiate from the motor just as easily. That
cannot be solved with shielding of the cables. You must ensure proper
earthing of the motor as well and it should be enclosed in a proper
metal casing.

It should also be noted that VFD frequency changes cause harmonics in
the output. If you turn on/off the hard way, then you can introduce some
transients that are very hard to control. The best way is to control the
up-/down-going frequency such that no abrupt changes can occur and
therefore no transients are allowed to be created due to too fast changes.

-- 
Greetings Bertho

(disclaimers are disclaimed)

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users


  1   2   3   >