Open unpete opened 4 years ago
Ключевые изменения в жизненном цикле элементов построителя:
Сейчас, метод move_points()
есть у проекта и профиля. Его вызывает либо инструмент select_node
, когда человек тянет мышью узлы и элементы, либо DimensionLine
при изменении размеров. Так же, метод могут вызывать внешние скрипты при невизуальном редактировании.
Очевидно, что метод move_points()
должен появиться и у скелетона, но его поведение и визуализация будут несколько иными:
move_points()
скелетона не изменяет проект и фактически, узлы не двигает. Метод лишь оценивает, можно ли сдвинуть узлы в заданную точку и возвращает дельту сдвига с учетом ограничений графаmouseup
, если изменение инициировано инструментом или при ненулевой дельте, если инициатор - размерная линия
Графический движок неплохо справляется с построением сложных изделий - подтверждено практикой на больших масштабах. Вместе с тем, выявлены недостатки объектной модели:
BuilderElement
, при котором смешаны пересчет и отрисовкаРешено, дополнить класс
Scheme
свойствомSkeleton
, содержащимNodes
(семейство узлов изделия) иRibs
(семейство рёбер, как основу профилей и заполнений). Скелетон сможет с высокой скоростью обрабатывать запросы о положении, примыкании и пересечении элементов и безопасно выполнять команды деформации.Три зайца окажутся убитыми наповал: