| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*!
- \page CreatingDrawing Creating a Drawing
- With the QCAD Application Framework it is not only possible to
- create interactive tools but also to construct entire drawings
- based on user input (dialog, command line arguments, ...),
- mathematical formulas, data bases, files or other sources.
- This tutorial focuses on creating objects with the QCAD Application Framework
- and adding them to a drawing document. The example in this tutorial
- creates a drawing document from scratch, adds various objects
- to it and saves the document as a DXF file. No user interface
- is used for this example, so it can be run as a command line application
- without first starting the QCAD Application user interface.
- \section initialization Initialization
- Some initialization is required before we get started. We need to give the
- application a name (used among other things as ID for XDATA in DXF / DWG).
- \snippet CreatingDrawing.jsd init
- \section documents Creating a Document
- A drawing in the QCAD Application Framework is represented
- by a document (RDocument). The document is backed by a storage
- which stores the actual drawing data (RStorage) and is usually
- not accessed directly by script developers. Further, the
- document also owns a spatial index (RSpatialIndex) for fast entity
- lookup based on location. Script developers only need to worry
- about the spatial index to create a document.
- This code snippet creates a new, empty drawing document (RDocument)
- that is backed by a memory storage (RMemoryStorage) and a high performance
- spatial index implementation (RSpatialIndexNavel):
- \snippet CreatingDrawing.jsd document
- The new document already contains some default objects like a
- layer '0', the model space block and line type definitions.
- The document has no graphics views attached, so there is no
- visual representation of any kind. Graphics scenes and views
- could be attached to the document interface.
- \section operations Operations
- Every change to a document (including adding entities) is wrapped
- in a transaction (RTransaction) in the QCAD Application Framework.
- Transactions are a low level concept and usually don't have to be
- used directly by script developers.
- To control which changes belong to one transaction, the
- QCAD Application Framework offers a higher level concept of
- operations (ROperation). An operation essentially wraps a
- transaction with a user friendly interface. Operations can be
- applied to documents in way that the various graphics views
- and other user interface components are being updated
- automatically.
- The following example code adds three line entities in the
- shape of a regular triangle to a document:
- \snippet CreatingDrawing.jsd operation
- Note that we have not indicated a layer or any attributes
- (color, line type, line weight) for our lines. The lines are
- added to the current layer (layer '0') with the default attributes
- (color, line type and line weight inherited from layer).
- \section export_dxf DXF / DWG Export
- To store the drawing document to a DXF file, we can use the document
- interface:
- \snippet CreatingDrawing.jsd export
- \section creating_a_drawing_code Complete Code
- Here's the complete code of our example again:
- \snippet CreatingDrawing.jsd main
- To run the example, save it as a file (e.g. 'example.js') and launch QCAD,
- using this script as autostart script:
- \code
- ./qcad -autostart example.js
- \endcode
- */
|