def make_shape(shape_name): global current_color # cf CADMBTB_API, but cannot get the same color order colors = list(reversed([Quantity_NOC_DARKVIOLET, Quantity_NOC_BLUE1, Quantity_NOC_GREEN, Quantity_NOC_RED, Quantity_NOC_ORANGE, Quantity_NOC_SALMON, Quantity_NOC_YELLOW])) with IO.tmpfile(contents=io.shapes()[shape_name][:][0]) as tmpfile: step_reader = STEPControl_Reader() status = step_reader.ReadFile(tmpfile[1]) if status == IFSelect_RetDone: # check status failsonly = False step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity) step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity) ok = step_reader.TransferRoot(1) nbs = step_reader.NbShapes() l=[] for i in range(1, nbs+1): ais_shape = display.DisplayShape(step_reader.Shape(i), update=True, transparency=.55) ais_shape.GetObject().SetColor(colors[current_color % 6]) current_color += 1 ais_shape.GetObject().SetMaterial(Graphic3d.Graphic3d_NOM_PLASTIC) l.append(ais_shape) return l