GDL-объект для создания тестовых сцен с участием 2D примитивов.

....в практике любого "наколеночника"  возникает момент тестирования, и если в больших серъезных организациях к этому вопросу подходят не менее серьезно чем к самому продукту, и времени на тестирование порой уходит достаточно, то индивидуальная разработка тем и хороша что сам себе ставишь задачу и все вопросы по тестированию удобству и .т.п примеряешь в первую очередь сам. Вот такой получился сумбурно пространный врез. В прошлый раз зарекся насчет некоторого периода писать на GDL, однако судьба моего питон проекта оказалась тесно переплетена с моими познаниями в арчикад-скрипте.

Когда описываемая модель не так абстрактна, как например при программировании сокетов или драйверов(с потолка), а напротив очень даже "очертаема", то возникает реальный интерес опробовать ее в деле, все, хватит болтовни, ближе к сути:

сейчас пишу требуемую в MSF часть алгоритмов по работе с полигонами - алгоритмы отсечения, маркёры положения - линии отн. полигона, точки относительно полигона и т.п., да, все это уже есть, правда редко находишь в непосредственно пригодном виде - обычно приходится причесывать, переписывать с C или C++ на Python. Вот здесь например нашел нетривиальную(IMHO) реализацию теста "точка-полигон", он уже будет частью теста "отрезок-полигон", а он в свою очередь основа для теста "полигон-полигон" и.т.п. Можно конечно и с учебника брать алгоритмы, похоже что уже иду в этом направлении - Никулин неплохо пишет...

В один момент компилятор сообщает что ошибок не було, и вот они заветные строки-цифири результата, и вот тут то и понимаешь что сил переносить результаты обратно в 2Д координатную плоскость с каждым разом все меньше, а тестов будет еще ого-го сколько. Равно как и лениво становится вычислять координаты исходных примитивов для следующих тестов.

Пошукал решения от программистов для этого момента(одна из многих - 2D Lib). Но врубаться в "главный труд чьей то жизни" - дело не двух минут. Пасуешь автоматически...

А потом я понял то, что в принципе всегда знал - своя рубашка всегда ближе, т.е. имея такую махину как архикад, глупо искать что-то еще когда речь идет о геометрических примитивах и их координатах. Ибо ничто лучше чем CAD эту задачу не решает.

Но чертить и ставить размеры как то ломает...хотя это один из выходов из ситуации. Накропать в арче "сцену" для теста дело одной-двух минут. Но вспомнился мне мультик - "лучше день потерять потом за пять минут долететь" в итоге написал вот такие интерактивные GDL-костыли:


Скрин 1. GDL-объект=="Сцена для теста"

GDL-объект позволяет:
- задать требуемое для теста количество примитивов: точек(0...10), линий(0...10), полигонов(0...2);
- для каждой группы примитивов задать цвет(для более простого восприятия);
- дать имена конкретным линиям, точкам, чтобы впоследствии искать их по именам а не по индексам;
- сохранить текущую конфигурацию теста под своим именем, приступить к заданию сцены  следующего теста, к-й будет сохранен в свой xml-файл и.т.п; Файлам также имеет смысл давать осмысленные имена, например: точка-в_линия-вне.xml (имея ввиду в/вне полигона);
- установить интерактивную 2-стороннюю связь ARCHICAD-[XML-NOTEPAD]-PYTHON, здесь по сути хмл блокнот - лишнее звено. Работает это так: GDL объект по любому изменению  в параметрах(или через Активные споты), отписывает в указанный для вывода XML файл свое актуальное состояние, запускаем питон скрипт которому скармливаем этот XML, питон в свою очередь отписывает результат работы нужного алгоритма в другой указанный в GDL объекте "для ввода результата" XML-файл, и при включенном селекторе "показать результаты"(скрин2), GDL объект перерисовывает себя уже в соответствии с результатами работы Python скрипта.


Скрин 2. Синхронизация м/у GDL-объектом и XML-файлом

Пока в GDL- не написан вывод результата, демка по "первой части" здесь. (2,3 мб, *.rar)


Комментарии

Популярные сообщения из этого блога

GDL. Объект для моделей из "оцилиндрованного бревна"

График функции в полярных координатах?! Легко!

Объект "Plan Marker"