Вы находитесь на странице: 1из 7

Extensión las multi tareas con Python® y procesadores autónomos

Extensión las multi tareas con


Mining Software
Python® y procesadores autónomos
MineSight® es un sistema integrado de visualización y modelado de datos en 3-D, de última
generación, que brinda muchas capacidades y una gran flexibilidad para el modelado geológico y
el diseño de minas. MineSight®, a través del menú del programa MineSight® Compass™ permite
acceder a todo el paquete de programas MineSight® para manipular las bases de datos de sondajes,
compositos y modelos de bloque del proyecto. A pesar de ser muy poderoso, MineSight® requiere
de la interacción con un ser humano para producir resultados.
Desde que se lanzó MineSight®, uno de los objetivos de Mintec ha sido el de permitir la
generación de rutinas para los aspectos gráficos del programa. Al generar rutinas de comandos
para crear de objetos 3-D, tales como superficies de minado, superficies según se minaron, extraer
datos de sondaje verificados y seleccionar los resultados terminados, tales como la superficie final
del pit o las superficies de las fases del pit, es posible reproducir muchos procesos comerciales.
Por ejemplo, un proceso de construcción del modelo que incorporara nueva información de
perforaciones en el modelo del bloque en 3-D. O bien otro proceso creado para permitir la
generación de informes sobre resultados a fin de mes.
Una situación ideal sería, aquella que permitiera realizar un seguimiento detallado del proceso
de construcción del modelo para que poder realizarlo luego en forma totalmente automática. Para
hacerlo, es necesario que los objetos gráficos de MineSight® estén organizados en forma lógica y
tengan una denominación coherente. Esto puede requerir el empleo de un sistema de seguridad
de datos (DSS) para guardar los productos finales del negocio, tales como la topografía original,
formas geológicas, superficies a fin de mes, diseños de pit finales y por etapa, y formas de minado
graduales o mensuales.
Una multi-tarea es simplemente una serie de procedimientos MineSight® Compass™ que se
ejecutan en secuencia o bien en lazos. Estos procedimientos pueden ser estándar de MineSight®,
de MineSight® Australasia, pueden ser procedimientos a medida o bien scripts en Python®. Uno
de los procedimientos estándar, Runcmd.dat, permite la ejecución de cualquier comando, desde
MineSight® Compass™, Python®, windows o cualquier ejecutable. Esto permite al usuario abrir
programas externos durante la ejecución de una multi-tarea.
Python® es el lenguaje de rutinas de comandos empleado dentro de MineSight®; Se puede utilizar
para reponer o actualizar los archivos de modelos en MineSight®; y también para procesar un único
objeto o varios objetos en un directorio MineSight®.
Los procesadores independientes son las herramientas MineSight® que han quedado “expuestas”
para las opciones de las líneas de comando. Una vez que se expone un procesador es posible
ejecutarlo transfiriendo los comando desde una ventana de comandos, un procedimiento
MineSight® Compass™ o una rutina python. Las porciones expuestas y disponibles para el usuario
se encuentran en el directorio winexe\StandaloneEngines o, para los clientes de Australasia, en el
directorio Medexe\local. Esta previsto desplazar estos procesadores hacia el directorio winexe en
futuras versiones.

Procesadores independientes
Actualmente hay ocho programas en la carpeta de procesadores independientes, junto con los
archivos DLL requeridos para ejecutarlos. Estos programas son:

24th
Annual
Mintec
Seminar

Page 
Extensión las multi tareas con Python® y procesadores autónomos

cdt.exe - Corrección de triangulación de Delaunay, corrige las cadenas de


contornos triangulados.
clip.exe - Para la función de recorte de sólido/cadena.
dtb.exe - Triangulación de Delaunay, triangula los datos de Mining Software
levantamientos.
filter.exe - Elimina datos no deseados de la triangulación.
pclip.exe - Función de polígono/recorte de polígono.
sgr.exe - Función para cuadriculado de superficie y cálculo de volumen.
union.exe - Procesador de intersección sólido/sólido.
voxel.exe - Calcula parciales del bloque a partir de sólidos.

