added python script to simply (without antialising) scale a given *.geom file
This commit is contained in:
parent
def056f30f
commit
589666d19e
|
@ -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)
|
Loading…
Reference in New Issue