Closed GoogleCodeExporter closed 8 years ago
Dan,
I guess I don't understand this one. What first came to mind when I read this
was an
open ended template that we can operate upon in the python canvas. But, I think
I'm
missing what you are trying to describe.
Could you elaborate a little. Pictures would be good :)
Thanks,
Dan Falck
Original comment by ddfalck2...@yahoo.com
on 26 May 2010 at 2:46
Dan,
I have attached a mock up picture of how the tree would look.
The user would simply select a sketch and add "New Pocket Feature...".
They would then edit the start_depth and final_depth ( see Properties ).
Those first three operations would get added automatically.
The other two operations are there to show that you will still be able to use
operations like we do now.
The automatic creation of operations would be done by calling "pocket.py" which
would
get called whenever a pocket feature is added or edited.
People would need to write there own 'pocket.py' to be tailored to the way they
work.
Is this clearer?
Dan.
### pocket.py
def make_pocket_operations(sketch, start_depth, final_depth):
min_radius = get_minimum_radius(sketch)
tool_diameter = 0
if min_radius >= 3: tool_diameter = 6
elif min_radius >= 1.5: tool_diameter = 3
if tool_diameter == 0:
message("internal radius too sharp to cut")
return
add_pocket_op(sketch, start_depth, final_depth, tool_diameter)
add_profile_op(sketch, start_depth, final_depth, tool_diameter, 0.1, 'climb')
add_profile_op(sketch, start_depth, final_depth, tool_diameter, 0.0, 'conventional' )
Original comment by danhe...@gmail.com
on 26 May 2010 at 7:45
Attachments:
Ok, I see that you're doing a combined operation that takes care of a
pocket/operation and gives us the flexibility to do with it what we want with
python.
Cool.
I have often thought that it would be cool to have a template/blank operation
that
simply presented the sketch/geometry info with start point, end point, etc to
the
python panel. Then a person could do whatever operations that they wanted to
without
getting into C++ code. This looks very similar.
Thanks,
Dan
Original comment by ddfalck2...@yahoo.com
on 26 May 2010 at 1:43
I think I'm beginning to understand and I can see the utility of this. It's a
customizable meta-operation. I don't see that it necessarily has a 1:1
relationship
to a feature of the part though. For instance, I could see selecting multiple
sketches and applying the same 'feature'.
Rather than call this a 'feature' which implies it has some relationship to the
thing
you're making, I would call it something like a 'execution plan' or 'milling
strategy' or maybe just a 'plan'
I could even see adding a generic 'plan' and then using a drop-down to select
from a
collection of python scripts.
Original comment by shopinth...@gmail.com
on 26 May 2010 at 1:54
shopinthewoods: Yes you understand exactly what I mean.
For now, though, I think I can do all the experiments I want by making a new
kind of
operation; "Python Operation". All this will have in its properties will be a
text
box. The text in here will get added into the python program.
This way, I could try adding an operation with this text:
sketches = [1, 2, 5]
pocket_plan(sketches, 0.0, -1.0)
HeeksCNC will be totally flexible then and nobody will have to need to edit the
python program directly.
Original comment by danhe...@gmail.com
on 26 May 2010 at 2:11
Ah, I see the problem that Dan Falck has suggested. It will need to write the
sketches as kurves, so what I need is a text box, but also a list of sketches,
with
buttons so the user can add ( by picking ), clear and remove.
Original comment by danhe...@gmail.com
on 26 May 2010 at 2:18
I will add a new request for that one. I see that they are different ideas.
Original comment by ddfalck2...@yahoo.com
on 26 May 2010 at 3:22
I've noticed that profiling a complex sketch often fails miserably if I set the
start/end locations because the cutter plows through the intervening space. To
deal with this, I always end up splitting the sketch and adding separate
operations for sketch. In fact, I've found that's almost always the best
practice so...
Here's the process I'd really like to see. It might be related to the original
goal of this issue.
1) Select a complex sketch and add a profile operation.
2) HeeksCNC does a 'split sketch' operation and creates a set of 'shadow
sketches' The original sketch is unmodified. Each of the shadow sketches is a
simple sketch and is automatically re-ordered.
3) HeeksCNC applies a profile operation to each of the simple shadow sketches.
The operations appear in a parent/child relationship in the tree.
4) The user can set parameters at the parent level which are automatically
applied to all of the children or they can override the options at the child
level.
5) The user can set a start/end location for each of the child operations.
This would work for a pocket operation as well.
As long as the user can open the child operation to locate re-order the
associated 'shadow' sketch, the nested sketch could be treated as an island if
the direction is different.
I think this would let us do pocketing without retracting the cutter on ever
curve and would let us set entry locations per sketch to make helical or ramp
entry possible.
This came up in a chat on the cam# channel on Sat 6/12. Check the log for the
complete context.
Original comment by shopinth...@gmail.com
on 12 Jun 2010 at 4:10
the details of the irc chat on #cam:
(12/06/10)
snip....
(07:44:02 AM) sliptonic: I'm playing with your ramping stuff today.
(07:44:09 AM) DanielFalck: is it working?
(07:45:04 AM) sliptonic: So far. I should be able to make it work but I'll
probably have to some cutting and pasting of gcode too. No biggie.
(07:45:44 AM) DanielFalck: I just did a fresh svn of HeeksCAD and the 'split
sketch' erasing problem is fixed
(07:45:53 AM) sliptonic: I noticed what seems like a design problem though.
(07:46:00 AM) DanielFalck: ?
(07:46:35 AM) DanielFalck: in HeeksCAD, or your part :)
(07:46:50 AM) sliptonic: If I have multiple closed shapes to be profiled, the
profile operation works fine.
(07:47:06 AM) sliptonic: If I have multiple sketches of the same thing, also
great.
(07:47:57 AM) sliptonic: But, If I set a start point for profile a single
sketch that has multiple shapes, it plows right through the intervening space.
(07:48:05 AM) sliptonic: Multiple sketches still work great.
(07:48:38 AM) DanielFalck: I ran into that last week too. I ended up not using
a start point
(07:48:45 AM) sliptonic: The problem, in this case, is you can only have one
start and end per operation, but the operation requires the cutter to lift.
(07:49:00 AM) sliptonic: We have almost exactly the same problem with pocketing.
(07:50:06 AM) DanielFalck: seems like if you create a separate operation for
each sketch it's safe, but inconvenient
(07:50:40 AM) sliptonic: You can, and that's a better/safer way to go.
(07:50:58 AM) DanielFalck: it would be nice to have multiple 'start/stop'
points
(07:51:12 AM) sliptonic: It seems like there's extra intelligence in the
pocketing and profiling operations to handle sketches that are poorly thought
out or designed.
(07:51:57 AM) DanielFalck: or maybe if the start/stop point picks were in a
separate dialog box and were tied to each sketch or closed loop
(07:52:50 AM) sliptonic: I almost wish the operations were simpler and would
only operate on single closed shapes, but...
(07:52:52 AM) DanielFalck: if there is a way of prototyping it in the python
console, there should be a way of making it happen in the gui
(07:53:26 AM) sliptonic: HeeksCNC was smart enough to split complex 'sketches'
into simpler sketches and add multiple operations in a parent/child
relationship.
(07:53:42 AM) DanielFalck: I usually split the sketch and then re-orient things
and create new sketches to optimize the direction of the profile
(07:55:02 AM) sliptonic: So, if I had a complex sketch and added a profile,
HeeksCNC would split the sketch into a collection of simple sketches and add an
operation for each. They would be in a parent/child relationship so I could
change parameters for the whole collection or add start/end for each child.
(07:55:10 AM) DanielFalck: if I'm drawing in Qcad I make good use of the
layers- ie I put things in as many different layers as I can stand. That way
things are isolated well in Heeks
(07:56:09 AM) DanielFalck: I usually start with one section of the part- 1
simpler sketch- make a profile operation work for it. Then I copy and paste the
other sketches into the profile operation
(07:56:36 AM) DanielFalck: it's not the fastest but it works
(07:56:51 AM) sliptonic: Still can't do multiple start/end locations though.
(07:57:48 AM) DanielFalck: true
(07:58:11 AM) DanielFalck: I'll try something in the python console
(07:59:54 AM) DanielFalck: ok, that won't work for me- the multiple entities
are all grouped together in python too
(08:00:18 AM) DanielFalck: they are all one big list of
'kurve.add_point(k0.....'
(08:00:21 AM) sliptonic: I think what DanHeeks was talking about for the
'feature' thing is related to this.
(08:00:55 AM) DanielFalck: was that on the issues list?
(08:01:02 AM) DanielFalck: I want to read it
(08:01:25 AM) sliptonic: http://code.google.com/p/heekscnc/issues/detail?id=201
(08:01:30 AM) DanielFalck: thanks
(08:02:00 AM) DanielFalck: oh yea :)
(08:02:54 AM) sliptonic: To be flexible with start/end, entry type and
location, etc, operations need to work on very simple sketches. But the user
needs to be able to set options on collections of operations.
(08:04:14 AM) sliptonic: Right now, things like kurve are trying to anticipate
all the screwy kinds of sketches I might throw at it.
(08:06:48 AM) DanielFalck: one thing that comes to mind is being able to
manipulate the simple sketch entities prior to applying the execution plan
(08:07:10 AM) DanielFalck: like if the separate sketches have arrows at the
ends to show what direction that they are going
(08:07:21 AM) DanielFalck: and maybe a dot to show the start/end point
(08:08:02 AM) DanielFalck: if you could easily manipulate them, with say the
'ctrl' key and a mouse button, it might make it fast and easy to infer order
(08:08:28 AM) DanielFalck: in another CAM program that I've used in the past,
this was the case
(08:08:59 AM) DanielFalck: then, once all the sketches 'look' right apply the
profile or pocket operation
(08:12:06 AM) sliptonic: Is there a standard industry definition of a 'sketch'?
In HeeksCAD, it works like a layer, sometimes, a feature, sometimes, and a
bounding box, sometimes.
(08:13:21 AM) DanielFalck: I have heard it referred to as 'chain' in other
programs
(08:13:37 AM) DanielFalck: as in 'chain' entities together to create a profile
(08:21:59 AM) DanielFalck: I can use split sketch to break apart a closed
profile and then reorder it by selecting in a certain order and then 'make
sketch'
(08:22:15 AM) DanielFalck: seems to work, but it's a little slow
(08:25:33 AM) sliptonic: Not sure I understand what your getting at.
(08:25:51 AM) DanielFalck: say you import a profile in from qcad
(08:26:04 AM) DanielFalck: the entities in a profile are in some random order
(08:26:11 AM) DanielFalck: you re-order the sketch in heeks
(08:26:20 AM) DanielFalck: but it's not in the order that you want
(08:26:38 AM) DanielFalck: 'split sketch' then it's broken into individual
elements
(08:26:56 AM) DanielFalck: - use the latest svn of course otherwise it will
erase them :)
(08:27:14 AM) DanielFalck: then you select the individual elements while
holding down the 'ctrl' key
(08:27:19 AM) DanielFalck: then 'make sketch'
(08:27:35 AM) DanielFalck: it will be in the order that you selected when you
do a profile operation
(08:27:58 AM) DanielFalck: that's a long way of doing it without using the
'select start' button in profile
(08:28:33 AM) DanielFalck: so for multiple profiles you can avoid the 'start'
button- I had to do this earlier in the week
(08:29:07 AM) DanielFalck: I was engraving around multiple pockets and all my
engraving was fairly simple stuff (3 or 4 lines each)
(08:29:21 AM) DanielFalck: so that works, but for complex stuff it would b an
absolute pain
(08:29:56 AM) DanielFalck: if the re-orient sketch stuff was a little more
flexible it would be good
(08:29:56 AM) sliptonic: Here's how I think it 'oughta' work.
(08:30:16 AM) sliptonic: Select the original sketch and hit 'profile'
(08:31:17 AM) sliptonic: Heeks does a 'split sketch' and creates a 'shadow
sketch' for each of the simpler sketches broken out. It creates a parent
profile operation with a child profile for each simple one.
(08:31:46 AM) sliptonic: You select the parent and set the parameters which are
passed down.
(08:31:55 AM) sliptonic: You select each child and set the start.
(08:32:30 AM) DanielFalck: that would be very good
(08:32:55 AM) DanielFalck: put that into issue 201
(08:34:35 AM) sliptonic: I'm not sure how the logic would work for a pocket
with an island, but I assume it would be similar. If the child 'shadow' has a
different direction, the pocket would treat it as an island.
(08:35:58 AM) sliptonic: You would need to be able to select the child
operation and do a re-order of the related 'shadow'
(08:36:15 AM) DanielFalck: yes
(08:39:53 AM) sliptonic: It would make things like ramp/helical a lot easier.
(08:40:07 AM) sliptonic: You could also do the pockets without retracting
between concentric curves.
(08:41:22 AM) sliptonic: I'm not sure it'll work in every case because you
could have a pocket with an island closer to the edge then the diameter of the
cutter.
Original comment by ddfalck2...@yahoo.com
on 12 Jun 2010 at 10:42
no feature requests for HeeksCNC 1.0, just bug reports please.
Original comment by danhe...@gmail.com
on 24 Mar 2014 at 5:02
Original issue reported on code.google.com by
danhe...@gmail.com
on 25 May 2010 at 9:13