Ais_shape Setcolor but remain origin eadge color

I try set ais_shape color but remain orgin edge color, i use code below , it works

ais_shape = new AIS_Shape(shape);
ais_shape->SetTransparency(transparency);
ais_shape->SetColor(color);
const Handle(Prs3d_Drawer) contextDrawer = ais_shape->Attributes();
contextDrawer->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_GRAY20, Aspect_TOL_SOLID, 0.5));
ctx->Display(ais_shape, false);

but every time I set smae shape but another color ,

ais_shape->SetColor(color);

edge color change to setcolor's color

even though i set LineAspect again, it dosen't work,why?

ais_shape->SetColor(color);
const Handle(Prs3d_Drawer) contextDrawer = ais_shape->Attributes();
contextDrawer->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_GRAY20, Aspect_TOL_SOLID, 0.5));