Добрый день.
Хочу получить описание стилей объектов.
Использую C# и GTK Active (axGisToolKit.ocx версии 11.3.13.0).
Запрашиваю описание через функцию MapAccess.mapGetRscPrintObjectFunction
В ответ получаю IMG_DRAW, по нему есть возможность опрашивать примитивы и их параметры (mapGetRscPrimitiveCount, mapGetRscPrimitiveFunction, mapGetRscPrimitiveParameters).
По этим параметрам заполняю структуры (например такую):[CODE] public struct IMGDOT // (129) ПУНКТИРНАЯ ЛИНИЯ
{ // (size = 16)
public uint Color; // Цвет линии
public uint Thick; // Толщинa штpиха
public uint Dash; // Длина штpиха
public uint Blank; // Длина пpобела
}
[/CODE]С этим вроде всё хорошо.
Классификатор карты которую обрабатываю - terrplan1.v4.rsc
И там есть программно заданные объекты (iml файл).
Во вложении пример стиля который разбираю.
Функция mapGetRscPrimitiveFunction возвращает 250 (IMG_LIBRARY - Знак IML).
Из описания параметров структуры этой функции:[CODE]typedef struct IMGLIBRARY // (250) ПАРАМЕТРЫ ОБ'ЕКТА(РИСУЕТ ПОЛЬЗОВАТЕЛЬ)
{
int Length ; // Полная длина записи описания объекта
int Code ; // Код DLL (IML)
int Index ; // Индекс DLL в списке библиотек
int Function; // Код функции
IMGDRAW Draw ; // Параметры
}
IMGLIBRARY;
[/CODE]видно, что она является немного дополненной IMG_DRAW, т.е. позволяет сделать набор стилей и описать их.
Вот описание структуры стилей:[CODE]typedef struct IMGDRAW // (147) НАБОР ПРИМИТИВОВ
{
unsigned int Ident ; // Идентификатор записи 0x7FFF7FFE
unsigned int Length ; // Полная длина записи описания объекта
unsigned short Count ; // Количество примитивов
unsigned short Flags ; // Должен быть 0
IMGDECOR Image ; // Заголовок первого примитива
unsigned int Parm[1] ; // Параметры примитива по типу
// Далее заголовок и параметры
// следующих примитивов
} IMGDRAW;
[/CODE]
А вот аналогов функций mapGetRscPrimitiveCount, mapGetRscPrimitiveFunction, mapGetRscPrimitiveParameters для этого случая я не нашёл.
Можете подсказать, есть ли они и как ими воспользоваться?
Если их нет - есть какой-то более адекватный вариант, чем ручной разбор с определением блоков и дальнейшим их разбором на параметры?
Хочу получить описание стилей объектов.
Использую C# и GTK Active (axGisToolKit.ocx версии 11.3.13.0).
Запрашиваю описание через функцию MapAccess.mapGetRscPrintObjectFunction
В ответ получаю IMG_DRAW, по нему есть возможность опрашивать примитивы и их параметры (mapGetRscPrimitiveCount, mapGetRscPrimitiveFunction, mapGetRscPrimitiveParameters).
По этим параметрам заполняю структуры (например такую):[CODE] public struct IMGDOT // (129) ПУНКТИРНАЯ ЛИНИЯ
{ // (size = 16)
public uint Color; // Цвет линии
public uint Thick; // Толщинa штpиха
public uint Dash; // Длина штpиха
public uint Blank; // Длина пpобела
}
[/CODE]С этим вроде всё хорошо.
Классификатор карты которую обрабатываю - terrplan1.v4.rsc
И там есть программно заданные объекты (iml файл).
Во вложении пример стиля который разбираю.
Функция mapGetRscPrimitiveFunction возвращает 250 (IMG_LIBRARY - Знак IML).
Из описания параметров структуры этой функции:[CODE]typedef struct IMGLIBRARY // (250) ПАРАМЕТРЫ ОБ'ЕКТА(РИСУЕТ ПОЛЬЗОВАТЕЛЬ)
{
int Length ; // Полная длина записи описания объекта
int Code ; // Код DLL (IML)
int Index ; // Индекс DLL в списке библиотек
int Function; // Код функции
IMGDRAW Draw ; // Параметры
}
IMGLIBRARY;
[/CODE]видно, что она является немного дополненной IMG_DRAW, т.е. позволяет сделать набор стилей и описать их.
Вот описание структуры стилей:[CODE]typedef struct IMGDRAW // (147) НАБОР ПРИМИТИВОВ
{
unsigned int Ident ; // Идентификатор записи 0x7FFF7FFE
unsigned int Length ; // Полная длина записи описания объекта
unsigned short Count ; // Количество примитивов
unsigned short Flags ; // Должен быть 0
IMGDECOR Image ; // Заголовок первого примитива
unsigned int Parm[1] ; // Параметры примитива по типу
// Далее заголовок и параметры
// следующих примитивов
} IMGDRAW;
[/CODE]
А вот аналогов функций mapGetRscPrimitiveCount, mapGetRscPrimitiveFunction, mapGetRscPrimitiveParameters для этого случая я не нашёл.
Можете подсказать, есть ли они и как ими воспользоваться?
Если их нет - есть какой-то более адекватный вариант, чем ручной разбор с определением блоков и дальнейшим их разбором на параметры?