définition de la limite de spécification à la propriété de colonne par JSL - lignes non affichées sur le tracéSalut
J'ai un script qui attribue des limites de spécification (USL/LSL) à la propriété des colonnes, puis crée un tracé de la colonne, et j'attends
pour voir les lignes de limites tracées sur le tracé. Ce qui se passe, c'est que les limites sont définies correctement dans le tableau, mais ne sont pas visibles sur le tracé.
Si je dessine manuellement le même tracé dans cette colonne après avoir exécuté le script - plus aucune ligne.
Si j'ouvre la fenêtre de propriété de spécification de colonne, je vois les limites, la "ligne de référence d'affichage" est activée.
seulement si je clique sur "Appliquer", puis que je trace à nouveau - je peux voir les lignes sur le tracé comme prévu. Mais je n'arrive pas à le faire fonctionner par script..
une idée?
(avec JMP PRO 15)


Modélisation statistique avancéeAutomatisation et scriptAccès aux donnéesPersonnalisation de masseIngénierie de la qualité et des procédésles fenêtresRe : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéJim, merci qui a fait l'affaire.
Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéCe JSL devrait faire l'affaire
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
If( Contains( datacolnames, name ),
Column( Res_Thk_Data, name ) << Set Property( "Units", eval( _unit_ ) )
);
);Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéJim, Merci pour la réponse.J'ai couru et des limites sont ajoutées au tableau.La partie avec laquelle je rencontre un problème consiste à ajouter des unités aux propriétés de la colonne.Lorsque je supprime les commentaires de mon code, la propriété de la colonne des unités est remplie, mais pas avec la valeur souhaitée en pouces ou en livres.Au lieu de cela, les deux sont remplis avec la valeur de List.Je ne comprends pas ce qui me manque dans l'énoncé d'expression ou l'énoncé d'évaluation pour transférer le texte de la cellule du tableau de données.Toute aide serait
apprécié.
Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéVoici un exemple simple qui fonctionne avec votre code.Si cela ne fonctionne toujours pas sur vos tables de données, recherchez les incohérences avec les noms de colonne
Names Default To Here( 1 );
res_thk_specs = New Table( "thelookup",
Add Rows( 2 ),
New Column( "UOM",
Character,
"Nominal",
Set Values( {"inches", "lbs"} ),
Set Display Width( 48 )
),
New Column( "TARGET",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [60, 115] )
),
New Column( "USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [70, 172] )
),
New Column( "LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [50, 60] ),
Set Display Width( 89 )
),
New Column( "colname",
Character,
"Nominal",
Set Values( {"height", "weight"} ),
Set Display Width( 0 )
)
);
res_thk_data = New Table( "thedata",
Add Rows( 5 ),
New Column( "height",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Values( [59, 61, 55, 66, 52] )
),
New Column( "weight",
Numeric,
"Continuous",
Format( "Fixed Dec", 5, 0 ),
Set Selected,
Set Values( [95, 123, 74, 145, 64] )
)
);
// Your code
datacolnames = res_thk_specs:colname << get values;
specExpr = Expr(
Column( Res_Thk_Data, name ) <<
Set Property(
"Spec Limits",
{LSL( Expr( lower ) ), USL( Expr( upper ) ),
TARGET( Expr( target ) ), Show Limits( 1 )}
)
);
//unitExpr = Expr(
// column ( Res_Thk_Data, name ) << Set Property(
// "Units", { _unit_ }
// )
//);
For( i = 1, i <= N Rows( RES_THK_SPECS ), i++,
name = Column( RES_THK_SPECS, "COLNAME" )[i];
lower = Column( RES_THK_SPECS, "LSL" )[i];
upper = Column( RES_THK_SPECS, "USL" )[i];
target = Column( RES_THK_SPECS, "TARGET" )[i];
_unit_ = Column( RES_THK_SPECS, "UOM" )[i];
If( Contains( datacolnames, name ),
Eval( Eval Expr( specExpr ) )
);
// If( Contains( datacolnames, name ),
// Eval( Eval Expr( unitExpr ) )
// );
);Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéJ'utilise une méthode très similaire pour prendre des limites à partir d'une table de limites pour ajouter des limites de spécification aux propriétés de la colonne.Je voulais essayer d'utiliser une méthode similaire pour mettre à jour les unités en fonction de la valeur dans le tableau des limites.Actuellement commenté dans l'émission de code, mais lorsque je cours, j'obtiens une valeur de "Liste" comme propriété d'unité au lieu de l'unité souhaitée.Je pense que c'est un problème de syntaxe, mais jusqu'à présent, je n'ai pas trouvé la syntaxe correcte pour l'instruction eval expr.
Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéJe ne sais pas pourquoi il se comporte comme ça sans les accolades car les utiliser semble être la syntaxe correcte Aide JMP - Propriétés des colonnes
col << Set Property( "propertyName", {argument list} );
JMP doit enregistrer certaines informations en interne, car si vous exécutez la commande SANS accolades et vérifiez les propriétés de la colonne, cela semble très bien, mais si vous utilisez Copier les propriétés de la colonne, vous n'obtenez que le premier argument (car vous n'avez pas de liste de arguments):
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", LSL(50))
)
Ensuite, après avoir appuyé sur Apply dans la propriété de colonne Spec Limits, les arguments sont mis à jour pour corriger la liste :
Add Column Properties(
Set Property("Notes", "Explore data adventurously"),
Set Property("Spec Limits", {LSL(50), USL(150), Show Limits(1)})
)Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéMerci ! en effet l'ajout des accolades a résolu le problème 
Pouvez-vous expliquer pourquoi
Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéIl semble que vous appliquiez les limites après l'affichage initial du graphique.Les limites sont tracées lors de l'affichage initial du graphique, et si des limites sont ajoutées après ce point, le graphique devra être redessiné pour qu'elles s'affichent.
Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéLa syntaxe semble être légèrement décalée, vous devez ajouter {} après Spec Limits. Voir le script ci-dessous, le poids ne fonctionnera pas sans appuyer sur Appliquer et la hauteur le fera.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, "weight") << Set Property("Spec Limits", LSL(50), USL(150), Show Limits(1));
Column(dt, "height") << Set Property("Spec Limits", {LSL(50), USL(100), Show Limits(1)});
gb = dt << Graph Builder(
Size(534, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(4)), Smoother(X, Y, Legend(5)))
);Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéMerci pour la réponse rapide ! J'ai supposé que le code n'était pas vraiment pertinent, car il réglait correctement les limites de spécification dans les propriétés de la colonne.
il définit LSL et USL et affiche les limites (1), mais le tracé ne les affiche pas même s'ils sont définis correctement.
Même si j'utilise un code simple avec des nombres fixes, il se comporte de la même manière.
Column(DATA_DT,param) << Set Property( "Spec Limits", LSL( 0.31 ),USL(0.34),Show Limits(1) );

