<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sergeybe</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sergeybe"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Sergeybe"/>
	<updated>2026-05-16T07:05:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Sergeybe&amp;diff=52909</id>
		<title>User:Sergeybe</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Sergeybe&amp;diff=52909"/>
		<updated>2009-05-27T09:23:31Z</updated>

		<summary type="html">&lt;p&gt;Sergeybe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This extension draws old-fashioned rotary dialer&lt;br /&gt;
&lt;br /&gt;
rotarydialer.inx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;_name&amp;gt;Rotary Dialer&amp;lt;/_name&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;RotaryDialer&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;rotarydialer.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;inkex.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;radius1&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Radius1&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;2000&amp;quot;&amp;gt;300&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;radius2&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Radius2&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;2000&amp;quot;&amp;gt;55&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;angle&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Angle&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;360&amp;quot;&amp;gt;28&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
        &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
        &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
            &amp;lt;submenu _name=&amp;quot;Render&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
        &amp;lt;command reldir=&amp;quot;extensions&amp;quot; interpreter=&amp;quot;python&amp;quot;&amp;gt;rotarydialer.py&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rotarydialer.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
if sys.platform in ('win32','win16', 'os2', 'dos'):&lt;br /&gt;
  	sys.path.append('C:\Program Files\Inkscape\share\extensions')&lt;br /&gt;
else:&lt;br /&gt;
	sys.path.append('/usr/share/inkscape/extensions')&lt;br /&gt;
&lt;br /&gt;
import inkex&lt;br /&gt;
from simplestyle import *&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
class RotaryDialer(inkex.Effect):&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Init&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		inkex.Effect.__init__(self)&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-1', '--radius1', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'radius1', default = 300,&lt;br /&gt;
		help = 'Radius1')&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-2', '--radius2', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'radius2', default = 55,&lt;br /&gt;
		help = 'Radius2')&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-a', '--angle', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'angle', default = 28,&lt;br /&gt;
		help = 'Angle')&lt;br /&gt;
		&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Effect&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	def effect(self):&lt;br /&gt;
		# Set local variables&lt;br /&gt;
		radius1 = self.options.radius1&lt;br /&gt;
		radius2 = self.options.radius2&lt;br /&gt;
		angle = self.options.angle&lt;br /&gt;
		&lt;br /&gt;
		# Get document&lt;br /&gt;
		svg = self.document.getroot()&lt;br /&gt;
		width = inkex.unittouu(svg.get('width'))&lt;br /&gt;
		height = inkex.unittouu(svg.attrib['height'])&lt;br /&gt;
		&lt;br /&gt;
		# Create new layer&lt;br /&gt;
		layer = inkex.etree.SubElement(svg, 'g')&lt;br /&gt;
		layer.set(inkex.addNS('label', 'inkscape'), 'Sector 1 Layer')&lt;br /&gt;
		layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')&lt;br /&gt;
	&lt;br /&gt;
		# Add black rect&lt;br /&gt;
		rect = inkex.etree.SubElement(layer, inkex.addNS('rect','svg'))&lt;br /&gt;
		rect.set('x', '0')&lt;br /&gt;
		rect.set('y', '0')&lt;br /&gt;
		rect.set('width', str(width))&lt;br /&gt;
		rect.set('height', str(height))&lt;br /&gt;
		style = {&lt;br /&gt;
		'opacity': '1',&lt;br /&gt;
		'fill': '#000000',&lt;br /&gt;
		'fill-opacity': '1',&lt;br /&gt;
		'stroke': 'none',&lt;br /&gt;
		'stroke-width': '4',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none',&lt;br /&gt;
		'stroke-opacity': '1'&lt;br /&gt;
		}&lt;br /&gt;
		rect.set('style', formatStyle(style))&lt;br /&gt;
&lt;br /&gt;
		# Get defs&lt;br /&gt;
        	defs = self.xpathSingle('/svg:svg//svg:defs')&lt;br /&gt;
        	if not defs:&lt;br /&gt;
            		defs = inkex.etree.SubElement(self.document.getroot(),inkex.addNS('defs','svg'))&lt;br /&gt;
	&lt;br /&gt;
		&lt;br /&gt;
		# Create gradient in space&lt;br /&gt;
		gradient1 = inkex.etree.SubElement(defs, inkex.addNS('linearGradient','svg'))&lt;br /&gt;
		gradient1.set('id', 'Grad1')&lt;br /&gt;
		gradient1.set('gradientUnits', 'userSpaceOnUse')&lt;br /&gt;
		gradient1.set('x1', str(width / 2))&lt;br /&gt;
		gradient1.set('y1', str(height / 2 - radius1))&lt;br /&gt;
		gradient1.set('x2', str(width / 2))&lt;br /&gt;
		gradient1.set('y2', str(height / 2 + radius1))&lt;br /&gt;
		gradient1.set(inkex.addNS('collect', 'inkscape'), 'always')&lt;br /&gt;
		gradient1.set(inkex.addNS('href', 'xlink'), '#Grad2')&lt;br /&gt;
&lt;br /&gt;
		defs.append(gradient1)&lt;br /&gt;
&lt;br /&gt;
		# Create gradient in color&lt;br /&gt;
		&lt;br /&gt;
		gradient2 = inkex.etree.SubElement(defs, inkex.addNS('linearGradient','svg'))&lt;br /&gt;
		gradient2.set('id', 'Grad2')&lt;br /&gt;
		gradient2.set(inkex.addNS('collect', 'inkscape'), 'always')&lt;br /&gt;
		&lt;br /&gt;
		# Add 1 stop&lt;br /&gt;
		stop1 = inkex.etree.SubElement(gradient2, inkex.addNS('stop','svg'))&lt;br /&gt;
		stop1.set('id', 'stop1')&lt;br /&gt;
		stop1.set('offset', '0')&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'stop-color': '#e7e7e7',&lt;br /&gt;
		'stop-opacity': '1'&lt;br /&gt;
		}&lt;br /&gt;
		stop1.set('style', formatStyle(style))&lt;br /&gt;
		gradient2.append(stop1)&lt;br /&gt;
		&lt;br /&gt;
		# Add 2 stop&lt;br /&gt;
		stop2 = inkex.etree.SubElement(gradient2, inkex.addNS('stop','svg'))&lt;br /&gt;
		stop2.set('id', 'stop2')&lt;br /&gt;
		stop2.set('offset', '1')&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'stop-color': '#4c564d',&lt;br /&gt;
		'stop-opacity': '1'&lt;br /&gt;
		}&lt;br /&gt;
		stop2.set('style', formatStyle(style))&lt;br /&gt;
		gradient2.append(stop2)&lt;br /&gt;
&lt;br /&gt;
		# Create gradient background&lt;br /&gt;
&lt;br /&gt;
		gradient3 = inkex.etree.SubElement(defs, inkex.addNS('radialGradient','svg'))&lt;br /&gt;
		gradient3.set('id', 'Grad3')&lt;br /&gt;
		gradient3.set('r', '304')&lt;br /&gt;
		gradient3.set('cx', str(width / 2))&lt;br /&gt;
		gradient3.set('cy', str(height / 2))&lt;br /&gt;
		gradient3.set('fx', '300')&lt;br /&gt;
		gradient3.set('fy', '300')&lt;br /&gt;
		gradient3.set('r', '304')&lt;br /&gt;
		gradient3.set('gradientUnits', 'userSpaceOnUse')&lt;br /&gt;
		gradient3.set(inkex.addNS('collect', 'inkscape'), 'always')&lt;br /&gt;
		gradient3.set(inkex.addNS('href', 'xlink'), '#Grad2')&lt;br /&gt;
		&lt;br /&gt;
		# Add 1 stop&lt;br /&gt;
		stop1 = inkex.etree.SubElement(gradient3, inkex.addNS('stop','svg'))&lt;br /&gt;
		stop1.set('id', 'stop1')&lt;br /&gt;
		stop1.set('offset', '0')&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'stop-color': '#ffffff',&lt;br /&gt;
		'stop-opacity': '0'&lt;br /&gt;
		}&lt;br /&gt;
		stop1.set('style', formatStyle(style))&lt;br /&gt;
		gradient3.append(stop1)&lt;br /&gt;
		&lt;br /&gt;
		# Add 2 stop&lt;br /&gt;
		stop2 = inkex.etree.SubElement(gradient3, inkex.addNS('stop','svg'))&lt;br /&gt;
		stop2.set('id', 'stop2')&lt;br /&gt;
		stop2.set('offset', '0.9')&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'stop-color': '#ffffff',&lt;br /&gt;
		'stop-opacity': '1'&lt;br /&gt;
		}&lt;br /&gt;
		stop2.set('style', formatStyle(style))&lt;br /&gt;
		gradient3.append(stop2)&lt;br /&gt;
