From 589666d19e8077e9163c8c166fbbfa5f66fe02fc Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Fri, 19 Aug 2011 07:29:50 +0000 Subject: [PATCH] added python script to simply (without antialising) scale a given *.geom file --- processing/pre/scale_geomFile.py | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 processing/pre/scale_geomFile.py diff --git a/processing/pre/scale_geomFile.py b/processing/pre/scale_geomFile.py new file mode 100644 index 000000000..1a2cf0dbc --- /dev/null +++ b/processing/pre/scale_geomFile.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- coding: UTF-8 no BOM -*- +#scale the size of a given .geom file (first argument, without extension) in x y z direction by given commandline argument +#(integer in each direction) +#be carefull, last line should be empty (line break after last number) +import sys, time, re +scale = [0 for i in range(3)] +scale[0] = int(sys.argv[2]) +scale[1] = int(sys.argv[3]) +scale[2] = int(sys.argv[4]) + +resolution = [3 for i in range(3)] +dimension = [0.0 for i in range(3)] + +file_in = open(sys.argv[1]+'.geom','r') +for i in range(3): + input = file_in.readline() + if re.match('resolution',input): + resolution[0] = int(re.findall('\S*',''.join(re.findall('a\s*\S*',input)))[-2]) + resolution[1] = int(re.findall('\S*',''.join(re.findall('b\s*\S*',input)))[-2]) + resolution[2] = int(re.findall('\S*',''.join(re.findall('c\s*\S*',input)))[-2]) + if re.match('dimension',input): + dimension[0] = float(re.findall('\S*',''.join(re.findall('x\s*\S*',input)))[-2]) + dimension[1] = float(re.findall('\S*',''.join(re.findall('y\s*\S*',input)))[-2]) + dimension[2] = float(re.findall('\S*',''.join(re.findall('z\s*\S*',input)))[-2]) + +output = '' +for x in range(resolution[0]*resolution[1]*resolution[2]): + a=file_in.readline() + for i in range(scale[0]): + output += a +output_separated = output.splitlines(True) +resolution[0] = resolution[0]*scale[0] #scale resolution 1 +output = '' +for z in range(resolution[2]): + for y in range(resolution[1]): + for i in range(scale[1]): + output += ''.join(output_separated[z*resolution[0]*resolution[1]+y*resolution[0]:\ + z*resolution[0]*resolution[1]+y*resolution[0]+resolution[0]]) +resolution[1] = resolution[1]*scale[1] #scale resolution 2 +output_separated = output.splitlines(True) +output = '' +for z in range(resolution[2]): + for i in range(scale[2]): + output += ''.join(output_separated[z*resolution[0]*resolution[1]:\ + z*resolution[0]*resolution[1]+resolution[0]*resolution[1]]) +resolution[2] = resolution[2]*scale[2] #scale resolution 2 + +file_out = open(sys.argv[1]+'_scaled_'+str(sys.argv[2])+'-'+str(sys.argv[3])+'-'+str(sys.argv[4])+'.geom','w') + +file_out.write('resolution a '+str(resolution[0])+' b '+str(resolution[1])+' z '+str(resolution[2])+'\n') +file_out.write('dimension x '+str(dimension[0])+' y '+str(dimension[1])+' z '+str(dimension[2])+'\n') +file_out.write('homogenization 1\n') +file_out.write(output) \ No newline at end of file