🔧

Failed to load site

We apologize for the temporary inconvenience. Please try to reload the page.
You can always check the current server status in the Telegram community chat.

Reload page
503
Mechanics Studio .NET - Project - Saving Mechanism Data
Mechanics Studio .NET
www.VMKfree.narod.ru
Проект системы "Mechanics Studio .NET" 
   Хранение данных механизма 
Описание сайта
Теория механизмов
Проект системы
   Описание проблемы
   Требования к системе
   Средства разработки
   Модули системы
   Диаграммы классов
   Стр-ра данных мех-ма
   Аналог структ. схем
   Прогр-е 3D графики
   Хранение Данных
Описание GUI
Дополнение

   Обновление: 12.02.06
© EasyStudio: 01.09.05
easystd@gmail.com


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

      Платформа .NET Framework предоставляет разработчикам удобные средства (класс DataSet и др.) для работы с базами данных и XML-файлами, которые фактически позволяют абстрагироваться от способа хранения данных - в файл или базе. Таким образом для того чтобы реализовать сохранение механизмов в XML-файл или базу, необходимо пррежде всего спроектировать структуру хранимых данных в форме таблиц и связей между ними по ключам. На рисунке ниже приведена диаграмма описывающая структуру данных для хранения механизмов:

Диаграмма таблиц и связей базы данных механизмов
Рисунок: Диаграмма таблиц и связей базы данных механизмов

Cоответствие числовых идентификаторов, используемых в таблицах и реальных их значений:

MechView3D.ViewType:

  • 0 = Top;
  • 1 = Bottom;
  • 2 = Left;
  • 3 = Right;
  • 4 = Front;
  • 5 = Back;
  • 6 = Perspective;

MechPair.Type:

  • 0 = SphericMPair;
  • 1 = RotateMPair;
  • 2 = CrawlerMPair;
  • 3 = OnwardMPair;

MechLink.Type:

  • 0 = HolderMLink;
  • 1 = LinearMLink;
  • 2 = CrawlerMLink;
  • 3 = OnwardMLink;
  • 4 = CompoundMLink;

MechSubLink.Type:

  • 0 = SubGeometry;
  • 1 = SubCompound;
  • 2 = SubEndPoint;

GeomObject.Type::

  • 0 = GeomHoldObject;
  • 1 = GeomCylObject;
  • 2 = GeomCrawObject;
  • 3 = GeomOnwObject;
  • 4 = GeomSphObject;
  • 5 = GeomRotObject;

      Каждая таблица на представленной диаграмме соответствует некоторому классу, описывающему элемент структуры механизма, который имеет методы сохранения и загрузки данных из соответствующей таблицы. Такая структура талиц позволяет хранить в одном XML-файле или базе данных множество механизмов с информацией о настройках стилей отображения и видов.

      Сохранение и загрузку данных из таблиц поддерживают следующие классы программы:

Таблица 6: Соответствие классов и таблиц базы данных 
Название класса Таблицы с которыми
работает класс
PropObjManager MechProject
StylesManager Styles
MechView3D MechView3D
Mechanism Mechanism,
MechanismGroupsList
MechPGroup MechPGroup,
MechPGroupPairsList
MechPair MechPair
MechLink MechLink,
MechSubLinksList
MechSubLink MechSubLink
GeomObject GeomObject
GeomPoint GeomPoint

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

  • Базовые методы сохранения/загрузки:
    • Конструктор, выполняющий загрузку из источника по переданному ID записи в соответствующей классу таблице;
    • SaveToDataSet - метод сохраняющий объект в DataSet и возвращающий ID созданной записи в соответствующей классу таблице;
  • Вспомогательные методы:
    • PrepareForSaving - метод подготовки объекта к сохранению (производит обнуление вспомогательных идентификаторов и флагов перед сохранением);
    • Get[TableName]Table - по данному объекту DataSet возвращает содержащуюся в нём соответствующую таблицу или создающий эту таблицу, в случае её отсутствия;

      Кроме того, в процессе сохранения/загрузки задействован дополнительный вспомогательный класс - LoadManager. Этот класс хранит данные, необходимые для передачи между объектами в течении процесса сохранения/загрузки и реализует методы, используемые для работы со всем DataSet в целом, а не с отдельными таблицами. Центральное место в классе занимает специльное поле - двумерный "словарь", позволляющий по имени таблицы и числовому идентификатору записи получить ссылку на объект, который был сохранён в эту запись. Это поле используется при сохранении и загрузке данных для восстановления ссылок между объектами по связям между таблицами через числовые идентификаторы. Этот класс так же имеет методы загрузки и сохранения данных в DataSet для XML файлов и базы данных.

Хостинг от uCoz