The Vision

From AvoCADoWiki

Jump to: navigation, search

avoCADo :: open source 3D CAD designed for engineers and artists alike.


The avoCADo Vision
  • Simple design of arbitrary 3D solids
    • Visually draw and construct solids
    • Intuitive and immediate feedback
    • Internal consistency and clear mode indication
  • Attention to user interface details
    • Low clutter; simple
    • Well chosen defaults
    • Advanced functionality still available via toolboxes
  • Collaboration throughout the design process
    • Networked presentation of projects to others
    • Part and project versioning
    • Annotation of flaws and features
  • Integrated categorized part repositories
    • Encourage reuse of parts where possible
    • Easily add/modify/annotate parts
  • Community support
    • Tutorials
    • Help
    • Bug reporting
    • New ideas
  • Expandable
    • Easily add new tools and features
    • Structurally flexible
  • Open Source
    • All code written specifically for avoCADo is GPLv2
    • libraries must be at least as non-restrictive as GPL
      • Widget Toolkit: SWT (EPL)
      • OpenGL: JOGL (BSD)
    • File formats use open standards (XML based)
  • Platform Independent
    • Java-based for portability and robustness
    • Designed to run on Linux, Linux64, Windows, and Mac
  • Enjoyable
    • Pleasing to use
    • Supportive community
    • Sense of endless possibilities
    • Easy to make contributions to avoCADo




Contents

High-Level Views

User Model

Interaction

Mode Based Menu System

A mode based menu system is simply a way of organizing functionality based on the state of the program. For example, if a user is editing a part in the 2D Sketch mode, there is no reason that tools used to perform 3D intersections or numerical analysis should be shown. There are many good things that come from this task-oriented functionality, but there is also a potentially serious problem: mode error.

Mode errors occur when the user is unaware of the system's "mode" and are therefore easily confused or misled in their interaction with the system. If it is not clear that the program's state has changed, the user may become frustrated when it does not perform as they intend. To help aleviate this problem, avoCADo should indicate its current mode at all times in three ways.

Mode indication in avoCADo:

  • Label (e.x., displaying the word Sketch in the menu)
  • Hue (e.x., making all sketch menus the same color)
  • Interaction cues (e.x., displaying a 2D grid and changing the cursor when sketching)

Data Model

Hierarchical Structures

Error creating thumbnail: convert: unable to open image `/home/groups/a/av/avocado-cad/htdocs/wiki/images/f/f3/Data-structure.png': No such file or directory. convert: unable to open file `/home/groups/a/av/avocado-cad/htdocs/wiki/images/f/f3/Data-structure.png'. convert: missing an image filename `/home/groups/a/av/avocado-cad/htdocs/wiki/images/thumb/f/f3/Data-structure.png/180px-Data-structure.png'.
The hierarchical data structure used to organize all of the elements for a project. Each level contains a list of elements of the sub-level.(e.g., a Group contains a list of Parts)
Project
Group
Part
SubPart
Sketch

Each Sketch is a SubPart that references a plane in the previously existing part (e.g., a face created from a previous extrude operation). The 2D space defined by the sketch plane then allows for a list of Feature2D (i.e., shapes of various complexity comprised entirely of a small handful of 2D Primitives) to be placed within it.

The most important aspects of the Sketch are:

  • the base plane of the sketch, defined as a reference to an existing plane in the Part.
  • the list of Feature2D that are contained in the sketch
  • the list of 2D regions (closed 2D area) that are formed by various intersections within and between the list of Feature2D.
Feature2D

A Feature2D contains a ParamSet (a set of parameters used to specify the feature, along with the "ToolModel" used to construct the Prim2DList from the parameters) and a Prim2DList (the set of Prim2D that are formed by the SketchTool). As a simple example, a rectangle tool could be formed using 4 Prim2D lines placed according to the parameters that define the shape.

Prim2D

A Prim2D is a simple 2D primitive shape. This includes things like line segments, arcs, quadratic curves, cubic curves, etc. By using a small number of primitives to define a Feature2D instead of defining each Feature2D directly, the rather complex and extremely important intersection code can be better shared and optimized among all features.

Build

Each Build is a SubPart that references at least one sketch and contains a ParamSet that defines how a Sketch will be used to construct a 3D solid (Constructive Solid Geometry Solid).

Modify

Internal References

Display Model

2D Primitives

Constructive Solid Geometry

Personal tools