Error al ejecutar la secuencia de comandos: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Modifiqué el script compartido anteriormente por uno de los contribuyentes (gracias) para que el usuario pueda elegir qué archivo de datos (.jmp) abrir:
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) ));Al ejecutar el script, me encontré con el siguiente error:
Enviar espera objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/
Parecía que había un problema con dt << ¿obtener nombres de columnas?
También adjunto una copia del archivo de datos que deseo procesar. La primera y segunda filas de datos son LSL y USL respectivamente, que no quiero que se incluyan como parte de los datos. Más bien se utilizan para trazar las líneas LSL y USL en el gráfico de distribución.
Agradecemos cualquier ayuda de la comunidad. ¡Gracias!
Automatización y secuencias de comandosRe: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Hola Jim,
¡Muchas gracias por guiarme en este viaje!
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Sí, todo lo que hay que hacer es recorrer la salida y ajustar cada uno de los ejes. Vea abajo
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: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/¿Parecerá que necesitaré algún tipo de bucle para que la configuración del eje se aplique a todos los gráficos de distribución?
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Hice un pequeño progreso cambiando el script a lo siguiente:
// 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 );Con el cambio logré cambiar el Min del primer gráfico de distribución a "0" pero el resto de cambios se mantuvieron sin cambios. ¿Puedo saber cómo debo cambiar el código para que la configuración mínima pueda aplicarse a todos los gráficos?
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/La sintaxis para establecer el valor máximo para el eje no es
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
El índice de secuencias de comandos para cambiar la configuración de un AxisBox() se muestra a continuación

El ejemplo de JSL muestra la sintaxis correcta a utilizar.
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 );
Aquí hay una ligera modificación de la sintaxis del ejemplo, donde la configuración del eje es para un gráfico de histograma, similar a lo que indicó que desea usar en su secuencia de comandos.
// 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 );
Puede obtener más información sobre la manipulación de la salida de visualización en la sección de la Guía de secuencias de comandos sobre Árboles de visualización.
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Agregué las siguientes líneas para ver si puedo hacer que los gráficos de distribución cambien el máximo y el mínimo de sus ejes Y:
// Adjust Min and Max Y-axis
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
Parece que no hay ningún efecto. ¿Lo estoy haciendo mal?
El guión completo:
// 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: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Se hace fácilmente. Busque en el índice de secuencias de comandos y observe los mensajes disponibles para el objeto AxisBox. Puede establecer los valores mínimo y máximo. Hay ejemplos en el índice que ilustran el JSL.
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Escuché que dijo que una vez que ingresamos la función Mostrar () en el script, JMP ajustará el máximo y el mínimo del eje para tener en cuenta todos los puntos de datos y el LSL y USL.
Pero digamos que si quiero definir Max y Min manualmente (usando las fórmulas que mencioné anteriormente) a través del script, ¿es factible?
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Una vez que se establecen las propiedades de la columna de límites de especificación y se especifica el elemento Mostrar (1), de forma predeterminada, JMP cambiará los valores de los ejes para cada gráfico, para incluir todos los puntos de datos y todos los límites de especificación especificados.

Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/Gracias por tu clara explicación. Entiendo lo que quiso decir cuando dijo que dt originalmente tomó el nombre de la ruta y el nombre del archivo, lo que luego lo inutiliza cuando intenté obtener los nombres de las columnas. Por lo tanto debo realizar:
dt = Open( dt )
De modo que la tabla de datos se cargue con los datos apropiados del archivo para su correcto procesamiento.
¿Puedo preguntar también si me gustaría que el script ajuste los máximos y mínimos individuales de los ejes Y de cada gráfico? ¿Cómo puedo hacerlo?
Me gustaría encontrar el rango absoluto entre USL y LSL, luego poner Max Y en USL + 0.1*rango, Min Y como LSL-0.1*rango. La idea es tener una presentación consistente para los gráficos de distribución.
Re: Error al ejecutar el script: Enviar espera un objeto programable en el acceso o evaluación de 'Enviar', dt << /*###*/obtener nombres de columnas (cadena, continua) /*###*/La variable "dt" es el problema. Lo está utilizando en su Pick File() como resultado de la selección. Por lo tanto, tendrá el valor de la ruta y el nombre del archivo que desea abrir, como
"C:\Documentos\miarchivo.jmp"
Esto es muy apropiado para su función Open(),
Open( dt )
ya que la función Open() necesita tener la ruta y el nombre del archivo.
Sin embargo, después de abrir la tabla de datos, se utiliza "dt" como objeto del mensaje, se obtienen los nombres de las columnas()
colNameList = dt << get column names( string, continuous );
El mensaje obtener nombres de columnas() debe aplicarse a una tabla de datos, no a una ruta ni a un nombre de archivo.
Su JSL se ejecutará si cambia su llamada a la función Open() a
dt = Open( dt )
La variable se cambiará para tomar el valor.
Tabla de datos( "el nombre de la tabla de datos")
cuál será el formulario necesario para el resto de su JSL