Добрый день!
[QUOTE]
_Alex_ написал:
По сути мне нужны данные по объекту из классификатора, чтобы потом отправить на отрисовку, или что-то в таком духе.[/QUOTE]
Для этого достаточно создать объект (mapCreateObject), заполнить ему метрику и зарегистрировать его нужным условным знаком из классификатора (mapRegisterObject)
и отрисовать:
[CODE] // Отобразить отдельный объект карты в пределах фрагмента
// в условных знаках карты
// Может использоваться для вывода шаблонов объектов
// hmap - идентификатор открытых данных
// hdc - идентификатор контекста устройства вывода,
// rect - координаты фрагмента карты (Draw)
// info - идентификатор объекта карты в памяти
// Корректно работает с большими изображениями под Windows95 и NT,
// При ошибке в параметрах возвращает ноль
// Размер картинки, рисуемой за один вызов, не более
// текущих размеров экрана, иначе - см. PaintToDib,PaintToImage...
// alpha - флаг использования альфа канала 0 - не использовать 1 - использовать
_MAPIMP long int _MAPAPI mapPaintObject95Ex(HMAP hmap, HDC hdc, RECT *rect, HOBJ info, long int alpha);[/CODE]
Сохранять объект на карту для этого не требуется. По завершении использования не забыть удалить объект из памяти (mapFreeObject).
[QUOTE]
_Alex_ написал:
Просто нужно научится правильно доставать готовую структуру объекта, чтобы потом её использовать.[/QUOTE]
Не сказал бы, что это будет просто.
Объекты, описанные в классификаторе, - это не простые примитивы, а набор таких примитивов, каждый из которых может иметь свои функции и параметры отрисовки. При этом отрисовка может выполняться в том числе и "снаружи" - с помощью пользовательских библиотек *.IML.
Какие-то объекты могут представлять из себя серию условных знаков, то есть менять свой вид (включая функции и параметры отрисовки) в зависимости от значения определенных семантик, и так далее.
Поэтому проще и надежнее предоставить ГИС-ядру возможность отрисовать объект, чем самостоятельно пытаться это повторить.
Но, если есть желание погрузиться в эту тему, то смотрите функции:
[CODE]
// Запросить количество примитивов в параметрах отображения объекта по
// внутреннему коду объекта и виду отображения
// viewtype: 0 - экранный, 1 - принтерный
// hRsc - идентификатор классификатора карты
// incode - внутренний код объекта
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRscPrimitiveCount(HRSC hRsc, long int incode, long int viewtype = 0);
// Запросить номер функции отображения примитива по порядковому
// номеру примитива в параметрах отображения объекта,
// внутреннему коду объекта и виду отображения
// viewtype: 0 - экранный, 1 - принтерный
// hRsc - идентификатор классификатора карты
// incode - внутренний код объекта (номер по порядку)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRscPrimitiveFunction(HRSC hRsc, long int incode, long int number, long int viewtype = 0);
// Запросить длину параметров примитива по порядковому
// номеру примитива в параметрах отображения объекта,
// внутреннему коду объекта и виду отображения
// viewtype: 0 - экранный, 1 - принтерный
// hRsc - идентификатор классификатора карты
// incode - внутренний код объекта (номер по порядку)
// number - номер примитива
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetRscPrimitiveLength(HRSC hRsc, long int incode, long int number, long int viewtype = 0);
// Запросить адрес параметров примитива по порядковому
// номеру примитива в параметрах отображения объекта,
// внутреннему коду объекта и виду отображения
// viewtype: 0 - экранный, 1 - принтерный
// hRsc - идентификатор классификатора карты
// incode - внутренний код объекта (номер по порядку)
// number - номер примитива
// При ошибке возвращает ноль
_MAPIMP const char * _MAPAPI mapGetRscPrimitiveParameters(HRSC hRsc, long int incode, long int number,
long int viewtype = 0);[/CODE]
Отдельные примеры частных случаев применения этих функций можно посмотреть в [URL=https://gisinfo.ru/download/?id=310]SDK15[/URL] (поиском функций по исходным текстам).