Создание подписи

MapInfo, MapBasic
Ответить
zuhell
Участник
Сообщения: 52
Зарегистрирован: 24 ноя 2009, 22:53
Репутация: 0

Создание подписи

Сообщение zuhell » 24 ноя 2009, 23:44

Помогите создать подпись в MapInfo в виде дроби, пример на картинке
123.jpg
пример
123.jpg (12.6 КБ) 15195 просмотров
у меня получается дробь такого вида
1234.jpg
как получилось
1234.jpg (13.12 КБ) 15193 просмотра
нужно чтобы не было больших интервалов между цифрой и чертой

Andrew
Активный участник
Сообщения: 134
Зарегистрирован: 01 окт 2009, 08:52
Репутация: 3
Откуда: Москва

Re: Создание подписи

Сообщение Andrew » 25 ноя 2009, 10:45

получилось, но не очень красивое решение.
1. загружаем нужный слой в окно карты два раза
2. в первом слое ставим простую подпись (числитель) со сдвигов вверх на 2 пункта
3. во втором слое делаем подпись знаменателя: "_____"+Chr$(13)+Column2
и все вместе дает нужный результат
Вложения
snap653.jpg
результат
snap653.jpg (1.25 КБ) 15167 просмотров

zuhell
Участник
Сообщения: 52
Зарегистрирован: 24 ноя 2009, 22:53
Репутация: 0

Re: Создание подписи

Сообщение zuhell » 25 ноя 2009, 11:13

Разве нельзя сделать так, чтобы все было в одной формуле? Не создавать верх и низ подписи, а сделать одну целую подпись.

Andrew
Активный участник
Сообщения: 134
Зарегистрирован: 01 окт 2009, 08:52
Репутация: 3
Откуда: Москва

Re: Создание подписи

Сообщение Andrew » 25 ноя 2009, 11:26

zuhell писал(а):Разве нельзя сделать так, чтобы все было в одной формуле? Не создавать верх и низ подписи, а сделать одну целую подпись.
у меня эта проблема периодически встает, пока не получилось.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Создание подписи

Сообщение Boris » 26 ноя 2009, 01:48

Боюсь простого решения не существует. В MI параметров у подписей не очень много. Равно как и у надписей. Возможное решение - только превращение подписей в надписи через набор команд на MB. Единственная возможная оптимизация - это создание линии как объекта "линия".
У надписи как-то можно узнать минимальную максимальную координаты - значит, можно найти ее центральную линию и нарисовать ее. Будет вот так:
Untitled.gif
Untitled.gif (2.62 КБ) 15122 просмотра

zuhell
Участник
Сообщения: 52
Зарегистрирован: 24 ноя 2009, 22:53
Репутация: 0

Re: Создание подписи

Сообщение zuhell » 26 ноя 2009, 10:43

я не очень хорошо знаю mapbasic, можешь написать текст команды, с помощью которой ты создал эту подпись. дальше я сам разберусь, заранее спасибо.

Grace2
Участник
Сообщения: 63
Зарегистрирован: 18 янв 2011, 07:28
Репутация: 0
Откуда: г.Пермь
Контактная информация:

Re: Создание подписи

Сообщение Grace2 » 21 мар 2014, 11:18

присоединяюсь!

thegeo
Активный участник
Сообщения: 160
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Создание подписи

Сообщение thegeo » 21 мар 2014, 13:56

Можно предложить следующий вариант кода:
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
rna_00174.png (549 байт) 13577 просмотров

thegeo
Активный участник
Сообщения: 160
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Создание подписи

Сообщение thegeo » 23 мар 2014, 21:02

Реализация изложенного выше предложения.
Вложения
combiText.rar
(48.08 КБ) 468 скачиваний

Grace2
Участник
Сообщения: 63
Зарегистрирован: 18 янв 2011, 07:28
Репутация: 0
Откуда: г.Пермь
Контактная информация:

Re: Создание подписи

Сообщение Grace2 » 24 мар 2014, 12:00

thegeo писал(а):Реализация изложенного выше предложения.
Спасибо. Прикольная программка, конечно, как обычно, есть несколько "хотелок", но да ладно. Вы её сами писали?

thegeo
Активный участник
Сообщения: 160
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Создание подписи

Сообщение thegeo » 24 мар 2014, 13:17

Сам предложил и сам реализовал.
Можно рассмотреть и варианты обхода указанных в тексте пояснений ограничений. Например, для знаменателя указывать тот же тип привязки, что и для числителя, а вот точку привязки сдвигать на значение высоты используемого шрифта.

Grace2
Участник
Сообщения: 63
Зарегистрирован: 18 янв 2011, 07:28
Репутация: 0
Откуда: г.Пермь
Контактная информация:

Re: Создание подписи

Сообщение Grace2 » 24 мар 2014, 13:32

Моя "хотелка" заключается в том, что стандартные лейблы ставятся в центроид полигона. А в 12-ой версии появилась возможность автопозиционирования лейбла! И она как показывает практика - очень полезная функция, особенно для полигонов имеющих неправильную форму.
Вот я и хотел спросить - можно ли сделать в этой программе настройку, что бы она ставила числитель (а соответственно и знаменатель) не только относительно центроида, но и в месте автопозиционирования?

thegeo
Активный участник
Сообщения: 160
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

Re: Создание подписи

Сообщение thegeo » 24 мар 2014, 14:20

Нет.
У меня нет 12 версии MI, но могу предположить, что речь здесь идет о подписях (в терминах MI), а не о текстовых объектах. Разница здесь принципиальная. При «автопозиционировании», как я понимаю, решается задача оптимизации и здесь возникает вопрос, что является параметрами этой оптимизации. Ну и ваш «лейбл» не висит в пустоте его положение все также определяется относительно точки привязки, все того же центроида области. В принципе положение «лейбла» можно программно определить относительно точки привязки и потом что-то там построить. Но мне это неинтересно.

tems-ya
Интересующийся
Сообщения: 39
Зарегистрирован: 28 янв 2015, 22:07
Репутация: 1
Откуда: Воронеж

Re: Создание подписи

Сообщение tems-ya » 26 май 2015, 12:41

Исходников нет...к сожалению. Хотел воспользоваться чужими наработками для простой визуализации подписей :mrgreen: Кому нужны скомпилированные программы?

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Создание подписи

Сообщение Boris » 29 май 2015, 19:14

Grace2 писал(а):Моя "хотелка" заключается в том, что стандартные лейблы ставятся в центроид полигона. А в 12-ой версии появилась возможность автопозиционирования лейбла! И она как показывает практика - очень полезная функция, особенно для полигонов имеющих неправильную форму.
Вот я и хотел спросить - можно ли сделать в этой программе настройку, что бы она ставила числитель (а соответственно и знаменатель) не только относительно центроида, но и в месте автопозиционирования?
Уточним вопрос вам хочется, что бы это происходило В какой момент?
Как я понимаю программа работает с "надписями" (текстовыми объектами), которые располагаются в ручную. В точке автопозиционирования бывают только "подписи". Это я так, повторяюсь. Но в 12 версии уже НЕТ программы дял перевода "подписей" в "надписи"? Потому как если есть, то задача решается в два хода.

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей