Difference between revisions of "GSoC 2012"

From LibreCAD wiki
Jump to: navigation, search
(Support for multiple units upon data entry)
(CAD Engine Features)
Line 112: Line 112:
 
Some examples could be:
 
Some examples could be:
  
A new spline library to support features like, spline fitting, trimming, hatching, etc.;
+
A new spline library to support features like, spline fitting, trimming, hatching by spline borders, etc.;
  
 
Support for more CAD entity types and more drawing methods for entity types;
 
Support for more CAD entity types and more drawing methods for entity types;
Line 122: Line 122:
 
Support for Voronoi Diagram. While Voronoi diagram itself is an interesting feature to support, the requested Offset feature can be implemented by Voronoi analysis.
 
Support for Voronoi Diagram. While Voronoi diagram itself is an interesting feature to support, the requested Offset feature can be implemented by Voronoi analysis.
  
improve hatch algorithm [http://sourceforge.net/tracker/?func=detail&aid=3364645&group_id=342582&atid=1433847 hatching by flood fill]. The current hatch creation requires user to supply a closed contour. An automatic contour detection algorithm which supports all possible entity types is desired.  
+
improve hatch algorithm [http://sourceforge.net/tracker/?func=detail&aid=3364645&group_id=342582&atid=1433847 hatching by flood fill]. The current hatch creation requires user to supply a closed contour. An automatic contour detection algorithm which supports all possible entity types is desired.
  
 
'''Expected results:'''
 
'''Expected results:'''

Revision as of 22:39, 28 February 2012

GSoC2012.jpg

Introduction

LibreCAD plans on participating in GSoC 2012 (if accepted). Google Summer of Code is an opportunity to connect open source projects with students to give the students an opportunity to "flip bits, not burgers" during their summer holiday. This page will bring together ideas from developers to give Google and perspective students lists of contacts and potential projects.

Interesting/useful links:

http://google-opensource.blogspot.com/2012/02/google-summer-of-code-2012-is-on.html

http://code.google.com/p/google-summer-of-code/wiki/ProgramPresentations

http://code.google.com/p/google-summer-of-code/wiki/GsocLogos

http://code.google.com/p/google-summer-of-code/wiki/GsocFlyers


For Students

See the potential projects below. It is a VERY good idea to contact potential mentors prior to applying to help in your application, the earlier the better! You should also subscribe to our mailing list (http://forum.librecad.org/LibreCAD-dev-f4361976.html) to introduce yourself and visit our IRC channel (#librecad on irc.freenode.net). Also explore our feature request tracker on SourceForge (http://sourceforge.net/tracker/?group_id=342582) for additional ideas if you'd like to propose something else.

A template application is found on the Student Application Template wiki page.

The application deadline for students is April 6, but you should contact perspective mentors very early. More info on the application schedule is available here: http://www.google-melange.com/gsoc/events/google/gsoc2012. All applications must be made through Google here: http://www.google-melange.com/gsoc/homepage/google/gsoc2012.

LibreCAD Idea List

What is an Ideas list?

From: http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs#ideas_list

An Ideas list should be a list of suggested student projects. This list is meant to introduce contributors to your project's needs and to provide inspiration to would-be student applicants. It is useful to classify each idea as specifically as possible, e.g. "must know Python" or "easier project; good for a student with more limited experience with C++." If your organization plans to provide an application template, it would be good to include it on your Ideas list. Keep in mind that your Ideas list should be a starting point for student applications; we've heard from past mentoring organization participants that some of their best student projects are those that greatly expanded on a proposed idea or were blue-sky proposals not mentioned on the Ideas list at all. A link to a bug tracker for your open source organization is NOT an ideas list.

LibreCAD Idea List Template

from http://community.kde.org/GSoC/2011/Ideas CC-BY-SA-3.0

Title of Project

Brief explanation:

Expected results:

Knowledge Prerequisite:

Mentor:

When adding an idea to this section, please try to include the following data:

  • a brief explanation
  • the expected results
  • pre-requisites for working on your project
  • if applicable, links to more information or discussions
  • your name and email address for contact (if you're willing to be a mentor)
  • backup mentor name and email address for contact

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.


Potential projects

Plugin Interface

Brief explanation: LibreCAD's plugin interface needs to be extended in the following ways:

  • so that a plugin can operate on entities available within LibreCAD including creation, deletion, selection as well as general CAD operations like scaling, rotation, copying, attribute changes.
  • so that a plugin can operate on LibreCAD's menu system so it is capable of creating new drawings, create blocks, layers and more.

Expected results: LibreCAD will be able to be controlled by pure scripting rather then user interaction.

Knowledge Prerequisite: c++, Qt

Mentor: Ries


DWG Support

Brief explanation: Allow to load and save files in the DWG format. The student doesn't have to write it's own DWG parser because it can use LibreDWG. However, some knowledge of the DWG or DXF formats, as they are somewhat similar, format is desirable. Loading and saving of the formats will go through LibreCAD's plugin interface.

Expected results: LibreCAD will be able to load and save files in the DWG format using file->open to open a file or file->save to save a file.

Knowledge Prerequisite: c++, Qt, file filters

Mentor: Ries


Scripting

Brief explanation: Provide a script based command line interface for CAD. This will allow LibreCAD to be scripted through a external file. From within LibreCAD or from Command line a user can supply LibreCAD with a script that can get executed. This project is in relation with LibreCAD's plugin interface.

Expected results: LibreCAD provides a unified command line interface for actions, and can be run in both an interactive cli mode and a non-interactive batch processing mode.

Knowledge Prerequisite: C++, Python, Qt, QtScript

Mentor: Ries, dli


CAD Engine Features

Brief explanation: LibreCAD needs more features for its CAD engine.

Some examples could be:

A new spline library to support features like, spline fitting, trimming, hatching by spline borders, etc.;

Support for more CAD entity types and more drawing methods for entity types;

Improve support for projection mode, in addition to isometric projection within LibreCAD. Need to handle 3D distance properly in all projection modes;

Support for geo-referenced data: support for georeferenced image;

Support for Voronoi Diagram. While Voronoi diagram itself is an interesting feature to support, the requested Offset feature can be implemented by Voronoi analysis.

improve hatch algorithm hatching by flood fill. The current hatch creation requires user to supply a closed contour. An automatic contour detection algorithm which supports all possible entity types is desired.

Expected results: More CAD features supported by LibreCAD. Significant addition of CAD features is expected on the chosen part of the LibreCAD CAD engine.

Knowledge Prerequisite: computational geometry, C++

Mentor: awallin, dli


General GUI improvement

Brief explanation: Some detailed ideas have been proposed here: ideas on GUI improvement.

Support user defined keyboard shortcuts.

Use the Qt graphic view framework to improve painter speed for displaying of drawing.

Expected results: Improved GUI for better user experience.

Knowledge Prerequisite: Qt, C++

Mentor: Ries, dli


Multi-threading Support

Brief explanation: LibreCAD does not support multi-threading yet, while overall performance and GUI responsive time can benefit from a multi-threading design.

Parallel processing is also expected for CAD engine related operations.

Expected results: Multi-threading support and better user experience.

Knowledge Prerequisite: Qt, C++

Mentor: Ries, dli


Theme based UI

Brief explanation: LibreCAD's design is somewhat hard coded into the the core, and although it's possible to change the icons, this cannot be done after compilation of LibreCAD. We would like to have a UI where the icons can be replaced with a other set of icons, even after the program has been compiled.

Expected results: A dialog or method in LibreCAD to set the icons to be loaded.

Knowledge Prerequisite: Qt

Mentor: Ries, dli


2D 'kernel'

Brief explanation: An API based 2D kernel with pluggable storage engine and operations module. This style 2D kernel would allows us to store 2D entities not only in memory but also in shared database. This would allow more then one user to work on the same drawing simultaneously.

Expected results: A new 2D kernel in LibreCAD in which operation can be performed. Only one backend (memory) needs to be provided so LibreCAD can operate the same way using the new kernel. This can later be extended to support multiple storage engines.

Knowledge Prerequisite: c++, c++ architect

Mentor: dli, Ries


Right Mouse click / Context Support

Brief explanation: Create a framework that allows to utilize the right mouse on entities for direct editing on action starting. This framework should allow us to easily add/change what's show during the right mouse click. to change attributes of a entity.

Expected results: Have LibreCAD respond to a right mouse click to directly manipulate selected entities or do operations.

Knowledge Prerequisite: Qt, c++

Mentor: Ries, dli


Context sensitive entry of data

Brief explanation: When adding entities on screen it is desirable to have at some point LibreCAD asking for specific parameters at mouse courser for entering information. For example when placing the second point of a line, LibreCAD should ask for the angle or length of a line. When placing a circle it should ask the diameter, radios or start/stop angles. This allows for fast adding/changing of entities.

Expected results: LibreCAD showing entity specific information at custom position when adding entities.

Knowledge Prerequisite: Qt

Mentor: Ries, dli


Support for multiple units upon data entry

Brief explanation: A method to allow supplying LibreCAD with different units. For example if LibreCAD was set to 'foot' in the unit setup, it should be possible to enter a unit of [1" + 2'], or [1.2meter]. LibreCAD would then convert the entered units to the unit LibreCAD is operating/set for. Various measuring system should be supported.

Expected results: LibreCAD to accept different units on the command line

Knowledge Prerequisite: c++

Mentor: Ries,dli


Smart Snap

Brief explanation: Currently LibreCAD has various snap capabilities, but they are only directly on entities, or on the grid. With smart snap LibreCAD can find endpoints, length, arc sizes of the 'same' at different locations. This allows for much faster creating of drawings because entering of new entities require less steps. Each time LibreCAD finds a smart snap, the point or entry would light up on the screen showing the users the snap interaction.

Expected results: Smart snap button on the snap toolbar with smart-snap capabilities.

Knowledge Prerequisite: Qt, c++, CAD

Mentor: Ries, DLI