Изменение аттрибутов в MapBasic

MapInfo, MapBasic
Ответить
blackswan
Новоприбывший
Сообщения: 5
Зарегистрирован: 22 окт 2010, 10:52
Репутация: 0

Изменение аттрибутов в MapBasic

Сообщение blackswan »

хочу изменить цвет и тип заливки объекта, делаю так

myobj = selection.obj
p_var = ObjectInfo(selection.obj,OBJ_INFO_PEN)
p_width = StyleAttr(p_var,PEN_WIDTH)
p_pattern = StyleAttr(p_var,PEN_PATTERN)
p_color = StyleAttr(p_var,PEN_COLOR)
new_color = StyleAttr(pen_style,PEN_COLOR)
new_pen = MakePen(p_width,p_pattern,new_color)
Alter Object myobj
Info OBJ_INFO_PEN, new_pen
Update selection Set obj = myobj Where RowId =intr

b_var = ObjectInfo(selection.obj,OBJ_INFO_BRUSH) ***********
b_pattern = StyleAttr(b_var,BRUSH_PATTERN)
b_forecolor = StyleAttr(b_var,BRUSH_FORECOLOR)
b_backcolor = StyleAttr(b_var,BRUSH_BACKCOLOR)
new_brush = MakeBrush(b_pattern,new_color,b_backcolor)
Alter Object myobj
Info OBJ_INFO_BRUSH, new_brush
Update selection Set obj = myobj Where RowId =intr

в строке *********** выдаёт сообщение , что ObjectInfo: аргумент 2 вышел за заданные пределы, что не так? он ругается на OBJECT_BRUSH? У меня MapInfo и MapBasic v 9.5
Аватара пользователя
asgs
Участник
Сообщения: 89
Зарегистрирован: 04 авг 2010, 06:35
Репутация: 1
Контактная информация:

Re: Изменение аттрибутов в MapBasic

Сообщение asgs »

С виду вроде все нормально. Попробуйте так:
myobj = selection.obj
p_var = ObjectInfo(myobj,OBJ_INFO_PEN)
p_width = StyleAttr(p_var,PEN_WIDTH)
p_pattern = StyleAttr(p_var,PEN_PATTERN)
p_color = StyleAttr(p_var,PEN_COLOR) 'Непонятно, нафига старый цвет, если все равно менять
new_color = StyleAttr(pen_style,PEN_COLOR)
new_pen = MakePen(p_width,p_pattern,new_color)
Alter Object myobj Info OBJ_INFO_PEN, new_pen

b_var = ObjectInfo(myobj,OBJ_INFO_BRUSH) ***********
b_pattern = StyleAttr(b_var,BRUSH_PATTERN)
b_forecolor = StyleAttr(b_var,BRUSH_FORECOLOR)' Тот же вопрос по цвету, что и выше
b_backcolor = StyleAttr(b_var,BRUSH_BACKCOLOR)
new_brush = MakeBrush(b_pattern,new_color,b_backcolor)
Alter Object myobj Info OBJ_INFO_BRUSH, new_brush

Update selection Set obj = myobj Where RowId =intr

Блин, виртуалка накрылась, а так бы код сам проверил
И вопрос в порядке бреда - а Вы уверены, что в выборку полилиния не попала? У которой заливки не может быть в принципе?
Злобный йожег
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя