Страница 1 из 1
Создание подписи
Добавлено: 24 ноя 2009, 23:44
zuhell
Помогите создать подпись в MapInfo в виде дроби, пример на картинке

- пример
- 123.jpg (12.6 КБ) 16280 просмотров
у меня получается дробь такого вида

- как получилось
- 1234.jpg (13.12 КБ) 16278 просмотров
нужно чтобы не было больших интервалов между цифрой и чертой
Re: Создание подписи
Добавлено: 25 ноя 2009, 10:45
Andrew
получилось, но не очень красивое решение.
1. загружаем нужный слой в окно карты два раза
2. в первом слое ставим простую подпись (числитель) со сдвигов вверх на 2 пункта
3. во втором слое делаем подпись знаменателя: "_____"+Chr$(13)+Column2
и все вместе дает нужный результат
Re: Создание подписи
Добавлено: 25 ноя 2009, 11:13
zuhell
Разве нельзя сделать так, чтобы все было в одной формуле? Не создавать верх и низ подписи, а сделать одну целую подпись.
Re: Создание подписи
Добавлено: 25 ноя 2009, 11:26
Andrew
zuhell писал(а):Разве нельзя сделать так, чтобы все было в одной формуле? Не создавать верх и низ подписи, а сделать одну целую подпись.
у меня эта проблема периодически встает, пока не получилось.
Re: Создание подписи
Добавлено: 26 ноя 2009, 01:48
Boris
Боюсь простого решения не существует. В MI параметров у подписей не очень много. Равно как и у надписей. Возможное решение - только превращение подписей в надписи через набор команд на MB. Единственная возможная оптимизация - это создание линии как объекта "линия".
У надписи как-то можно узнать минимальную максимальную координаты - значит, можно найти ее центральную линию и нарисовать ее. Будет вот так:

- Untitled.gif (2.62 КБ) 16207 просмотров
Re: Создание подписи
Добавлено: 26 ноя 2009, 10:43
zuhell
я не очень хорошо знаю mapbasic, можешь написать текст команды, с помощью которой ты создал эту подпись. дальше я сам разберусь, заранее спасибо.
Re: Создание подписи
Добавлено: 21 мар 2014, 11:18
Grace2
присоединяюсь!
Re: Создание подписи
Добавлено: 21 мар 2014, 13:56
thegeo
Можно предложить следующий вариант кода:
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. Но несложно написать код, и привязать его к кнопке, который будет считывать значения А и Б и вносить подобную текстовую конструкцию для выбранных объектов.
Re: Создание подписи
Добавлено: 23 мар 2014, 21:02
thegeo
Реализация изложенного выше предложения.
Re: Создание подписи
Добавлено: 24 мар 2014, 12:00
Grace2
thegeo писал(а):Реализация изложенного выше предложения.
Спасибо. Прикольная программка, конечно, как обычно, есть несколько "хотелок", но да ладно. Вы её сами писали?
Re: Создание подписи
Добавлено: 24 мар 2014, 13:17
thegeo
Сам предложил и сам реализовал.
Можно рассмотреть и варианты обхода указанных в тексте пояснений ограничений. Например, для знаменателя указывать тот же тип привязки, что и для числителя, а вот точку привязки сдвигать на значение высоты используемого шрифта.
Re: Создание подписи
Добавлено: 24 мар 2014, 13:32
Grace2
Моя "хотелка" заключается в том, что стандартные лейблы ставятся в центроид полигона. А в 12-ой версии появилась возможность автопозиционирования лейбла! И она как показывает практика - очень полезная функция, особенно для полигонов имеющих неправильную форму.
Вот я и хотел спросить - можно ли сделать в этой программе настройку, что бы она ставила числитель (а соответственно и знаменатель) не только относительно центроида, но и в месте автопозиционирования?
Re: Создание подписи
Добавлено: 24 мар 2014, 14:20
thegeo
Нет.
У меня нет 12 версии MI, но могу предположить, что речь здесь идет о подписях (в терминах MI), а не о текстовых объектах. Разница здесь принципиальная. При «автопозиционировании», как я понимаю, решается задача оптимизации и здесь возникает вопрос, что является параметрами этой оптимизации. Ну и ваш «лейбл» не висит в пустоте его положение все также определяется относительно точки привязки, все того же центроида области. В принципе положение «лейбла» можно программно определить относительно точки привязки и потом что-то там построить. Но мне это неинтересно.
Re: Создание подписи
Добавлено: 26 май 2015, 12:41
tems-ya
Исходников нет...к сожалению. Хотел воспользоваться чужими наработками для простой визуализации подписей

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