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

несколько вопросов по MapInfo

Добавлено: 20 дек 2009, 18:39
Ginger
Помогите пожалуйста спрвиться с несколькоми задачками, а то у меня никак не получается

1.как вывести на экран сведения о типе и цвете линии, штриха для выбранного объекта при помощи функции ObjectInfo, и вывести информацию в в новом окне при помощи оператора NOTE???

2. как написать программу на MapBasic, которая рассчитывает расстояние между моим домом и выбранным объектом в милях и вывести информацию при помощи оператора NOTE

3. что такое скроллинг, и как написать программу на MapBasic, которая выполняет скроллинг карты так, чтобы мой дом был виден на экране. для скроллинга карты используется оператор Set Map, при этом программа должна также выполнить масштабирование карты. Масштаб и одном дюйме 200 километров

зараннее огромное спасибо

Re: несколько вопросов по MapInfo

Добавлено: 20 дек 2009, 23:44
max117
1. Для этого StyleAttr( ) с SYMBOL_COLOR, PEN_INDEX
2. взять координаты дома (х1, y1) и объектом (х2, y2) с помощью CentroidX и CentroidY, а затем с помощью Distance ( x1,y1,x2,y2, "mi")
полученным значениям присвой переменную (допустим Х) и просто выведи ее через Note X
3. Извлечь координаты дома (x,y), если одно окно, то
Set Map Scale screen_dist [ Units dist_unit ] For map_dist [ Units dist_unit ]. синтаксис см Help for MapBasic.

Re: несколько вопросов по MapInfo

Добавлено: 21 дек 2009, 04:21
Ginger
Можно поподробней и если можно с примерами???
Первый раз с эти сталкиваюсь и не получается разобраться

Re: несколько вопросов по MapInfo

Добавлено: 21 дек 2009, 06:47
Alexey
Вот пример функции, которая извлекает данные о стиле обекта.
(здесь используется часть доп. функций вроде IsPointObj - но из названия понятно что они делают)

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

Sub GetObjStyles(mObj as Object, mSYMBOL_COLOR as integer, mSYMBOL_POINTSIZE as integer ,mSYMBOL_CODE as integer, mPEN_WIDTH as integer, mPEN_PATTERN as integer, mPEN_COLOR as integer, mBRUSH_PATTERN as integer, mBRUSH_FORECOLOR as integer, mBRUSH_BACKCOLOR as integer)

	dim mSymbol as Symbol
	dim mPen as Pen
	dim mBrush as Brush

	if IsPointObj(mObj) then
		mSymbol = ObjectInfo(mObj,OBJ_INFO_SYMBOL)
		mSYMBOL_POINTSIZE = StyleAttr(mSymbol,3)
		mSYMBOL_CODE = StyleAttr(mSymbol,SYMBOL_CODE)
		mSYMBOL_COLOR= StyleAttr(mSymbol,SYMBOL_COLOR)
	end if

	if IsLineObj(mObj) then
		mPen = ObjectInfo(mObj,OBJ_INFO_PEN)
		mPEN_WIDTH = StyleAttr(mPen,PEN_WIDTH)
		mPEN_PATTERN = StyleAttr(mPen,PEN_PATTERN)
		mPEN_COLOR = StyleAttr(mPen,PEN_COLOR)
	end if

	if IsAreaObj(mObj) then
		mBrush = ObjectInfo(mObj,OBJ_INFO_BRUSH)
		mBRUSH_PATTERN = StyleAttr(mBrush,BRUSH_PATTERN)
		mBRUSH_FORECOLOR = StyleAttr(mBrush,BRUSH_FORECOLOR)
		mBRUSH_BACKCOLOR = StyleAttr(mBrush,BRUSH_BACKCOLOR)
	end if

end sub