Dentro del directorio de procesadores autónomos, hay un archivo de ayuda compilado, el archivo
StandaloneEngines.chm; cada programa además provee en forma interna una documentación
mínima a la que se accede escribiendo el nombre del programa seguido de a–h. Por ejemplo si escribe
pclip–h aparecerá:
POLYGON-POLYGON CLIPPING UTILITY
(que es la ayuda para la función para polígono/recorte de polígono, y se presenta un texto similar al
siguiente:)
-vbm/srv Input VBM/Survey file with polygons.
There can be one or two input files
of the same format.
oper A pre-processing operation over input polygons
to be performed before other calculations.
It can be one of the following:
n No preprocessing.
s Separate polygons into independant sets.
c Option opposite to ‘s’. Combine all
polygons in one.
-prm file Input parameter file. Used when survey files used.
-int file Output intersection of input polygons.
-union file Output union of input polygons.
-diff file Output difference of input polygons.
-f<n> Validate polygons before intersection, where n can be
0 - make external and internal polygons
to have opposite direction (default);
1 - use original direction of polygons.
-R Reverse polygons (external oriented clockwise).
-dat dir Define a directory with input files.

PCLIP ver 3.34 (MS3D 3.6) Copyright (C) 1996-2006 Mintec Inc.

Observe que los procesadores independientes tienen una versión que corresponde con la versión
principal de MineSight®.

Procedimientos que emplean procesadores independientes


Mintec ha creado procedimientos para muchos procesadores independientes. Y están a su 24th
disposición en el grupo de Asistencia Técnica. La mayoría de ellos son empleados por los usuarios de
MineSight® Australasia Annual
Sus nombres son:
Mintec
Seminar

Page 
Extensión las multi tareas con Python® y procesadores autónomos

Pdtmcd.met – Cuadricula la superficie del pliegue/DXF en GSF,


Permap.met – Plotea los mapas de fin de período de IP.
Pltpln.met – Plotea los datos en un plano.
Pltsec.met – Plotea los datos en un corte.
Mining Software
Prmdup.met – Elimina los triángulos duplicados en un sólido.
Psfslc.met - Corta en tajadas un sólido/superficie con un plano.
Psfvol.met – Calcula volúmenes de banco/parciales entre dos superficies DTM.
Pspear.met – Codifica sondajes o compositos dentro de sólidos 3-D.
Ptrutl.met – Función de validación/reparación de sólido/superficie
Punion.met – Corre unión en 2 sólidos o superficies.
Pvbm2.met – Crea cadenas VBM de los datos de cortes y levantamiento
fusionados.
Pvalid.met – Valida una superficie, elimina duplicados, auto-intersecantes.
Pvbmmg.met – Crea cadenas VBM de los datos de cortes y levantamiento
fusionados.
Estos procedimientos se pueden emplean con MineSight® Compass™ o como parte de una
multitarea.

Ejemplos de códigos Python®.


Python® se puede utilizar para seleccionar objetos MineSight® que se emplearán con los
procesadores independientes o bien para modificar los archivos MineSight® directamente. En la
carpeta graildoc Mintec ha creado la documentación sobre los métodos de acceso. Desde MineSight®
haga clic en Help | MineSight Help | MineSight Grail Documentation. También puede acceder a
graildoc desde el Microsoft® Explorer. Haga clic en ~\Winexe\graildoc\lib-grail-data-
model.html para ver los términos y métodos de acceder a los datos del modelo. A continuación se
presenta un ejemplo de esta documentación.
Términos y definiciones
En todo trabajo relacionado con modelos, es necesario definir varios términos:
PCF
Abreviatura de Project Control File - archivo de control de proyecto Este archivo es el
lugar de almacenamiento central para todos los archivos de su modelo. Y sabe cuáles ítems
están en cuál modelo, así como también las dimensiones de su modelo.
Model File Name
Este es el nombre del modelo, tal como lo conoce el PCF.
3DBM
Este es un modelo del bloque en 3-D.
GSM
Este es un modelo de manto cuadriculado.
Slab
Se trata de una subsección de un modelo. No resulta eficiente cargar todo el modelo en
la memoria de su equipo informático. Por ello, cargará una subsección de la parte que
interesa en forma inmediata y en la que se desea trabajar.
De esta forma, siempre tendrá una rebanada gruesa dentro de la memoria, pero no podrá
leer/escribir desde el disco a través de la definición de modelo.
Cell
Una ubicación de uno-por-uno-por-uno dentro del modelo. Este es el ítem de referencia
más pequeño.
24th
Annual
Mintec
Seminar

Page 
Extensión las multi tareas con Python® y procesadores autónomos

En general la secuencia de los pasos es la siguiente,


