Перейти к содержимому

Фотография

MapBasic и все что с ним связаноМожет я не один такой?!


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 388

#61
Conkistador

Conkistador
  • Гость
  • 33 сообщений
Ну сам и отвечу:
_mapInfo = (MapInfoApplication) System.Runtime.InteropServices.Marshal.GetActiveObject("MapInfo.Application");

  • 0

#62
Conkistador

Conkistador
  • Гость
  • 33 сообщений
Может кто подскажет, как из MB нарисовать например стрелку (в окне карты в косметическом слое или в анимационном слое), если можно с простым примерчиком...

Сообщение отредактировал Conkistador: 28.05.2009, 12:44:15

  • 0

#63
Jismo

Jismo
  • Свой человек
  • 975 сообщений
могу подсказать как нарисовать линию
Set CoordSys Table Layer1
Dim MyObj As Object
MyObj = CreateLine(1000, 1000, 2000, 1000)
Insert Into Cosmetic1 (Obj) Values (MyObj)
Так вставиться линия в косметический слой, можно вместо косметического слоя использовать уже существующий слой(существующую таблицу).
Перед использованием координат обязательно укажи систему координат ту, которую будешь использовать(в примере я ее беру из таблицы Layer1)

ЗЫ: может поможет тебе этот маленький примерчик :)
  • 0

#64
Conkistador

Conkistador
  • Гость
  • 33 сообщений
помог, но теперь следующий вопрос: как очистить косметический слой ?

З.Ы. покуда пробую рисовать вот так
Create line Into Window FrontWindow()(38.884,55.48864)(38.884,56) Pen(50, 2, 254)

  • 0

#65
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Delete Object From Cosmetic1
Ты в справке про delete почитай и сам разберешься :mad:
  • 0

#66
Jismo

Jismo
  • Свой человек
  • 975 сообщений
если удалять без указания строки(RowID), то удаляются все объекты с указанного слоя
  • 0

#67
Conkistador

Conkistador
  • Гость
  • 33 сообщений
да, именно то что нужно!

З.Ы. в справке хорошо искать когда знаешь хотя бы как "оно" называется....
  • 0

#68
Jismo

Jismo
  • Свой человек
  • 975 сообщений
ну чтож рад что помог.

Тогда и я задам вопросик, может кто и ответит: Если есть выделенный объект как узнать имя таблицы к которой он принадлежит?

ЗЫ: Ответ не шибко нужен но всеже пригодится
  • 0

#69
Jismo

Jismo
  • Свой человек
  • 975 сообщений
нашел ответ :mad:
Dim str As String
str = SelectionInfo(SEL_INFO_TABLENAME)

  • 0

#70
Conkistador

Conkistador
  • Гость
  • 33 сообщений
Jismo, может ты знаешь как вызвать функцию MB из .Net ?
Run Command пробовал не узнает он этих функций ... и вообще не понятно как к ним добраться или как им передать параметры...

Сообщение отредактировал Conkistador: 28.05.2009, 17:19:56

  • 0

#71
Jismo

Jismo
  • Свой человек
  • 975 сообщений
пока не знаю, но мне это и не надо так что, не искал ответа. Мне надо было наоборот, а это я уже знаю.

в сети поищи, я гдето встречал только не обратил особого внимания

Сообщение отредактировал Jismo: 28.05.2009, 17:30:22

  • 0

#72
Jismo

Jismo
  • Свой человек
  • 975 сообщений
О Кстати там в руководстве пользователя есть пример как это сделать только для VB, может поможет глава 11"Особенности MapBasic в среде Microsoft Windows" тема: "Связь с приложениями Visual Basic с использованием DDE"
  • 0

#73
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Да и вообще в руководстве много чего написано, надо просто прочитать до конца, там все есть, только может мало конкретного, а если нет того что ищещь, тогда уже надо искать в сети или спрашивать у людей, кто знает.
  • 0

#74
Conkistador

Conkistador
  • Гость
  • 33 сообщений
нет через DDE не годится...
конечно там много чего есть вот только что бы "чихнуть" надо перелистать половину справочника и еще не факт что найдешь как это сделать....
  • 0

#75
d_d_t

d_d_t
  • Завсегдатай
  • 239 сообщений

Jismo, может ты знаешь как вызвать функцию MB из .Net ?
Run Command пробовал не узнает он этих функций ... и вообще не понятно как к ним добраться или как им передать параметры...


String cmd = Format("Open Table \"{0}\"", table);
String cmd2 = Format("ObjectInfo(Selection.obj, {0})", param);
_mapInfo.Do(cmd);
String res = _mapInfo.Eval(cmd2);
_mapInfo.RunMenuCommand(menuId);

PS: не все команды можно вызывать с пом. COM, только те, которые вызываются из окна MapBasic
Где-то в сети есть .cs файл с определениями MapInfo-шных констант. Если не найдешь, могу выслать.
  • 0

#76
Conkistador

Conkistador
  • Гость
  • 33 сообщений
а возможно такой код как то выполнить из дот нета ?
Fetch Rec  row_num From tmp_demo 
	  o_new_line = tmp_demo.obj 

	  Alter Object o_new_line Geography OBJ_GEO_LINEBEGX, trackpoint.longitude
	  Alter Object o_new_line Geography OBJ_GEO_LINEBEGY, trackpoint.latitude
	  Alter Object o_new_line Geography OBJ_GEO_LINEENDX, trackpoint.longitude + 0.0001
	  Alter Object o_new_line Geography OBJ_GEO_LINEENDY, trackpoint.latitude + 0.0001

	  Update tmp_demo  
		Set obj = o_new_line 
		Where Rowid = row_num

а именно непонятно как получить и передать o_new_line

Сообщение отредактировал Conkistador: 29.05.2009, 16:42:06

  • 0

#77
Conkistador

Conkistador
  • Гость
  • 33 сообщений

PS: не все команды можно вызывать с пом. COM, только те, которые вызываются из окна MapBasic
Где-то в сети есть .cs файл с определениями MapInfo-шных констант. Если не найдешь, могу выслать.


Файлик бы очень не помешал.... max(подчеркивание)hht(зверь)mail(точка)ru
  • 0

#78
d_d_t

d_d_t
  • Завсегдатай
  • 239 сообщений

а возможно такой код как то выполнить из дот нета ?

Fetch Rec  row_num From tmp_demo 
	  o_new_line = tmp_demo.obj 

	  Alter Object o_new_line Geography OBJ_GEO_LINEBEGX, trackpoint.longitude
	  Alter Object o_new_line Geography OBJ_GEO_LINEBEGY, trackpoint.latitude
	  Alter Object o_new_line Geography OBJ_GEO_LINEENDX, trackpoint.longitude + 0.0001
	  Alter Object o_new_line Geography OBJ_GEO_LINEENDY, trackpoint.latitude + 0.0001

	  Update tmp_demo  
		Set obj = o_new_line 
		Where Rowid = row_num

а именно непонятно как получить и передать o_new_line


конечно можно.
Просто o_new_line получать и передавать обратно не нужно. Вместо этого объявить переменную прям там в MI:
_mapInfo.Do("Dim o_new_line As Object")
... кодим, кодим
_mapInfo.Do("UnDim o_new_line")

Сообщение отредактировал d_d_t: 29.05.2009, 17:07:21

  • 0

#79
Conkistador

Conkistador
  • Гость
  • 33 сообщений
спасибо !

_mapInfo.Do("UnDim o_new_line")

это просто шедевр языко-строения :-)
  • 0

#80
Jismo

Jismo
  • Свой человек
  • 975 сообщений
Может кто сталкивался и не знает как узнать открыта ли та или иная таблица. Я написал функцию, с помощью которой, Вы можете узнать это :) :
Declare Function IsTableExist(MyTabName As String) As Logical

Function IsTableExist(MyTabName As String) As Logical
'******************************************************
	 Dim i, TabCount As Integer		 
	 TabCount = NumTables()	'Число открытых таблиц
	 IsTableExist = False
	 For i = 1 To TabCount	 'цикл по открытым таблицам
		  If TableInfo(i, TAB_INFO_NAME) = MyTabName Then
			   IsTableExist = True	
			   Exit For			
		  End If
	 Next
End Function

  • 0


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.