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

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

Добавлено: 01 ноя 2010, 17:40
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

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

Добавлено: 02 ноя 2010, 07:23
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

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