JSL pour spécifier un nombre variable de niveaux de phase dans une carte de contrôleBonjour. J'écris un script pour automatiser la création de graphiques de contrôle en fonction de la configuration que je lis pour chaque graphique à créer. Vous trouverez ci-dessous un fragment de code permettant de créer une carte de contrôle. Ce graphique contient deux phases différentes où la commande Phase Level est utilisée pour spécifier Sigma et Avg dans les phases.
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))
)
)
);J'aimerais pouvoir le faire pour un nombre quelconque de phases, où je voudrais avoir les phases spécifiées dans mes informations de configuration et les parcourir en boucle. Mais je ne sais pas comment faire un appel à Phase Level () comme ça. Je suppose qu'il y a peut-être trois options:
- créez l'objet de graphique de contrôle sans les informations de niveau de phase, puis envoyez un message (ou un message Send to Report - Dispatch) à l'objet de graphique de contrôle qui ajoutera les niveaux de phase dans une boucle puis appelez le graphique << Redo Analysis (),
- avoir une fonction avec une boucle intégrée aux commandes Control Chart (Chart Col (Individiaul Measurement ())), mais je ne sais pas comment faire cela ni si c'est possible, ou
- avoir la boucle for devant la commande Control Chart () et enregistrer les commandes Phase Level () dans une variable de liste, puis utiliser cette liste d'une manière ou d'une autre dans la commande Control Chart ().
Re: JSL pour spécifier un nombre variable de niveaux de phase dans une carte de contrôleMerci pour cette suggestion, @txnelson . Cela fait le travail pour moi.
Re: JSL pour spécifier un nombre variable de niveaux de phase dans une carte de contrôleSouvent, la façon dont je gère de telles choses consiste à utiliser JSL pour créer tout le code qui doit être utilisé, dans une seule variable chaîne longue, puis une fois cela fait, exécutez ce code.
L’échantillon ci-dessous est un exemple non testé de ce type.
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 ) );