Difference between revisions of "User:Sergeybe"
Jump to navigation
Jump to search
(Created page with 'This extension draws old-fashioned rotary dialer rotarydialer.inx <pre> <inkscape-extension> <_name>Rotary Dialer</_name> <id>RotaryDialer</id> <dependency type="executa...') |
m (Fix one line in source) |
||
Line 14: | Line 14: | ||
<object-type>all</object-type> | <object-type>all</object-type> | ||
<effects-menu> | <effects-menu> | ||
<submenu _name="Render"/> | |||
</effects-menu> | </effects-menu> | ||
</effect> | </effect> |
Revision as of 07:26, 27 May 2009
This extension draws old-fashioned rotary dialer
rotarydialer.inx
<inkscape-extension> <_name>Rotary Dialer</_name> <id>RotaryDialer</id> <dependency type="executable" location="extensions">rotarydialer.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> <param name="radius1" type="int" _gui-text="Radius1" min="0" max="2000">300</param> <param name="radius2" type="int" _gui-text="Radius2" min="0" max="2000">55</param> <param name="angle" type="int" _gui-text="Angle" min="0" max="360">28</param> <effect> <object-type>all</object-type> <effects-menu> <submenu _name="Render"/> </effects-menu> </effect> <script> <command reldir="extensions" interpreter="python">rotarydialer.py</command> </script> </inkscape-extension>
rotarydialer.py
#!/usr/bin/env python # # -*- coding: utf-8 -*- import sys #sys.path.append('/usr/share/inkscape/extensions') import inkex from simplestyle import * import math class RotaryDialer(inkex.Effect): """ Init """ def __init__(self): inkex.Effect.__init__(self) self.OptionParser.add_option('-1', '--radius1', action = 'store', type = 'int', dest = 'radius1', default = 300, help = 'Radius1') self.OptionParser.add_option('-2', '--radius2', action = 'store', type = 'int', dest = 'radius2', default = 55, help = 'Radius2') self.OptionParser.add_option('-a', '--angle', action = 'store', type = 'int', dest = 'angle', default = 28, help = 'Angle') """ Effect """ def effect(self): # Get document svg = self.document.getroot() width = inkex.unittouu(svg.get('width')) height = inkex.unittouu(svg.attrib['height']) # Create new layer layer = inkex.etree.SubElement(svg, 'g') layer.set(inkex.addNS('label', 'inkscape'), 'Sector 1 Layer') layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer') fi = 0 radius1 = self.options.radius1 radius2 = self.options.radius2 angle = self.options.angle path = inkex.etree.SubElement(svg, 'path') path.set(inkex.addNS('type', 'sodipodi'), 'arc') path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2)) path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2)) path.set(inkex.addNS('rx', 'sodipodi'), str(radius1)) path.set(inkex.addNS('ry', 'sodipodi'), str(radius1)) style = { 'fill': '#7f7f7f', 'stroke': '#000000', 'stroke-width': '2', 'stroke-opacity': '0.5', 'fill-opacity': '0.5', 'stroke-miterlimit': '4', 'stroke-dasharray': 'none' } path.set('style', formatStyle(style)) svg.append(path) path = inkex.etree.SubElement(svg, 'path') path.set(inkex.addNS('type', 'sodipodi'), 'arc') path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2)) path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2)) path.set(inkex.addNS('rx', 'sodipodi'), str(radius1 - 2 * radius2 - 20)) path.set(inkex.addNS('ry', 'sodipodi'), str(radius1 - 2 * radius2 - 20)) style = { 'fill': '#7f7f7f', 'stroke': '#000000', 'stroke-width': '2', 'stroke-opacity': '0.5', 'fill-opacity': '0.5', 'stroke-miterlimit': '4', 'stroke-dasharray': 'none' } path.set('style', formatStyle(style)) svg.append(path) i = 0 while (fi < 360 and i < 10): rad = math.radians(fi + 90) cx = width / 2 + math.cos(rad) * (radius1 - radius2 - 10) cy = height / 2 + math.sin(rad) * (radius1 - radius2 - 10) path = inkex.etree.SubElement(svg, 'path') path.set(inkex.addNS('type', 'sodipodi'), 'arc') path.set(inkex.addNS('cx', 'sodipodi'), str(cx)) path.set(inkex.addNS('cy', 'sodipodi'), str(cy)) path.set(inkex.addNS('rx', 'sodipodi'), str(radius2)) path.set(inkex.addNS('ry', 'sodipodi'), str(radius2)) #style = { #'fill' : 'none', #'stroke': '#000000', #'stroke-width' : '1.0px', #'stroke-opacity' : '1.0' #} style = { 'fill': '#7f7f7f', 'stroke': '#000000', 'stroke-width': '2', 'stroke-opacity': '0.5', 'fill-opacity': '0.5', 'stroke-miterlimit': '4', 'stroke-dasharray': 'none' } path.set('style', formatStyle(style)) svg.append(layer) fi = fi + angle i = i + 1 effect = RotaryDialer() effect.affect()