Introduction / Wanting to help with Development

Here's the place for discussion related to coding in FreeCAD, C++ or Python. Design, interfaces and structures.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Post Reply
zackw
Posts: 16
Joined: Sun May 01, 2022 12:11 pm

Introduction / Wanting to help with Development

Post by zackw »

Hi all!
I've been using FreeCAD for a while now (couple years?) and I've been wanting to contribute since the program is so useful to me. I saw yorik's post recommending that you "present yourself" so that's what this is :D

I've been able to compile FreeCAD, and actually I just built a new computer partially so that I could compile large programs like it much faster. I've read through a lot of the documentation recommended on the wiki, and I've poked around a bit in the code as well. I know both Python and C++ (and a few other languages).

It'd be cool if someone wanted to task me with a few simple things just to get my feet wet, but really motivation is to work on things like:
- A "paste-into" feature. For example: Copy a sketch, and when pasting it, check if a body is selected in the treeview and paste it into the body if so. I think I tracked this down to the StdCmdPaste method and "insertFromMimeData". Adding a check here to see if there is a body is selected, a check to see if the mimeData can even be pasted there (a part into a body wouldn't make much sense), and then finally pasting the mimedata into the new location.

- A command language similar to Autocad's (maybe the python tools are already good for this? I should experiment more, but I think simplifying it even further would be nice. I'm imagining being able to hit a hotkey and type in a command like "rect x22 y30"). This seems like it'd probably be on the python side of things, but may require some GUI code written on the C++ side?

Anyway. Great job to the developers who have made FreeCAD into what it is! It's an amazing accomplishment and just gets better every day :D
User avatar
paddle
Veteran
Posts: 1392
Joined: Mon Feb 03, 2020 4:47 pm

Re: Introduction / Wanting to help with Development

Post by paddle »

zackw wrote: Wed Jul 20, 2022 11:29 pm Hi all!
I've been using FreeCAD for a while now (couple years?) and I've been wanting to contribute since the program is so useful to me. I saw yorik's post recommending that you "present yourself" so that's what this is :D

I've been able to compile FreeCAD, and actually I just built a new computer partially so that I could compile large programs like it much faster. I've read through a lot of the documentation recommended on the wiki, and I've poked around a bit in the code as well. I know both Python and C++ (and a few other languages).

It'd be cool if someone wanted to task me with a few simple things just to get my feet wet, but really motivation is to work on things like:
- A "paste-into" feature. For example: Copy a sketch, and when pasting it, check if a body is selected in the treeview and paste it into the body if so. I think I tracked this down to the StdCmdPaste method and "insertFromMimeData". Adding a check here to see if there is a body is selected, a check to see if the mimeData can even be pasted there (a part into a body wouldn't make much sense), and then finally pasting the mimedata into the new location.
Hi and welcome!
Glad that you want to join in the fun ! :)

Reworking the copy/paste in the tree is a great idea! It really needs to be improved. I actually had that on my roadmap and I'm super-glad if you want to do it. Here's the topic where I discuss a little bit the subject :
https://forum.freecadweb.org/viewtopic.php?f=10&t=65899

Besides, on the same topic, I worked on a copy paste for geometries inside the sketcher. It hasn't merged yet due to not acceptable code structure. It may give you some ideas :
https://forum.freecadweb.org/viewtopic. ... 38#p567538 & https://forum.freecadweb.org/viewtopic.php?f=19&t=65104

If you want to discuss it further don't hesitate ! I'd be very happy if that copy/paste subject is taken care of.
Cheers
User avatar
paddle
Veteran
Posts: 1392
Joined: Mon Feb 03, 2020 4:47 pm

Re: Introduction / Wanting to help with Development

Post by paddle »

