axioma.render.
GeometryStyleManager
¶Менеджер зарегистрированных расширений, позволяющих поставить в соответствие стиль оформления объекта и его геометрию. Это может быть полезно при формировании наполнения объекта CollectionStyle
с занесением стилей разнотипных объектов (см. пример ниже)
Унаследован от: QObject
styleExtensionByStyle
(style)¶Получение расширения для заданного стиля
Параметры: style ( Style
) – Анализируемый стильРезультат: Найденное расширение или None Тип результата: StyleExtension
Пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | from axioma.render import *
from axioma.mapinfo import MapBasicStyle
from axioma.core.plugin import *
'''
Определение класса геометрии по стилю и занесение его как элемента в CollectionStyle.
'''
# Создаем стиль из строки MapBasic
style = MapBasicStyle().styleFromString("Brush (8,16776960,16777215) Pen (1,2,0)")
# Через менеджер расширений получаем нужное расширение для заданного стиля
styleExt = axioma.app.render.geometryStyleManager().styleExtensionByStyle(style)
print('Тип геометрии={}, Стиль геометрии={}'.format(styleExt.geometryStyleClassId(), styleExt.styleId()))
# Создаем CollectionStyle и заносим в него созданный стиль для площадных объектов
coll = CollectionStyle()
coll.setStyle(styleExt.geometryStyleClassId(), style)
'''
Как альтернатива данному подходу, данный сервис можно получить как результат посторения зависимости. Это удобно использовать
в пользовательских расширениях. Рассмотрим аналогичное решение.
# Объявляем класс-расширение для получения менеджера стилей
class MyExtension(axioma.core.plugin.Extension):
def __init__(self):
super().__init__()
self.geometryStyleManager = self.createDependencyGetter(axioma.render.GeometryStyleManager)
# Создаем расширение как объект и регистрируем его в системе
ext = MyExtension()
axioma.app.render.prependExtension(ext)
# Запрашиваем менеджер
if ext.geometryStyleManager is not None:
# Создаем стиль из строки MapBasic
style = MapBasicStyle().styleFromString("Brush (8,16776960,16777215) Pen (1,2,0)")
# Через менеджер расширений получаем нужное расширение для заданного стиля
styleExt = ext.geometryStyleManager().styleExtensionByStyle(style)
print('Тип геометрии={}, Стиль геометрии={}'.format(styleExt.geometryStyleClassId(), styleExt.styleId()))
# Создаем CollectionStyle и заносим в него созданный стиль для площадных объектов
coll = CollectionStyle()
coll.setStyle(styleExt.geometryStyleClassId(), style)
'''
|