Страница 1 из 1

MapBasic

Добавлено: 29 май 2010, 22:16
Avista
Здравствуйте.
Имеется карта со списком (ID_rex.tab). На карте-символы, в списке-разная инфа о символах (в том числе колонка "Angle", где сидят значения в долях градуса).
Подскажите, пожалуйста, как написать программу в MapBasic, чтобы повернуть объекты на угол, равный значению из колонки "Angle".
Спасибо.

Re: MapBasic

Добавлено: 30 май 2010, 19:48
Alexey
Понимаю, что вопрос про Mapbasic, но может быть вам для решения задачи поможет стандартная программа "Rotate Symbols" (загружаем в Tools - Tools Manager)
Там есть возможность повернуть символы на значение в одной из колонок таблицы.

А если вам нужно это сделать именно в коде Mapbasic - см. подробнее про функцию: Rotate(object, angle)

Re: MapBasic

Добавлено: 31 май 2010, 16:28
Avista
Спасибо за ответ.
Но в примере этой функции RotateObject = rotate(selection.obj, 45), где angle=45, т.е. фиксированное значение.
А мне необходимо повернуть один символ на 45,09766655, второй на 67,3487456, итд, причем значения углов есть
в колонке "Angle"!!!

Re: MapBasic

Добавлено: 31 май 2010, 19:56
Alexey
Получилось ли вам попробовать стандартную программу "Rotate Symbols"?
В чем не хватает ее функционала?

Re: MapBasic

Добавлено: 31 май 2010, 21:14
Avista
Программа хороша, и может помоч, Но помимо этой задачи у меня выполняются и другие. Хотелось бы
все объединить в один "*.mbx" (для автомотизации).

Re: MapBasic

Добавлено: 24 авг 2012, 20:25
Вячеслав-1
Здравствуйте!
Приходилось ли вам использовать в логических конструкциях логические функции? Может вы мне поможете найти ошибку в
несложной конструкции:
' Объявляем логическую фнкцию
Declare Function narisovan as Logical
'--------------------------------------
' Потом описываем логическую функцию
Function narisovan as Logical
...................
if ....... then
narisovan=true
else
narisovan=false
end if
................................
end Function
'--------------------------------------
' Затем применяем логическую функцию в одной из процедур
Sub Find_objects
........................
if narisovan then goto t2 end if
........................
End Sub 'Find_objects
'--------------------------------------
При этом программа транслируется без ошибок, начинает выполняться и выдаёт ошибку на строчке:
if narisovan then goto t2 end if
с сообщением "Не определена переменная или поле narisovan.
Почему здесь возникает ошибка?
Заранее благодарю за ответ. С уважением, Ярков Вячеслав.

Re: MapBasic

Добавлено: 24 авг 2012, 20:36
Slinger
Потому что в понимании mapbasic'a "narisovan" это необъявленная переменная. А если это функция и в данном случае без аргументов, то должны быть скобки. То есть:

Код: Выделить всё

Declare Function narisovan() as Logical
И соответственно:

Код: Выделить всё

if narisovan() then goto t2 end if

Re: MapBasic

Добавлено: 25 авг 2012, 19:40
Вячеслав-1
Спасибо за помощь. Но со скобками у меня не работает. А если ещё и описать, как глобальную переменную narisovan, тогда всё работает без ошибок.