четверг, 9 декабря 2010 г.

Параметризация. Часть 10. Наследование

По сути для замыкания терминологии ООП на геометрическом моделировании нам с Вами остался один термин: “Наследование”.

image

С одной стороны мы достаточно хорошо привыкли к термину “наследование”, ведь моделирование с историей (history-based modeling) в своей основе имеет отношение родитель-потомок. Без него никак. Давайте рассмотрим проблему “отцов и детей”

Любой объект может быть родителем? Ну, в нашем случае с геометрическим моделирование, да! Любой объект может быть потомком? Почти. Потомком не может быть базовая (исходная) система координат. Почему я молчу о точке в центре координат и трех базовых плоскостях и осях? Дело в том, что некоторые системы не имеют базовых осей, а некоторые считают (не безосновательно) что базовые плоскости и точка являются потомками базовой системы координат. Правда есть системы, которые как раз “не имеют” базовой системы координат, а начальными объектами почитают плоскости. Но в данном случае вместо термина “не имеют” лучше подходит “не акцентируют внимание” иногда усиленно т.е. прячут. Почему так? Если нет системы координат, то как мы опишем плоскости? Это как доказательство теоремы Пифагора через синусы и косинусы. Вроде и правильно, а вроде бы существование косинусов и синусов является следствием теоремы Пифагора...

В общем, чтобы не разводить прения что “раньше курица или яйцо”, “первичнее материя или  сознание” и т.п., я для себя решил, что только базовая система координат не имеет родителей в нашем случае. Все остальные, хоть кого-то в родителях, но имеют. Если объект является родителем, то количество его потомков должно быть всяко отлично от нуля. Если объект является потомком, то в родителях (прямых) он должен иметь не менее одного хотя бы самого завалящего родителя (у нас геометрическое моделирование а не жизнь в человеческом обществе).  Предков может быть сколь угодно много аж до Адама Системы Координат. Соответственно один и тот же Объект может быть и родителем и потомком одновременно. При этом он может дать жизнь многим и многим ветвям потомков, как напрямую самостоятельно, так и опосредовано - через потомков. Так получается генеалогическое древо модели.

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

Одним из важных свойств родительских отношений является правило, что потомок не может быть родителем/предком своего родителя. Хотя иногда в CAD можно записать уравнение поставив ссылку более ранних размеров на более поздние... Но обычно это приводит к тому, что модель перестает считать себя завершенной при любом количестве регенераций, и подобного издевательства лучше избегать. Мощность и удобство инструментария наложения и отслеживания взаимосвязей и отношений родитель/потомок во многом определяет то насколько сложный объект Вы сможете параметризовать. Зачастую ради удобства а точнее упрощения жертвуют функционалом. Хотя казалось бы в чем проблема....

В то же время в ООП принцип наследования предусматривает несколько иную модель поведения. Применительно к CAD системам ее можно представить так: в большинстве CAD систем Вы можете сохранить текущий файл, со всеми его настройками, системами единиц, созданными параметрами, форматками и символами (в случае чертежа) и даже с созданной геометрией (в случае файла модели) в качестве шаблона. Далее этот шаблон Вы можете использовать в следующих работах и это и есть принцип наследования.  Кто Вам мешает для объектов, чье концептуальное представление Вам известно, создать подобные шаблоны и использовать их начиная новую работу. Тогда ведь внешние ссылки будут между концептами, а внутри все ссылается на них и... будет Вам счастье  Вам чуть меньше проблем и головняков.

Вот собственно и все. Параллели можно еще проводить долго и плодотворно, но для начального этапа хватит. С Вашего позволения я хотел бы взять микро-паузу с изложением данного вопроса.

Замечания и предложения приветствуются.

Комментариев нет:

Отправка комментария

Related Posts Plugin for WordPress, Blogger...
Rambler's Top100