Плагины
Re: Плагины
Александр ! Добрый день !
На ваше усмотрение
На ваше усмотрение
- Вложения
-
- Вопрос_6.docx
- (40.16 КБ) 35 скачиваний
Re: Плагины
Александр ! Добрый вечер.
Когда Вы планируете выпуск новой версии руководства разработчика ?
Когда Вы планируете выпуск новой версии руководства разработчика ?
Re: Плагины
Пример создания модуля :
Code: Select all
import csv
import os
from pathlib import Path
import axipy as axp
from PySide2 import QtCore
from PySide2.QtCore import Qt
from PySide2.QtGui import QImage, QPainter, QPixmap
from PySide2.QtWidgets import QDialog, QTreeWidgetItem
from .forms.ui_form import Ui_Dialog as form
class Form(QDialog, form):
def __init__(self, parent=None):
super().__init__(parent)
# инициализация пользовательского интерфейса формы
self.setupUi(self)
# скрываем кнопку справки
self.setWindowFlag(QtCore.Qt.WindowContextHelpButtonHint, False)
# загрузка данных в форму
self.load()
# подключение сигналов
self.connect_signals()
def connect_signals(self):
# сменилась текущая строка в дереве
self.tree.currentItemChanged.connect(self.on_tree_current_item_changed)
# Нажали на кнопку "Показать условный знак"
self.btn_show_sign.clicked.connect(self.show_sign)
# Нажали на кнопку "Как нарисовать условный знак?"
self.btn_howto.clicked.connect(self.howto)
def load(self):
"""
Загружаем данные из файла form.csv в дерево
"""
path = Path(os.path.dirname(os.path.abspath(__file__)))
path = path / 'forms' / 'styles.csv'
# Открываем csv-файл для чтения
with open(str(path), mode="r", encoding="utf-8-sig") as file:
reader = csv.DictReader(file, skipinitialspace=True)
# Создаем словарь для хранения родительских элементов по ID
parents = {}
# Проходимся по каждой строке в csv-файле
for row in reader:
# Получаем значения из колонок
id = int(row['ID'])
parent_id = int(row['ParentID'])
text = row['text']
data = row['data']
# Создаем новый элемент QTreeWidgetItem
item = QTreeWidgetItem()
item.setText(0, text)
item.setData(0, Qt.UserRole, data)
# Если ParentID равен 0, то это объект верхнего уровня
if parent_id == 0:
self.tree.addTopLevelItem(item)
else:
# Иначе ищем родительский элемент по ParentID
parent = parents.get(parent_id)
if parent:
parent.addChild(item)
# Добавляем элемент в словарь родительских элементов
parents[id] = item
def on_tree_current_item_changed(self, current: QTreeWidgetItem, previous: QTreeWidgetItem):
if current and str(current.data(0, Qt.UserRole)) != "":
# Рисуем условное обозначение в рамку
self.draw_image(current.data(0, Qt.UserRole))
else:
self.lbl_img.setPixmap(None)
def draw_image(self, style: str):
"""
Рисуем условное обозначение в рамку
:param style: стиль в формате MapInfo
"""
image = QImage(50, 50, QImage.Format_ARGB32_Premultiplied)
image.fill(Qt.transparent)
painter = QPainter(image)
stl = axp.Style.from_mapinfo(style)
# Для каждого типа стиля, создаём свою геометрию и рисуем её в рамку
if isinstance(stl, axp.PointStyle):
point = axp.Point(25, 25)
stl.draw(point, painter)
self.lbl_img.setPixmap(QPixmap.fromImage(image))
elif isinstance(stl, axp.PolygonStyle):
polygon = axp.Polygon((5, 5), (10, 35), (45, 45), (45, 15))
stl.draw(polygon, painter)
self.lbl_img.setPixmap(QPixmap.fromImage(image))
elif isinstance(stl, axp.LineStyle):
line = axp.LineString([(5, 5), (20, 25), (25, 10), (45, 45)])
stl.draw(line, painter)
self.lbl_img.setPixmap(QPixmap.fromImage(image))
def show_sign(self):
print('show sign')
def howto(self):
print('how to')
@staticmethod
def show_dialog() -> None:
dlg = Form(axp.view_manager.global_parent)
dlg.open()
Re: Плагины
Александр Доброго времени суток!
Небо, небо не видело такого Пацака как я.... Это просто КЮ...
Мои беды во вложении..
Небо, небо не видело такого Пацака как я.... Это просто КЮ...
Мои беды во вложении..
- Вложения
-
- Вопрос 8.docx
- (544.38 КБ) 28 скачиваний
Re: Плагины
В PyCharm проект открывается выбором папки, а не файла.
Пример предназначен для запуска из Аксиомы в виде плагина: https://axioma-gis.ru/axipy/dev-guide/5.2/user_guide/plugins/index.html
Мои комментарии (выделено красным) внутри файла:
Пример предназначен для запуска из Аксиомы в виде плагина: https://axioma-gis.ru/axipy/dev-guide/5.2/user_guide/plugins/index.html
Мои комментарии (выделено красным) внутри файла:
Re: Плагины
Александр ! Доброго времени суток !
Получилось запустить как плагин !!! (ПАЦАКИ !!! Читайте ПАПИРУС !!!!!! , только в этом наше спасение.)
В PyCharm открыл папку (не файл) - сообщение о ошибке то же самое:
ImportError: attempted relative import with no known parent package
Т.е. PyCharm и Qt Designer для Аксиомы я использовал некорректно !
где можно почитать, как правильно использовать Qt Designer для разработки плагинов Аксиомы
Получилось запустить как плагин !!! (ПАЦАКИ !!! Читайте ПАПИРУС !!!!!! , только в этом наше спасение.)
В PyCharm открыл папку (не файл) - сообщение о ошибке то же самое:
ImportError: attempted relative import with no known parent package
Т.е. PyCharm и Qt Designer для Аксиомы я использовал некорректно !
где можно почитать, как правильно использовать Qt Designer для разработки плагинов Аксиомы
Re: Плагины
Александр !
Читаю папирус , что-то проясняется ! Пацаки !!!! Читайте папирус , внимательно!!!
Начало есть !!!!
Благодарю Вас за ТЕРПЕНИЕ !!!!
Читаю папирус , что-то проясняется ! Пацаки !!!! Читайте папирус , внимательно!!!
Начало есть !!!!
Благодарю Вас за ТЕРПЕНИЕ !!!!
Re: Плагины
Александр ! Доброго времени суток!!!
Прислали небольшой рабочий фрагмент плагина MapTopik - ИЗУЧАЮ И ВСЕ СТАНОВИТСЯ ПОНЯТНО !!!!
Вставляйте в руководство рабочие фрагменты модулей , они просто необходимы.
Вы очень изящно оформили диалог классификатора условных знаков, вывели меня на стратегический простор !!!
ЧИСТОГО ВАМ НЕБА !!!!
P.S. Очень красивое решение !!!!!
Прислали небольшой рабочий фрагмент плагина MapTopik - ИЗУЧАЮ И ВСЕ СТАНОВИТСЯ ПОНЯТНО !!!!
Вставляйте в руководство рабочие фрагменты модулей , они просто необходимы.
Вы очень изящно оформили диалог классификатора условных знаков, вывели меня на стратегический простор !!!
ЧИСТОГО ВАМ НЕБА !!!!
P.S. Очень красивое решение !!!!!
Re: Плагины
Уточните процедуру конвертации стилей линий из Mapinfo в Аксиому.
Re: Плагины
Для использования пользовательских стилей MapInfo в Аксиоме необходимо:
- Сконвертировать стили mapinfow.pen в формат TRTP с помощью модуля "Конвертер стилей линий" в новую папку.
Каждый файл TRTP будет соответствовать отдельному стилю линии Аксиомы. - Подключить созданную папку стилей к Аксиоме с помощью модуля "Каталоги со стилями"
С его помощью можно создать несколько наборов стилей и переключаться между ними. - При необходимости, отредактировать созданные TRTP-файлы с помощью модуля "Редактор стилей линий".
Редактор поддерживает работу как в Windows, так и в Linux и macOS. Обратите внимание, что документация по редактору может быть устаревшей.