The Vision
From AvoCADoWiki
avoCADo :: open source 3D CAD designed for engineers and artists alike.
| The avoCADo Vision |
|---|
|
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
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).

