> Densy
Вот как это сделано в BestIA:
1. В таблице БД хранится вся семантика и координаты объектов (Х, У для точечных, списки для линий и полигонов). Каждая запись имеет уникальный код
2. При команде экспорта в Автокад передаются, через файл, координаты и коды. Экспортируются выделенные записи, одновременно может быть экспорт в HTML и привязка URL к объектам для последующего изготовления DWF-карты
3. Лисп-программа читает файл и, руководствуясь установками темы, рисует объекты (блоками, полилиниями, при необходимости с заливками, штриховками, надписями).
4. К каждому объекту привязываются расширенные данные - относительное имя таблицы и код записи. Сама семантика остается в БД.
5. При просмотре объекта (указанием на примитив) просматривается (или редактируется) запись БД. Если при редактировании изменяется геометрия в БД - изменяется таблица и перерисовывается объект. Если изменяется геометрия графически - обновляется БД. Но только если редактирование производится специальной командой.
Отслеживать любое редактирование с помощью реакторов не стали, так как очень тормозит систему, да и нужды особой нет.
6. Автоматически изменения не отслеживаются (было, отказались) так как расходуется бесполезно слишком много ресурсов. Информация в БД всегда актуальная, а геометрия меняется нечасто. Но есть возможность держать информацию в ссылочных файлах-слоях. В этом случае она обновляется как обычно при загрузке XREF