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.ribbonsoft.com/qcad_doc.html
What is the QCAD Application Framework?
The QCAD Application ("QCAD") is a cross platform 2D CAD system and the flagship product of Switzerland based RibbonSoft GmbH.
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.
C++ or ECMAScript
The QCAD Application Framework can be extended in both C++ (developer license required) or ECMAScript (under any QCAD user license).
Further Documentation for Developers
- 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
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, ...)
- Selection Tools This module contains ECMAScript implementations of advanced selection tools.
- Drawing Tools This module contains ECMAScript implementations of various drawing tools.
- Modification Tools This module contains ECMAScript implementations of various modification tools.
- Block Tools This module contains ECMAScript implementations of the block tools.
- Measuring / Information Tools This module contains ECMAScript implementations of various measuring and information tools.
- Example Scripts This module contains ECMAScript examples.
- Help Tools This module contains ECMAScript implementations of the help menu entries.
Overviews, Introductions and Howtos for Developers