Создание подписи
-
- Участник
- Сообщения: 52
- Зарегистрирован: 24 ноя 2009, 22:53
- Репутация: 0
Создание подписи
Помогите создать подпись в MapInfo в виде дроби, пример на картинке
у меня получается дробь такого вида
нужно чтобы не было больших интервалов между цифрой и чертой-
- Активный участник
- Сообщения: 134
- Зарегистрирован: 01 окт 2009, 08:52
- Репутация: 3
- Откуда: Москва
Re: Создание подписи
получилось, но не очень красивое решение.
1. загружаем нужный слой в окно карты два раза
2. в первом слое ставим простую подпись (числитель) со сдвигов вверх на 2 пункта
3. во втором слое делаем подпись знаменателя: "_____"+Chr$(13)+Column2
и все вместе дает нужный результат
1. загружаем нужный слой в окно карты два раза
2. в первом слое ставим простую подпись (числитель) со сдвигов вверх на 2 пункта
3. во втором слое делаем подпись знаменателя: "_____"+Chr$(13)+Column2
и все вместе дает нужный результат
- Вложения
-
- результат
- snap653.jpg (1.25 КБ) 15167 просмотров
-
- Участник
- Сообщения: 52
- Зарегистрирован: 24 ноя 2009, 22:53
- Репутация: 0
Re: Создание подписи
Разве нельзя сделать так, чтобы все было в одной формуле? Не создавать верх и низ подписи, а сделать одну целую подпись.
-
- Активный участник
- Сообщения: 134
- Зарегистрирован: 01 окт 2009, 08:52
- Репутация: 3
- Откуда: Москва
Re: Создание подписи
у меня эта проблема периодически встает, пока не получилось.zuhell писал(а):Разве нельзя сделать так, чтобы все было в одной формуле? Не создавать верх и низ подписи, а сделать одну целую подпись.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание подписи
Боюсь простого решения не существует. В MI параметров у подписей не очень много. Равно как и у надписей. Возможное решение - только превращение подписей в надписи через набор команд на MB. Единственная возможная оптимизация - это создание линии как объекта "линия".
У надписи как-то можно узнать минимальную максимальную координаты - значит, можно найти ее центральную линию и нарисовать ее. Будет вот так:
У надписи как-то можно узнать минимальную максимальную координаты - значит, можно найти ее центральную линию и нарисовать ее. Будет вот так:
-
- Участник
- Сообщения: 52
- Зарегистрирован: 24 ноя 2009, 22:53
- Репутация: 0
Re: Создание подписи
я не очень хорошо знаю mapbasic, можешь написать текст команды, с помощью которой ты создал эту подпись. дальше я сам разберусь, заранее спасибо.
-
- Участник
- Сообщения: 63
- Зарегистрирован: 18 янв 2011, 07:28
- Репутация: 0
- Откуда: г.Пермь
- Контактная информация:
Re: Создание подписи
присоединяюсь!
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Создание подписи
Можно предложить следующий вариант кода:
Set Style font MakeFont("Arial Cyr",4,9,0,-1)
Insert Into regs (Obj) Values (CreateText(frontWindow(), 3001562.460,1002281.332, "полеА", 0,3,5))
Set Style font MakeFont("Arial Cyr",0,9,0,-1)
Insert Into regs (Obj) Values (CreateText(frontWindow(), 3001562.460,1002281.332, "полеБ", 0,5,5))
здесь
3001562.460,1002281.332 – координаты X и Y (MI) точки привязки;
Regs – имя таблицы принимающей текстовые объекты;
полеА, полеБ – строки, считанные из таблицы, где хранятся соответствующие атрибуты.
Последовательно выполнив, эти операторы в окне MB, можно получить следующий результат (см. рис.).
Получили два текстовых объекта (нужно не забывать о поведении этих объектов при изменении масштаба).
Не думаю, что кто-то будет массово использовать этот код в окне MB. Но несложно написать код, и привязать его к кнопке, который будет считывать значения А и Б и вносить подобную текстовую конструкцию для выбранных объектов.
Set Style font MakeFont("Arial Cyr",4,9,0,-1)
Insert Into regs (Obj) Values (CreateText(frontWindow(), 3001562.460,1002281.332, "полеА", 0,3,5))
Set Style font MakeFont("Arial Cyr",0,9,0,-1)
Insert Into regs (Obj) Values (CreateText(frontWindow(), 3001562.460,1002281.332, "полеБ", 0,5,5))
здесь
3001562.460,1002281.332 – координаты X и Y (MI) точки привязки;
Regs – имя таблицы принимающей текстовые объекты;
полеА, полеБ – строки, считанные из таблицы, где хранятся соответствующие атрибуты.
Последовательно выполнив, эти операторы в окне MB, можно получить следующий результат (см. рис.).
Получили два текстовых объекта (нужно не забывать о поведении этих объектов при изменении масштаба).
Не думаю, что кто-то будет массово использовать этот код в окне MB. Но несложно написать код, и привязать его к кнопке, который будет считывать значения А и Б и вносить подобную текстовую конструкцию для выбранных объектов.
- Вложения
-
- rna_00174.png (549 байт) 13577 просмотров
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Создание подписи
Реализация изложенного выше предложения.
- Вложения
-
- combiText.rar
- (48.08 КБ) 468 скачиваний
-
- Участник
- Сообщения: 63
- Зарегистрирован: 18 янв 2011, 07:28
- Репутация: 0
- Откуда: г.Пермь
- Контактная информация:
Re: Создание подписи
Спасибо. Прикольная программка, конечно, как обычно, есть несколько "хотелок", но да ладно. Вы её сами писали?thegeo писал(а):Реализация изложенного выше предложения.
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Создание подписи
Сам предложил и сам реализовал.
Можно рассмотреть и варианты обхода указанных в тексте пояснений ограничений. Например, для знаменателя указывать тот же тип привязки, что и для числителя, а вот точку привязки сдвигать на значение высоты используемого шрифта.
Можно рассмотреть и варианты обхода указанных в тексте пояснений ограничений. Например, для знаменателя указывать тот же тип привязки, что и для числителя, а вот точку привязки сдвигать на значение высоты используемого шрифта.
-
- Участник
- Сообщения: 63
- Зарегистрирован: 18 янв 2011, 07:28
- Репутация: 0
- Откуда: г.Пермь
- Контактная информация:
Re: Создание подписи
Моя "хотелка" заключается в том, что стандартные лейблы ставятся в центроид полигона. А в 12-ой версии появилась возможность автопозиционирования лейбла! И она как показывает практика - очень полезная функция, особенно для полигонов имеющих неправильную форму.
Вот я и хотел спросить - можно ли сделать в этой программе настройку, что бы она ставила числитель (а соответственно и знаменатель) не только относительно центроида, но и в месте автопозиционирования?
Вот я и хотел спросить - можно ли сделать в этой программе настройку, что бы она ставила числитель (а соответственно и знаменатель) не только относительно центроида, но и в месте автопозиционирования?
-
- Активный участник
- Сообщения: 160
- Зарегистрирован: 17 янв 2012, 18:51
- Репутация: 74
Re: Создание подписи
Нет.
У меня нет 12 версии MI, но могу предположить, что речь здесь идет о подписях (в терминах MI), а не о текстовых объектах. Разница здесь принципиальная. При «автопозиционировании», как я понимаю, решается задача оптимизации и здесь возникает вопрос, что является параметрами этой оптимизации. Ну и ваш «лейбл» не висит в пустоте его положение все также определяется относительно точки привязки, все того же центроида области. В принципе положение «лейбла» можно программно определить относительно точки привязки и потом что-то там построить. Но мне это неинтересно.
У меня нет 12 версии MI, но могу предположить, что речь здесь идет о подписях (в терминах MI), а не о текстовых объектах. Разница здесь принципиальная. При «автопозиционировании», как я понимаю, решается задача оптимизации и здесь возникает вопрос, что является параметрами этой оптимизации. Ну и ваш «лейбл» не висит в пустоте его положение все также определяется относительно точки привязки, все того же центроида области. В принципе положение «лейбла» можно программно определить относительно точки привязки и потом что-то там построить. Но мне это неинтересно.
-
- Интересующийся
- Сообщения: 39
- Зарегистрирован: 28 янв 2015, 22:07
- Репутация: 1
- Откуда: Воронеж
Re: Создание подписи
Исходников нет...к сожалению. Хотел воспользоваться чужими наработками для простой визуализации подписей Кому нужны скомпилированные программы?
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание подписи
Уточним вопрос вам хочется, что бы это происходило В какой момент?Grace2 писал(а):Моя "хотелка" заключается в том, что стандартные лейблы ставятся в центроид полигона. А в 12-ой версии появилась возможность автопозиционирования лейбла! И она как показывает практика - очень полезная функция, особенно для полигонов имеющих неправильную форму.
Вот я и хотел спросить - можно ли сделать в этой программе настройку, что бы она ставила числитель (а соответственно и знаменатель) не только относительно центроида, но и в месте автопозиционирования?
Как я понимаю программа работает с "надписями" (текстовыми объектами), которые располагаются в ручную. В точке автопозиционирования бывают только "подписи". Это я так, повторяюсь. Но в 12 версии уже НЕТ программы дял перевода "подписей" в "надписи"? Потому как если есть, то задача решается в два хода.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей