Задание:
Разработайте расширение Inkscape для для создания
автомобильных номеров.
Минимальные исходные данные,
которые расширение должно запрашивать у пользователя:
Расширение должно рисовать номера
в соответствии с выбранным типом и данными из файла.
Так, например, если был выбран тип
номера «Стандартный автомобильный номер» и в файле хранились данные:
M796MM34RUS
M679MM34RUS
M967MM34RUS
M666MM34RUS
то расширение должно нарисовать:
Автомобильный код —
индивидуальный регистрационный номер автомобиля. Комбинации на номерных знаках
(исключения: номерные знаки маршрутных ТС, военных ТС, ТС дипломатических
миссий, ТС МВД, прицепов) строятся по принципу — 3 буквы, 3 цифры. Буквы
означают серию номерного знака, а цифры — номер. ГОСТом для использования на
знаках разрешены 12 букв кириллицы, имеющие графические аналоги в латинском
алфавите — А, В, Е, К, М, Н, О, Р, С, Т, У и Х. В правой части номерного знака,
в обособленном четырeхугольнике, расположены: в нижней части — флаг РФ с
надписью RUS, а в верхней — кодовое обозначение субъекта РФ, где был
зарегистрирован автомобиль.
Обозначить цветом милицейских
автомашин руководство МВД в качестве эксперимента решило ещё в 1999, когда
правительство распорядилось сократить количество спецсигналов. Официально синие
номера утвердили в 2002. Устанавливаются на легковые и грузовые автомобили,
мотоциклы и прицепы. Формат: буква - 4 цифры. Цифровой код, указывающийся в
правой части номерного знака также, как и на большинстве других номеров РФ,
обозначает регион регистрации. Исключение: код 77, указывающий на
принадлежность транспортного средства к МВД РФ (своеобразный «федеральный»
номер МВД).
Варианты (а/м номер по стандарту страны)
1.
Австрия
2.
Азербайджан
3.
Албания
4.
Андорра
5.
Армения
6.
Белоруссия
7.
Бельгия
8.
Венгрия
9.
Германия
10. Греция
11. Грузия
12. Исландия
13. Лихтенштейн
14.
Молдавия
15.
Монако
16.
Словакия
17.
Турция
18.
Хорватия
19. Черногория
20. Чехия
Подключаемые модули:
import sys
import inkex
import os
import base64
Способ 1 – внедрение растрового изображения в svg-документ
svg = self.document.getroot()
layer = inkex.etree.SubElement(svg, 'g')
img = inkex.etree.Element(inkex.addNS('image','svg'))
file =
open('c:\\ava.jpg',"rb").read()
img.set(inkex.addNS('href','xlink'),
'data:image/jpeg;base64,'+base64.encodestring(file))
img.set('x','0')
img.set('y','0')
img.set('width','100')
img.set('height','100')
layer.append(img)
layer.set(inkex.addNS('label', 'inkscape'),
'Layer with image' )
layer.set(inkex.addNS('groupmode', 'inkscape'),
'layer')
Способ 2 – ссылка на внешний файл с растровым изображением
svg = self.document.getroot()
layer = inkex.etree.SubElement(svg, 'g')
img =
inkex.etree.Element(inkex.addNS('image','svg'))
img.set(inkex.addNS('href','xlink'),
'file:///c:/ava.jpg’)
img.set('x','0')
img.set('y','0')
img.set('width','100')
img.set('height','100')
layer.append(img)
layer.set(inkex.addNS('label', 'inkscape'),
'Layer with image' )
layer.set(inkex.addNS('groupmode', 'inkscape'),
'layer')