I'm glad you find the tutorials helpful! Hopefully going to do a few more tutorials on the path module and try to merge that with the machines I work with 😀
Andrew, Thank you for making these simple but eloquent video tutorials. I've struggled with several of the features you cover, and understand enough now about Path to actually use it!
you can let FreeCAD determine and select a contour instead of doing it by hand (like you did at the deburring-section of the video). That saves a lot of time, especially with complex shapes. Just select one section of a contour and then click the button with a little square and two yellow dashed lined sides (difficult to describe. It is the button to the right of a button with 3 drills on it) edit: the button I mean is called "complete loop"
Wow, thanks for this video on path, I have been looking for how to get g code from freecad and you have shown the method with this video. I will admit that I will have to watch it several times to get it pounded into my old brain.
Wow! Abso - flipping lutely brilliant! I'm an old geezer with 25 years CNC turning under my belt. (Not done it for 15 years though) Never done CNC milling and just bought a 3018 desktop CNC engraver / router. It's a big learning curve but your video was a massive help. Thank you. Jim ( Yes I've liked & subscribed )
Hey Flypic! Thank you for the like and subscription, that means alot! 😁 I myself am a CNC miller with a smidge of turning knowledge! Just over 7 years of making chips! Planning on doing more videos which take freecad and apply it to machine shop projects, making my videos more creative, so that might be something you're interested in 😀
Hi Andrew, I posted on sliptonic's vids. He suggested I joined the Freecad forum, which I have now done. Not participated in anything yet and don't know what I CAN contribute but loving it so far. Not engraved anything yet but finally programmed my Logo with text and loving watching it all happen in fresh air without the spindle running.
Can you answer this for me please: When I generate the G Code it adds the feed to every line. As it's modal it doesn't need that. Is there a way to change settings to only add feed when it changes? I'm asking as I will need to guess the feedrates and modify as necessary. Turning feeds nearly always use feed per rev. and Milling use feed per minute (which is quite alien to me) Thanks. Jim
I'm guessing that it's the post processor that's creating a feed code on every line of the NC code...I cant be 100% sure, so I'll have to take a closer look when I'm home. I know when I ran it, it had the same issue, which is annoying, because you dont want to be changing the feed on every line, especially if you're making little tweaks like you said.
I was hoping to see you explain how you are going to release the final part from the block. Are you just flipping it in the vice and surface it? Althouth this part will not fit well in the vice. Might need some sort of jig. Would you do part 3 to explain this? How would you set this up in freecad?
In version 0.20.1, 99% of this worked perfectly, but a few things like tool tables, changing the order of operations by clicking on the "operations" folder and displaying the g-code didn't work like they do in this tutorial. If I can figure out the current workflow/features, I'll come back and add to this comment. Andrew, thank you so much for creating these tutorials. They are a tremendous help to noobs like myself, just starting to dip a toe into the Freecad waters.
I was really hoping to upload a video, but the quality of the sound and image werent good 😅 Would've loved to show you guys how it turned out, so I'll try on the next 😊
Hey Ludo! I'm glad you enjoyed the video 😀 I believe at the moment there is an experimental lathe module called 'liblathe', but I've never tried it myself.
Great video. Well done. The only "problem" I have is the postprocessor. I did some testing with FreeCAD path and a Sinumeric S840D control. Even after making some modifications to the Python code of the postprocessor I ended up writing some C code to get the correct code. Perhaps my understanding of the way the postprocessor is supposed to work is not correct.
Hey John! I know exactly what you mean, I had a similar problem where I was messing around with the code after, just to get it to work smoothly. I did try and dive into modifying the post processor, but unfortunately I didn't get very far. I'll have another crack at it soon and perhaps create a video :)
Is there a way in freecad to add prompts to the gcode (m117 blah) with a pause so you can physically change your tool bit? Or should I simply create individual jobs (gcode outputs) for each toolbit? I noticed it allows you to order you operations by tools, but I cannot find a way in FreeCad to facilitate a pause/resume in the job to allow you to change the tool bit. Any thoughts? Thanks
Hey Glenn! Sorry for the rubbish response time! 😅 As far as I'm aware there's no way to add in a command through the software, I believe you'd have to change it manually within the G-code. I'll spend a bit of time having a look over the weekend 😊 I guess if you know how to program in Gcode you could give it a go? Add in a program stop and make the machine go to a safe location for you to then change the tool? Another way around like you said would be to do a program for each operation, but that could be rather long winded and confusing 😅
@@AndrewCAD I did just that. I used the "split output sort by tools" feature in FreeCAD. That gave me one job per tool output??.gcode file. I then made a script to look for "(begin operation: T" grab that line and replace it with a multiline text which contains my gcode macro to do a tool bit change and use the touch plate. A bit clunky, but works. This way I would never accidentally use the wrong bit for the job. Thanks for your response.
#!/bin/bash # add tool bits: Search through provided argument directory/file name # sort through all gcode lines and look for "(begin operation: T" and change # this to include some gcode from ToolChange.gcode (template macro for # touchplate operation) in Gcode_Templates directory # Glenn Howe - 3/3/2021 - glenn.d.howe@gmail.com # ######################################################################################################################## # ;(Begin: Gcode Template by GH) # ;(Gcode to change a tool) # G1 # M117 Turn off spindle !!!! # G4 S5; Pause for 5 # M0; (Pause code until resume is clicked on the LCD. This reminds you to turn off the spindle) # G0 X0.0000 Y0.0000 F2100; (Move to zero on X and Y) # M18 Z ;(Disable Z Stepper Motor. This is disabled so you can manually move the Z axis up to get the new bit in) # M117 Install REPLACEME bit; # G4 S10; # M117 Set up touch plate # G4 S5; Pause for 5 # M0; (Pause code until resume is clicked on the LCD. This is for you to get your touch plate set up) # G28 Z; (Home Z axis to touch plate) # G1 Z2 F150; (Raise Z axis 2mm at a feedrate of 150 in order to remove your touch plate) # M117 Remove Touch Plate # G4 S5; Pause for 5 # M0; (Pause code until resume is clicked on the LCD.This is to un hook the touch plate and turn the spindle on) # G1 Z-0.4 F150; (This sets the negative offset of the thickness of your touch plate. In my case, i use a .4mm feeler guage. This would be changed to the thickness of your touch plate. Make sure and leave it negative.) # G92 Z0; (This now sets the Z axis to zero at the offset above, meaning the top of your workpiece) # G0 Z5.0000 F480; (This pulls the z axis back up off the workpiece at a feedrate of 480) # G0 X0.0000 Y0.0000 Z0.0000 F2100; (Go to zero on all axis. Probably not necessary but i like to do it) # G0 Z5.0000 F480; ( Pull the Z axis back up off the workpiece at a feedrate of 480) # ;(End: Gcode Template by GH) ######################################################################################################################## IFSOLD=$IFS IFS=" " TEMPLATES=/home/glennh/Documents/CAD/CNC/Gcode_Templates TOOLCHANGE=$TEMPLATES/ToolChange.gcode changeTool() { EXISTINGTOOLLINE=$(grep "begin operation: T" $1 ) for tool in $EXISTINGTOOLLINE do TOOLBIT=$(echo $tool | cut -d: -f3 |sed s/\)//g|awk '{print $1,$2,$3,$4,$5,$6}') if [ "$TOOLBIT" == "$OLDTOOLBIT" ]; then echo "SKipping $TOOLBIT matches $OLDTOOLBIT" else #set tool change macro to variable TOOLCHANGEMACRO=$(cat $TOOLCHANGE | sed "s/REPLACEME/$TOOLBIT/g") #disable commands marlin complains about sed -i s'/G17/;G17/'g $1 sed -i s'/M5/;M5/'g $1 sed -i s'/M6/;M6/'g $1 sed -i s'/G43/;G43/'g $1 sed -i s'/M3/;M3/'g $1 sed -i s'/M05/;M05/'g $1 sed -i s'/M2/;M2/'g $1 sed -i s'/M140/;M140/'g $1 perl -p -i -e "s/$tool/$TOOLCHANGEMACRO/g" $1 sed -i s'/(/;(/'g $1 fi OLDTOOLBIT=$TOOLBIT done } if [ "$1" == "" ]; then echo "Must provide directory name as parameter" exit 0; else DESTSTATUS=$(file $1|cut -d: -f2 |awk '{print $1}') if [ "$DESTSTATUS" == "directory" ]; then WORKDIR=$1 #build array of gcode files living in $WORKDIR for gcodeFile in $(ls -1 $WORKDIR/*.gcode); do changeTool $gcodeFile done else FILE=$1 changeTool $FILE fi fi IFS=$IFSOLD
I would realy appreciate it if someone would post a tutorial on more complex stuff. Like what is a good way to mill a part that is too big and has to be shifted in between milling operations. Mill a section, move the stock material, mill the second section and so on. How to do that? How to ensure you maintain the right origin for each section so that the final part has the right dimensions? How to cope with FreeCAD so that the G-code is split up per section?
@@xl000 I don't fully agree. It is possible to do this with FreeCAD. In fact, I have actually done it myself. But I am sure I did not do it verry efficiently. My point is that there are so very many tutorials covering the basics, but for anything beyond that, you are mostly on your own. I haven't found tutorials on this particular subject. If there are, please share.
As someone who is trying move away from Fusion 360 CAM to FreeCAD Path, your videos have been quite helpful!. Thanks a lot.
I'm glad you find the tutorials helpful! Hopefully going to do a few more tutorials on the path module and try to merge that with the machines I work with 😀
Good videos. Your speech is clear. You stay on track and don't add extra asides. Thanks.
Thanks for the video. Was getting stuck with the Path (CAM) part of FreeCAD. This has given me some more confidence to move over.
Andrew, Thank you for making these simple but eloquent video tutorials. I've struggled with several of the features you cover, and understand enough now about Path to actually use it!
you can let FreeCAD determine and select a contour instead of doing it by hand (like you did at the deburring-section of the video). That saves a lot of time, especially with complex shapes.
Just select one section of a contour and then click the button with a little square and two yellow dashed lined sides (difficult to describe. It is the button to the right of a button with 3 drills on it)
edit: the button I mean is called "complete loop"
Wow, thanks for this video on path, I have been looking for how to get g code from freecad and you have shown the method with this video. I will admit that I will have to watch it several times to get it pounded into my old brain.
Best Path tutorial I've seen. THANKS
Excellent 2 part tutorial on FreeCAD with CAM there. I managed to follow all of that ! :-)
Excellent Kelvin! Glad it made sense the whole way through! :D
Wow! Abso - flipping lutely brilliant! I'm an old geezer with 25 years CNC turning under my belt. (Not done it for 15 years though) Never done CNC milling and just bought a 3018 desktop CNC engraver / router. It's a big learning curve but your video was a massive help. Thank you. Jim ( Yes I've liked & subscribed )
Hey Flypic! Thank you for the like and subscription, that means alot! 😁 I myself am a CNC miller with a smidge of turning knowledge! Just over 7 years of making chips! Planning on doing more videos which take freecad and apply it to machine shop projects, making my videos more creative, so that might be something you're interested in 😀
Hi Andrew, I posted on sliptonic's vids. He suggested I joined the Freecad forum, which I have now done. Not participated in anything yet and don't know what I CAN contribute but loving it so far. Not engraved anything yet but finally programmed my Logo with text and loving watching it all happen in fresh air without the spindle running.
Can you answer this for me please: When I generate the G Code it adds the feed to every line. As it's modal it doesn't need that. Is there a way to change settings to only add feed when it changes? I'm asking as I will need to guess the feedrates and modify as necessary. Turning feeds nearly always use feed per rev. and Milling use feed per minute (which is quite alien to me) Thanks. Jim
I'm guessing that it's the post processor that's creating a feed code on every line of the NC code...I cant be 100% sure, so I'll have to take a closer look when I'm home. I know when I ran it, it had the same issue, which is annoying, because you dont want to be changing the feed on every line, especially if you're making little tweaks like you said.
Thank you Andrew, that was very well done.
I'm going to share this video on the Facebook FreeCAD group now.
Many thanks for your effort. Very informative.
Great video Andrew
Thank you for watching MrDdhunt! I'm glad you enjoyed the video 😀
I was hoping to see you explain how you are going to release the final part from the block. Are you just flipping it in the vice and surface it? Althouth this part will not fit well in the vice. Might need some sort of jig.
Would you do part 3 to explain this? How would you set this up in freecad?
amazing video, i have a question can i machine a mesh part with freecad ?
In version 0.20.1, 99% of this worked perfectly, but a few things like tool tables, changing the order of operations by clicking on the "operations" folder and displaying the g-code didn't work like they do in this tutorial. If I can figure out the current workflow/features, I'll come back and add to this comment.
Andrew, thank you so much for creating these tutorials. They are a tremendous help to noobs like myself, just starting to dip a toe into the Freecad waters.
Thank you for this tutorial 🙂
Hi. my freecad don't have spiral pattern in 3d pocket. Do you install other plugin?
When switching tools sometimes it doesn't alowme to do the path I must be doing something wrong
Great Job. How about a video of you running this code on your Mill?
I was really hoping to upload a video, but the quality of the sound and image werent good 😅 Would've loved to show you guys how it turned out, so I'll try on the next 😊
thanks,like it very mutch,I there something for a lathe ?
Hey Ludo! I'm glad you enjoyed the video 😀 I believe at the moment there is an experimental lathe module called 'liblathe', but I've never tried it myself.
Excellent video.
Thank you Magnus!
Does FreeCAD have a 4th axis CNC support? how about simultaneous 4-axis?
Thank you, for your job!
Excelent video. Please record with higher volume, audio in this video is way too low, difficult to hear even with my speakers at 100%.
Hey Ivan! Audio is not the best in this video but its something I'm working on 😊 thank you for the feedback 😁
Great video. Well done.
The only "problem" I have is the postprocessor.
I did some testing with FreeCAD path and a Sinumeric S840D control.
Even after making some modifications to the Python code of the postprocessor I ended up writing some C code to get the correct code.
Perhaps my understanding of the way the postprocessor is supposed to work is not correct.
Hey John! I know exactly what you mean, I had a similar problem where I was messing around with the code after, just to get it to work smoothly. I did try and dive into modifying the post processor, but unfortunately I didn't get very far. I'll have another crack at it soon and perhaps create a video :)
Adaptive clearing, start depth 16mm, step down 5mm. How can I prohibit the endmill to go up, when it changes the steps?
Adaptive doesn't work with freecad version 0.20.1
Great stuff, thankyou!
Is there a way in freecad to add prompts to the gcode (m117 blah) with a pause so you can physically change your tool bit? Or should I simply create individual jobs (gcode outputs) for each toolbit? I noticed it allows you to order you operations by tools, but I cannot find a way in FreeCad to facilitate a pause/resume in the job to allow you to change the tool bit. Any thoughts? Thanks
Hey Glenn! Sorry for the rubbish response time! 😅 As far as I'm aware there's no way to add in a command through the software, I believe you'd have to change it manually within the G-code. I'll spend a bit of time having a look over the weekend 😊 I guess if you know how to program in Gcode you could give it a go? Add in a program stop and make the machine go to a safe location for you to then change the tool? Another way around like you said would be to do a program for each operation, but that could be rather long winded and confusing 😅
@@AndrewCAD I did just that. I used the "split output sort by tools" feature in FreeCAD. That gave me one job per tool output??.gcode file. I then made a script to look for "(begin operation: T" grab that line and replace it with a multiline text which contains my gcode macro to do a tool bit change and use the touch plate. A bit clunky, but works. This way I would never accidentally use the wrong bit for the job. Thanks for your response.
#!/bin/bash
# add tool bits: Search through provided argument directory/file name
# sort through all gcode lines and look for "(begin operation: T" and change
# this to include some gcode from ToolChange.gcode (template macro for
# touchplate operation) in Gcode_Templates directory
# Glenn Howe - 3/3/2021 - glenn.d.howe@gmail.com
#
########################################################################################################################
# ;(Begin: Gcode Template by GH)
# ;(Gcode to change a tool)
# G1
# M117 Turn off spindle !!!!
# G4 S5; Pause for 5
# M0; (Pause code until resume is clicked on the LCD. This reminds you to turn off the spindle)
# G0 X0.0000 Y0.0000 F2100; (Move to zero on X and Y)
# M18 Z ;(Disable Z Stepper Motor. This is disabled so you can manually move the Z axis up to get the new bit in)
# M117 Install REPLACEME bit;
# G4 S10;
# M117 Set up touch plate
# G4 S5; Pause for 5
# M0; (Pause code until resume is clicked on the LCD. This is for you to get your touch plate set up)
# G28 Z; (Home Z axis to touch plate)
# G1 Z2 F150; (Raise Z axis 2mm at a feedrate of 150 in order to remove your touch plate)
# M117 Remove Touch Plate
# G4 S5; Pause for 5
# M0; (Pause code until resume is clicked on the LCD.This is to un hook the touch plate and turn the spindle on)
# G1 Z-0.4 F150; (This sets the negative offset of the thickness of your touch plate. In my case, i use a .4mm feeler guage. This would be changed to the thickness of your touch plate. Make sure and leave it negative.)
# G92 Z0; (This now sets the Z axis to zero at the offset above, meaning the top of your workpiece)
# G0 Z5.0000 F480; (This pulls the z axis back up off the workpiece at a feedrate of 480)
# G0 X0.0000 Y0.0000 Z0.0000 F2100; (Go to zero on all axis. Probably not necessary but i like to do it)
# G0 Z5.0000 F480; ( Pull the Z axis back up off the workpiece at a feedrate of 480)
# ;(End: Gcode Template by GH)
########################################################################################################################
IFSOLD=$IFS
IFS="
"
TEMPLATES=/home/glennh/Documents/CAD/CNC/Gcode_Templates
TOOLCHANGE=$TEMPLATES/ToolChange.gcode
changeTool() {
EXISTINGTOOLLINE=$(grep "begin operation: T" $1 )
for tool in $EXISTINGTOOLLINE
do
TOOLBIT=$(echo $tool | cut -d: -f3 |sed s/\)//g|awk '{print $1,$2,$3,$4,$5,$6}')
if [ "$TOOLBIT" == "$OLDTOOLBIT" ]; then
echo "SKipping $TOOLBIT matches $OLDTOOLBIT"
else
#set tool change macro to variable
TOOLCHANGEMACRO=$(cat $TOOLCHANGE | sed "s/REPLACEME/$TOOLBIT/g")
#disable commands marlin complains about
sed -i s'/G17/;G17/'g $1
sed -i s'/M5/;M5/'g $1
sed -i s'/M6/;M6/'g $1
sed -i s'/G43/;G43/'g $1
sed -i s'/M3/;M3/'g $1
sed -i s'/M05/;M05/'g $1
sed -i s'/M2/;M2/'g $1
sed -i s'/M140/;M140/'g $1
perl -p -i -e "s/$tool/$TOOLCHANGEMACRO/g" $1
sed -i s'/(/;(/'g $1
fi
OLDTOOLBIT=$TOOLBIT
done
}
if [ "$1" == "" ]; then
echo "Must provide directory name as parameter"
exit 0;
else
DESTSTATUS=$(file $1|cut -d: -f2 |awk '{print $1}')
if [ "$DESTSTATUS" == "directory" ]; then
WORKDIR=$1
#build array of gcode files living in $WORKDIR
for gcodeFile in $(ls -1 $WORKDIR/*.gcode);
do
changeTool $gcodeFile
done
else
FILE=$1
changeTool $FILE
fi
fi
IFS=$IFSOLD
But... You never flipped the part to do the other side? :)
I would realy appreciate it if someone would post a tutorial on more complex stuff. Like what is a good way to mill a part that is too big and has to be shifted in between milling operations. Mill a section, move the stock material, mill the second section and so on. How to do that? How to ensure you maintain the right origin for each section so that the final part has the right dimensions? How to cope with FreeCAD so that the G-code is split up per section?
Not in FreeCad. This is a hobbyist tool, not a pro tool
@@xl000 I don't fully agree. It is possible to do this with FreeCAD. In fact, I have actually done it myself. But I am sure I did not do it verry efficiently. My point is that there are so very many tutorials covering the basics, but for anything beyond that, you are mostly on your own. I haven't found tutorials on this particular subject. If there are, please share.
Excellent but please up the volume !!
I'm glad you enjoyed the video! 😀 The volume has indeed increased in my future videos