&lt;br /&gt;
		# Add 3 stop&lt;br /&gt;
		stop3 = inkex.etree.SubElement(gradient3, inkex.addNS('stop','svg'))&lt;br /&gt;
		stop3.set('id', 'stop3')&lt;br /&gt;
		stop3.set('offset', '1')&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'stop-color': '#ffffff',&lt;br /&gt;
		'stop-opacity': '1'&lt;br /&gt;
		}&lt;br /&gt;
		stop3.set('style', formatStyle(style))&lt;br /&gt;
		gradient3.append(stop3)&lt;br /&gt;
&lt;br /&gt;
		# Append gradients to defs&lt;br /&gt;
		defs.append(gradient1)			&lt;br /&gt;
		defs.append(gradient2)&lt;br /&gt;
		defs.append(gradient3)&lt;br /&gt;
&lt;br /&gt;
		# Create background &lt;br /&gt;
		path = inkex.etree.SubElement(layer, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1))&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#000000',&lt;br /&gt;
		'stroke': '#000000',&lt;br /&gt;
#		'stroke': 'url(#Grad1)',&lt;br /&gt;
		'stroke-width': '8',&lt;br /&gt;
		'stroke-miterlimit': '0',&lt;br /&gt;
		'stroke-opacity': '1',&lt;br /&gt;
		'stroke-dasharray': 'none',&lt;br /&gt;
		'fill-opacity': '1',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		layer.append(path)&lt;br /&gt;
&lt;br /&gt;
		# Create circle &lt;br /&gt;
		path = inkex.etree.SubElement(layer, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1))&lt;br /&gt;