Ce n'est qu'après avoir cliqué sur "appliquer" et dessiné à nouveau le graphique - il affiche les lignes.
Re : définition de la limite de spécification à la propriété de la colonne par JSL - lignes non affichées sur le tracéSalut @shlomi_bakish ,
Pouvez-vous fournir un exemple de votre code JSL ? Cela pourrait aider à diagnostiquer le problème que vous rencontrez. En attendant, cette partie de code est un exemple de la façon dont vous pouvez définir les limites de spécification pour les colonnes et vous assurer qu'elles sont activées pour la représentation graphique.
//Turn on spec lines for graphs
dt = Current Data Table( ); //just a way of setting the current data table to the variable dt
<BR />dt_ColNames = dt << Get Column Names( string ); //Gets the column names from the data table
<BR />For( i = 1, i <= N Items( dt_ColNames ), i++,<BR />
spec = Column( dt, dt_ColNames[i] ) << Get Property( "Spec Limits" ); //This gets the Boolean spec property of each column
<BR />//now, for each column perform the task of assigning the spec limits<BR /> If( Is Empty( spec ) == 0,
LSL = Try( spec["LSL"], . );
USL = Try( spec["USL"], . );
Target = Try( spec["Target"], . );
Eval(
Substitute(
Expr(
Column( dt, dt_ColNames[i] ) << Set Property(
"Spec Limits",
{LSL( __LSL__ ), USL( __USL__ ), Target( __Target__ ), Show Limits( 1 )}
),
),
Expr( __LSL__ ), LSL,
Expr( __USL__ ), USL,
Expr( __Target__ ), Target
)
);//This whole Eval() is wrapping a Substitution(), which wraps an expression Expr(). <BR /> //The variables that will be substituted are __LSL__ and so on. The Show Limits (1) checks the box to turn on the limits as reference lines.
);
);Cela devrait vous aider à aller dans la bonne direction. Mais, sans voir votre code et comprendre ce que vous faites, il est difficile d'être plus précis pour répondre à votre besoin exact.
J'espère que cela t'aides!,
DS