zackw wrote: Wed Jul 20, 2022 11:29 pm - A command language similar to Autocad's (maybe the python tools are already good for this? I should experiment more, but I think simplifying it even further would be nice. I'm imagining being able to hit a hotkey and type in a command like "rect x22 y30"). This seems like it'd probably be on the python side of things, but may require some GUI code written on the C++ side?
Regarding your second sugestion, we are currently working on a widget that allows you to type in the dimensions (so that might be what you were thinking about) :
https://forum.freecadweb.org/viewtopic. ... &start=130
The thread is super long, so if you want a video that explain roughly what it does : https://youtu.be/K8oTQNpI8CQ

If you need more ideas I can give you some, though I think the copy/paste is a great way to get started. And better start by one topic and get it right so that it can merge fast enough.
User avatar
adrianinsaval
Veteran
Posts: 5541
Joined: Thu Apr 05, 2018 5:15 pm

Re: Introduction / Wanting to help with Development

Post by adrianinsaval »

Hi and welcome to the forum! It's always nice to see new people willing to help, the copy paste thing is a nice idea, this might be related to it (based on the title, haven't looked) issue #6134

Other possible stuff if you're interested:
issue #7078
issue #6884
issue #6860
issue #6697
issue #6254
I couldn't find an issue for it but another request I have seen around is to have the option in Part Design patterns to specify the spacing & instances instead of total range & instances

In general you can look through the issue list and see if anything peaks your interest or matches your skills and work on it, we appreciate any help. Feel free to ask more details about whatever you're interested in.
heda
Veteran
Posts: 1348
Joined: Sat Dec 12, 2015 5:49 pm

Re: Introduction / Wanting to help with Development

Post by heda »

welcome,
what work do you typically do with fc, and what wb's do you utilize?

for the "command like "rect x22 y30"", think you can easily make that as add-on, a non-modal line-edit widget that parses your mini-lang as fcn-call with args, the functions then add objects to the document - can all be done in python imho

anyhow, any interest in mesh wb? could need a bit of love.
it is hard to avoid meshed 3d nowadays, and better cleaning abilities, setting color per face in gui, etc would probably make fc a better one-stop shop for 3d printing.

a nice feature to have in mesh wb would for example be to be able to snap-move a node , today one has to delete surrounding facets and recreate.

simply do things that you have real interest in and find enjoyable and it should all work out to the best.
zackw
Posts: 16
Joined: Sun May 01, 2022 12:11 pm

Re: Introduction / Wanting to help with Development

Post by zackw »

Thanks for the warm welcome!

@paddle Thanks for the links, these are helpful. It also looks like your tool widget is about what I wanted, I suspect that will serve the purpose nicely! I'll have to play around with it soon :)
I like the behavior suggestion you made, I'm going to work on mapping out how the current copy/paste system works and then come up with a system to cover the intended behavior as much as possible. It'll also be important to handle other object types properly, and to fit with the dependency and undo functions. Should take me a while to figure out :D

Thanks for the suggestions @adrianinsaval! I saw issue #6134 before, it seems a lot like what paddle suggested. If/when I get stumped on the copy/paste issue, I will look into some of the other feature requests you linked, they all look pretty manageable. And that last thing has been something I've wanted a few times as well :) - having to stop drafting and calculate the spacing manually is a bit jarring sometimes. Even if it can be done in-program using the equation editor.

@heda I'm typically modelling small assemblies, often times to 3D print. I also have to do enclosures quite a bit, and brackets and the like. Mostly I use Part Design, Sketcher, and Mesh. I don't typically use any of the assembly workbenches just because most of my assemblies are static and pretty easy to throw together without precise constraints. I'm working on a infotainment system for a Ford Focus 2007 right now, the 3d printed parts need to hold all the electronics down and keep them under a fan. I'm also modelling an experimental multi-material feeder for 3d printers, and some other projects.
I do most of my hardcore mesh work in Blender or MeshLab, so I usually only use like the most basic mesh functions in FreeCAD. I also feel like I'm not so good at that kind of programming :D
Post Reply