Skip to content

ezzieyguywuf/mycad

Repository files navigation

NOTE - BEING MIGRATED TO mycad-org

This project is currently being migrated to https://github.com/mycad-org

Aside from the mechanics of moving the project over (that would actually be pretty easy), I'm also working on re-rewriting it in C++. This is fun, and educational, but a bit time consuming, so stay tuned!

"But ezziey, why are you re-rewriting it?"

Great question. I answer it below in the "Project Status" section.

MyCAD

MyCAD is a small passion-project (for now). I like to contribute to FreeCAD, which is a great piece of software with a fantastic community. However, I often find myself frustrated with the almost 20-year-old code base, specifically when I find examples of anywhere from poor to downright dangerous coding practices.

I issue no blame at all on the FreeCAD development team - the project started in the early 2000's, a time when c++ (and many things!) was a much different thing. Also, it is run by a group of volunteers - we all do our best.

However, in an attempt to satisfy the OCD in me, I'm going to try a "ground up" approach to what I think a CAD package should/could be.

Project Status

mycad continues to be a work in progress. It started in C++, making use of the CGAL library — later, the code-base was converted to haskell (because I wanted to learn about functional programming). Most recently, I've decided to take the (functional) lessons I've learned and re-convert the codebase back to C++. The reason for this is that I ultimately wish for mycad to reach as large of an audience as possible, both developers and users. In that regard, C++ feels to me to be a more "inclusive" language versus haskell. On a more practical note, C++ is also supported on more platforms.

One of the goals (number 3 below) is to be disciplined in our approach to growing the code base. As part of that, any new feature should start as a "Story" (see Stories.md) which each represent a specific feature that a specific User will be interested in.

Hopefully, this approach will mean that development will focus mostly on outward facing features that you care about - i.e., our demo gif should get neater and neater!

Goals

In general, there are some very concrete goals for this project:

  1. Learn - I am not a trained programmer. I've learned what I know on the internet. Therefore, one of the first goals is to simply advance my knowledge of coding practices and paradigms.
  2. Have Fun - I mean, come on: if you're not having fun, what are you doing?!
  3. Be Disciplined - I want to be sure that whatever code is pushed to the master branch is solid, robust, and maintainable. I think the best way to accomplish this is with discipline, whether via coding practices, testing techniques, etc.
  4. Document - my favourite libraries to use are those that are documented well. Therefore I want to provide that same opportunity to potential users of MyCAD.

How To Build

MyCAD is being developped using haskell's stack, which makes building pretty easy.

Aside from stack (which will handle all the haskell dependencies), you also need to have a copy of the glfw library installed in your PATH somewhere - there appear to be windows and mac precompiled libraries, and if you're on linux (like me) just use your regular means to install.

Once all that is out of the way, you can build as follows:

git clone https://gitlab.com/ezzieyguywuf/mycad
cd mycad
stack build

To run the executables, you would:

stack exec mycad-tui # for the TUI
stack exec mycad-gui # for the standalone GUI (useful only for development)
stack exec mycad     # for the GUI/TUI hybrid. This is the main executable

That's all it takes! Now, mind you, this project is still very much a work in progress, but check out the unit test definitions in the test sub-directory to get an idea of how things work and go together.

Credits

The project was developed using the following open-source projects (THANK YOU!)

This project has also drawn influence and inspiration from:

About

A small passion project to make my own CAD

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published