Source code for prosi3d.preprocessing.openjz

[docs]def readDf(path): """ Reads txt-File exported via EOSPRINTAPI from *openjz.txt build-preview-file. Deletes non numeric numbers and calculates layerchanges. returns df: array with vector-tuple in rows and columns: x_mm, y_mm, exposureType, partId returns layers: list of layerchangelineindexes starting with change from 1 to 2 returns vecdir where eosprint_layer files are stored via function df2layers Args: eostxtfilepath Returns: df, layers, vecdir """ print('>>>>>>>>>> ', inspect.currentframe().f_code.co_name, inspect.getargvalues(inspect.currentframe()).locals) logger = logging.getLogger(inspect.currentframe().f_code.co_name) out = '>>>>>>>>>> ' + str(inspect.getargvalues(inspect.currentframe()).locals) logger.info(out) eostxtfile, _, jobfile, vecdir, _, _, logdir, _ = folder2Files(path) df = pd.read_csv(eostxtfile, sep=',', header=None, warn_bad_lines=True, skiprows=3) ## re-define columnheader df.columns = ['x_mm', 'y_mm', 'exposureType', 'partId'] # Delete non numeric letters in data df[df.columns[0]] = df[df.columns[0]].map(lambda x: str(x)[6:]) df[df.columns[1]] = df[df.columns[1]].map(lambda x: str(x)[6:]) df[df.columns[2]] = df[df.columns[2]].map(lambda x: str(x)[14:]) df[df.columns[3]] = df[df.columns[3]].map(lambda x: str(x)[8:]) # delete exposureType 0, which is just for visualization of part boundaries df = df.drop(df.loc[df.exposureType == ' 0'].index) df = df.reset_index(drop=True) # create variable for where layers change in new var layers layers = df[df['x_mm'].str.contains("ewdata")] # just first column is relevant here, drop others layers = layers.drop(['y_mm', 'exposureType', 'partId'], axis='columns') layers.columns = ['Layer'] ## Delete lines were new layer starts and reset index numbering df = df.drop(layers.index, axis=0) df = df.reset_index(drop=True) # logging fname = jobfile[:-8] delim = '\\' logger.info(f'Job: {fname.rsplit(delim,1)[-1]} has {len(layers)} layers with {len(df)/2} total vectors.') return df, layers, vecdir
[docs]def listpar_stl(path): ''' helper function editet to return all stl file names from openjob file Args: path Returns: partlist ''' # logger = logging.getLogger(inspect.currentframe().f_code.co_name) # out = '>>>>>>>>>> ' + str(inspect.getargvalues(inspect.currentframe()).locals) # logger.info(out) _, _, jobfile, _, _, _, _, _ = folder2Files(path,0) f = open(jobfile, 'r') df = f.readlines() partlist = [] paramlist = [] i = 0 for line in df: if i == 0: vers = line.find('creator_version') #logger.info(line[vers:]) pos_par = line.find('<parameter>') if pos_par != -1: s = pos_par + 11 e = line.find('</parameter>', s) param = line[s:e] paramlist.append(param) s = prev_line.find(' name="') + 7 e = prev_line.find('"', s) part = prev_line[s:e] partlist.append(part) prev_line = line i += 1 return partlist