|width=62%|'''[[Rework of libbu/libbn to not require Tcl]]:''' Tcl's '''''C API''''' is used throughout BRL-CAD providing great abstractions, but we want our basic utility and numeric libraries (LIBBU & LIBBN) to stand alone.

Revision as of 09:42, 9 February 2017

If you want to work on computer-aided design (CAD), geometry, or graphics, you've come to the right place! Help us improve open source CAD.

Well prepared proposals from capable students have an outstanding chance of getting selected. We consider proposals for all skill levels ranging from simple to crazy hard and everything in between. Introduce yourself, and we'll help you plan one right for you.

Remember that project descriptions are just initial ideas. You must expand with considerably more detail. Change the goals to fit your experience and interests. See our checklist to get started.

This year, BRL-CAD is coordinating with five other communities that will get 1-2 students each to help bridge our work and encourage collaboration. Projects that help exchange data or share code are desired!

Advanced Sketch Primitive Editor: BRL-CAD has a 2D sketch primitive, but our handling of editing sketches doesn't incorporate parametric constraints. There are potentially applicable codes in the open source community we can leverage for this, or we can roll our own solution.

<An Idea of Your Own>

Do you have an idea of your own? Maybe you need more ideas to inspire you? We're very open to areas of academic research, industry applications, and ideas that get you hooked on open source CAD development.

Requirements:

Passion for the task being suggested

OpenSCAD Projects

OpenSCAD is a parametric solid 3D modeling tool which uses a Domain Specific Language to specify designs as plain text. It is specifically designed with 3D printing in mind.

The OpenSCAD team is also open to new ideas. Please get in touch to discuss your ideas and convince a mentor to back it.

LibreCAD Projects

LibreCAD is a free Open Source CAD application for Windows, Apple and Linux. Support and documentation is free from our large, dedicated community of users, contributors and developers.
Please refer to LibreCAD GSoC 2015 ideas for more detailed description.

Languages

Difficulty

Contacts

LibreCAD 3 UI: Add GUI support for drawing and editing actions to start exposing it to end users.

STEPcode Projects

Languages

Difficulty

Contacts

STEP Coverage Test: Write a program that links against STEPcode and generates a STEP output instantiating every entity for a given schema. Goal is a comprehensive program and data file for testing STEP import/export.

STEP Source Code Documentation: We already use doxygen, but could do much better. Improve code documentation and utilize additional doxygen features such as topic pages. Add a 'make doxygen' target to invoke doxygen.

STEP Viewer: STEP is a common CAD file format supported by just about every major CAD system. Given we have an importer and an interface for displaying geometry, a stand-alone STEP file viewer has some great potential.

Add flow control to halstreamer ([4]): The userspace program halstreamer and its realtime companion streamer make up a utility for moving arbitrary data into the realtime core of LinuxCNC. It currently streams data at maximum rate, and it would be good to add flow control.

Add peck to rigid tapping ([6]): Given adequate feedback from the machine, LinuxCNC supports rigid tapping via G33.1 G-code. Some kinds of taps and materials benefit from "peck tapping", where the tap is backed out from the work piece periodically. Peck tapping currently has to be done "by hand", by programming one G33.1 move for each peck. This task is to add support for a "peck depth" parameter to the G33.1 command, analogous to peck drilling in G83.

Topological Naming Project: Theory evaluation of possible algorithms in respect to FreeCADs internal architecture and implementation of a prototype to show the general applicability of the choosen approach.

Mentors

BRL-CAD operates under group mentorship. That means you can contact anyone, not just the person assigned to you, for assistance. The mailing list and IRC channel are the preferred communication methods.