QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Introduction, Overviews, Howtos

This is the developer documentation for QCAD Application Framework developers. If you are a user of QCAD and don't have any interest in extending or modifying the QCAD Application, please refer to the QCAD user documentation instead at: http://www.qcad.org/qcad_doc.html

What is the QCAD Application Framework?

The QCAD Application ("QCAD") is a cross platform open source 2D CAD system.

QCAD is based on the QCAD Application Framework, a framework that can be used to build CAD related applications in C++ or in ECMAScript.

The QCAD Application Framework consists of several programming libraries as well as resources such as fonts or hatch patterns and an executable which is capable of running ECMAScript code.

The QCAD Application Framework is written in C++ and uses the Qt Application Framework ("Qt"). Qt provides a lot of the generic, low level functionality that is often found in desktop applications. The QCAD Application Framework adds all CAD specific functionality to that. On the ECMAScript level, the actual application is put together using the components provided by Qt and the QCAD Application Framework.

qt_qcad_functionality.png

C++ or ECMAScript

The QCAD Application Framework can be extended in both C++ or ECMAScript.

Further Documentation for Developers

Modules

  • Core Module This module contains some fundamental core classes and abstract base classes for extensions, e.g. RStorage as an abstract base class for all storage implementations or REntity, the base class for all entity classes in the Entity module.
  • Math Module This module contains fundamental classes that implement basic mathematical concepts such as vectors or matrices as well as basic geometrical classes that represent points, lines, triangles and other basic geometrical shapes.
  • Entity Module This module contains implementations of all CAD entities that are supported by the QCAD Application Framework.
  • GUI Module GUI implementation of widgets, graphics views and graphics scenes based on the QWidget class of Qt.
  • Grid Module Implements an orthogonal grid.
  • Operations This module contains implementations of the ROperation Interface. Operations offer a convenient API to preview and apply common modifications to a drawing document (adding entities, changing entities, removing entities).
  • Snap Module Implements object and grid snaps.
  • Spatialindex Module This module implements the spatial index interface based on the spatial index library from Navel Ltd.
  • QCAD Executable Module Compiles into the application executable which executes ECMAScript code.

ECMAScript Modules of the QCAD Application

These modules are implemented in ECMAScript and used by the QCAD application. They may also be used by other applications.

  • File Tools This module contains ECMAScript implementations of the tools in the file menu.
  • Editing Tools This module contains ECMAScript implementations of the editing tools (copy, paste, undo, redo, delete, ...)
  • View Tools This module contains ECMAScript implementations of various view tools.
  • Selection Tools This module contains ECMAScript implementations of advanced selection tools.
  • Drawing Tools This module contains ECMAScript implementations of the various drawing tools.
  • Modification Tools This module contains ECMAScript implementations of various modification tools.
  • Block Tools This module contains ECMAScript implementations of block related tools.
  • Snap Tools This module contains ECMAScript implementations of various snap tools.
  • Measuring / Information Tools This module contains ECMAScript implementations of various measuring and information tools.
  • Layer Tools. This module contains ECMAScript implementations of various layer related tools.
  • Example Scripts This module contains ECMAScript example tutorials.
  • Help Tools This module contains ECMAScript implementations of the help menu entries.

Overviews, Introductions and Howtos for Developers