tkemc: visual improvements * get rid of undesirable ridge border on jog speed controls * align jog controls to the top of their area, not center (better appearance when there are no angular axes)
tkemc: visual improvements * get rid of undesirable ridge border on jog speed controls * align jog controls to the top of their area, not center (better appearance when there are no angular axes)
Merge branch 'v2.4_branch'
interp: Get rid of tortured code This b = (x != 0) ? 1 : 0; is really just a tortured way to write b = x; so do the simple thing. Thanks to cradek for pointing these out.
interp: use true, false instead of ON, OFF
interp: prefer boolean tests to == ON tests In idiomatic C++, the right way to check the truth value of a boolean is to simply use it in a boolean context, not compare it to the ON or OFF (true or false) value. This change was performed mechanically by executing the following commands in src/emc/rs274ngc: sed -i 's/\([-a-zA-Z_0-9>]*\) == ON/\1/g' *.cc sed -i 's/\([-a-zA-Z_0-9>]*\) != OFF/\1/g' *.cc sed -i 's/\([-a-zA-Z_0-9>]*\) == OFF/!\1/g' *.cc sed -i 's/\([-a-zA-Z_0-9>]*\) != ON/!\1/g' *.cc
interp: add s_flag For symmetry, all words should be a combination of a number and a flag.
interp: add f_flag For symmetry, all words should be a combination of a number and a flag.
typo's submitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
typo's submitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
typo's submitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
typo's subbmitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
typo's submitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
typo's submitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
typo's subbmitted by KimK Signed-off-by: John Thornton <jthornton@gnipsel.com>
note that no hardware needs to be connected to run the latency test Signed-off-by: John Thornton <jthornton@gnipsel.com>
On random tc, correctly skip invalid tool table entries This fixes an error case on random tc when a tool table entry described a pocket that was out of range. This printed an error message but then if there were subsequent valid words on the line, the entry was incorrectly marked as 'valid' again, and the invalid pocket number caused the array to be written out of bounds. To reproduce, on a random tc config, use a tool entry such as T1 P99999 Z1.0 With this change, the invalid entry is skipped when reading, so when the tool table later gets rewritten it's gone. I think this was the original intent.
I’m building an equatorial wedge which will transform my new alt/az goto-mount into an equatorial mount. This is the first part which attaches to the tripod. Two smaller side plates will be bolted to this plate and support a similarly shaped tilted plate to which the alt/az head attaches. The design is similar to the “mega wedge pro” (how about that for a product name!).
remove execute bits that don't belong
add gladevcp to emc This allows virtual control panals to be made using GTK and the GLADE UI editor. At this point system links need to be added to use GLADE. see the READ_ME
By popular demand, an example where a PyVCP jogwheel is hooked up to AXIS:
The files needed to make this work are in here: axis_jogwheel.tar
The basic operation when producing waterline-paths is to push the cutter along either the X or Y axis (red and green arrows) into contact with a triangle (cyan lines). That’s done through three different functions, one each for the vertices, facet, and edges of the triangle. The vertex test (results shown as red dots) and the facet test (green dots) are straightforward to implement. The edge-test (blue dots) is more involved. The above figure is for a CylCutter where the edge-test is implemented through the vertex-test (thus red dots along the edges), but this figure for a BallCutter shows the colors better:
Blue dots show edge-contacts with the spherical part of the cutter, light-blue dots show edge-contacts with the cylindrical shaft of the cutter.
The vertex test requires only a radius(h) function that returns the radius of the cutter at height h. The facet test needs three parameters (n, nxy, c) for each cutter, which define where the cutter should be located relative to a point which lies on the facet. From the CC-point on the facet we go a distance n along the 3D unit-normal, then a distance nxy along a unit-normal in the XY-plane to find the cutter center. From the cutter center we go down along the z-axis by a distance c to find the CL-point.
Figuring out the (n,nxy,c) parameters for CylCutter and BallCutter is left as an exercise for the reader.
These points are then hooked up in the correct order to produce waterlines like this (CylCutter on the left, BallCutter on the right).
The edge-test for CylCutter reduces to a 2D problem of line-line intersections, while the edge-test for BallCutter can be done by intersecting a cylinder/tube around the edge with a line. The filleted/toroidal/BullCutter edge-test is much harder. Here I’ve just implemented the special case where the edge is horizontal and the solution is easy to find analytically. The general case where the edge slopes up or down requires an iterative solution to either a quartic or the offset-ellipse problem.