Non-Looped Contour/Edge Cutting?
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
Non-Looped Contour/Edge Cutting?
If I want to mill a complete contour, I can accomplish this in multiple ways in Path. I'm unable to figure out how to cut edges that are not in a loop though, and this is very limiting for practical CNC GCode generation. For example, if I wanted to mount a rectangular piece of stock and cut the ends to a given length, but I don't want to cut the edges because I'm using them to clamp the stock, the Profile-Edges/Faces options won't achieve my goal.
Also, I can't find any explanation for what the "From Shape" icon does. I did figure out the "From Area" icon was helpful for saving iterative/construction steps, allowing me to perform milling operations on them after further 3D modelling had altered them.
Thanks,
Josh
Also, I can't find any explanation for what the "From Shape" icon does. I did figure out the "From Area" icon was helpful for saving iterative/construction steps, allowing me to perform milling operations on them after further 3D modelling had altered them.
Thanks,
Josh
Re: Non-Looped Contour/Edge Cutting?
Hi Josh,
In FC 0.16 (and early 0.17) it workd by selecting the side of the workpeace and click on "Profile based on face".
And i'm with you, - it would be good to have it back.
In FC 0.16 (and early 0.17) it workd by selecting the side of the workpeace and click on "Profile based on face".
And i'm with you, - it would be good to have it back.
Gruß Herbert
-
- Posts: 12
- Joined: Wed Oct 04, 2017 12:06 pm
Re: Non-Looped Contour/Edge Cutting?
Were you able to find a solution to this issue?
I'm trying to do the same thing and I cannot get the profile on an open edge to work. The path profile for edge works fine if the edge is closed.
Here's what i'm getting from the Report View
Traceback (most recent call last):
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathUtils.py", line 60, in new_function
res = function(*args, **kwargs)
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathOp.py", line 417, in execute
result = self.opExecute(obj)
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathAreaOp.py", line 240, in opExecute
shapes = self.areaOpShapes(obj)
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathProfileEdges.py", line 92, in areaOpShapes
f = Part.makeFace(wire, 'Part::FaceMakerSimple')
<class 'Part.OCCError'>: BRep_API: command not done
My Build Info
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.12847 (Git)
Build type: Release
Branch: master
Hash: 4034851a5d2ed5c93a8ebedbf0ef40dab8700d94
Python version: 2.7.8
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.1.0
Locale: English/UnitedStates (en_US)
I'm trying to do the same thing and I cannot get the profile on an open edge to work. The path profile for edge works fine if the edge is closed.
Here's what i'm getting from the Report View
Traceback (most recent call last):
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathUtils.py", line 60, in new_function
res = function(*args, **kwargs)
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathOp.py", line 417, in execute
result = self.opExecute(obj)
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathAreaOp.py", line 240, in opExecute
shapes = self.areaOpShapes(obj)
File "E:\Downloads\FreeCad .17PRe\FreeCAD_0.17.12847_x64_dev_win\FreeCAD_0.17.12847_x64_dev_win\Mod\Path\PathScripts\PathProfileEdges.py", line 92, in areaOpShapes
f = Part.makeFace(wire, 'Part::FaceMakerSimple')
<class 'Part.OCCError'>: BRep_API: command not done
My Build Info
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.12847 (Git)
Build type: Release
Branch: master
Hash: 4034851a5d2ed5c93a8ebedbf0ef40dab8700d94
Python version: 2.7.8
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.1.0
Locale: English/UnitedStates (en_US)
Re: Non-Looped Contour/Edge Cutting?
Hi John,
Short answer is no, from what I can tell, there is no existing way to perform a cut with Path that isn't a loop. I've been able to work around this for the Jobs I've done so far, but it does make things a bit more challenging. I've found that Custom-GCode is helpful and since Path-WB displays the paths you create with Custom-GCode, it's at least not a "Blind" job... In other cases, I've found looped paths that are non-ideal, but workable. In some cases, I have copied OPs that almost are correct, into Custom-GCode then modified the GCode to be more efficient.
Best Of Luck,
Josh
Short answer is no, from what I can tell, there is no existing way to perform a cut with Path that isn't a loop. I've been able to work around this for the Jobs I've done so far, but it does make things a bit more challenging. I've found that Custom-GCode is helpful and since Path-WB displays the paths you create with Custom-GCode, it's at least not a "Blind" job... In other cases, I've found looped paths that are non-ideal, but workable. In some cases, I have copied OPs that almost are correct, into Custom-GCode then modified the GCode to be more efficient.
Best Of Luck,
Josh
Re: Non-Looped Contour/Edge Cutting?
This operation is not implemented, so the error messages merely state that fact in complex language.
This sort of path is often desirable; however, the definition and implementation might not be an straightforward as seems at first.
No path is ever "non-looped". Sooner or later the tool needs to return to the starting area. Otherwise it eventually runs off the end of the earth.
* Do you want the return path to be a zig-zag down the vertical face that is being processed, actively working in both directions?
* Do you want the tool to lift to the clearance height and then start another active pass?
* Do you want the tool to offset in the working plane and then return to the starting point for another pass?
* How far should the offset be?
* What about clamp clearance?
* Does the model "box" indicate full clearance from all obstructions.
* Do we need a horizontal clearance distance in addition to a vertical clearance distance?
All of these questions are solvable, of course, but the overall solution is probably more complex than a simple contour around a solid object.
Patience.
Gene
-
- Posts: 12
- Joined: Wed Oct 04, 2017 12:06 pm
Re: Non-Looped Contour/Edge Cutting?
Josh and Gene,
thanks for the replies.
Gene, as for what i was looking for is something that i do with ease in a VERY old copy of BobCad. It's pretty simple with that software. I select the edges i want to profile, establish the approach method, set the depth of cut and the amount of passes to make. The gcode generated adds the clearance moves from the end of the pass back to the start of the path stepping down to the next level. Since my mill is small and i usually cant cut a complete profile, i use this method often. BobCad is still working for me, but one of these days that old WinXP desktop is not gonna boot up so i was looking for an alternative.
I may dig into the python code and see if i can hack something together to get me what i want. I'm not a python programmer but these days the languages seem to all work the same way..
If you have any tips that can get me pointed in the right direction i'm all ears.
thanks
-John
thanks for the replies.
Gene, as for what i was looking for is something that i do with ease in a VERY old copy of BobCad. It's pretty simple with that software. I select the edges i want to profile, establish the approach method, set the depth of cut and the amount of passes to make. The gcode generated adds the clearance moves from the end of the pass back to the start of the path stepping down to the next level. Since my mill is small and i usually cant cut a complete profile, i use this method often. BobCad is still working for me, but one of these days that old WinXP desktop is not gonna boot up so i was looking for an alternative.
I may dig into the python code and see if i can hack something together to get me what i want. I'm not a python programmer but these days the languages seem to all work the same way..
If you have any tips that can get me pointed in the right direction i'm all ears.
thanks
-John
Re: Non-Looped Contour/Edge Cutting?
At least for now, FreeCAD Path-WB has areas that are open to further development. That said, it sure is exciting to me seeing how quickly improvements roll out. One example of many is how Shai's Path-Simulation went from a discussion to an integrated reality in less than a month I think... At the moment, there is momentum towards releasing v17, and so there's a lot of tidying up and things do change in use as well at times, so the each time you upgrade, things may behave a bit differently.
For myself, I have had success in working around the few things that otherwise are difficult by adopting some strategies. One is to think about the limits of Path-WB from the ground up when developing my 3D model. There are often multiple otherwise equivalent ways to implement the 3D design, but--for example--in some cases, you leave useful edge-loops where in another implementation, this isn't true because the contour you need took a Z-change that isn't helpful.
There are also cases where slightly counter-intuitive approaches allow me to achieve results I wasn't otherwise able to implement. For example, in cases where I want to use a tool to face the top of material I am leaving--the top of a small cylinder or square, or such--but where the diameter of the Tool is too greater to fit inside the material being top-faced, I can define a Contour-OP based on the Face, with defined the Cut Side = OUTSIDE, but then adjust the Extra Offset Field to equal -r, where r=radius of your tool causes a cut along the edge of the Face, etc...
Also, don't get too caught up in precise equalities as FreeCAD is weak there. Specifically, what I mean is that modeling a PAD on top of another PAD where one or two of the edges are intended to be exactly touching the bottom PAD will often benefit by leaving a 0.001mm gap or such--practically, your machine won't know the difference, but it will often make Path-WB easier to work with. Same thing with defining exact diameter and allowances on your model relative to your Tool definition. In some cases defining a 6.35mm Diameter tool as 6.3499mm may fix things that should work but don't seem to.
Another thing I've found is to try different approaches--even when I wasn't aware it's allowed. Recently I selected the external Faces and found it allowed me to use these to define a contour cut. I think that used to be true, then wasn't, and now is again . It's in development, so give things a try.
For myself, I have had success in working around the few things that otherwise are difficult by adopting some strategies. One is to think about the limits of Path-WB from the ground up when developing my 3D model. There are often multiple otherwise equivalent ways to implement the 3D design, but--for example--in some cases, you leave useful edge-loops where in another implementation, this isn't true because the contour you need took a Z-change that isn't helpful.
There are also cases where slightly counter-intuitive approaches allow me to achieve results I wasn't otherwise able to implement. For example, in cases where I want to use a tool to face the top of material I am leaving--the top of a small cylinder or square, or such--but where the diameter of the Tool is too greater to fit inside the material being top-faced, I can define a Contour-OP based on the Face, with defined the Cut Side = OUTSIDE, but then adjust the Extra Offset Field to equal -r, where r=radius of your tool causes a cut along the edge of the Face, etc...
Also, don't get too caught up in precise equalities as FreeCAD is weak there. Specifically, what I mean is that modeling a PAD on top of another PAD where one or two of the edges are intended to be exactly touching the bottom PAD will often benefit by leaving a 0.001mm gap or such--practically, your machine won't know the difference, but it will often make Path-WB easier to work with. Same thing with defining exact diameter and allowances on your model relative to your Tool definition. In some cases defining a 6.35mm Diameter tool as 6.3499mm may fix things that should work but don't seem to.
Another thing I've found is to try different approaches--even when I wasn't aware it's allowed. Recently I selected the external Faces and found it allowed me to use these to define a contour cut. I think that used to be true, then wasn't, and now is again . It's in development, so give things a try.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: Non-Looped Contour/Edge Cutting?
This may give you some idea. You can think of FeatureArea as a mini-Part workbench, but mostly for doing boolean operation in 2D. The final generated the path is not optimal, because sorting with open path is kind of weak at the moment. It breaks the wire into edges before sorting. I probably should add an option to not break open wire. You can play around with ResumeThreshold property in the path feature to reduce rapid moves.
Script for the above operation, with one difference, that is, the script generates offset one at a time, so that you can maybe perform more customization.
Update: I just found out a bug thanks to this post. It only affects open wire operation. I have submitted a PR for this. With this fix, the above steps or script shall give you an optimal path show as below
Script for the above operation, with one difference, that is, the script generates offset one at a time, so that you can maybe perform more customization.
Code: Select all
import Path
# offsetEdge is the edge/wire to be offseted
# cutFace is the face/wire to intersect the offset wires
# offset is the distance to offset
def genOffset(offsetEdge,cutFace,offset):
offsetWire = Path.Area(Offset=offset, Fill=0).add(offsetEdge).getShape()
# op=2 means Intersection, you can use other operations if you want
return Path.Area(Coplanar=False,Explode=True).add(offsetWire).add(cutFace,op=2).getShape()
wires = []
for offset in [20,15,10,5]:
wires.append(genOffset(offsetEdge,cutFace,offset))
Path.show(Path.fromShapes(wires))
Update: I just found out a bug thanks to this post. It only affects open wire operation. I have submitted a PR for this. With this fix, the above steps or script shall give you an optimal path show as below
- sliptonic
- Veteran
- Posts: 3459
- Joined: Tue Oct 25, 2011 10:46 pm
- Location: Columbia, Missouri
- Contact:
Re: Non-Looped Contour/Edge Cutting?
This is a very cool technique. Thanks realthunder!
Besides the application described above, I think this is also applicable to the lathe operations I've been playing with (when I can find the time).
It might even be possible to pull off 4th axis stuff like this: https://www.youtube.com/watch?v=sqx9w80diKo Path wouldn't be able to correctly render a 4th axis path on the screen and I'm sure shais's simulation would have some trouble but it would still be very cool.
Fame and glory awaits the first person who generates a workable 4th axis surface operation in Path.
Besides the application described above, I think this is also applicable to the lathe operations I've been playing with (when I can find the time).
It might even be possible to pull off 4th axis stuff like this: https://www.youtube.com/watch?v=sqx9w80diKo Path wouldn't be able to correctly render a 4th axis path on the screen and I'm sure shais's simulation would have some trouble but it would still be very cool.
Fame and glory awaits the first person who generates a workable 4th axis surface operation in Path.
Re: Non-Looped Contour/Edge Cutting?
I'm trying to do the same basic operation as Josh describes, end-facing a rectangular block of stock. I thought I was missing something but it seems not. Has there been any progress on a way to do this since the last post in 2017?
I did find a work around by "engraving" down the side of the block. Maybe I could also extend the model and put a 2mm pocket op. on the end of the part but it would be good to have a tool which can deal with a vertical face.
Maybe I'm missing a trick.
I did find a work around by "engraving" down the side of the block. Maybe I could also extend the model and put a 2mm pocket op. on the end of the part but it would be good to have a tool which can deal with a vertical face.
Maybe I'm missing a trick.
- Attachments
-
- end-face.FCStd
- (17.34 KiB) Downloaded 62 times