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

Александр Кружков (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Александр Кружков
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 148 След.
Вызов паспорта карты двойным кликом мышью по её названию в легенде., Завершение редактирования паспорта карты Ctrl+Enter
 
[QUOTE]Андрей Ильин написал:
1) Часто приходится редактировать паспорт карты.[/QUOTE]
Планируется добавить вызов Паспорта карты, выбранной в Легенде (Список карт), по кнопке F8. Двойной клик может быть задействован для включения и отключения отображения карты.
Сейчас Паспорт карты открывается при выборе предпоследней кнопки "Параметры проекции" в меню закладки "Карты".
Редактор классификатора. Разные иконки (пиктограммы), горячие клавиши на редактор классификатора
 
1. Иконки будут приведены к единому виду (в том числе и иконка "Классификатор" в диалоге выбора объекта). Изображение иконки скорее будет иметь вид, используемый в легенде.
2. Добавление быстрых комбинаций вызова редактора классификатора не планируется.
Печать без вывода диалога печати, Не печатается катра без вывода диоалога печати
 
1. Для печати нескольких страниц необходимо в INI-файл карты в раздел "PRINT" записать список номеров печатаемых страниц "PagesCollect" (при отсутствии записи печатается страница 1):

[PRINT]
PagesCollect=1,2,4,5

mapGetMapIniName(hMap) - запросить имя INI-файла.

2. IMGTEXT_SCALE       // Признак растягивания по метрике - высота вычисляется исходя из длины отрезка [x; y] - [x+1000; y+1000] (в масштабе печатаемой карты). Если 1000 заменить на 2000, то подпись увеличится в 2 раза.
При выборе флага IMGTEXT_SCALE параметр parmText.Text.Height игнорируется.

Разница размера шрифта может объясняться разными масштабами печати (printparm.Scale) - в диалоге масштаб печати может изменяться автоматически - зависит от выбранных настроек.
Признак "Не сжимать", который устанавливается функцией mapSetObjectPress, на подписи, растягиваемые по метрике (IMGTEXT_SCALE), не действует.
функция mapCreateObjectsCross()
 
Предлагаю воспользоваться набором оверлейных операций (см. crossapi.h). Пример:
[CODE] // Создать пустой объект для записи шаблона для обрезки объектов
 HOBJ templet = mapCreateSiteObject(hmap, hsite, IDDOUBLE2, 0);

 // Создать пустой объект для записи обрабатываемого объекта
 HOBJ object = mapCreateSiteObject(hmap, hsite, IDDOUBLE2, 0);

 // Создать пустой объект для записи результата
 // (для записи результата рекомендуется тип IDDOUBLE2 или IDDOUBLE3)
 HOBJ objectpart = mapCreateSiteObject(hmap, hsite, IDDOUBLE2, 0);

 // Запросить объект карты
 mapReadObjectByNumber(hmap, hsite, templet, 1, templetnumber);

 // Запросить объект карты
 mapReadObjectByNumber(hmap, hsite, object, 1, objectnumber);

 // Установить тип результирующего объекта равным типу обрабатываемого
 mapDescribeObject(objectpart, mapObjectCode(object));

 // Создать объект оверлейных операций
 HOVL hovl = ovlCreate(hmap, 1, DOUBLENULL);

 if (hovl == 0)
 {
   // Ошибка создания объекта оверлейных операций
 }
 else
 {
   // Установить шаблон для оверлейных операций
   // (по основному контуру объекта, с согласованием контура
   //  шаблона с обрабатываемыми объектами)
   int res = ovlSetTemplet(hovl, templet, 0, 1);

   if (res == 0)
   {
     // Запросить код ошибки
     if (ovlGetErrorCode(hovl) != 0)
     {
       // Запросить описание ошибки для вывода в окно или записи в журнал
       ::MessageBox(0, ovlGetError(hovl), "", MB_OK);
     }
   }
   else
   {
     int errorcode = 0;

     // Установить обрабатываемый объект и метод обработки
     // (все контура, результат - все площадные контура)
     int location = ovlSetObjectCross(hovl, object, -1, 0.0, 0, METHOD_SQUARE, 0);

     // Расположение объекта относительно шаблона
     if (location == 0)
     {
       // Запросить код ошибки
       if (ovlGetErrorCode(hovl) != 0)
       {
         // Запросить описание ошибки
         ::MessageBox(0, ovlGetError(hovl), "", MB_OK);
       }
     }
     else if (location == 1)
     {
       // Объект внутри шаблона
       // ...
     }
     else if (location == 2)
     {
       // Объект вне шаблона
       // ...
     }
     else  // location == 3 или 4 (Объект пересекается с шаблоном)
     {
       int side;

       while(1)
       {
         // Запросить очередную часть разрезаемого объекта
         side = ovlGetNextObject(hovl, objectpart);

         if (side == 0)
         {
           // Запросить код ошибки
           if (ovlGetErrorCode(hovl) != 0)
           {
             // Запросить описание ошибки
             ::MessageBox(0, ovlGetError(hovl), "", MB_OK);
             break;
           }

           // Запросить метрику основного контура шаблона, согласованного
           // с частями разрезаемого объекта
           if (ovlGetAdjustTemplet(hovl, templet, 0))
           {
             // Сохранить объект, если контур шаблона обновился
             mapCommitObject(templet);
           }
           else
           {
             // Запросить код ошибки
             if (ovlGetErrorCode(hovl) != 0)
             {
               // Запросить описание ошибки
               ::MessageBox(0, ovlGetError(hovl), "", MB_OK);
             }
           }

           // Поиск частей разрезаемого объекта закончен
           break;
         }

         // Установить разные коды объектов для результирующих объектов
         if (side == 1)
         {
           // Объект, находящийся внутри шаблона
           mapRegisterObjectByKey(objectpart, "L1000000008");
         }
         else
         {
           // Объект, находящийся вне шаблона
           mapRegisterObjectByKey(objectpart, "L1000000007");
         }

         // Сохранить объект objectpart
         mapCommitObjectAsNew(objectpart);
       }
     }
   }

   // Освободить объект оверлейных операций
   ovlFree(hovl);
 }

 // Освободить объекты
 mapFreeObject(objectpart);
 mapFreeObject(object);
 mapFreeObject(templet);[/CODE]
Печать без вывода диалога печати, Не печатается катра без вывода диоалога печати
 
Проверили печать без вызова диалога - печать выполняется.
Возможные причины отсутствия изображения - ошибки при инициализации полей структуры:

1. printparm.TypeOutput = MPT_NORMAL;  // 3 (такого типа нет в MAPPRINT_OUTPUT)

   В описании структуры написано:

 char TypePrint;       // Тип печати (см. MAPPRINT_TYPE) MPT_NORMAL = 3, MPT_TRANSPARENT = 4, MPT_CONTOUR = 5
 char TypeOutput;      // Тип вывода (см. MAPPRINT_OUTPUT)  MPO_VECTORIAL = 0, MPO_RASTERIAL = 1, MPO_VECTORIALEX = 4

2. Ошибочная область вывода (printparm.PlaneFrame). При открытии диалога ошибочная область (нулевая или вырожденная: X1 >= X2 или Y1 >= Y2) может исправиться автоматически (устанавливается по габаритам карты).
3. Ошибочный масштаб печати. При открытии диалога ошибочный масштаб может исправиться автоматически.
4. При печати карты в указанном масштабе изображение не помещается на одну страницу, а на первую страницу не попадают объекты.
5. Печатаются растровые данные и не установлен растровый тип вывода (printparm.TypeOutput = MPO_RASTERIAL).

В качестве теста прошу включить флаг печати рамки печатаемой области (printparm.Border = 1). Напечаталась ли полная прямоугольная рамка?

Примечание: параметры размеров страницы не используются (printparm.PaperWidth, printparm.PaperHeight) - используется формат установленный для используемого устройства (HPRINTER printer) по умолчанию, либо установленный пользователем средствами диалога печати.
Разрезка площадного площадным
 
Прошу подсказать, о каком режиме или функции идет речь?
Редактор векторного знака
 
Исправлена ошибка отображения текста семантики типа "классификатор"
(при нулевом значении ключа отображался "0").

См. ГИС  Панорама 12 от 14.08.2019 [URL=https://gisinfo.ru/download/download.htm]https://gisinfo.ru/download/download.htm[/URL]

[QUOTE]KFF написал:
Ещё один вопрос - куда делся инструмент перемещение элемента?[/QUOTE]
1. Необходимо выделить 1 или более элементов (двойным кликом в правом списке элементов знака).
2. Инструмент "Перемещение поля" ("лапа").
Версия 12.7.2 При открытии окна "Создание объекта" изменился порядок расположение знаков.
 
Обычно объекты не пронумерованы и иногда по названию объекта невозможно точно выбрать требуемый объект. Ключ объекта является однозначным идентификатором. Поэтому ключи добавлены в начало строк. В ближайшее время планируется добавить опцию "Показывать ключи". По умолчанию опция будет выключена.
Ошибка отображения шрифтов(казахский язык) при формирования PS файла
 
Версия 11 была содержала ограниченную на поддержку нескольких европейских языков и в основном ориентировалась на поддержку кириллицы.
Версия 12 ориентирована на поддержку кодировки UNICODE, которая поддерживает знаки почти всех письменных языков мира.
Ошибка отображения шрифтов(казахский язык) при формирования PS файла
 
Добрый день! Проверил отображение подписей:

1. Установил шрифт Bm-431_каз_9.ttf в ОС Windows
2. Добавил шрифт в классификатор.
3. Создал карту с подготовленным классификатором и нанес подписи двумя шрифтами "Bm-431" и "Bm-431_каз".

Так как казахской кодовой страницы нет, то шрифт должен содержать символы в кодах UNICODE.
При отображении "Bm-431" видно, что казахские символы ("Қ" и "ң") отображаются каким-то другим утолщенным шрифтом, так как в шрифте "Bm-431" данные символы не обнаружены. Если символы не найдены, то подмену символов Windows выполняет автоматически.
При отображении "Bm-431_каз" видно, что символы, имеющие коды в диапазоне ASCII (от 0 до 127) отображаются правильно (из "Bm-431_каз"). Остальные символы отображаются каким-то другим шрифтом, так как в шрифте "Bm-431_каз" данные символы не обнаружены.
Даже при обычном отображении шрифт отображается неправильно. При печати в PostScript символы будут тоже подменяться символы из других шрифтов, так как "Bm-431_каз" не содержит правильного кодирования символов.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 148 След.



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

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