JSL para especificar el número variable de niveles de fase en un gráfico de controlHola. Estoy escribiendo un script para automatizar la creación de gráficos de control basados en alguna configuración que estoy leyendo para que se cree cada gráfico. A continuación se muestra un fragmento de código para crear un gráfico de control. Este gráfico contiene dos fases diferentes donde se usa el comando de Nivel de fase para especificar el Sigma y el Avg dentro de las fases.
chart = Control Chart(
Sample Label ( Column(dt, chartConfig["XParamName"]) ),
Phase( Column(dt, chartConfig["PhaseColumn"]) ),
Group Size( 1 ),
Chart Col(
column(dt,chartConfig["YParamName"]),
Individual Measurement(
Phase Level( "1", Sigma(p1_CL_Range/3), Avg(p1_Mean_calc)),
Phase Level( "2", Sigma(p2_CL_Range/3), Avg(p2_Mean_calc))
)
)
);Me gustaría poder hacer esto para cualquier número de fases, donde tendría las fases especificadas en mi información de configuración y las repasaría. Pero no sé cómo hacer una llamada a Phase Level () de esa manera. Me imagino que hay tal vez tres opciones:
- cree el objeto de gráfico de control sin la información de Nivel de fase y luego emita un mensaje (o Enviar a informe - Despacho) al objeto de gráfico de control que agregará los Niveles de fase en un bucle for y luego llame al cuadro << Análisis de rehacer (),
- tengo una función con un bucle incrustado dentro de los comandos de Gráfico de control (Columna de gráfico (Medición individual ())), pero no sé cómo hacerlo o si es posible, o
- tenga el bucle for antes del comando Gráfico de control () y guarde los comandos de Nivel de fase () en una variable de lista y luego use esa lista de alguna manera dentro del comando Gráfico de control ().
Re: JSL para especificar el número variable de niveles de fase en un gráfico de controlGracias por esa sugerencia, @txnelson . Eso hace el trabajo por mí.
Re: JSL para especificar el número variable de niveles de fase en un gráfico de controlMuchas veces, la forma en que manejo esas cosas, es usar JSL para crear todo el código que se necesita usar, en una variable de cadena larga y, una vez hecho, ejecutar ese código.
El siguiente ejemplo es un ejemplo no probado de tales
Phases = 3;
theExpr =
"chart = Control Chart(
Sample Label( Column( dt, chartConfig[\!"XParamName\!"] ) ),
Phase( Column( dt, chartConfig[\!"PhaseColumn\!"] ) ),
Group Size( 1 ),
Chart Col(
Column( dt, chartConfig[\!"YParamName\!"] ),
Individual Measurement(";
For( i = 1, i <= Phases, i++,
theExpr = theExpr || "Phase Level( \!"" || Char( i ) || "\!",
Sigma( p" || Char( i ) || "_CL_Range / 3 ), Avg( p" || Char( i ) ||
"_Mean_calc ) ),"
);
theExpr = theExpr || ")));";
Eval( Parse( theExpr ) );