JSL zur Angabe der variablen Anzahl von Phasenebenen in einer KontrollkarteHallo. Ich schreibe ein Skript, um die Erstellung von Kontrolldiagrammen basierend auf einer Konfiguration zu automatisieren, die ich für jedes zu erstellende Diagramm lese. Nachfolgend finden Sie ein Code-Snipet zum Erstellen einer Kontrollkarte. Dieses Diagramm enthält zwei verschiedene Phasen, in denen der Befehl "Phasenebene" verwendet wird, um Sigma und Avg innerhalb der Phasen anzugeben.
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))
)
)
);Ich möchte dies für eine beliebige Anzahl von Phasen tun können, in denen ich die Phasen in meinen Konfigurationsinformationen angeben und durchlaufen lassen würde. Aber ich weiß nicht, wie ich so zu Phase Level () anrufen soll. Ich schätze, es gibt drei Möglichkeiten:
- Erstellen Sie das Kontrolldiagrammobjekt ohne die Informationen zur Phasenebene, und geben Sie eine Nachricht (oder An Bericht senden an Dispatch) an das Kontrolldiagrammobjekt aus, die die Phasenebenen in einer for-Schleife hinzufügt, und rufen Sie dann das Diagramm auf. << Analyse wiederholen (),
- habe eine Funktion mit einer Schleife, die in die Befehle der Kontrollkarte (Chart Col (Individiaul Measurement ())) eingebettet ist, aber ich weiß nicht, wie das geht oder ob es möglich ist, oder
- haben die for-Schleife vor dem Befehl Control Chart (), speichern Sie die Befehle Phase Level () in einer Listenvariablen und verwenden Sie diese Liste dann irgendwie innerhalb des Befehls Control Chart ().
Betreff: JSL zur Angabe der variablen Anzahl von Phasenebenen in einer KontrollkarteDanke für diesen Vorschlag, @txnelson . Das erledigt die Arbeit für mich.
Betreff: JSL zur Angabe der variablen Anzahl von Phasenebenen in einer KontrollkarteOft gehe ich mit solchen Dingen um, indem Sie JSL verwenden, um den gesamten Code, der verwendet werden muss, in einer langen Stringvariablen zu erstellen und diesen Code anschließend auszuführen.
Das folgende Beispiel ist ein nicht getestetes Beispiel dafür
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 ) );