1. Crear un modelo, Model, con las dimensiones de su rebanada gruesa.
2. Solicitar un nombrecillo para la rebanada.
3. Leer/escribir datos desde/hacia la rebanada
Mining Software
4. Guardar la rebanada, si está escribiendo.
5. Liberar la memoria
6. Forzar un basurero
A continuación hay un pequeño trozo de los códigos que reposicionan tres ítems en un 3DBM para
un área definida, esto podría realizarse antes y codificar el modelo en un paso posterior.
m = model.Model(pcfpath, MODELNAME, minLevel, maxLevel, minRow, maxRow,
minColumn, maxColumn, itemlist)
s = m.slab()
for row in range(minRow, (maxRow + 1),1):
for col in range(minColumn, (maxColumn+1),1):
s.modset(‘WAREA’,benchnumber,row,col,model.UNDEFINED)
s.modset(‘INFLG’,benchnumber,row,col,model.UNDEFINED)
s.modset(‘BLPLY’,benchnumber,row,col,model.UNDEFINED)
m.storeslab()
m.free()
gc.collect()
Abajo se presenta un pequeño trozo de los códigos que fijan varios ítems del modelo en un área
definida del 3DBM.
m = model.Model(pcfpath, MODELNAME, minLevel, maxLevel, minRow, maxRow,
minColumn, maxColumn, itemlist)
s = m.slab()
for lev in range(minLevel,maxLevel+1):
fldbug.write(‘Coding lev %s \n’ %lev)
for row in range(minRow, maxRow+1):
for col in range(minColumn, maxColumn+1):
veast = mypcf.xmin() + (col * dx) - (0.5*dx)
vnorth = mypcf.ymin() + (row * dy) - (0.5*dy)
test_inside = metech_utilities.mslocp(cut, mycut, fldel,
flname, veast, vnorth, version)
if test_inside >= 0:
s.modset(“INFLG”,lev,row,col,1)
s.modset(“BLPLY”,lev,row,col,1)

m.storeslab()
m.free()
gc.collect()

En el pedacito de código anterior, se está verificando los bloques para ver si están dentro de un
polígono limitante, aplicando la metech_utilities library, y si el bloque está dentro del límite,
los ítems se fijan en el valor asignado, en este caso, 1.
24th
Annual
Mintec
Seminar

Page 
Extensión las multi tareas con Python® y procesadores autónomos

Ejemplos de procesadores independientes


Los procesadores o motores independientes requieren que el programa reciba los
datos con un formato determinado. Python® se puede emplear para seleccionar un objeto
MineSight® y exportarlo al motor independiente, en el formato requerido.
Mining Software En la porción de código que se copia abajo, se emplea un sólido MineSight® para
generar una lanza de los sondajes que se extraen de un conjunto de datos de sondaje de
MineSight®.
# Dump Shell Files
# Ox
fldbug.write(‘Creating Oxide Shell\n’)
msr_file_name = ‘%s\\_msresources\\OC-Geology\\ORE\\Hi.msr’ %CWD
shell_file_name = ‘hi.shl’
create_shl_files(fldbug,msr_file_name,shell_file_name)
# Trans
fldbug.write(‘Creating Transitional Shell\n’)
msr_file_name = ‘%s\\_msresources\\OC-Geology\\ORE\\Low.msr’ %CWD
shell_file_name = ‘low.shl’
create_shl_files(fldbug,msr_file_name,shell_file_name)
.
.
.
fl = open(‘voxelme.bat’,’w’)
# Code DH
fl.write(“@echo off\n”)
fl.write(“echo Coding Drillholes...\n”)
fl.write(‘m208RP /frun208.PRI %s\n’ %nullout)
fl.write(‘m219v1 /frun219.hi %s\n’ %nullout)
fl.write(‘if exist dat205.cd del dat205.cd %s\n’ %nullout)
fl.write(‘clip -drh dat219.tmp -attr spear.0 -drill dat205.cd %s\n’ %nullout)
fl.write(‘if exist dat205.cd m205v1 /frun205.low %s\n’ %nullout)
fl.write(‘if exist dat205.cd del dat205.cd %s\n’ %nullout)
fl.write(‘clip -drh dat219.tmp -attr spear.1 -drill dat205.cd %s\n’ %nullout)
fl.write(‘if exist dat205.cd m205v1 /frun205.hi %s\n’ %nullout)