&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#7f7f7f',&lt;br /&gt;
#		'stroke': '#000000',&lt;br /&gt;
		'stroke': 'url(#Grad1)',&lt;br /&gt;
		'stroke-width': '8',&lt;br /&gt;
		'stroke-miterlimit': '0',&lt;br /&gt;
		'stroke-opacity': '0.5',&lt;br /&gt;
		'stroke-dasharray': 'none',&lt;br /&gt;
		'fill-opacity': '0.5',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		layer.append(path)&lt;br /&gt;
		&lt;br /&gt;
		# Create inside circle&lt;br /&gt;
		path = inkex.etree.SubElement(layer, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1 - 2 * radius2 - 20))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1 - 2 * radius2 - 20))&lt;br /&gt;
		&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#7f7f7f',&lt;br /&gt;
		'stroke': '#000000',&lt;br /&gt;
		'stroke-width': '2',&lt;br /&gt;
		'stroke-opacity': '0.5',&lt;br /&gt;
		'fill-opacity': '0.5',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		layer.append(path)&lt;br /&gt;
	&lt;br /&gt;
		# Create small circlies&lt;br /&gt;
		i = 0&lt;br /&gt;
		fi = 0&lt;br /&gt;
		&lt;br /&gt;
		# Alphabet&lt;br /&gt;
		alphabet = (&lt;br /&gt;
		&amp;quot;&amp;quot;,&lt;br /&gt;
		&amp;quot;ABC&amp;quot;,&lt;br /&gt;
		&amp;quot;DEF&amp;quot;,&lt;br /&gt;
		&amp;quot;GHI&amp;quot;,&lt;br /&gt;
		&amp;quot;JKL&amp;quot;,&lt;br /&gt;
		&amp;quot;MN&amp;quot;,&lt;br /&gt;
		&amp;quot;PRS&amp;quot;,&lt;br /&gt;
		&amp;quot;TUV&amp;quot;,&lt;br /&gt;
		&amp;quot;WXY&amp;quot;,&lt;br /&gt;
		&amp;quot;OQ&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		while (fi &amp;lt; 360 and i &amp;lt; 10):&lt;br /&gt;
			rad = math.radians(fi + 90)&lt;br /&gt;
			cx = width / 2 + math.cos(rad) * (radius1 - radius2 - 10)&lt;br /&gt;
			cy = height / 2 + math.sin(rad) * (radius1 - radius2 - 10)&lt;br /&gt;
			&lt;br /&gt;
			# Small circle&lt;br /&gt;
			path = inkex.etree.SubElement(layer, 'path')&lt;br /&gt;
			path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
			path.set(inkex.addNS('cx', 'sodipodi'), str(cx))&lt;br /&gt;
			path.set(inkex.addNS('cy', 'sodipodi'), str(cy))&lt;br /&gt;
			path.set(inkex.addNS('rx', 'sodipodi'), str(radius2))&lt;br /&gt;
			path.set(inkex.addNS('ry', 'sodipodi'), str(radius2))&lt;br /&gt;
			&lt;br /&gt;
			#style = {&lt;br /&gt;
			#'fill' : 'none',&lt;br /&gt;
			#'stroke': '#000000',&lt;br /&gt;
			#'stroke-width' : '1.0px',&lt;br /&gt;
			#'stroke-opacity' : '1.0'&lt;br /&gt;
			#}&lt;br /&gt;
			&lt;br /&gt;
			style = {&lt;br /&gt;
#			'fill': '#7f7f7f',&lt;br /&gt;
			'fill': '#Grad2',&lt;br /&gt;
			'stroke': '#000000',&lt;br /&gt;
			'stroke-width': '2px',&lt;br /&gt;
			'stroke-opacity': '0.5',&lt;br /&gt;
			'fill-opacity': '0.5',&lt;br /&gt;
			'stroke-miterlimit': '4px',&lt;br /&gt;
			'stroke-dasharray': 'none'&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			path.set('style', formatStyle(style))&lt;br /&gt;
&lt;br /&gt;
			# Numbers&lt;br /&gt;
			text = inkex.etree.SubElement(layer, 'text')&lt;br /&gt;
			text.set('id', 'text' + str(i))&lt;br /&gt;
			text.set('x', str(cx))&lt;br /&gt;
			text.set('y', str(cy + 18))&lt;br /&gt;
&lt;br /&gt;
			if i == 0:&lt;br /&gt;
				text.text = '0'&lt;br /&gt;
			else :&lt;br /&gt;
				text.text = str(10 - i)&lt;br /&gt;
			&lt;br /&gt;
			style = {&lt;br /&gt;
			'fill':'#ffffff',&lt;br /&gt;
			'font-size': '64px',&lt;br /&gt;
			'text-anchor': 'middle', &lt;br /&gt;
			'text-align': 'center', &lt;br /&gt;
			'-inkscape-font-specification': 'Agency FB Bold',&lt;br /&gt;
			'font-family': 'Agency FB',&lt;br /&gt;
			'font-weight': 'bold',&lt;br /&gt;
			'font-style': 'normal'&lt;br /&gt;
			}&lt;br /&gt;
			text.set('style', formatStyle(style))&lt;br /&gt;
&lt;br /&gt;
			# Alphabets&lt;br /&gt;
			text = inkex.etree.SubElement(layer, 'text')&lt;br /&gt;
			text.set('id', 'textA' + str(i))&lt;br /&gt;
			text.set('x', str(cx))&lt;br /&gt;
			text.set('y', str(cy + 43))&lt;br /&gt;
			text.text = alphabet[9 - i]&lt;br /&gt;
			style = {&lt;br /&gt;
			'fill':'#ffffff',&lt;br /&gt;
			'font-size': '24px',&lt;br /&gt;
			'text-anchor': 'middle', &lt;br /&gt;
			'text-align': 'center', &lt;br /&gt;
			'-inkscape-font-specification': 'Agency FB Bold',&lt;br /&gt;
			'font-family': 'Agency FB',&lt;br /&gt;
			'font-weight': 'bold',&lt;br /&gt;
			'font-style': 'normal'&lt;br /&gt;
			}&lt;br /&gt;
			text.set('style', formatStyle(style))&lt;br /&gt;
			&lt;br /&gt;
			# Increase variables&lt;br /&gt;
			fi = fi + angle&lt;br /&gt;
			i = i + 1&lt;br /&gt;
&lt;br /&gt;
effect = RotaryDialer()&lt;br /&gt;
effect.affect()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sergeybe</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Sergeybe&amp;diff=52907</id>
		<title>User:Sergeybe</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Sergeybe&amp;diff=52907"/>
		<updated>2009-05-27T07:26:07Z</updated>

		<summary type="html">&lt;p&gt;Sergeybe: Fix one line in source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This extension draws old-fashioned rotary dialer&lt;br /&gt;
&lt;br /&gt;
rotarydialer.inx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;_name&amp;gt;Rotary Dialer&amp;lt;/_name&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;RotaryDialer&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;rotarydialer.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;inkex.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;radius1&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Radius1&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;2000&amp;quot;&amp;gt;300&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;radius2&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Radius2&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;2000&amp;quot;&amp;gt;55&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;angle&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Angle&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;360&amp;quot;&amp;gt;28&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
        &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
        &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
            &amp;lt;submenu _name=&amp;quot;Render&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
        &amp;lt;command reldir=&amp;quot;extensions&amp;quot; interpreter=&amp;quot;python&amp;quot;&amp;gt;rotarydialer.py&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rotarydialer.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
#sys.path.append('/usr/share/inkscape/extensions')&lt;br /&gt;
&lt;br /&gt;
import inkex&lt;br /&gt;
from simplestyle import *&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
class RotaryDialer(inkex.Effect):&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Init&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		inkex.Effect.__init__(self)&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-1', '--radius1', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'radius1', default = 300,&lt;br /&gt;
		help = 'Radius1')&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-2', '--radius2', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'radius2', default = 55,&lt;br /&gt;
		help = 'Radius2')&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-a', '--angle', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'angle', default = 28,&lt;br /&gt;
		help = 'Angle')&lt;br /&gt;
		&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Effect&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	def effect(self):&lt;br /&gt;
		# Get document&lt;br /&gt;
		svg = self.document.getroot()&lt;br /&gt;
		width = inkex.unittouu(svg.get('width'))&lt;br /&gt;
		height = inkex.unittouu(svg.attrib['height'])&lt;br /&gt;
		&lt;br /&gt;
		# Create new layer&lt;br /&gt;
		layer = inkex.etree.SubElement(svg, 'g')&lt;br /&gt;
		layer.set(inkex.addNS('label', 'inkscape'), 'Sector 1 Layer')&lt;br /&gt;
		layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')&lt;br /&gt;
		&lt;br /&gt;
		fi = 0&lt;br /&gt;
		&lt;br /&gt;
		radius1 = self.options.radius1&lt;br /&gt;
		radius2 = self.options.radius2&lt;br /&gt;
		angle = self.options.angle&lt;br /&gt;
		&lt;br /&gt;
		path = inkex.etree.SubElement(svg, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1))&lt;br /&gt;
		&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#7f7f7f',&lt;br /&gt;
		'stroke': '#000000',&lt;br /&gt;
		'stroke-width': '2',&lt;br /&gt;
		'stroke-opacity': '0.5',&lt;br /&gt;
		'fill-opacity': '0.5',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		svg.append(path)&lt;br /&gt;
		&lt;br /&gt;
		path = inkex.etree.SubElement(svg, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1 - 2 * radius2 - 20))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1 - 2 * radius2 - 20))&lt;br /&gt;
		&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#7f7f7f',&lt;br /&gt;
		'stroke': '#000000',&lt;br /&gt;
		'stroke-width': '2',&lt;br /&gt;
		'stroke-opacity': '0.5',&lt;br /&gt;
		'fill-opacity': '0.5',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		svg.append(path)&lt;br /&gt;
		&lt;br /&gt;
		i = 0&lt;br /&gt;
		while (fi &amp;lt; 360 and i &amp;lt; 10):&lt;br /&gt;
			rad = math.radians(fi + 90)&lt;br /&gt;
			cx = width / 2 + math.cos(rad) * (radius1 - radius2 - 10)&lt;br /&gt;
			cy = height / 2 + math.sin(rad) * (radius1 - radius2 - 10)&lt;br /&gt;
			&lt;br /&gt;
			path = inkex.etree.SubElement(svg, 'path')&lt;br /&gt;
			path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
			path.set(inkex.addNS('cx', 'sodipodi'), str(cx))&lt;br /&gt;
			path.set(inkex.addNS('cy', 'sodipodi'), str(cy))&lt;br /&gt;
			path.set(inkex.addNS('rx', 'sodipodi'), str(radius2))&lt;br /&gt;
			path.set(inkex.addNS('ry', 'sodipodi'), str(radius2))&lt;br /&gt;
			&lt;br /&gt;
			#style = {&lt;br /&gt;
			#'fill' : 'none',&lt;br /&gt;
			#'stroke': '#000000',&lt;br /&gt;
			#'stroke-width' : '1.0px',&lt;br /&gt;
			#'stroke-opacity' : '1.0'&lt;br /&gt;
			#}&lt;br /&gt;
			&lt;br /&gt;
			style = {&lt;br /&gt;
			'fill': '#7f7f7f',&lt;br /&gt;
			'stroke': '#000000',&lt;br /&gt;
			'stroke-width': '2',&lt;br /&gt;
			'stroke-opacity': '0.5',&lt;br /&gt;
			'fill-opacity': '0.5',&lt;br /&gt;
			'stroke-miterlimit': '4',&lt;br /&gt;
			'stroke-dasharray': 'none'&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			path.set('style', formatStyle(style))&lt;br /&gt;
&lt;br /&gt;
			svg.append(layer)&lt;br /&gt;
			&lt;br /&gt;
			fi = fi + angle&lt;br /&gt;
			i = i + 1&lt;br /&gt;
&lt;br /&gt;
effect = RotaryDialer()&lt;br /&gt;
effect.affect()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sergeybe</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Sergeybe&amp;diff=52905</id>
		<title>User:Sergeybe</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Sergeybe&amp;diff=52905"/>
		<updated>2009-05-27T07:23:14Z</updated>

		<summary type="html">&lt;p&gt;Sergeybe: Created page with 'This extension draws old-fashioned rotary dialer  rotarydialer.inx &amp;lt;pre&amp;gt; &amp;lt;inkscape-extension&amp;gt; &amp;lt;_name&amp;gt;Rotary Dialer&amp;lt;/_name&amp;gt;     &amp;lt;id&amp;gt;RotaryDialer&amp;lt;/id&amp;gt;     &amp;lt;dependency type=&amp;quot;executa...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This extension draws old-fashioned rotary dialer&lt;br /&gt;
&lt;br /&gt;
rotarydialer.inx&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;_name&amp;gt;Rotary Dialer&amp;lt;/_name&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;RotaryDialer&amp;lt;/id&amp;gt;&lt;br /&gt;
    &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;rotarydialer.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;dependency type=&amp;quot;executable&amp;quot; location=&amp;quot;extensions&amp;quot;&amp;gt;inkex.py&amp;lt;/dependency&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;radius1&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Radius1&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;2000&amp;quot;&amp;gt;300&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;radius2&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Radius2&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;2000&amp;quot;&amp;gt;55&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;param name=&amp;quot;angle&amp;quot; type=&amp;quot;int&amp;quot; _gui-text=&amp;quot;Angle&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;360&amp;quot;&amp;gt;28&amp;lt;/param&amp;gt;&lt;br /&gt;
    &amp;lt;effect&amp;gt;&lt;br /&gt;
        &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
        &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
    &amp;lt;/effect&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
        &amp;lt;command reldir=&amp;quot;extensions&amp;quot; interpreter=&amp;quot;python&amp;quot;&amp;gt;rotarydialer.py&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rotarydialer.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
#sys.path.append('/usr/share/inkscape/extensions')&lt;br /&gt;
&lt;br /&gt;
import inkex&lt;br /&gt;
from simplestyle import *&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
class RotaryDialer(inkex.Effect):&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Init&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		inkex.Effect.__init__(self)&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-1', '--radius1', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'radius1', default = 300,&lt;br /&gt;
		help = 'Radius1')&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-2', '--radius2', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'radius2', default = 55,&lt;br /&gt;
		help = 'Radius2')&lt;br /&gt;
		&lt;br /&gt;
		self.OptionParser.add_option('-a', '--angle', action = 'store',&lt;br /&gt;
		type = 'int', dest = 'angle', default = 28,&lt;br /&gt;
		help = 'Angle')&lt;br /&gt;
		&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Effect&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	def effect(self):&lt;br /&gt;
		# Get document&lt;br /&gt;
		svg = self.document.getroot()&lt;br /&gt;
		width = inkex.unittouu(svg.get('width'))&lt;br /&gt;
		height = inkex.unittouu(svg.attrib['height'])&lt;br /&gt;
		&lt;br /&gt;
		# Create new layer&lt;br /&gt;
		layer = inkex.etree.SubElement(svg, 'g')&lt;br /&gt;
		layer.set(inkex.addNS('label', 'inkscape'), 'Sector 1 Layer')&lt;br /&gt;
		layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')&lt;br /&gt;
		&lt;br /&gt;
		fi = 0&lt;br /&gt;
		&lt;br /&gt;
		radius1 = self.options.radius1&lt;br /&gt;
		radius2 = self.options.radius2&lt;br /&gt;
		angle = self.options.angle&lt;br /&gt;
		&lt;br /&gt;
		path = inkex.etree.SubElement(svg, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1))&lt;br /&gt;
		&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#7f7f7f',&lt;br /&gt;
		'stroke': '#000000',&lt;br /&gt;
		'stroke-width': '2',&lt;br /&gt;
		'stroke-opacity': '0.5',&lt;br /&gt;
		'fill-opacity': '0.5',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		svg.append(path)&lt;br /&gt;
		&lt;br /&gt;
		path = inkex.etree.SubElement(svg, 'path')&lt;br /&gt;
		path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
		path.set(inkex.addNS('cx', 'sodipodi'), str(width / 2))&lt;br /&gt;
		path.set(inkex.addNS('cy', 'sodipodi'), str(height / 2))&lt;br /&gt;
		path.set(inkex.addNS('rx', 'sodipodi'), str(radius1 - 2 * radius2 - 20))&lt;br /&gt;
		path.set(inkex.addNS('ry', 'sodipodi'), str(radius1 - 2 * radius2 - 20))&lt;br /&gt;
		&lt;br /&gt;
		style = {&lt;br /&gt;
		'fill': '#7f7f7f',&lt;br /&gt;
		'stroke': '#000000',&lt;br /&gt;
		'stroke-width': '2',&lt;br /&gt;
		'stroke-opacity': '0.5',&lt;br /&gt;
		'fill-opacity': '0.5',&lt;br /&gt;
		'stroke-miterlimit': '4',&lt;br /&gt;
		'stroke-dasharray': 'none'&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		path.set('style', formatStyle(style))&lt;br /&gt;
		&lt;br /&gt;
		svg.append(path)&lt;br /&gt;
		&lt;br /&gt;
		i = 0&lt;br /&gt;
		while (fi &amp;lt; 360 and i &amp;lt; 10):&lt;br /&gt;
			rad = math.radians(fi + 90)&lt;br /&gt;
			cx = width / 2 + math.cos(rad) * (radius1 - radius2 - 10)&lt;br /&gt;
			cy = height / 2 + math.sin(rad) * (radius1 - radius2 - 10)&lt;br /&gt;
			&lt;br /&gt;
			path = inkex.etree.SubElement(svg, 'path')&lt;br /&gt;
			path.set(inkex.addNS('type', 'sodipodi'), 'arc')&lt;br /&gt;
			path.set(inkex.addNS('cx', 'sodipodi'), str(cx))&lt;br /&gt;
			path.set(inkex.addNS('cy', 'sodipodi'), str(cy))&lt;br /&gt;
			path.set(inkex.addNS('rx', 'sodipodi'), str(radius2))&lt;br /&gt;
			path.set(inkex.addNS('ry', 'sodipodi'), str(radius2))&lt;br /&gt;
			&lt;br /&gt;
			#style = {&lt;br /&gt;
			#'fill' : 'none',&lt;br /&gt;
			#'stroke': '#000000',&lt;br /&gt;
			#'stroke-width' : '1.0px',&lt;br /&gt;
			#'stroke-opacity' : '1.0'&lt;br /&gt;
			#}&lt;br /&gt;
			&lt;br /&gt;
			style = {&lt;br /&gt;
			'fill': '#7f7f7f',&lt;br /&gt;
			'stroke': '#000000',&lt;br /&gt;
			'stroke-width': '2',&lt;br /&gt;
			'stroke-opacity': '0.5',&lt;br /&gt;
			'fill-opacity': '0.5',&lt;br /&gt;
			'stroke-miterlimit': '4',&lt;br /&gt;
			'stroke-dasharray': 'none'&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			path.set('style', formatStyle(style))&lt;br /&gt;
&lt;br /&gt;
			svg.append(layer)&lt;br /&gt;
			&lt;br /&gt;
			fi = fi + angle&lt;br /&gt;
			i = i + 1&lt;br /&gt;
&lt;br /&gt;
effect = RotaryDialer()&lt;br /&gt;
effect.affect()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sergeybe</name></author>
	</entry>
</feed>