Встраивание в приложение
Геометрический решатель GCE построен, как общецелевой компонент параметрического черчения. Это значит, что его можно встроить в любое приложение, имеющее дело с плоской (planar) геометрией, чертежами или эскизами. Предполагается, что такое приложение уже имеет свои структуры данных, представляющие геометрию эскиза. Перед программистом, встраивающим компонент GCE в свое приложение, фактически ставится задача передать под управление решателя свои геометрические объекты, подчиненные системе ограничений. Программный интерфейс решателя имеет свою собственную отвлеченную (abstract) систему типов данных, составляющую необходимый минимум того, чтобы сформулировать задачу удовлетворения ограничений. Поэтому, чтобы подключить геометрический решатель к управлению эскизом, необходимо реализовать специальную обертку, которая, выполняя роль моста между C3D Solver и приложением, будет передавать данные о геометрии и ограничениях в решатель, и наоборот, применять результаты вычислений решателя к геометрии эскиза. На рис. 1 изображена примерная схема взаимодействия решателя ограничений с эскизом. Обертка GCE wrapper обслуживает параметрическую модель эскиза и выполняет следующие функции:
загружает в решатель геометрическую модель эскиза, выраженную в типах данных модуля C3D Solver;
обрабатывает запросы редактора такие, как добавление/удаление данных системы ограничений, вычисление эскиза, драггинг геометрических объектов;
управляет состоянием геометрии эскиза, подчиненной ограничениям;
обновляет данные решателя по актуальному состоянию геометрии эскиза;
скрывает (адаптирует) API решателя с его математическими типами данных и предоставляет более удобное API с типами данных приложения;
Рис. 1
Схема на данном рисунке не является непременным руководством по встраиванию решателя, а только демонстрирует пример одного из способов интеграции C3D Solver в приложение.
Также компонент GCE не позволяет сохранять данные пользователя в файл документа, поэтому разработчик приложения должен позаботиться о чтении/записи системы ограничений своего эскиза в документе приложения. Кроме того, следует принимать во внимание, что набор типов геометрического решателя не может перечислить всё многообразие геометрических типов приложения. Например, в решателе нет типа «прямоугольник», однако он может быть представлен, как четверка точек и прямых, связанных определенными ограничениями. Возможное программное решение предусматривает, что каждый чертежный объект будет иметь свой метод, формулирующий его описание в решателе.