Плагин CommandLine для jOSM (окружности, дуги и т.п. + свои команды)

Багфикс, поддержка запятых (luiswoo просил)

  • Табы заменены на 4 пробела, прошу и далее придерживаться таких отступов (PEP8)

PS: общую Git репу бы для всех плагинов комманд лайна…

Спасибо.
Табы там из исходного скрипта, я обычно стараюсь максимально сохранить синтаксис исходного файла. #малоличо

Вот я тоже хотел об этом написать. Только я хотел предложить вписывать ссылки на свои скрипты в вики про CommandLine, но репа - явно более прогрессивный вариант.
Могу сделать на github-е, но я не очень рублю в Git-е…
Прошу Hind-а как-то прокомментировать, ИМХО, логичнее, если репа будет его.

Все тактично промолчали, а репозиторий-то уже давно есть.
Залил свои скрипты, нарисовав к ним иконки и ещё spline.png. Pull request.
Hind, прошу сделать merge или как-нибудь прокомментировать.

Также я вижу

  1. Pull request от Xmypblu с grid2m и wipe был закрыт без merge
  2. Файл от chnav (Tagcopy и Tagchange) уже удалён
  3. Addres2.py от “Семён Семёнов” (без XML-ки?)
    В общем я готов позаниматься репозиторием сторонних скриптов, как минимум в своём форке собрать всякое.
    У кого что есть? :slight_smile:

P.S. Ещё ща попробую сделать скрипт tagcalc - для конкатенации имеющихся тэгов и фикс.строк в новый тэг

Добавил скрипт tagcalc в свой репозиторий
Позволяет собирать тэги объектов в новый тэг по формуле. Пока возможна только конкатенация.

  1. Легко скопировать тэг в новый
  2. Можно проставить, например, name := Высота #tag=ele#
    При использовании с Regexp и Selection можно накручивать довольно сложные вычисления на тэгах.
    Если кому-то интересно - пишите.

OverQuantum, дал тебе полный доступ к репозиторию команд :3

По Replace2 — имхо, правильнее изменить Replace, добавив параметр «автоматически повернуть». Либо назвать Replace, а старый — ReplaceWithRotation.

“Ух, ответственность” (c)
Спасибо, буду действовать аккуратно.

Лишний параметр - лишнее действие для всех пользователей. Переименовал свой в “Replace2 (no rotation)”.
Добавил ещё скрипты от Xmypblu, подкорректировав их.
Залил всё в master, можно тестировать.

Спасибо. Только Implode некорректно отменяется. Там сначала удаляются точки, а потом вей — а так делать нельзя. :3
Да, автор команд не должен бы о таком задумываться, и надо править сам плагин. Но пока что есть то, что есть.

Поправил в OsmData.py вот так:

    # Deleting
    for relation in self.relations.items():
      if relation[1].get(ACTION) != DELETE:
        continue
      targetStream.write(self.xmlrelation(relation))
    for way in self.ways.items():
      if way[1].get(ACTION) != DELETE:
        continue
      targetStream.write(self.xmlway(way))
    for node in self.nodes.items():
      if node[1].get(ACTION) != DELETE:
        continue
      targetStream.write(self.xmlnode(node))
    for text in self.comments:
      targetStream.write("<!--" + text + "-->\n")

Вроде ошибка перестала выпадать. Буду ещё тестировать, но если сразу видишь что это некорректно - сообщи.

P.S. Ещё до меня сегодня дошло, что разные xml-ки могут дёргать один скрипт с разными параметрами, поэтому я уберу circle.py и replace2.py, сделаю Arc с осями и ещё свой path_ortho затащу. :slight_smile:

Спасибо.
О, точно, а я и забыл, что интерфейс команд отделен от реализации. :3

Залил очередное обновление скриптов в основной репозиторий.
Из заметных изменений только инструмент Arc with axes - по просьбе luiswoo

Большое спасибо! И ещё раз отдельная благодарность за Ellipse: если у круга указать чётное число точек, то квадрат вписывается точка в точку. Ни чем другим, так точно круг не разделить, что очень ценно для последующих построений и встраивания этого самого круга.

Сделал альтернативный ортогонализатор на скрипте.
Возможности:

  • Лучше ловит базовое направление объектов (алгоритм path_ortho отточен в проекте обрисовки зданий Эстонии)
  • Можно зафиксировать несколько точек чтобы они не были подвинуты (нужно выделить их)
  • Можно задать базовый вектор двумя точками (как в JOSM) или вручную - дополнительно к фиксированию N точек (выделить ещё линию из двух точек с тэгом fixme=ortho2_py_base_vector)
    Таким образом будет проще рисовать здания, где есть как прямые углы, так и не прямые.
    Скриншоты и тестовые объекты тут: http://ge.tt/5QMUbC72?c

В планах: удаление промежуточных точек на прямых, удаление малых уступов и выступающих отрезков (линия туда-сюда)

Скрипт выложил пока только в моём репозитории (нужны ortho2.*)

Есть идеи как повесить скрипт на хот-кей?
UPD: Скрипт вешается на хот-кей, например, через добавление скрипта на toolbar. Себе поставил на Q вместо встроенного :smiley:

Скриншот с наглядным результатом ортогонализации при фиксировании точек

Точки со знаком STOP - были зафиксированы (выделены) перед вызовом скрипта.
(где их две - там была ещё выделена третья из другой линии, чтобы базовый вектор вычислялся)

Вот это реально здорово.
Возможно ли это протолкнуть в ядро?

Нет, это же скрипты к плагину.
Про хоткей не знаю, но двойной Enter повторяет последнюю команду.

Можно попросить в “родной” ортогонализатор добавить фиксирование многих точек.
Думаю, это не очень сложно, раз у них фиксирование двух есть. Но м мне пришлось несколько дополнительных обработок вносить в остальной алгоритм (корректировать уравнение прямой если только одна точка на ней зафиксирована; если - больше одной; выбрасывать из обработки рёбра, у которых обе точки зафиксированы и т.п.)

Хорошая штука. Именно такой возможности частенько не хватало.

Можно подцепить сей скрипт к exttools, тогда точно можно вешать хоткей.

А как подцепить? CommandLine же выбранные объекты и зависимости отправляет на stdin, а exttools, насколько я вижу, только ожидает выход от внешней проги.

Род рукой JOSM нет, точно только в понедельник смогу. И что-то вспоминаеться, что, вроде, если комманд лайн плагин вынести на панель быстрого запуска, то и на него можно хоткей навесить.

Отлично, спасибо! Работает.
Configure toolbar, добавить пункт меню, потом Edit shortcut.