def test_assign_properties_error(tet_ply_txt): vertex = tet_ply_txt['vertex'] with Raises(ValueError) as e: vertex.properties = (vertex.properties + (PlyProperty('xx', 'i4'), )) assert str(e) == "dangling property 'xx'"
def test_element_parse_error_repr(): prop = PlyProperty('x', 'f4') elt = PlyElement('test', [prop], 0) e = PlyElementParseError('text', elt, 0, prop) assert repr(e)
def convert_unique(fn_read, fn_write, center_x=True, center_y=True, center_z=True): plydata = PlyData.read(fn_read) # ---------- Test Code start ----------- #print("Start Test code") print(plydata.elements[0].data.dtype.fields) #print(plydata.elements[0].ply_property('x')) #i = 1 # for file in plydata.elements[0].data['red']: # print(file) # i += 1 # print("Das war klug Nr: ", i) # ---------- Test Code over --------- #x,y,z : embbedding to RGB x_ct = np.mean(plydata.elements[0].data['x']) if not (center_x): x_ct = 0 x_abs = np.max(np.abs(plydata.elements[0].data['x'] - x_ct)) y_ct = np.mean(plydata.elements[0].data['y']) if not (center_y): y_ct = 0 y_abs = np.max(np.abs(plydata.elements[0].data['y'] - y_ct)) z_ct = np.mean(plydata.elements[0].data['z']) if not (center_z): z_ct = 0 z_abs = np.max(np.abs(plydata.elements[0].data['z'] - z_ct)) n_vert = plydata.elements[0].data['x'].shape[0] # --------- Test Code ------- if 'red' not in plydata.elements[0].data.dtype.fields: print('Property Red not available. Adding Colors now') vert = plydata['vertex'] a = np.empty( len(vert.data), vert.data.dtype.descr + [('red', 'u1'), ('green', 'u1'), ('blue', 'u1')]) for name in vert.data.dtype.fields: a[name] = vert[name] vert = PlyElement.describe(a, 'vertex') #print(vert.properties, vert.data.dtype.names) vert.properties = () vert.properties = plydata.elements[0].properties + (PlyProperty( 'red', 'uchar'), PlyProperty( 'green', 'uchar'), PlyProperty('blue', 'uchar')) plydata = PlyData([vert, plydata.elements[1]], text=True) print(plydata.elements[0].data.dtype.fields) # -------- Test Code End ------- for i in range(n_vert): r = (plydata.elements[0].data['x'][i] - x_ct) / x_abs #-1 to 1 r = (r + 1) / 2 #0 to 2 -> 0 to 1 g = (plydata.elements[0].data['y'][i] - y_ct) / y_abs g = (g + 1) / 2 b = (plydata.elements[0].data['z'][i] - z_ct) / z_abs b = (b + 1) / 2 #if b> 1: b=1 #if b<0: b=0 plydata.elements[0].data['red'][i] = r * 255 plydata.elements[0].data['green'][i] = g * 255 plydata.elements[0].data['blue'][i] = b * 255 plydata.write(fn_write) return x_abs, y_abs, z_abs, x_ct, y_ct, z_ct