www.map-info.ru :: Просмотр темы - Необходима помощь в MapBasic
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Avista



Зарегистрирован: 26.12.2009
Сообщения: 8

СообщениеДобавлено: Сб Дек 26, 2009 2:29 pm    Заголовок сообщения: Необходима помощь в MapBasic Добавить ответ со ссылкой на данный текст

Здравствуйте! Я столкнулся с проблемой, которую самостоятельно не преодолеть.
На существующие точечные объекты надо "навесить" или заменить эти точечные объекты конкретными областями и коллекциями.
Как поменять точки на другие точки можно, а вот, например, вручную поставить 1500 областей в виде "бублика" (высокоствольный лес, столбы) - трудно. Проблема родилась из-за требований заказчика. При переводе Autocad-MapInfo точечные объекты нужно отображать масштабируемыми условными знаками. Поэтому приходится объединять примитивы в MI руками, чтобы получить ""луг", "заросли кустов" и т.д.
Существует хорошая утилита на http://www.glab2007.narod.ru/d/mu.html.
"КОПИЯ С ТОЧКОЙ" Дмитрия Мазурова. Принцип работы ее основан на копировании любого объекта с базовой точкой в буфер обмена (как в Autocad) и вставка этого объекта в любое место карты. Пока она и спасает. Но, например, после работы с слоем "13_Растительность"уже ничего в этой жизни не хочется...
Если кто-нибудь может помочь или утилитой, или указать операторы, или хотя бы направить ход мыслей в нужном направлении - Дай Бог Вам Здоровья и долгих лет!!!
Можно писать на Avista02@rambler.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Сб Дек 26, 2009 5:51 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вам не заливки площадных объектов точечными условными знаками нужны?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Avista



Зарегистрирован: 26.12.2009
Сообщения: 8

СообщениеДобавлено: Сб Дек 26, 2009 7:55 pm    Заголовок сообщения: Необходима помощь в MapBasic Добавить ответ со ссылкой на данный текст

Нет, нет. У меня составлены графические таблицы в MI где я, после "универсального транслятора" из Autocad'а, создал все точечные условные знаки с семантикой (например 5g_001) путем объединения элементов УЗ. Результатом является либо полилиния, либо коллекция (линия и площадь) если какую-то часть УЗ надо залить.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_Y



Зарегистрирован: 28.11.2008
Сообщения: 122

СообщениеДобавлено: Вс Дек 27, 2009 11:52 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Пишите программу на Mapbasic-е, которая это делает. Программа тривиальная.

Fetch First From selection
do While not EOT(Selection)
RID = Selection.RowID
R = Selection.obj
X = CentroidX(R)
Y = CentroidY(R)
do Case Selection.Ваша_семантика
Case "5g_001" Create Rect Into Variable R (X-10, Y-10)(X+10, Y+10)
end Case
Update Selection Set obj = R Where RowID = RID
Fetch Next From Selection
loop

Для каждой вашей семантики создаете нужный объект. Однако нужно учитывать то, для какого масштаба это создается.
Не проще ли заlать точкам оформление условного знака из шрифта, как это все обычно делают?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Avista



Зарегистрирован: 26.12.2009
Сообщения: 8

СообщениеДобавлено: Вс Дек 27, 2009 5:08 pm    Заголовок сообщения: Необходима помощь в MapBasic Добавить ответ со ссылкой на данный текст

Большое Спасибо за помощь!
Про УЗ из шрифтов я писал. Требование заказчика. Причем 1:10 000 - пожалуйста делайте UZdorogi.ttf, UZrelief.ttf и т.д., а вот в 1:500 - 1:5 000
планах необходимы масштабируемые точечные УЗ.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Avista



Зарегистрирован: 26.12.2009
Сообщения: 8

СообщениеДобавлено: Чт Фев 11, 2010 9:56 pm    Заголовок сообщения: Необходима помощь в MapBasic Добавить ответ со ссылкой на данный текст

