Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/J'ai modifié le script partagé précédemment par l'un des contributeurs (merci) afin que l'utilisateur puisse choisir quel fichier de données (.jmp) ouvrir :
Names Default To Here( 1 );
// Open a dialog to choose a .jmp file to open
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform
dt << Distribution( column( eval(colNameList) ));Lors de l'exécution du script, j'ai rencontré l'erreur suivante :
Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/obtenir les noms de colonnes (chaîne, continue) /*###*/
Il semble qu'il y ait un problème avec le dt << obtenir les noms des colonnes ?
J'ai également joint une copie du fichier de données que je souhaite traiter. Les première et deuxième lignes de données sont respectivement la LSL et l'USL, que je ne souhaite pas inclure dans les données. Mais ils sont plutôt utilisés pour tracer les lignes LSL et USL dans le graphique de distribution.
Appréciez toute aide de la communauté. Merci!
Automatisation et scriptsRe : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/Salut Jim,
Merci beaucoup de m'avoir guidé tout au long de ce voyage !
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/Oui, tout ce qu'il faut faire est de parcourir la sortie et d'ajuster chacun des axes. Voir ci-dessous
names default to here(1);
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude(1);
// Run the Distribution Platform
dist = dt << Distribution( column( eval(colNameList) ));
// Loop across the output and addjust the axes
rdist = dist << report;
For Each( {col, i}, colNameList,
offset = (Column( col )[2] - Column( col )[1]) * .1;
myMin = Column( col )[1] - offset;
myMax = Column( col )[2] + offset;
// Adjust Min and Max Y-axis
rdist[axis box( i )] << Min( myMin ) << Max( myMax );
);Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/Il semblera que j'aurai besoin d'une sorte de boucle telle que les paramètres des axes soient appliqués à tous les diagrammes de distribution ?
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/J'ai fait un petit progrès en modifiant le script comme suit :
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Adjust Min and Max Y-axis
//dist = dt << Set Axis(
// Min( -10 ),
// Max( 10 )
//);
// Run the Distribution Platform
dist = dt << Distribution( column( eval(colNameList) ));
// Adjust Min and Max Y-axis
rdist = dist << report;
axisbox = rdist[axis box( 1 )];
axisbox << Min( 0 );Avec le changement, j'ai réussi à changer le Min du premier diagramme de distribution à "0" mais le reste des changements est resté inchangé. Puis-je savoir comment dois-je modifier le code de telle sorte que le paramètre Min puisse être appliqué à tous les graphiques ?
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/La syntaxe pour définir la valeur Max pour l'Axe n'est pas
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
L'index de script pour modifier les paramètres d'un AxisBox() est présenté ci-dessous

L'exemple JSL montre la syntaxe correcte à utiliser
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate( Y( :weight ), X( :height ), FitLine );
rbiv = biv << report;
axisbox = rbiv[axis box( 1 )];
axisbox << Max( 120 );
Voici une légère modification de l'exemple de syntaxe, où le réglage de l'axe est destiné à un tracé d'histogramme, similaire à celui que vous avez indiqué vouloir utiliser dans votre script.
// Run the Distribution Platform
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution( column( :weight ));
rdist = dist << report;
axisbox = rdist[axis box( 1 )];
axisbox << Max( 200 ) << Min( 50 );
Vous pouvez en savoir plus sur la manipulation de la sortie d'affichage dans la section du Guide de script sur les arborescences d'affichage.
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/J'ai ajouté les lignes suivantes pour voir si je peux faire en sorte que les graphiques de distribution modifient le Max et le Min de leurs axes Y :
// Adjust Min and Max Y-axis
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
Il ne semble y avoir aucun effet. Est-ce que je le fais mal ?
Le scénario complet :
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Adjust Min and Max Y-axis
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
// Run the Distribution Platform
dist = dt << Distribution( column( eval(colNameList) ));Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/C’est facile à faire. Regardez dans l'index des scripts et examinez les messages disponibles pour l'objet AxisBox. Vous pouvez définir les valeurs Min et Max. Il y a des exemples dans l'index illustrant le JSL.
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/Je vous ai entendu dire qu'une fois que nous aurons mis la fonction Show() dans le script, JMP ajustera le Max et le Min de l'axe pour prendre en compte tous les points de données ainsi que le LSL et l'USL.
Mais disons que si je veux définir Max et Min manuellement (en utilisant les formules que j'ai mentionnées plus tôt) via le script, est-ce faisable ?
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/Une fois que les propriétés de la colonne Limites de spécifications sont définies et que l'élément Show(1) est spécifié, JMP modifiera par défaut les valeurs des axes pour chaque graphique, afin d'inclure tous les points de données et toutes les limites de spécifications spécifiées.

Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/Merci pour votre explication claire. Je comprends ce que vous vouliez dire lorsque vous avez dit que dt prenait à l'origine le nom du chemin et du nom de fichier, ce qui le rend ensuite inutilisable lorsque j'essaie d'obtenir les noms de colonnes. Je devrais donc effectuer :
dt = Open( dt )
Pour que le tableau de données soit chargé avec les données appropriées du fichier pour un traitement correct.
Puis-je également demander si je souhaite que le script ajuste les maximums et minimums individuels des axes Y de chaque graphique, comment puis-je le faire ?
Je voudrais trouver la plage absolue entre l'USL et le LSL, puis mettre le Max Y à la plage USL + 0,1*, Min Y à la plage LSL-0,1*. L'idée est d'avoir une présentation cohérente pour les graphiques de distribution.
Re : Erreur lors de l'exécution du script - Send attend un objet scriptable lors de l'accès ou de l'évaluation de 'Send', dt << /*###*/get column names (string, continue) /*###*/La variable "dt" est le problème. Vous l'utilisez dans votre Pick File() à la suite de la sélection. Il aura donc la valeur du chemin et du nom du fichier que vous souhaitez ouvrir, comme
"C:\Documents\monfichier.jmp"
C'est très approprié pour votre fonction Open(),
Open( dt )
puisque la fonction Open() doit avoir le chemin et le nom du fichier.
Cependant, après avoir ouvert la table de données, "dt" est utilisé comme objet du message, récupère les noms de colonnes()
colNameList = dt << get column names( string, continuous );
Le message get column name() doit être appliqué à une table de données, et non à un chemin et un nom de fichier.
Votre JSL s'exécutera si vous modifiez votre appel de fonction Open() en
dt = Open( dt )
La variable sera modifiée pour prendre la valeur
Table de données( "le nom de la table de données" )
qui sera le formulaire nécessaire pour le reste de votre JSL