Creo que ya puedo decir que la aplicación Ferraplan, se ha convertido en una realidad palpable. He hecho algunos pantallazos de la aplicación y además de un pequeño screencast, donde se ve la funcionalidad de la misma hasta el día de hoy.
Como se ve en las imágenes, se pueden introducir diferentes diámetros, formas, materiales, y está organizada por:
- obras
- zonas de la obra
- elementos en la zona
- partes de un elemento
Lo que permite hacer un seguimiento detallado. Lo que queda pendiente es el tema de la revisión. Se me había olvidado por completo, pero evidentemente es muy necesario llevar un control de revisiones de manera que facilite este trabajo, con funciones como copiar planilla, duplicar planilla, etc. Pero poco a poco, no quiero darme el atracón.
Tengo que destacar, que he utilizado JeksParser, con el que se introducen las fórmulas en las formas, de manera que nos permite evaluar no solo una suma, sino que formas más complejas, como un círculo, un arco, etc.
En cuanto a los informes, lo llevo retrasado. No tengo claro como introducir las formas en el informe, pero no me preocupa (por ahora), al final saldrá.
[java]
Forma forma=(Forma)this.jForma.getSelectedItem();
String formula=forma.getValue(«formula»);
String function=»f(«;
ArrayList<Double> valores=new ArrayList<Double>();
if(Convert.toBoolean(forma.getValue(«a»))){
function+=»a,»;
valores.add(this.jA.getDouble());
}
if(Convert.toBoolean(forma.getValue(«b»))){
function+=»b,»;
valores.add(this.jB.getDouble());
}
if(Convert.toBoolean(forma.getValue(«c»))){
function+=»c,»;
valores.add(this.jC.getDouble());
}
if(Convert.toBoolean(forma.getValue(«d»))){
function+=»d,»;
valores.add(this.jD.getDouble());
}
if(Convert.toBoolean(forma.getValue(«e»))){
function+=»e,»;
valores.add(this.jE.getDouble());
}
if(Convert.toBoolean(forma.getValue(«f»))){
function+=»f,»;
valores.add(this.jF.getDouble());
}
if(Convert.toBoolean(forma.getValue(«g»))){
function+=»g,»;
valores.add(this.jG.getDouble());
}
if(Convert.toBoolean(forma.getValue(«h»))){
function+=»h,»;
valores.add(this.jH.getDouble());
}
if(Convert.toBoolean(forma.getValue(«i»))){
function+=»i,»;
valores.add(this.jI.getDouble());
}
if(Convert.toBoolean(forma.getValue(«j»))){
function+=»j»;
valores.add(this.jJ.getDouble());
}
if(function.endsWith(«,»)){
function=function.substring(0,function.length()-1)+») = «+formula;
}
double[] valoresd = new double[valores.size()];
for(int contador=0;contador<valores.size();contador++){
valoresd[contador]=Convert.toDouble(valores.get(contador));
}
try {
FunctionParser parser = new FunctionParser ();
CompiledFunction cfunction = parser.compileFunction(function);
double longitudtotal = cfunction.computeFunction (valoresd);
jLongitud.setDouble(longitudtotal);
Diametro d=(Diametro)jDiametro.getSelectedItem();
double pesometro=Convert.toDouble(d.getValue(«peso»));
jPesoUnitario.setDouble(pesometro*longitudtotal);
jPesoTotal.setDouble(jCantidad.getDouble()*jPesoUnitario.getDouble());
} catch (CompilationException ex) {
ErrorDialog.manejaError(ex,false);
}
[/java]