К сожалению - не получилось!
Пишу так:
"""""Sub Add01sub
Dim RID, X, Y, R, i, msg As Integer
i = "5g_002"

Fetch First From selection
do While not EOT(Selection)
RID = Selection.RowID
R = Selection.obj
X = CentroidX(R)
Y = CentroidY(R)
Do Case Selection.COL(i)
Case "5g_003"
create rect into variable R (X-10, Y-10)(X+10, Y+10)
End Case
Update Selection Set obj = R Where RowID = RID
Fetch Next From Selection
loop

End sub"""""

Ругается на create rect into variable R (X-10, Y-10)(X+10, Y+10)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Пт Фев 12, 2010 11:11 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

R должна быть переменной типа Object, а не Integer
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Avista



Зарегистрирован: 26.12.2009
Сообщения: 8

СообщениеДобавлено: Вс Фев 14, 2010 12:00 am    Заголовок сообщения: Необходима помощь в MapBasic Добавить ответ со ссылкой на данный текст

НЕ ПОЛУЧАЕТСЯ!!!
Рисуется вместо точек огромный прямоугольник.
Конечно, может быть я плохо объяснил мою проблему
Вот ссылка на рисунок из MapInfo:

http://s11.radikal.ru/i183/1002/32/05e74dfbacd3.jpg

точки-звездочки имеют семантику (например 5g_003)
Коллекция-куст имеет свою семантику (например 0042)
Мне необходимо, чтобы вместо точек-звездочек появились кусты.

Спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Пн Фев 15, 2010 10:21 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вам для примера дали код, в котором на месте точки формируется другой объект. Вместо создания прямоугольника (Rect)
create rect into variable R (X-10, Y-10)(X+10, Y+10)
подставляйте создание объекта из нескольких кругов, хоть из Region, хоть из Circle. Посмотрите как в MapBasic создаются различные объекты - Create...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Avista



Зарегистрирован: 26.12.2009
Сообщения: 8

СообщениеДобавлено: Чт Мар 11, 2010 9:35 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Здравствуйте! Подскажи, пожалуйста, почему не работает "Create Collection". Пишу так:
Include "mapbasic.def"
Declare Sub Main
Declare Sub Add03sub
Global on_bstyle As Brush

'***************************************************************************************************************************************************
Sub main
Create Menu "Точки" As
"&здания" Calling Add03sub,
"В&ыход",
"&О программе..."
Alter Menu Bar Add "Точки"
End sub

Sub Add03sub
Dim i as Integer
Dim X,Y as Float
Dim my_obj,my_reg, as Object
Dim myfont, myfont1, myfont2 As Font
Dim next_one As SmallInt
Dim mypen, mypen1, mypen2 As Pen
mypen = MakePen(2, 2, BLACK)
on_bstyle = MakeBrush(2, BLACK, WHITE)
myfont = MakeFont ("D431", 0, 12, BLack, -1)

'Работаем с tyu
select * from _здания where "recto" = "tyu" into Q001 Noselect
Insert Into _13_Building ( COL20) Select COL4 From Q001
select * from _здания where "recto" = "tyu" into Selection
If SelectionInfo(SEL_INFO_NROWS) > 0 then
Set CoordSys Table Selection
Set Distance Units "m"
For i = 1 To SelectionInfo(SEL_INFO_NROWS)
Fetch Rec i From Selection
my_obj = Selection.Obj
If ObjectInfo( my_obj , OBJ_INFO_TYPE ) = 5 then
X = CentroidX(my_obj)
Y = CentroidY(my_obj)
Create Collection Into Variable my_reg
Pline
3
(X-15, Y)(X , Y)(X+15, Y)
Pen (1,2,0)
Region 1
4
(X+1.256, Y)
(X+1.321, Y+0.115)
(X+1.376, Y+0.23)
(X+1.426, Y+0.355)
Pen (1,2,0)
Brush on_bstyle
Update Selection Set Obj = my_reg,"recto" = "tyu" where RowId = i
end if
next
end if
End Sub
Пишет, что неправильное предложение в Collection
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Пн Мар 15, 2010 2:03 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Предложение Create Collection правильное. А вот что у вас с выборками - непонятно. Возможно в цикле For теряется выборка. Используйте вместо Selection уже готовую Q001, и количество строк считайте в этой выборке. Может и ругаться не будет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru