You, Sir, are criminally under-subbed. High production quality, easy to understand, highly educational, warm demeanor, and most importantly - pleasant to listen to.
Definitely a hidden gem of a channel. Thank you for this. Can't believe you dont have a 100k+ subs. The algo will eventually catch on. Keep up the great work!
I truly enjoyed your video-thank you! I wish you success. Your emphasis on the journey of learning and implementing to achieve a goal deeply resonated with me. The excellent visualization of each step, the well-paced delivery, and compelling storytelling were particularly noteworthy. I look forward to more of your content here.
Thanks for your video! Perfect timing for me as I am working on some python driven tools for FreeCad and this video gave me some other approaches to try. Thanks!
well done arif, nice video! :) didnt know freecad could do this. one hint, maybe create variables for your tolerances, aka as "fit-gaps". so you have one place to adjust them and do not repeat them everywhere ;)
Thanks for the feedback @slaesh! I'm glad you discovered something. Your hint intrigues me; in the code I create a "fitgap" dictionary: f{"tight"=A, "close"=B}, then reference it in various parts of the code: f["tight"] or f["close"] to represent the values A, and B respectively. This way, I only adjust the value in the dictionary, then call the dictionary wherever I need that value; just like a variable. I have defined a few different fitgaps, so it's the same as using multiple variables, but arguably packaging them in a dictionary can be cleaner way of doing it, especially since the specific value I an assigning to the fitgap is not a single value, rather its a 3D vector, each of which has x, y, and z "properties". So I'm thinking I need some help to better understand your hint; is there a cleaner, more clever, way to do this?
@@betterenlightened I did not watched it fully, good to know you did it already! :) I just saw here and there same values "hard-coded".. like "Vector(0.4, 0.4, 0.16)" .. which was the half of your fitgap values :) or in some places, at least at the beginning were additions x+0.8, y+0.8 and so on.. but if you had this in mind, ignore my comment ;) great stuff anyways, keep on! in general it looks quite complicated.. everytime loading these python scripts.. did you used OpenSCAD yet?
Thank you @slaesh - yes, the FreeCAD user interface leaves much to be desired when it comes to loading and running these Python scripts; I wish there was a simpler way to do it. I am aware of OpenSCAD but I have not yet tried it. I started with FreeCAD because I needed to familiarize myself with 3D modelling the traditional way before scripting it in code. Do you think OpenSCAD is more appropriate to use for script-based 3D modelling than FreeCAD?
Thanks for the suggestion @MarkusRoleke, I have been considering it. Let me publish my next video, after which I will choose a suitable method for sharing.
Hi, Rafiq: at 38:23 you included one more argument in BeBox (line 126), but I can't see any modification at BeBox class to support this new argument ([FreeCAD.Vector(12, 12, 0)]). I follow all the process repeating same script into Freecad and stopped in this moment of the video as Freecad returned a message that the BeBop class does not support 4 arguments. I can see that BeFlat is not being called too. I suppose there are some modifications on BeBox class that you did not put into video. Am I wrong?
You're absolutely correct @cahenr5045! It seems I skipped that explanation in the video; thank you for catching it. The original BeBox() class creates the object by defining a "list" of edges, then creating a "wire" out of it, from which a "face" is created and then "extruded". Those commands in BeBox() are replaced with a call to BeFlat(), using the WSD, ESD, END and WND vertices and the JOINTS "list" which define the curvature of each vertex. Of course, the additional argument to accept the JOINTS "list" is also added as an optional parameter to the BeBox() class which simply gets passed to BeFlat(). I may have to include this explanation in my next video! :)
@@betterenlightened Thanks, that would be very helpful. The video is great as an overview of how to think through a design with the FreeCAD API, but there are so many details that it's really not feasible to understand them all without being able to open the code in VS Code or some other code editor. GitHub, perhaps? Or maybe just post it on a free cloud service in the mean time, which would be very simple to do. Any of the LLMs will list out free cloud services.
You, Sir, are criminally under-subbed. High production quality, easy to understand, highly educational, warm demeanor, and most importantly - pleasant to listen to.
Thank you, @lukealchinsmith. Please share; perhaps there are others out there that would enjoy these videos!
You have an incredibly engaging presentation style and I really appreciate how you explain why you do each code step and the changes along the way.
Thank you @rickhoro. I appreciate the positive feedback!
Definitely a hidden gem of a channel. Thank you for this. Can't believe you dont have a 100k+ subs. The algo will eventually catch on. Keep up the great work!
Thanks @seanbosse!
I truly enjoyed your video-thank you! I wish you success. Your emphasis on the journey of learning and implementing to achieve a goal deeply resonated with me. The excellent visualization of each step, the well-paced delivery, and compelling storytelling were particularly noteworthy. I look forward to more of your content here.
Thank you for the wonderful comment Gabriel!
Thanks for your video! Perfect timing for me as I am working on some python driven tools for FreeCad and this video gave me some other approaches to try. Thanks!
I’m glad you found it helpful @justinahrens1868
well done arif, nice video! :) didnt know freecad could do this. one hint, maybe create variables for your tolerances, aka as "fit-gaps". so you have one place to adjust them and do not repeat them everywhere ;)
Thanks for the feedback @slaesh! I'm glad you discovered something.
Your hint intrigues me; in the code I create a "fitgap" dictionary: f{"tight"=A, "close"=B}, then reference it in various parts of the code: f["tight"] or f["close"] to represent the values A, and B respectively. This way, I only adjust the value in the dictionary, then call the dictionary wherever I need that value; just like a variable. I have defined a few different fitgaps, so it's the same as using multiple variables, but arguably packaging them in a dictionary can be cleaner way of doing it, especially since the specific value I an assigning to the fitgap is not a single value, rather its a 3D vector, each of which has x, y, and z "properties".
So I'm thinking I need some help to better understand your hint; is there a cleaner, more clever, way to do this?
@@betterenlightened I did not watched it fully, good to know you did it already! :) I just saw here and there same values "hard-coded".. like "Vector(0.4, 0.4, 0.16)" .. which was the half of your fitgap values :) or in some places, at least at the beginning were additions x+0.8, y+0.8 and so on.. but if you had this in mind, ignore my comment ;) great stuff anyways, keep on! in general it looks quite complicated.. everytime loading these python scripts.. did you used OpenSCAD yet?
Thank you @slaesh - yes, the FreeCAD user interface leaves much to be desired when it comes to loading and running these Python scripts; I wish there was a simpler way to do it. I am aware of OpenSCAD but I have not yet tried it. I started with FreeCAD because I needed to familiarize myself with 3D modelling the traditional way before scripting it in code. Do you think OpenSCAD is more appropriate to use for script-based 3D modelling than FreeCAD?
❤
🙏
Hmm. Thank you; this may actually make FreeCAD usable for me.
I’m glad you found this useful @mitchellquinn.
Hey, great video. C
an you share the python scripts?
Thanks for the suggestion @MarkusRoleke, I have been considering it. Let me publish my next video, after which I will choose a suitable method for sharing.
Hi, Rafiq: at 38:23 you included one more argument in BeBox (line 126), but I can't see any modification at BeBox class to support this new argument ([FreeCAD.Vector(12, 12, 0)]). I follow all the process repeating same script into Freecad and stopped in this moment of the video as Freecad returned a message that the BeBop class does not support 4 arguments. I can see that BeFlat is not being called too. I suppose there are some modifications on BeBox class that you did not put into video. Am I wrong?
You're absolutely correct @cahenr5045! It seems I skipped that explanation in the video; thank you for catching it. The original BeBox() class creates the object by defining a "list" of edges, then creating a "wire" out of it, from which a "face" is created and then "extruded". Those commands in BeBox() are replaced with a call to BeFlat(), using the WSD, ESD, END and WND vertices and the JOINTS "list" which define the curvature of each vertex. Of course, the additional argument to accept the JOINTS "list" is also added as an optional parameter to the BeBox() class which simply gets passed to BeFlat(). I may have to include this explanation in my next video! :)
@@betterenlightened Thanks, I will wait for it!
Hi @cahenr5045, the latest episode is now up. I cover this discussion at around the 48:16 mark. ruclips.net/video/JL-Li1j0gow/видео.html
@@betterenlightened thank you!
Arif, do you have the code somewhere for download? Thanks again.
@rickhoro, I’ve been considering some options on how to share the code. I will strive to make this available soon - stay tuned.
@@betterenlightened Thanks, that would be very helpful. The video is great as an overview of how to think through a design with the FreeCAD API, but there are so many details that it's really not feasible to understand them all without being able to open the code in VS Code or some other code editor. GitHub, perhaps? Or maybe just post it on a free cloud service in the mean time, which would be very simple to do. Any of the LLMs will list out free cloud services.
Impressive! Can I get a shout out? Hehehe
Thanks for the comment, @Ritojunior. What projects are you working on?