Hallo alle miteinander,
Ich habe mich gefragt, ob mir jemand mit der JSL helfen könnte, die MSL-Tabelle (Manage Spec Limit) zu füllen, indem er die Werte aus einer anderen Tabelle lädt.Das bereitgestellte Skript in der Beispielbibliothek führt lediglich dazu, dass das MSL-Fenster angezeigt wird. Anschließend muss ich die Referenztabelle auswählen und manuell in den Spalteneigenschaften speichern.
Vielen Dank für alle Ideen!
Steve
Offenbar bestand die ursprüngliche Anfrage darin, mithilfe von jsl eine Grenzwerttabelle in die Plattform „Manage Spec Limits“ zu laden und diese dann in den Spalteneigenschaften zu speichern.Unten ist JSL, das das erledigt.
dtLimits=New Table( "Limits",
Add Rows( 4 ),
New Column( "Variable",
Character,
"Nominal",
Set Values( {"OZONE", "CO", "SO2", "NO"} )
),
New Column( "_LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.075, 5, 0.01, 0.01] )
),
New Column( "_USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.25, 12, 0.09, 0.04] )
),
New Column( "_Target",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.04, 0.025] )
),
New Column( "Show Limits",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1] )
),
New Column( "Importance", Numeric, "Nominal", Format( "Best", 12), Set Values([2,4,1,3])),
New Column( "Units",
Character,
"Nominal",
Set Values( {"lbs", "mi", "in", "ft"} )
),
New Column( "Centerline",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.05, 0.025] )
),
New Column( "Sigma",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [.05, 4, 0.03, 0.01] )
),
New Column( "Measurement Sigma",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 5, .5, .8] )
),
New Column( "Lower Tolerance",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.075, 5, 0.01, 0.02] )
),
New Column( "Upper Tolerance",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.25, 12, 0.1, 0.05] )
),
New Column( "Reference",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.04, 0.025] )
),
New Column( "Resolution",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.05, 1, 0.08, 0.9] )
),
New Column( "Historical Mean",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.04, 0.025] )
),
New Column( "Historical Process Sigma",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] )
)
);
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
obj=dt<<MANAGE spec="" limits=""></MANAGE>obj << Save to Column Properties;Hier ist ein einfaches Skript, das eine Grenzwerttabelle erstellt, die zum Verwalten von Spezifikationsgrenzwerten verwendet werden kann
Names Default To Here( 1 );
// point to your table that has limits
dt = Data Table( "your table name" );
// Create the new limits table
dtLimit = New Table( "Limits",
New Column( "Variable", character ),
New Column( "LSL" ),
New Column( "USL" ),
New Column( "Target" )
);
// Read through the original table and move to the new limits table
For( i = 1, i <= N Rows( dt ), i++,
dtLimit << add rows( 1 );
dtLimit:Variable[i] = dt:your column name that has the parameter name[i];
dtLimit:LSL[i] = dt:your column name that has the LSL value[i];
dtLimit:USL[i] = dt:your column name that has the USL value[i];
dtLimit:Target[i] = dt:your column name that has the Target value[i];
);
Möchten Sie „Spezifikationsgrenzen verwalten“ aus der Spezifikationstabelle ausfüllen oder möchten Sie Spezifikationsgrenzen von der Spezifikationstabelle zur Messtabelle festlegen? Ich bin mir nicht sicher, ob Sie „Manage Spec Limits“ mithilfe der Tabelle „Load from Limits“ per Skript ausfüllen können, aber es gibt höchstwahrscheinlich mindestens zwei Möglichkeiten, sie ansonsten zu füllen:
- Fügen Sie durch Schleifen Spezifikationsgrenzen zu den Spalten der Messdatentabellen als Spalteneigenschaften aus der Grenzwerttabelle hinzu (und öffnen Sie dann bei Bedarf „Spezifikationsgrenzen verwalten“).
- Die Plattform „Spezifikationsgrenzen verwalten“ ist Table Box, sodass Sie dort höchstwahrscheinlich mit etwas Skripting Werte festlegen können
Ich würde Option 1 verwenden, da es meiner Meinung nach die einfachere Option ist.
Dieses Skript soll einige Ideen für die Umsetzung von Option 1 geben:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
<BR />//create spec table
dt_spec = New Table("Limits",
Add Rows(2),
New Column("Variable", Character, "Nominal", Set Values({"height", "weight"})),
New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([50, 49])),
New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([150, 151])),
New Column("Target", Numeric, "Continuous", Format("Best", 12), Set Values([100, 101]))
);
//Loop over spec table and look for matches in measurement table
meas_cols = dt << Get Column Names("String");
For Each Row(dt_spec,
If(Contains(meas_cols, :Variable),
Eval(
Eval Expr(
Column(dt, :Variable) << Add Column Properties(
Set Property("Spec Limits", {LSL(Expr(:LSL)), USL(Expr(:USL)), Target(Expr(:Target)), Show Limits(1)})
)
)
)
);
);
//open manage spec limits if needed
dt << Manage Spec Limits(Y(dt_spec[0, "Variable"]));
//Close(dt_spec, no save);