Esta porción exporta el archivo solid.msr como archivo en formato de repliegue y ejecuta el
procesador Clip.exe. La opción -drh especifica que el dato a recortar es un archivo de sondaje y
–attr indica que el atributo del sólido debe establecerse en los intervalos dentro del sólido, mientras
que –drill establece que los datos resultantes deben estar en formato M205V1. En el ejemplo citado,
dos sólidos atribuidos que definen las zonas de mena de alta y baja ley exportados como archivos
de repliegue junto con los intervalos de sondaje con M219V1, se emplean en el programa Clip para
definir los intervalos de ensaye dentro de cada sólido. Se procesa cada sólido, luego el resultado del
programa se carga nuevamente en el archivo de sondajes empleando M205V1.
Los mismos archivos de repliegue se pueden emplear para calcular los parciales 3DBM empleando
otro procesador independiente, el Voxel. La porción de código a continuación presenta cómo se
realiza esta tarea.

fl.write(‘voxel -shl hi.shl -prt hi.prt -xmin %s -ymin %s -zmin %s -nx


%s -ny %s -nz %s -dx %s -dy %s -dz %s -sb 10 %s\n’ %(mypcf.xmin(),mypcf.
24th ymin(),mypcf.zmin(), mypcf.nx(),mypcf.ny(),mypcf.nz(),mypcf.dx(),mypcf.
Annual dy(),mypcf.dz(),nullout))
Mintec fl.write(‘voxel -shl low.shl -prt low.prt -xmin %s -ymin %s
Seminar -zmin %s -nx %s -ny %s -nz %s -dx %s -dy %s -dz %s -sb 10 %s\n’ %(mypcf.
xmin(),mypcf.ymin(),mypcf.zmin(), mypcf.nx(),mypcf.ny(),mypcf.nz(),mypcf.
dx(),mypcf.dy(),mypcf.dz(),nullout))
Page 
Extensión las multi tareas con Python® y procesadores autónomos

Cómo emplear DTB para crear una superficie


Dtb puede emplear un ejecutable para crear una superficie a partir de datos de
levantamiento. Un ejemplo podría ser los datos captados para levantamiento hasta fin
de mes captados. Por ejemplo, el personal de exploraciones pueden proveer las cotas de
pie, cresta y de punto y un límite. El ejecutable dtb sería algo así: Mining Software

com ********** Start of run file *******************


dtb parameter=param.cod survey=jan.srv
dtb output=jan.shl

com Option assigning

IOP1 = 0 // 0 - use breaklines (default option);


// 1 - ignore Breaklines

IOP2 = 1 // 0 - not perform boundary Rectification (default option);


// 1 - perform boundary Rectification

com Output file format


IOP3 = 3 // 0 - Plot file (default option);
// 1 - list of Edges
// 2 - list of Triangles
// 3 - Shell format
// 4 - Old Shell format

IOP4 = 0 // 0 - output file is in ASCII format (default option);


// 1 - output file is in BINARY format

END // Logical End of the run file

El resultado es un archivo de repliegue que puede importarse en MineSight® o convertirse en .msr


con el programa shl2msr.exe.

Cómo emplear voxel para crear archivos de parciales.


Mintec ha creado un script denominado ShlRpt.pyc que emplea el motor independiente voxel.
exe. Esta rutina de comandos se puede ejecutar desde MineSight®, desde un archivo por lotes, desde
un procedimiento o desde una línea de comandos. Esta rutina puede procesar varios objetos en una
carpeta MineSight® o bien varios elementos en un objeto MineSight®. El script tiene muchas opciones
para filtrar los datos que se emplearán, por nombre del elemento, element name, por material del
elemento, element material; por material del recurso,resource material; sólo por sólidos, solids only;
y por volumen. Es posible generar informes de varios ítems, entre ellos volumen, tonelaje, área. El
factor de tonelaje se aplica a todo el conjunto de sólidos.

24th
Annual
Mintec
Seminar

Page 
Extensión las multi tareas con Python® y procesadores autónomos

Mining Software

Otras rutinas de comandos en Python®


Mintec está creando scripts en python para simplificar la
generación de informes de objetos, por ejemplo los informes de
polígonos.
Esta rutina producirá informes de varios ítems de interés en
todos los objetos dentro de una carpeta que contengan polilíneas
o polígonos. Los datos se pueden filtrar por planos, opción Filter
by Plane. Y el archivo .csv generado se puede abrir en Microsoft®
Excel.

24th
Annual
Mintec
Seminar

Page 

Вам также может понравиться