oknosoft / windowbuilder

Окнософт:Заказ дилера
http://www.oknosoft.ru/zd/
Other
10 stars 19 forks source link

исправл. восстановления соединений с заполнением #556

Closed rnpoddor closed 4 years ago

rnpoddor commented 4 years ago

Тестировал восстановление соединений только для типа деления Крест в стык, про деление горизонтальных и вертикальных совсем забыл. Например если выбрать раскладку Раскладка Varsavia 18мм, для неё деление горизонтальных, вертикальные импосты имеют соединение снизу и сверху, для такого деления всё ломается.

unpete commented 4 years ago

У нас, вроде, была функция, ищущая пересечения в окрестности узла в модуле src/geometry/paper_ex.js Зачем сугубо геометрический метод get_intersection помещен вовнутрь редактора? Если он реально нужен, как его использовать в других местах?

rnpoddor commented 4 years ago

У нас, вроде, была функция, ищущая пересечения в окрестности узла

Функция intersect_point в решении данной задачи не подходит.

Зачем сугубо геометрический метод get_intersection помещен вовнутрь редактора?

Возможно наименование функции не отражает полностью её предназначение. Коммит обновил, изменил наименование, не знаю как ещё назвать и ещё доработку добавил, пока думал, нашёл изъян. Этот метод специфичен данной задаче, где-то еще применить наврятли получится, поэтому не стал никуда выносить. В этом методе ищется не только пересечение путей в окрестности точки, а работа ведётся с импостом и проверяется также противоположный конец импоста. Возвращает пересечение если оно есть и не противоречит противоположному концу, в противном случае undefined.

unpete commented 4 years ago

Дело не в названии методов, а в месте, где эти методы живут и каким классам принадлежат. editor_dhtmlx - это визуальная надстройка и в ней живут методы, через который ui старой рисовалки отдаёт приказы невизуальной части. Требуется:

rnpoddor commented 4 years ago

Коммит обновил с учётом замечаний.

unpete commented 4 years ago

Есть еще замечания - сам поправлю руками.

unpete commented 4 years ago

про деление горизонтальных и вертикальных совсем забыл

Дело не в способе деления, а в том, что для некоторых раскладок, Varsavia 18мм в том числе, у вас разрешены соединения с пустотой. Система, увидев такое соединение не пыталась что-либо уравнивать.

Сделал маленькие оптимизации https://github.com/oknosoft/windowbuilder/commit/bc40ad7d65917a0ff23cd2257b9d77fdde5be0c выкинул метод get_nearest_intersection и отдельный код про удлинение, т.к. всё это есть в стандартном и абстрактном path.intersect_point().

Оптимизации - это мелочь. За +/- 40 строчек кода я никого критиковать не посмею, но в формулах-модификаторах нашел реальную дичь. Формула "Автоуравнивание при вставке раскладки". Не важно, кто автор, но начальника, пропустившего такое в прод надо наказывать. Формулу "Автоуравнивание при вставке раскладки" нужно немедленно отключить, удалить и никогда не писать кода, как в той формуле.

dev обновил - проверяйте.

rnpoddor commented 4 years ago

Не работает. Для теста можно использовать заказ 00-007-0006, строка продукции №20. На примере раскладки Раскладка Varsavia 18мм, деление горизонтальных. Вставляю раскладку и меняю размеры так

image

после исправления соединений результат такой

image

для некоторых раскладок, Varsavia 18мм в том числе, у вас разрешены соединения с пустотой

Мы от такого соединения избавились, где Вы его нашли?

Но в формулах-модификаторах нашел реальную дичь. Формула "Автоуравнивание при вставке раскладки".

Формулу писал я, ещё в прошлом году. Избавимся после нахождения альтернативного решения.

unpete commented 4 years ago

Сделал elongation перед поиском пересечений - проверяйте.

По формуле, мои замечания не к исполнителю, а к начальнику. Не надо управленческого опыта, не надо высшего образования и даже техникума. Все учились в средней школе, у всех было черчение и все видели угловой штамп. Там есть ячейки для подписей: разработал, чертил, проверил, нормоконтролер, утвердил. Любую фигню: кирпич, балку, шестерню, гвоздь и тем более, программный код надо проверять и согласовывать.

Опыт десятков поколений инженеров говорит: если человек чего-то потихоньку рисует и не советуется с товарищами, на выходе будет плохо. Видимо, ваши начальники хотят, чтобы было плохо - иначе регламент работы ИТ не объяснить.

rnpoddor commented 4 years ago

Работает!

unpete commented 4 years ago

На днях осознал, что сделано неаккуратно. Метод path.intersect_point() надо дорабатывать. Сейчас, когда исходный путь внутри замкнутого и сильно смещен к одной из сторон замкнутого - будет ошибка. Аберрации возможны не только при уравнивании, но и при расчете геометрии.

rnpoddor commented 4 years ago

Нпример такой вариант приводит к ошибке, если применить восстановление соединений

image

unpete commented 4 years ago

Это понятно. Просто, править надо не восстановление вульгарного соединения, а ошибку в базовом методе.

rnpoddor commented 4 years ago

Метод path.intersect_point() надо дорабатывать.

Решение найти не удаётся. Нужна помощь! Решение этой задачи держит обновление продакшена.

unpete commented 4 years ago

Просьба суть проблемы вместо эмоций

unpete commented 4 years ago

С примером на изделии разумных размеров

rnpoddor commented 4 years ago

Вроде нормально написал, эмоций не было. Заказ в продакшене 00-007-0006 изделие 20. И пример выше в обсуждении был https://github.com/oknosoft/windowbuilder/pull/556#issuecomment-568262917.

unpete commented 4 years ago

Фразы "Отгрузка остановлена", "Не можем работать", "Клиенты оборвали телефон", "Держит обновление продакшена", "Вы обещали" и т.п., используют "Эффективные менеджеры", чтобы вызвать чувство вины у подчиненного. Лучшая защита от таких манипуляций - ругать и бить первым. Своих. Чтобы чужие боялись.

rnpoddor commented 4 years ago

Мы сможем решить эту задачу до того как Вы будете отсутствовать?

unpete commented 4 years ago

Легко

unpete commented 4 years ago

https://github.com/oknosoft/windowbuilder-core/commit/73cad34e83aecb198dbead9f86d54e8b64c02d72 https://github.com/oknosoft/windowbuilder/commit/8d4adcb935875bb87db37ff56ebc8385b0993fae dev обновил - проверяйте

rnpoddor commented 4 years ago

Правильно ли я понимаю, не протестировав до конца изменения из https://github.com/unpete/ecookna/issues/881, мы не сможем обновить prod? Те изменения которые мы вносили ранее не могут быть перенесены отдельно?

unpete commented 4 years ago

Текущая сборка wb опирается на отдельную библиотеку wb-core. Про какие именно изменения вопрос?

rnpoddor commented 4 years ago

Например текущую задачу.

unpete commented 4 years ago

Уточню: не текущая, а текущие. Главный акцент сейчас на wb-light. Сборку на dhtmlx пора хоронить. Chrome об этом тоже напоминает: в апреле отключат AppCache. Чтобы войти в горячий сезон без нервотрёпки, советую заняться формулами. Под словом 'заняться', понимаю 'согласовать со мной'

rnpoddor commented 4 years ago

Я Вас понял, а как сейчас сделать обновление prod?

unpete commented 4 years ago

Давайте про ваш регламент не в общей ветке. Если грубых ошибок в dev не наблюдаете, prod можно обновить хоть сейчас.