def convert_qmo(data, path): qmo_file = QubicleFile() qmo_model = QubicleModel() x_size, y_size, z_size = 256, 256, 256 qmo_model.x_size = x_size qmo_model.y_size = y_size qmo_model.z_size = z_size qmo_model.x_offset = -x_size / 2 qmo_model.y_offset = 0 qmo_model.z_offset = -z_size / 2 blocks = data.get_dict() min_z = max_z = None for pos in blocks.keys(): x, y, z = pos if min_z is None: min_z = max_z = z min_z = min(min_z, z) max_z = max(max_z, z) qmo_model.y_size = max_z - min_z + 1 for pos, color in blocks.items(): x, y, z = switch_axes(*pos) y -= min_z qmo_model.blocks[(x, y, z)] = color qmo_file.models.append(qmo_model) writer = ByteWriter() qmo_file.write(writer) open(path, 'wb').write(writer.get())
def to_qmo(in_file, out_file): cub = CubModel(ByteReader(open(in_file, 'rb').read())) qmo_file = QubicleFile() qmo_model = QubicleModel() x_size, y_size, z_size = switch_axes(cub.x_size, cub.y_size, cub.z_size) qmo_model.x_size = x_size qmo_model.y_size = y_size qmo_model.z_size = z_size qmo_model.x_offset = -x_size / 2 qmo_model.y_offset = 0 qmo_model.z_offset = -z_size / 2 for k, v in cub.blocks.iteritems(): x, y, z = k x2, y2, z2 = switch_axes(x, y, z) qmo_model.blocks[x2, y2, z2] = v qmo_file.models.append(qmo_model) qmo_file.write(ByteWriter(fp=open(out_file, 'wb')))