Цитата |
---|
Александр Махин написал: вызываю диалог MapSelectObjectRsc, но там нет способа создания объекта (произвольный, прямоугольник и т.д.) |
Просто вызова диалога не достаточно. Диалог просто указывает, какой режим создания объекта выбрал оператор. Далее в программе необходимо осуществить нанесение выбранным способом.
В составе GIS ToolKit Active такой возможности в настоящее время не реализовано.
Создание объектов на карте с выбранным в диалоге режимом реализовано только непосредственно в самой ГИС "Панорама", а также в компоненте TMapCreateObject из состава GIS ToolKit для Embarcadero. Но аналогичного компонента в GIS ToolKit Active нет.
Вызвать диалог можно функцией scnChoiceNewObjectUn, но далее выполнение создания объекта на карте придется реализовать самостоятельно.
scnChoiceNewObjectUn:
Скрытый текст |
---|
Код |
---|
// Способы построения метрики объекта
#define MC_POLYLINE 5213 // Произвольная линия
#define MC_RECT 5214 // Горизонтальный прямоугольник
#define MC_ROTRECT 5215 // Наклонный прямоугольник
#define MC_POLYRECT 5216 // Многоугольник с прямыми углами
#define MC_FIXCIRCLE 5217 // Окружность фиксированного радиуса
#define MC_VARCIRCLE 5218 // Окружность произвольного радиуса
#define MC_AUTO 5219 // Автомат
#define MC_FROMFILE 5220 // Из файла
#define MC_KEYB 5221 // С клавиатуры
#define MC_TWOSIDE 5222 // Двойная линия (ось по центру)
#define MC_SPLINE1 5223 // Сглаживающий сплайн
#define MC_SPLINE2 5224 // Огибающий сплайн
#define MC_RIGHTSIDE 5225 // Двойная линия (ось слева)
#define MC_THREEPOINT 5226 // Окружность по трем точкам
typedef struct MEDRSCPARM
{
int Regime; // Режим создания объекта одним из способов:
// от MC_POLYLINE до MC_THREEPOINT
// = -1 - режимы создания недоступны в диалоге!
// Если установлен режим, не соответствующий локализации,
// будет установлен MC_POLYLINE
int Repeat; // Повторяемость семантики
// = 1 - повторяемая
// = 0 - неповторяемая
// = -1 - недоступна в диалоге
int FlagKey; // Флаг установки режимов создания
// если == 0, то доступность режимов
// устанавливается автоматически,
// иначе - в соответствии с Кеу
int Reserve; // Резерв
char NameDlg[128]; // Название диалога или ноль
char Key[32]; // Уникальный идентификатор вида объекта в классификаторе
}
MEDRSCPARM;
typedef struct CHOICEOBJECTPARM
{
HSELECT hSelect; // Фильтр (список доступных локализаций объекта)
int MapSelect; // Фильтр для работы со списком карт
// = 0 - список по всем картам документа
// = 1 - список из одной карты (карта будет
// запрошена из идентификатора объекта)
int MapEditSelect; // Фильтр для работы со списком карт (по признаку редактирования)
// = 0 - список по всем картам документа
// = 1 - список из карт, подлежащих редактированию
}
CHOICEOBJECTPARM;
// Создание нового объекта
// hmap - идентификатор открытой векторной карты
// parm - параметры задачи
// hobj - идентификатор объекта
// medparm - параметры создания
// choiceparm - параметры для диалога выбора вида объекта
// hselect - фильтр (если hselect == 0 - фильтр не используется)
// title - заголовок диалога или 0
// Возвращает внутренний код объекта
// Вызов файла справки из Mapscena.chm ("SelecOb")
// При ошибке или отмене выбора возвращает 0
long int WINAPI scnChoiceNewObjectUn(HMAP hmap, TASKPARMEX *parm, HOBJ hobj,
MEDRSCPARM* medparm,
CHOICEOBJECTPARM *choiceparm,
HSELECT select, const WCHAR * title);
long int WINAPI scnChoiceNewObject(HMAP hmap, TASKPARMEX *parm, HOBJ hobj,
MEDRSCPARM* medparm,
CHOICEOBJECTPARM *choiceparm,
HSELECT select);
|
|