Skip to content

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

Utility Create Script


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

Create Script Window


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):

  1. 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.
  2. 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.
  3. 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

Boilerplate Finance


  • 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

Scripts Pop-Up Window