I agree with everything Dan Falck says.
I need to make HeeksCNC simpler and more robust, so I will be removing
stuff that I don't yet understand and unfortunately this will include
your work on fixtures. However, I will be keeping various of your other
work which I use.
This doesn't mean your work will have been wasted.
You should work with Dan Falck to make a FreeCAD/CAM system.
Also, as you have a working HeeksCNC system, maybe you could make it
available for me look at, open source somewhere. Have you learnt to use
git with the github repository? On github the idea is that everyone has
their own fork.
If you are happier with SVN, how about making a new Google Code project.
Dan Heeks.
You have added a lot of value to HeeksCNC. Thank you; I am using the
drilling operation almost every day, for example. But I think it would
be good for me to freeze HeeksCNC and spend some time trying to make it
work reliably.
Dan Heeks.
On 17/11/2011 03:38, dan falck wrote:
I am happy for any of HeeksCNC code to be used for absolutely anything,
that is the spirit of a permissive license like BSD.
It would be great to have it in FreeCAD.
If you guys have some good success with FreeCAD, I will probably use it too.
I am interested in 'click on midpoint', 'offset from midpoint' kind of
functions.
Let me know when it's all in your git copy and I'll see what I can take
from it.
Dan.
Dan Heeks.
'click on midpoing', 'offset from midpoint'
I think I have the code in order now. Fetch it from github.com/
DavidNicholls/heekscad and github.com/DavidNicholls/heekscnc. I use
the 'HeeksCAD VC2008.sln' and HeeksCNC VC2008.sln files.
The change history is;
- Fixed problem with Ramping in a Contour operation for short open
sketches.
- Rewrite the Contour operation tool paths so that the ramping
functionality would be more simple.
- Added the ability to use Python-interperated values in the
'offset from ...' dialogs. eg: '2 inches, 0,0' is a valid offset now.
- Added 'offset from' options to the right mouse buttons for all
of the objects that previously had 'click on...' options. i.e.
Vertex, Line, Arc, Sketch, Coordinate System, Circle and Edge (point
already had it). These work both for drawing and object manipulation
(scale, translate or mirror)
- Modified the design rules checking routines so that they include
the object title as well as the ID so that the erroneous objects are
easier to find.
- Rearranged the design rules checking routines so that all the
checks at the various class levels always work.
- Added design rules checks for various operations. eg: is the
type of tool valid for this operation? This would have saved us when
we had a touch-probe selected for a Contour operation.
- Fixed problem where the original selection filter was not being
reinstated correctly with the 'P', 'L', 'A', 'C' or 'S' keys were
being used to filter selections. I believe this is all working
correctly now.
- Added property to the Program object that determines whether or
not the design rules checks are automatically made just before
generating GCode. If design rules issues are found, a 'do you want to
continue' type of dialog is presented so the user can either continue
generating GCode or abort it.
- Removed logging line from the tool length probing routines in
emc2.py
- Added 'skip switch and fixture probing cycles' property to the
Program object. This option is included if the tool change movement
includes a tool length measurement. If it's turned on then the tool
length switch and the fixture heights are NOT probed at the beginning
of the GCode program. In this situation, an extra question is added
to the GCode program asking the operator to confirm that the tool
length switch and the fixtures have both been probed during this EMC2
session. NOTE: I have NOT implemented this such that these values are
remembered between EMC2 sessions. You MUST probe these at least once
each time EMC2 is started.
- added 'pause after tool change' property to the Program object.
If this is true, the tool is changed, its length is probed, the
machine moves back up to the machine's safety height and then a pause
is added so the operator has the opportunity to re-start the spindle
and put the tool length switch away.
- Changed all the probing classes so that their properties are
stored away in configuration and reinstated when needed again. They
used to always use default values. They will now use the most
recently set value.
- Fixed problem when importing probed points into a Fixture.
- Fixed problem where the Fixture's touch-off Z value was not
being used correctly when a fixture's surface was probed.
- Added work-around in the Contour operation when it lowers back
down from the clearance height. It now looks at the coordinates
visited in earlier machining and lowers back down to one of those
levels if the X,Y coordinates match correctly. i.e. it won't have to
slowly ramp down above an area it has already cut.
- Added an 'OnSetTool()' system that allows operation objects to
be notified when the user selects a new tool in its properties. The
first implementation of this is where the Drilling operation changes
the depth of cut to match the cutting tool's cutting edge length,
turns off dwell and turns off peck drilling when a centre-drill tool
is selected.
- Added a feature whereby the operator may use the 'S' (sketch),
'P' (point), 'A' (arc), 'L' (line) or 'C' (circle) key while selecting
graphics in the graphics window. This works either for a fence
operation or an individual left mouse button click. When these keys
are pressed, the selection filter is changed to ONLY include the
selected object type. When the key is released, the previous
selection filter is re-instated.
- Fixed the 'Set all operations active' and 'Set all operations
inactive' menu options beneath the 'Operations' object.
- Changed CounterBore operation rendering to allow for Fixture
coordinate system objects (both translation and rotation).
- Changed Drilling operation rendering to allow for Fixture
coordinate system objects (both translation and rotation).
- Added a 'click on midpoint' and 'offset from midpoint' menu
option for Edge objects.
- Fixed problem where the centre-points of arcs (or circles) was
incorrect. This was a problem if they were being used as drilling or
counterbore locations.
- Added feature whereby the GCode lines (red/green from NCCode
objects) are rendered in the correct location and orientation based on
a fixture's coordinate system.
- Fixed problem in the EMC2 tool table generation routine for the
Linux build.
- addition of the 'startup files directory' option in the
'machining options' list.
- added 'dimension color' to the 'Options' window.
- added 'Generate EMC2 Tool Table' option to the right mouse menu
of the Tools (plural) object.
- fixed spelling error in standard TAP size descriptions
- added facility to select multiple point objects before placing
cylinders at their locations
- started to add 'Bolt' menu to the Solids menu for adding
standard bolt objects but this is not very well progressed yet.
- added warning if a zero feed rate value is detected during a
feed movement in the parsed GCode.
- fixed problem where the drilling operations were not being
rendered properly for the tool's size.
- added ability to click on a coordinate system object's origin
via the right mouse menu (for both drawing and transformation
operations)
- added option to the Tool (singular) object's right mouse menu to
'add the solid representation of the tool to the model'.
- added 'Project Sketch onto Solid' option to the right mouse menu
when at least one sketch as well as at least one solid has been
selected.
- added radio buttons to the extrusion dialog so the user can
select which axis they want to extrude along rather than only allowing
the Z axis to be used.
- changed dimension object's SCALE property so that its value is
retained between sessions.
- added default diameter value to the CounterBore object's
startup. If the child elements are sketches of circles and all their
diameters are the same then this diameter is used for the CounterBore
operation's property.
- made the 'tool change movement' options work (at least for 'Use
G28 and then probe tool length') This probes tool length switch as
well as each fixture height at the beginning of the program. It then
probes the tool length for each tool change. The 'touch off point' in
the fixture object MUST be defined. The X,Y values are used to decide
what position to use when probing down to find the fixture's top
surface level. The Z value of the 'touch off point' is then assigned
to the probed surface location. i.e. use X,Y and then set Z.
- fixed problem where the movement between multiple fixtures was
not occuring at the machine's "safety height".
- added 'Click on Location' menu option beneath the right mouse
button menu for a vertex (of a solid). This works both for drawing
and transformation (translate, scale, mirror or rotate) operations.
- some merging from the standard HeeksCAD and HeeksCNC source
base.
- added 'Undefined' option to the 'emc2_machine_units' property
(of the Program object) so that we could be sure the value has been
set. This value is used when the local tool table properties are
written to an EMC2 tool table file. i.e. the conversion from metric
to imperial is done if this option indicates that it should.
- added option for the centre-drill to either have its properties
defined manually (as it was earlier) or chosen from a set of standard
sizes. This change includes the change of the solid model that
represents a centre-drill's geometry.
- added fractional (inch) description of centre-drill description
if the size falls exactly on a common fractional inch representation.
- added checks to ensure the drilling operation's "depth" property
is a positive number.
This version has infinite line intersections available for the
drilling operations. It also has the ability to accept a Python
script in any of the 'floating point number' property fields. i.e.
instead of only being able to accept '3.4' or some other floating
point number, it can accept '3.4 * sin(45)' or maybe 'diameter /
2' (assuming that there is another property for the updated object
that's called "diameter".
One of the changes I did was based on an idea that Dan Falck had.
i.e. to add a coordinate system object to a fixture object so the
origin of the GCode could be shifted from the origin of the drawing.
I did this and have produced an example where I can machine three
different faces of a solid object using three different fixtures along
with their corresponding coordinate system. I will attach that as a
text file here to give you an idea of what it's like.
Ta
David Nicholls