Capítulo 7: Codificación
Este capítulo tiene como propósito asistir a los usuarios con la sintaxis de la codificación en el software Opencontour. Esto incluye una guía paso a paso del módulo de creacíon de código (Crear Script), que utiliza el lenguaje de programación Javascript para manipular y crear propiedades únicas.
Video: Resumen de Codificación
Acceso Rápido
7.1 Módulo de Creación de Código
Para abrir la ventana de codificación, haga clic en el botón crear código (Create Script) en el menú de heramientas (Utility Menu).
Menú de Herramientas - Crear Código

Los códigos son útiles para agregar o editar propiedades para una capa seleccionada. Las expresiones se escriben en el lenguaje JavaScript, pueden involucrar cálculos de otras propiedades y/o números y también pueden depender del tiempo.
-
Los códigos se utilizan para agregar propiedades predefinidas al modelo Mineplan usado en gráficos rápidos y reportes.
-
Los códigos pueden ser escritos para ejecutar sobre el modelo Mineplan antes, durante o después de generar una secuencia de minado.
-
Una variable usada en un código debe existir en la capa en la que se está trabajando o estar definida en la línea anterior del código.
Ventana para Crear Código

7.1.1 Resumen de Entrada de Código
Esta sección detallará cómo funcionan las variables de entrada en el módulo de creacíon de código Create Script:
| Nombre de Variable | Descripción |
|---|---|
| # Incl | Esta primera columna permite a los usuarios seleccionar qué expresiones desean seleccionar para ejecutar cuando hagan clic en Ejecutar Código (Run Script). Presionar la casilla superior seleccionará/deseleccionará todas las líneas de código en la ventana |
| Variable (Prop) | Esta columna permite a los usuarios ingresar la variable en la que desean ejecutar códigos para manipular. Un usuario también puede crear una nueva variable dentro de esta columna usando condiciones preexistentes |
| Expresión del Código (Script Expression) | Este cuadro permite al usuario ingresar la expresión o valor que le desea codificar a la variable seleccionada. Para obtener más información sobre cómo usar Javascript, vaya a 7.2 JavaScript General Guide |
| Descripción (Description) | Permite al usuario hacer varias notas ó describir lo que hace el código |
7.1.2 Seleccionar Capa (Choose Layer)
Este menú desplegable permitirá al usuario seleccionar la capa en la que desea ejecutar los códigos. Por defecto, se establece automáticamente la capa Mineplan.
7.1.3 Agregar Código (Add Script)
Este botón permite al usuario importar su código al proyecto. El código debe estar en formato .JSON para importar correctamente.
7.1.4 Cargar Códigos (Loaded Scripts)
Este menú desplegable muestra todos los nombres de los codigos que están disponibles para seleccionar en el proyecto. Una vez que el código este seleccionado, debería aparecer en los cuadros de expresión de abajo.
Los códigos pueden ser eliminados de la lista haciendo clic en el botón Eliminar (Delete) cuando el código está seleccionado en el menú.
7.1.5 Nombre del Código (Script Name)
Permite al usuario manipular o establecer un nombre para el código en el que está trabajando.
7.1.6 Plantilla (Boilerplate)
Opencontour ofrece 7 códigos de plantilla que el usuario puede seleccionar y editar si no tienen códigos configurados por sí mismo. Estos códigos se pueden usar para establecer variables de los costos de voladura y acarreo, análisis económico e información de camiones.
7.1.7 Guardar y Exportar (Saving and Exporting)
Hay varias formas en que el usuario puede optar por guardar y/o exportar su código dentro del módulo de creacíon de código (Create Script):
- GuardarCódigo (SaveScript) - Simplemente presionar el botón GuardarCódigo permite al usuario guardar todo el código que ha realizado dentro de la ventana si desea navegar temporalmente a otra ventana dentro del proyecto.
- Exportar + GuardarCódigo (Export + SaveScript) - Esta combinación permitirá al usuario guardar y exportar el código actual en formato .JSON del que está trabajando.
- Todo + Exportar + GuardarCódigo (All + Export + SaveScript) - Esta combinación permitirá al usuario guardar y exportar todos los códigos cargados en el proyecto en formato .JSON como un archivo único.
7.1.8 Orden del Código (Script Order)
Esta función permite al usuario seleccionar el orden en el que se ejecutará múltiples códigos a la vez.
7.2 Guía General de JavaScript
7.2.1 Operadores
| Operador | Ejemplo | Descripción |
|---|---|---|
= |
x=y |
Asigna el valor de x al valor de y |
+ |
x+y |
Suma el valor de x al valor de y |
- |
x-y |
Resta el valor de y al valor de x |
* |
x*y |
Multiplica el valor de x por el valor de y |
/ |
x/y |
Divide el valor de x por el valor de y |
== |
x==y |
Prueba si el valor de x es igual a y |
!= |
x!=y |
Prueba si el valor de x no es igual a y |
> |
x>y |
Prueba si el valor de x es mayor que y |
< |
x<y |
Prueba si el valor de x es menor que y |
>= |
x>=y |
Prueba si el valor de x es mayor o igual a y |
<= |
x<=y |
Prueba si el valor de x es menor o igual a y |
% |
x%y |
Divide x entre y y reporta el residuo, por ejemplo, 12%5=2 |
** |
x**y |
Eleva x a la potencia de y |
7.2.2 Operadores Lógicos
| Operador Lógico | Descripción |
|---|---|
&& |
Operador lógico "y" |
| | | | Operador lógico"o" |
! |
Operador lógico de negación "no" |
7.2.3 Sintaxis
| Regla | Ejemplo |
|---|---|
| Los datos están en pares de nombre/valor | nombre: "Joe" |
| Los datos están separados por comas | nombre: "Joe", edad: 21, desarrollador_backend: true |
| Las llaves {} contienen objetos | function MiFuncion(){alert("¡Hola Mundo!")} |
| Los corchetes [] contienen matrices | ["manzana", "plátano", "durazno", "pera"] |
7.2.4 Decimales
| Operador | Descripción | Valor Calculado | Valor Reportado |
|---|---|---|---|
+(data.dens*data.vol).toFixed(0) |
Sin Decimales | 56842.88861132361 | 56843 |
+(data.dens*data.vol).toFixed(5) |
5 Decimales | 56842.88861132361 | 56842.88861 |
7.2.5 Funciones Matemáticas
| Función | Description |
|---|---|
abs(x) |
Retorna | x | |
acos(x) |
Retorna el arcocoseno de x, en radianes |
asin(x) |
Retorna el arcoseno de x, en radianes |
atan(x) |
Retorna la arcotangente de x como un valor numérico entre -π/2 π/2 radianes |
atan2(y,x) |
Retorna la arcotangente del cociente de sus argumentos |
ceil(x) |
Retorna x, redondeado al entero superior |
cos(x) |
Retorna el coseno de x, en radianes |
exp(x) |
Retorna el valor de ex |
floor(x) |
Retorna x, redondeado al entero más inferior |
log(x) |
Retorna el logaritmo natural (base E) de x |
max(x,y,z,..., n) |
Retorna el valor máximo |
min(x,y,z,..., n) |
Retorna el valor mínimo |
pow(x,y) |
Retorna el valor de xy |
random() |
Retorna un número aleatorio entre 0 y 1 |
round(x) |
Redondea x al entero más cercano |
sin(x) |
Retorna el seno de x, en radianes |
sqrt(x) |
Retorna √x |
tan(x) |
Retorna la tangente de x |
7.2.6 Constantes Matemáticas
| Constante | Descripción | Valor |
|---|---|---|
| Math.E | Número de Euler (e), base de los logaritmos naturales | ~2.718 |
| Math.LN2 | ln(2) | ~0.693 |
| Math.LN10 | ln(10) | ~2.303 |
| Math.LOG2E | log2(E) | ~1.443 |
| Math.LOG10E | log10(E) | ~0.434 |
| Math.PI | π | ~3.14159 |
| Math.SQRT1_2 | √0.5 | ~0.707 |
| Math.SQRT2 | √2 | ~1.414 |
7.2.7 Ejemplos de Opencontour
| Entrada de la Expresión de Variable | Notas |
|---|---|
if(data.au>=1){"H"}else{if(data.au>=0.5){"L"}else{0}} |
If anidado: if(){}else{else{}} Referencia alfanumérica: “H” & “L” |
if(data.au>0.3){1}else{0} |
If: if(){}else{} Mayor que: > |
if(data.ag>=110){2}else{if(data.ag>=30.72){1}else{0}} |
If anidado: if(){}else{else{}} Mayor o igual que: >= |
if(data.class>0&&data.class<3&&data.sulf<1&&data.jcode=="I"){0.64}else{0} |
Operador lógico "y": && Si a=b: a==b |
if(data.r>5){data.el*((0.102/2)^2*Math.PI)}else{data.el*((0.203/2)^2*Math.PI)} |
π: Math.PI Valor elevado al cuadrado: ^2 |
if(data.r>=5&&data.walld>0){+(data.walld/0.5).toFixed(0)}else{0},+(0.4*data.ec).toFixed(2) |
0 Decimales: .toFixed(0) 2 Decimales: .toFixed(2) +, a veces se requiere antes de una expresión: + |
+(data.pa*settings.bench_height).toFixed(2) |
Valor de BenchHeight de la configuración del proyecto : settings.bench_height |
if(data.pn=="OC1"&&data.ow>0&&data.otns>1){(data.otns*data.au)/data.otns}else{0} |
Ley por fase (pn), para el metal data.au |
if(data.pn.substring(0,4)=="pick"){data.otns*data.au}else{0} |
Verifica si los caracteres de 0 -4 en data.pn contiene "pick" |
if(data.pn=="ph2"){"dump2"}else{"dump1"} |
Referencia alfanumérica: “ph2”,“dump2”&“dump1” |
if(data.pn.includes("GP")){1}else{2} |
Verifica si el caracter de data.pn incluye el texto “GP” |
if(data.z=2135&&data.au==null){data.tns}else{0} |
Referencia nula |
{data.ow+"_"+data.pm} |
Escribe data.ow_data.pm |
7.2.8 Referencias Externas
| Sitio Web | URL del Sitio Web |
|---|---|
| MDN Web Docs | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math |
| w3schools | https://www.w3schools.com/jsref/jsref_obj_math.asp |
7.3 Proyecto Tutorial Parte 5: Codificación
En esta sección, el usuario ejecutará los códigos proporcionados por Opencontour como plantilla para su proyecto para el análisis económico del plan de minado. Estos códigos generarán un impacto en los resultados visibles de los gráficos y reportes finales.
7.3.1 Código de Análisis Económico
- Salga del módulo Create Schedule y navegue al módulo Create Script
- El módulo Create Script tiene la capacidad de ejecutar diversas funciones en Javascript. Sin embargo, para nuestros fines de generación de reporte de secuenciamiento, lo más relevante será la codificación para el análisis económico
- En el menú desplegable Boilerplate, seleccione el código Finance_Script. Luego, haga clic en Load
- Una vez que los códigos estén cargados, asegúrese de que sean relevantes para el metal específico del plan de minado. Están preconfigurados para calcular el oro (Au), y puede que necesite ser modificado si está trabajando con otro metal
- La ventana debería verse como esto:
Plantilla de Análisis Económico

- Una vez que esto esté completado, asegúrese de que el menú desplegable Choose Layer tenga seleccionada la capa Mineplan. Haga clic en Run Script
- Debería aparecer una ventana emergente donde indique que los códigos se calcularon para las variables del modelo de Mineplan. debería verse como esto:
Ventana Emergente de Códificacion
