-
Notifications
You must be signed in to change notification settings - Fork 1
Home
This is a wiki for a set of basic drawing tools (called modules), created for the online CAD application and online drawing library found at http://www.siigna.com. See what the code looks like in a Base module template. See also the Siigna Wiki or see screenshots of Siigna.
The base modules run on top of Siigna mainline, the core of the software. The default modules includes a set of standard drawing tools that are currently being developed to test the functionality of Siigna, and the radial menu, a novel concept developed specially for Siigna, for displaying the tools. The tools will enable users to create and share basic CAD representations. They do not explore the full potentials of Siigna, there is room for the modules to be further developed and improved, or an entirely new set of modules can be programmed and set to run instead of the base modules, making Siigna capable of serving other purposes than classic CAD drawing. Read more about Siigna modules in general.
The prototype version of the base modules package will consist of about 40 modules. They serve different purposes; some provide classic drawing tools, one adds a printing ability, some enable geometric transformations, etc. Currently the basic drawing functionalities are implemented, and modules to perform transformations are in the making. The idea is to release a prototype of the Base Modules version 1.0 in JULY2012, and two later releases enhancing input/output, and touch based navigation. Go to the issues list to see what needs to be done.
The base modules are placed in five categories:
- File
- Create
- Modify
- Properties
- Helpers
When Siigna starts, mainline calls the Default module, and when a module has been called and has ended, it forwards back to Default unless programmed to do otherwise. Modules can be called with a two letter shortcut (typically CATEGORY + MODULE TITLE) defined in the Default module, see list of available shortcuts and their syntax here (PDF, 400 kb). Or, they can be called from the radial menu. Modules often call on other modules to get their functionality, as in this example.
As a part of the base modules, a novel user interface locic has been developed, called the 'radial menu'. It opens on a right mouse click, allowing access to the five categories without the need for permanent ribbon menus in the application window. The design philosophy behind the menu is to avoid the unnessacary confusion when the user has to overlook 30-odd menu items on screen, and to keep the user focus around where the mouse - that is the drawing and editing - is taking place.
The 'radial menu' shows the menu as radial items and categories in 13 places (directions): N, NNE, ENE, E, ESE, SSE, S, SSW, WSW, W, WNW and NNW. There is also a center (C) place. The classes for the radial menu are locted in the /radialMenu folder. MenuEvents are used to draw the icons in the right places, Menu Item adds the items to be displayed as a given icon, and RedialMenuIcon is vector graphic definitions for the icons. The distribution of tools into the categories is handled in the .scala files in the /category folder.
For the release of Siigna version 1.0, there will be approximately 32 modules providing means for creating, modifying, using helpers, setting properties, or filing. The online Siigna manual describe in detail how they work. The modules are:
Export, Import, Open, Print, Save, SetTitle
AngleGizmo, AngleSnap, Arc, Artline, Circle, Copy, Fill, Line, Lineardim, Offset, Point, Polyline, RadianSnap, Rectangle,Text
Area, Distance, Grid, Hide(N/A), Show(N/A), SnapToggle, TrackToggle
Divide, Fillet(N/A), Move, Rotate, Scale
AntiAliasingToggle, ColorWheel, Performancetest, PreferencesSet(N/A), LineWeight(N/A)
See a guide on how to create a new module.
Siigna is released under the creative commons licence. Please read more in the license description found at https://github.com/siigna/main/blob/master/siigna_license.pdf?raw=true (PDF download, 137 kb)
If you need questions answered or otherwise need to get in contact with the development team, please refer to the contact page.