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...') |
(No difference)
|
Revision as of 07:23, 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>
</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()