На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Не корректное отображение зарамочного оформления .frm

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 5
RSS
Не корректное отображение зарамочного оформления .frm
 
Вопрос всё ещё актуален
 
Добрый день.
Если сейчас нет возможности отобразить зарамочное оформление "целиком", возможно есть отдельные функции, помогающие отобразить, например, геодезическую рамку.
Подскажите, пожалуйста, её название если она есть
 
Функция mapAddMarginalRepresentationSite используется для формирования простого зарамочного оформления. Обрабатывает ограниченный набор ключевых слов: ".RSCLINE", ".RSCFRAME", ".GEOTEXT", ".RSCTEXT", ".DIRECTION".
Для получения расширенного зарамочного оформления необходимо использовать функцию frmCreateBorderPro. Текст данной функции доступен в виде исходных текстов (frmapi\frmapim.cpp), пример использования в файле (preprint\frmbuild.cpp).

Данные тексты выложены в виде архива sdk13.zip и доступны для скачивания на странице: https://gisinfo.ru/download/download.htm
 
В приложение к письму на 'panorama@gisinfo.ru' ссылка на обновлённый пример
https://cloud.mail.ru/public/4c9Y/3qpRQi1Tu
 
Цитата
Михаил Федосеев написал (в письме):
С этого момента обсуждение существенно не продвинулось. Мне было предложено воспользоваться методом  frmCreateBorderPro. Однако существуют 2 проблемы:
- во первых метод отказывается принимать HSITE, созданный в обсуждаемом нами примере. HSITE основной карты принимается, но никакого зарамочного оформления не отображается.
- во вторых параметры данного метода не подразумевают указания области карты, для которой нужно создать зарамочное оформление, что является для нас критичным. Возможно указать только номер листа карты.
1. Полное зарамочное оформление может быть построено только по карте, открытой в отдельный HMAP (preprint\frmbuild.cpp):
Код
      // Вид карты: -1 - SIT c рамкой
      mapregex.FlagRealPlace = -1;

      HMAP fmap = mapCreateMapPro(RotateSit, rscfilename, &mapregex, &listreg,
                             &sheet, sheetname, 0, 0);
2. Карта зарамочного оформления создается отдельно в виде безразмерного листа:
Код
     // Вид карты: 1 - SIT (безразмерный лист)
     mapregex.FlagRealPlace = 1;

     HMAP fmap = mapCreateMapPro(FrameSit, rscfilename, &mapregex, &listreg,
                             &sheet, sheetname, 0, 0);
     if (fmap != 0)
       {
        // Установить параметры DATUM и Ellipsoid
        mapSetSiteDatum(fmap, fmap, &datum);
        mapSetSiteEllipsoidParameters(fmap, fmap, &ellipsoid);

        mapSaveSite(fmap, fmap, 1);
        mapCloseData(fmap);
       }
3. Вычислить угол поворота карты (для топокарт):
Код
 if (RegionCheckBox->Checked == true)
   {
    angle = 0.;

    // Откроем главную карту повёрнутого листа RotateSit
    HMAP hSheet = mapOpenDataUn(RotateSit);
    if (hSheet != 0)
      {
       // Вычислить угол поворота для нового листа
       frmGetRotateAngle(hSheet, 1, &angle);

       // Копирование и поворот объектов на RotateSit
       TurnSheetRegion(angle, rsit);

       mapCloseSiteForMap(Hmap, rsit);

       // Добавим карту зарамочного оформления
       frmsit = mapOpenSiteForMapUn(hSheet, FrameSit, 0);

       if (frmsit)
        {
        frmCreateBorderPro(hSheet,1,frmsit,frmsit,FrameTemp,0,LogFile,0);

        mapCloseSiteForMap(hSheet, frmsit);
        }

       // Установка FlagRealPlace = 1, чтобы после поворота пересчитались габариты листа(всего района)
       if (mapGetSiteInfoPro(hSheet, hSheet, &mapregex, &listreg, &sheet,1) != 0)
         {
          mapregex.FlagRealPlace = 1;
          mapUpdateSiteInfoEx(hSheet, hSheet, &mapregex, &listreg, 1, &datum, &ellipsoid, 0);
         }
       // Закрыть документ
       mapCloseData(hSheet);
      }
   }

4. Повернуть карту:
Код
   if (frmTurnSheet(TaskParm, Hmap, i, angle, rsit) == 0)
    {
     mapCloseSiteForMap(Hmap, rsit);  // 15/12/17
     mapCloseSiteForMap(Hmap, frmsit);
     break;
    }
5.  
Код
   // НАНЕСТИ ЗАРАМОЧНОЕ ОФОРМЛЕНИЕ
   if (CreateBorder(Hmap, i, rsit, frmsit, angle) == 0)
    {
     mapCloseSiteForMap(Hmap, rsit);  // 15/12/17
     mapCloseSiteForMap(Hmap, frmsit);
     break;
    }
Код
int TFormFrameBuild::CreateBorder(HMAP hmap, int sheet, HSITE rotsit, HSITE frmsit, double angle)  // 15/12/17
{

 if (MessageCheck->Checked == true)
   return frmCreateBorderPro(Hmap,sheet,rotsit,frmsit,FrameTemp,angle,LogFile,2);
 return frmCreateBorderPro(Hmap,sheet,rotsit,frmsit,FrameTemp,angle,LogFile,0);
}

6. Нанести легенды...
 
Добрый день!
В данный момент существует проблема в при открытии файла формата.

Файл формата взят из c:\Program Files\Panorama\Operator12\
В чём может быть проблема?
 
Предыдущий вопрос решен.
Опечатка.
Страницы: Пред. 1 2 3 4 5
Читают тему (гостей: 4)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности