<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich würde gerne wissen, ob Sie eine "Spezifikationslimit" -Datei verwenden können, die verwendet wird, um einer Fähigkeitsstudie Grenzwerte hinzuzufügen, und sie dazu verwenden, Grenzwerte für die Spalteneigenschaften auf einmal hinzuzufügen, um ein Mess-R & R durchzuführen, ohne sie nacheinander einzugeben . Ich möchte ein genaues Toleranzverhältnis erhalten und benötige die Spezifikationsgrenzen für alle Spalten.
egal, ich habe es selbst herausgefunden:
populateSpecs = Function({dt, dt1}, {Default Local},
// Loop over rows of dt1, and iff there is a matching column in dt set its property
clist = dt << GetColumnNames(Numeric, String);
for (r=1, r<=NRows(dt1), r++,
name = Column(dt1, "Variable")[r];
lsl = Column(dt1, "LSL")[r];
usl = Column(dt1, "USL")[r];
tar = Column(dt1, "Target")[r];
Eval(
Eval Expr(
if (Contains(clist, name), Column(dt, name) << Set Property ( "Spec Limits",
{LSL( Expr(lsl) ), USL( Expr(usl) ), Target( Expr(tar) ), Show Limits( 1 )})
)
)
)
)
);
Die populateSpecs funktionieren in JMP 13 nicht mehr (es sei denn, ich mache etwas falsch). Ich habe versucht, es zu "reparieren", aber es funktioniert nicht. Ich gehe davon aus, dass es darum geht, die aktuellen Werte von lsl, usl und tar in der Schleife auszuwerten, aber ich kann nicht herausfinden, wie dies funktioniert. Vorschläge?
// ******************************************************************************************
// Given a table dt, and a table dt1 containing spec limits, populates spec limit properties in dt
// ******************************************************************************************
populateSpecs = Function({dt, dt1}, {Default Local},
// Loop over rows of dt1, and iff there is a matching column in dt set its property
clist = dt << GetColumnNames(Numeric, String);
for (r=1, r<=NRows(dt1), r++,
name = Column(dt1, "Variable")[r];
lsl = Column(dt1, "LSL")[r];
usl = Column(dt1, "USL")[r];
tar = Column(dt1, "Target")[r];
if (Contains(clist, name), Column(dt, name) << Set Property ( "Spec Limits",
{LSL( lsl ), USL( usl ), Target( tar ), Show Limits( 1 )})
)
)
);
In dem Code unterhalb von 'dt' ('dt1') befindet sich ein Verweis auf die Tabelle, die die Daten enthält (die Spezifikationsgrenzen). Um den Code zu verwenden, führen Sie 'Datei> Neu> Neues Skript' aus, fügen Sie ihn in das erscheinende Fenster ein und führen Sie 'Bearbeiten> Skript ausführen' aus.
NamesDefaultToHere ( 1 ) ;
// Mach ein paar Spezifikationsgrenzen, mit denen du arbeiten kannst
dt1 =
Neue Tabelle ( "Spezifikationsgrenzen" .
Zeilen hinzufügen ( 3 ) .
Neue Spalte ( "Verarbeiten" .
Charakter .
"Nominal" .
Werte einstellen ( { "NPN1" . "PNP1" . "PNP2" } )
) .
Neue Spalte ( "LSL" .
Numerisch .
"Kontinuierlich" .
Werte einstellen ( [ 104.412948990151 . 164.389518443879 . - 136.122122529984 ] )
) .
Neue Spalte ( "Ziel" .
Numerisch .
"Kontinuierlich" .
Werte setzen ( [ 118.153221027253 . 297.017932186294 . 465.441998810449 ] )
) .
Neue Spalte ( "USL" .
Numerisch .
"Kontinuierlich" .
Werte setzen ( [ 131.893493064355 . 429.64634592871 . 1067.00612015088 ] )
)
) ;
// Daten erstellen, mit denen gearbeitet werden kann
dt =
Neue Tabelle ( "Daten" .
Zeilen hinzufügen ( 10 ) .
Neue Spalte ( "NPN1" .
Numerisch .
"Kontinuierlich" .
Werte setzen (
[ 114.555760105678 . 120.043693059459 . 114.926510466106 . 111.756445551183 .
111.545085144313 . 113.52359591958 . 111.749308571209 . 114.411433304976 .
118.48975048042 . 113.171122695149 ]
)
) .
Neue Spalte ( "PNP1" .
Numerisch .
"Kontinuierlich" .
Werte setzen (
[ 322.616751775796 . 333.128079728678 . 348.978757216574 . 268.548094462492 .
295.073165929223 . 323.833298568833 . 369.320490694357 . 342.987400315929 .
315.52243608245 . 288,978183718528 ]
)
) .
Neue Spalte ( "PNP2" .
Numerisch .
"Kontinuierlich" .
Werte setzen (
[ 469.390289765043 . 437.781112798903 . 532.12814730405 . 373.058628529111 .
338.900737368942 . 469.992171436316 . 563.084459366587 . 479.378108668814 .
530.265608347575 . 421.454501563007 ]
)
)
) ;
// ************************************************* ******************************************
// Setzt eine Spaltenreferenz und die Eigenschaft spec liomits
// ************************************************* ******************************************
setSpecLimits = Funktion ({ c . lsl . usl . Teer } .
cmd = Ausdruck ( c << SetProperty ( "Spezifikationsgrenzen" . { LSL ( Ausdruck ( lsl )) . USL ( Ausdruck ( usl )) . Ziel ( Ausdruck ( Teer ))})) ;
eval ( evalexpr ( cmd )) ;
) ;
// ************************************************* ******************************************
// Mit einer Tabelle dt und einer Tabelle dt1, die Spezifikationsgrenzen enthält, werden Spezifikationsgrenzeneigenschaften in dt aufgefüllt
// ************************************************* ******************************************
populateSpecs = Funktion ({ dt . dt1 } . { Default Local } .
// Schleife über Zeilen von dt1, und wenn es eine übereinstimmende Spalte in dt gibt, setze seine Eigenschaft
Clist = dt << GetColumnNames ( Numerisch . String ) ;
zum ( r = 1 . r <= NRows ( dt1 ) . r ++
Name = Säule ( dt1 . "Verarbeiten" ) [ r ] ;
lsl = Säule ( dt1 . "LSL" ) [ r ] ;
usl = Säule ( dt1 . "USL" ) [ r ] ;
Teer = Säule ( dt1 . "Ziel" ) [ r ] ;
ob ( Enthält ( Clist . Name ) . SetSpecLimits ( Säule ( dt . Name ) . lsl . usl . Teer )) ;
)
) ;
// Definiere die Spalteneigenschaften der Spezifikationsgrenze in dt mit dt1
Warten ( 3 ) ;
populateSpecs ( dt . dt1 ) ;
// Starten Sie die Capability-Plattform (die die Spalteneigenschaften automatisch verwendet)
Cols = dt << getColumnNames ;
dt << Fähigkeit ( Y ( Eval ( Cols ))) ;