Chat
Welcome to Flux
Treat Flux like your intern. Tell it what you'd like to build and it'll get to work. You can also ask it questions, brainstorm ideas, and teach it your preferences. Learn More
Python
import re def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.readlines() # Función para invertir las coordenadas X def invert_x(line): # Encontrar todas las coordenadas X en la línea x_coords = re.findall(r'X([0-9\-]+)', line) for x in x_coords: # Invertir la coordenada X inverted_x = f'X{-int(x)}' # Reemplazar la coordenada en la línea line = line.replace(f'X{x}', inverted_x) return line # Aplicar la inversión a todas las líneas después del último '%' in_data = False new_gerber_data = [] for line in gerber_data: if '%' in line: in_data = True if in_data: new_gerber_data.append(invert_x(line)) else: new_gerber_data.append(line) # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.writelines(new_gerber_data) # Ejemplo de uso input_file = 'input.gerber' output_file = 'mirrored_output.gerber' mirror_gerber_x(input_file, output_file)
input_file y output_file según tus necesidades. Si necesitas invertir también las coordenadas Y o hacer alguna otra transformación, puedes modificar la función invert_x en consecuencia.Detalles del Script Mejorado:Python
import re def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X processed_data = [] in_data = False for line in gerber_data.split('\n'): if line.startswith('%'): # Detectar el inicio del bloque de datos in_data = not in_data if in_data: processed_data.append(invert_x(line)) else: processed_data.append(line) # Unir las líneas procesadas new_gerber_data = '\n'.join(processed_data) # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) # Ejemplo de uso input_file = 'input.gerber' output_file = 'mirrored_output.gerber' mirror_gerber_x(input_file, output_file)
file.read() lee todo el contenido del archivo en lugar de línea por línea.invert_x utiliza una expresión regular para encontrar y reemplazar las coordenadas X.Python
import re def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Encontrar la última ocurrencia del caracter '%' last_percent_pos = gerber_data.rfind('%') # Dividir el archivo en dos partes: antes y después del último '%' before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X en la parte después del '%' processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) # Unir las líneas procesadas new_after_last_percent = '\n'.join(processed_data) # Combinar ambas partes new_gerber_data = before_last_percent + new_after_last_percent # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) # Ejemplo de uso input_file = 'input.gerber' output_file = 'mirrored_output.gerber' mirror_gerber_x(input_file, output_file) print(f"Archivo espejado guardado en {output_file}")
file.read() para leer todo el contenido.%: Usa rfind para encontrar la última ocurrencia del carácter '%'.invert_x para invertir las coordenadas 'X' en la parte después del último '%'..GBL en una carpeta específica, los procese y genere archivos espejados con la misma estructura de nombre pero con el sufijo espejo.GBL.glob para encontrar los archivos .GBL y luego adaptar el script anterior para procesar cada archivo encontrado. Aquí tienes el código:Detalles del Script:Python
import re import glob import os def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Encontrar la última ocurrencia del caracter '%' last_percent_pos = gerber_data.rfind('%') # Dividir el archivo en dos partes: antes y después del último '%' before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X en la parte después del '%' processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) # Unir las líneas procesadas new_after_last_percent = '\n'.join(processed_data) # Combinar ambas partes new_gerber_data = before_last_percent + new_after_last_percent # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) def process_all_gbl_files(directory): # Buscar todos los archivos .GBL en el directorio especificado gbl_files = glob.glob(os.path.join(directory, '*.GBL')) for gbl_file in gbl_files: # Generar el nombre del archivo de salida base_name = os.path.basename(gbl_file) output_file = os.path.join(directory, base_name.replace('.GBL', '_espejo.GBL')) # Procesar el archivo mirror_gerber_x(gbl_file, output_file) print(f"Archivo espejado guardado en {output_file}") # Ejemplo de uso directory = 'ruta/al/directorio' process_all_gbl_files(directory)
mirror_gerber_x(input_file, output_file): Es el mismo código que invierte las coordenadas X después del último '%'.process_all_gbl_files(directory):
glob.glob para encontrar todos los archivos .GBL en el directorio especificado._espejo.GBL.mirror_gerber_x para procesar cada archivo encontrado.directory con la ruta al directorio que contiene los archivos .GBL.process_all_gbl_files(directory) para procesar todos los archivos en ese directorio.'ruta/al/directorio' con la ruta real de tu directorio. Este script buscará automáticamente todos los archivos .GBL, los espejará y guardará los archivos resultantes con el sufijo _espejo.GBL.Sh
sudo apt-get update sudo apt-get install python3
mirror_gerber.py.Sh
chmod +x mirror_gerber.py
Sh
python3 mirror_gerber.py
Notas Específicas para LinuxPython
import re import glob import os def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Encontrar la última ocurrencia del caracter '%' last_percent_pos = gerber_data.rfind('%') # Dividir el archivo en dos partes: antes y después del último '%' before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X en la parte después del '%' processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) # Unir las líneas procesadas new_after_last_percent = '\n'.join(processed_data) # Combinar ambas partes new_gerber_data = before_last_percent + new_after_last_percent # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) def process_all_gbl_files(directory): # Buscar todos los archivos .GBL en el directorio especificado gbl_files = glob.glob(os.path.join(directory, '*.GBL')) for gbl_file in gbl_files: # Generar el nombre del archivo de salida base_name = os.path.basename(gbl_file) output_file = os.path.join(directory, base_name.replace('.GBL', '_espejo.GBL')) # Procesar el archivo mirror_gerber_x(gbl_file, output_file) print(f"Archivo espejado guardado en {output_file}") # Ejemplo de uso directory = '/ruta/al/directorio/' process_all_gbl_files(directory) print("Proceso completado.")
directory esté correctamente definida y que tengas permisos de lectura/escritura en dicho directorio.python3 --version.python3 seguido del nombre del archivo del script para ejecutarlo..GBL en el directorio actual y generará los archivos espejados en el mismo directorio.Detalles del Script:Python
import re import glob import os def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Encontrar la última ocurrencia del caracter '%' last_percent_pos = gerber_data.rfind('%') # Dividir el archivo en dos partes: antes y después del último '%' before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X en la parte después del '%' processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) # Unir las líneas procesadas new_after_last_percent = '\n'.join(processed_data) # Combinar ambas partes new_gerber_data = before_last_percent + new_after_last_percent # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) def process_all_gbl_files(): # Obtener el directorio actual current_directory = os.getcwd() # Buscar todos los archivos .GBL en el directorio actual gbl_files = glob.glob(os.path.join(current_directory, '*.GBL')) for gbl_file in gbl_files: # Generar el nombre del archivo de salida base_name = os.path.basename(gbl_file) output_file = os.path.join(current_directory, base_name.replace('.GBL', '_espejo.GBL')) # Procesar el archivo mirror_gerber_x(gbl_file, output_file) print(f"Archivo espejado guardado en {output_file}") # Ejecutar el procesamiento process_all_gbl_files() print("Proceso completado.")
os.getcwd() para obtener el directorio desde el cual se ejecuta el script.glob.glob para buscar archivos .GBL en el directorio actual._espejo.GBL y llama a mirror_gerber_x.mirror_gerber.py) usando cd.Sh
python3 mirror_gerber.py
.GBL en el directorio desde el cual se ejecuta el script y generará los archivos espejados en el mismo directorio..GBL._espejo.GBL. Si necesitas algún ajuste adicional, házmelo saber.Detalles del Script:Python
import re import glob import os def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Encontrar la última ocurrencia del caracter '%' last_percent_pos = gerber_data.rfind('%') # Dividir el archivo en dos partes: antes y después del último '%' before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X en la parte después del '%' processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) # Unir las líneas procesadas new_after_last_percent = '\n'.join(processed_data) # Combinar ambas partes new_gerber_data = before_last_percent + new_after_last_percent # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) def process_all_gbl_files(): # Buscar todos los archivos .GBL en el directorio actual gbl_files = glob.glob('*.GBL') for gbl_file in gbl_files: # Generar el nombre del archivo de salida base_name = os.path.basename(gbl_file) output_file = base_name.replace('.GBL', '_espejo.GBL') # Procesar el archivo mirror_gerber_x(gbl_file, output_file) print(f"Archivo espejado guardado en {output_file}") # Ejecutar el procesamiento process_all_gbl_files() print("Proceso completado.")
glob.glob('*.GBL'): Busca todos los archivos .GBL en el directorio actual sin usar rutas absolutas.base_name.replace('.GBL', '_espejo.GBL') para generar el nombre del archivo espejado.mirror_gerber.py..GBL y el script.Sh
python3 mirror_gerber.py
_espejo.GBL en el mismo directorio.#!/usr/bin/env python3 al principio del archivo de script:Paso 2: Hacer el Archivo EjecutablePython
#!/usr/bin/env python3 import re import glob import os def mirror_gerber_x(input_file, output_file): # Leer el contenido del archivo Gerber with open(input_file, 'r') as file: gerber_data = file.read() # Encontrar la última ocurrencia del caracter '%' last_percent_pos = gerber_data.rfind('%') # Dividir el archivo en dos partes: antes y después del último '%' before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] # Función para invertir las coordenadas X def invert_x(line): # Encontrar y reemplazar la coordenada X en la línea return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) # Procesar cada línea para invertir las coordenadas X en la parte después del '%' processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) # Unir las líneas procesadas new_after_last_percent = '\n'.join(processed_data) # Combinar ambas partes new_gerber_data = before_last_percent + new_after_last_percent # Escribir el contenido invertido en el nuevo archivo Gerber with open(output_file, 'w') as file: file.write(new_gerber_data) def process_all_gbl_files(): # Buscar todos los archivos .GBL en el directorio actual gbl_files = glob.glob('*.GBL') for gbl_file in gbl_files: # Generar el nombre del archivo de salida base_name = os.path.basename(gbl_file) output_file = base_name.replace('.GBL', '_espejo.GBL') # Procesar el archivo mirror_gerber_x(gbl_file, output_file) print(f"Archivo espejado guardado en {output_file}") # Ejecutar el procesamiento process_all_gbl_files() print("Proceso completado.")
mirror_gerber.py. Luego, abre un terminal y navega al directorio donde está el archivo. Haz que el archivo sea ejecutable con el siguiente comando:Paso 3: Configuración de un Lanzador (Opcional)Sh
chmod +x mirror_gerber.py
.desktop, por ejemplo, mirror_gerber.desktop.path/to/mirror_gerber.py con la ruta real del script:Ini
[Desktop Entry] Version=1.0 Type=Application Name=Mirror Gerber Comment=Execute the mirror Gerber script Exec=/ruta/a/mirror_gerber.py Icon=utilities-terminal Terminal=true
.desktop y hazlo ejecutable:
Sh
chmod +x mirror_gerber.desktop
mirror_gerber.py o en el lanzador mirror_gerber.desktop, y el script debería ejecutarse.Crear un EjecutableSh
pip install pyinstaller
Opciones de PyInstallerSh
pyinstaller --onefile mirror_gerber.py
--onefile: Crea un único archivo ejecutable.--noconsole: (Opcional) Si no deseas que se abra la consola (ventana de terminal) al ejecutar el programa en Windows.Sh
pyinstaller --onefile mirror_gerber.py
ResultadoSh
pyinstaller --onefile --noconsole mirror_gerber.py
dist. Por ejemplo:dist/, encontrarás el archivo mirror_gerber (en Linux) o mirror_gerber.exe (en Windows).mirror_gerber o mirror_gerber.exe) para ejecutar tu script sin necesidad de usar Python explícitamente.Sh
pip install pyinstaller
Sh
cd /ruta/al/directorio
Sh
pyinstaller --onefile mirror_gerber.py
dist y ejecútalo con doble clic.mirror_gerber.py tenga la línea shebang si planeas ejecutarlo en Linux directamente:Python
#!/usr/bin/env python3 import re import glob import os def mirror_gerber_x(input_file, output_file): with open(input_file, 'r') as file: gerber_data = file.read() last_percent_pos = gerber_data.rfind('%') before_last_percent = gerber_data[:last_percent_pos + 1] after_last_percent = gerber_data[last_percent_pos + 1:] def invert_x(line): return re.sub(r'X([0-9\-]+)', lambda match: 'X' + str(-int(match.group(1))), line) processed_data = [] for line in after_last_percent.split('\n'): processed_data.append(invert_x(line)) new_after_last_percent = '\n'.join(processed_data) new_gerber_data = before_last_percent + new_after_last_percent with open(output_file, 'w') as file: file.write(new_gerber_data) def process_all_gbl_files(): gbl_files = glob.glob('*.GBL') for gbl_file in gbl_files: base_name = os.path.basename(gbl_file) output_file = base_name.replace('.GBL', '_espejo.GBL') mirror_gerber_x(gbl_file, output_file) print(f"Archivo espejado guardado en {output_file}") process_all_gbl_files() print("Proceso completado.")
.GBL en el directorio actual._espejo.GBL.Compilación y EjecuciónCpp
#include <iostream> #include <fstream> #include <filesystem> #include <regex> #include <string> #include <vector> namespace fs = std::filesystem; std::string invert_x_coordinates(const std::string& after_last_percent) { std::regex x_regex("X([0-9\\-]+)"); return std::regex_replace(after_last_percent, x_regex, [](const std::smatch& match) { int x_value = std::stoi(match.str(1)); return "X" + std::to_string(-x_value); }); } void mirror_gerber_x(const std::string& input_file, const std::string& output_file) { // Leer el contenido del archivo Gerber std::ifstream infile(input_file); if (!infile) { std::cerr << "No se puede abrir el archivo: " << input_file << std::endl; return; } std::stringstream buffer; buffer << infile.rdbuf(); std::string gerber_data = buffer.str(); infile.close(); // Encontrar la última ocurrencia del caracter '%' size_t last_percent_pos = gerber_data.rfind('%'); if (last_percent_pos == std::string::npos) { std::cerr << "No se encontró el caracter '%' en el archivo: " << input_file << std::endl; return; } // Dividir el archivo en dos partes: antes y después del último '%' std::string before_last_percent = gerber_data.substr(0, last_percent_pos + 1); std::string after_last_percent = gerber_data.substr(last_percent_pos + 1); // Invertir las coordenadas X en la parte después del último '%' std::string new_after_last_percent = invert_x_coordinates(after_last_percent); // Combinar ambas partes std::string new_gerber_data = before_last_percent + new_after_last_percent; // Escribir el contenido invertido en el nuevo archivo Gerber std::ofstream outfile(output_file); if (!outfile) { std::cerr << "No se puede escribir el archivo: " << output_file << std::endl; return; } outfile << new_gerber_data; outfile.close(); } void process_all_gbl_files() { std::vector<std::string> gbl_files; // Buscar todos los archivos .GBL en el directorio actual for (const auto& entry : fs::directory_iterator(".")) { if (entry.path().extension() == ".GBL") { gbl_files.push_back(entry.path().string()); } } for (const auto& gbl_file : gbl_files) { // Generar el nombre del archivo de salida std::string output_file = gbl_file.substr(0, gbl_file.rfind(".GBL")) + "_espejo.GBL"; // Procesar el archivo mirror_gerber_x(gbl_file, output_file); std::cout << "Archivo espejado guardado en " << output_file << std::endl; } } int main() { process_all_gbl_files(); std::cout << "Proceso completado." << std::endl; return 0; }
mirror_gerber.cpp, y compílalo usando g++:Sh
g++ -o mirror_gerber mirror_gerber.cpp -std=c++17
Explicación del CódigoSh
./mirror_gerber
std::ifstream para leer el contenido del archivo Gerber.std::regex para buscar y reemplazar las coordenadas X.std::ofstream para escribir el contenido invertido en el nuevo archivo Gerber..GBL: Utilizamos std::filesystem para encontrar todos los archivos .GBL en el directorio actual..GBL encontrado y genera el archivo espejado correspondiente.std::regex_replace no admite una lambda como reemplazo en la versión de GCC que estás usando. Vamos a ajustar la funcionalidad para utilizar un enfoque diferente. En lugar de usar std::regex_replace con una lambda, haremos una iteración manual sobre las coincidencias y construiremos la cadena resultante.ExplicaciónCpp
#include <iostream> #include <fstream> #include <filesystem> #include <regex> #include <sstream> #include <string> #include <vector> namespace fs = std::filesystem; std::string invert_x_coordinates(const std::string& after_last_percent) { std::regex x_regex("X([0-9\\-]+)"); std::string result; std::sregex_iterator iter(after_last_percent.begin(), after_last_percent.end(), x_regex); std::sregex_iterator end; size_t last_pos = 0; while (iter != end) { std::smatch match = *iter; int x_value = std::stoi(match.str(1)); result += after_last_percent.substr(last_pos, match.position() - last_pos); // Copy all text before the match result += "X" + std::to_string(-x_value); // Replace with inverted X last_pos = match.position() + match.length(); // Move past the match iter++; } result += after_last_percent.substr(last_pos); // Copy any remaining text after the last match return result; } void mirror_gerber_x(const std::string& input_file, const std::string& output_file) { // Leer el contenido del archivo Gerber std::ifstream infile(input_file); if (!infile) { std::cerr << "No se puede abrir el archivo: " << input_file << std::endl; return; } std::stringstream buffer; buffer << infile.rdbuf(); std::string gerber_data = buffer.str(); infile.close(); // Encontrar la última ocurrencia del caracter '%' size_t last_percent_pos = gerber_data.rfind('%'); if (last_percent_pos == std::string::npos) { std::cerr << "No se encontró el caracter '%' en el archivo: " << input_file << std::endl; return; } // Dividir el archivo en dos partes: antes y después del último '%' std::string before_last_percent = gerber_data.substr(0, last_percent_pos + 1); std::string after_last_percent = gerber_data.substr(last_percent_pos + 1); // Invertir las coordenadas X en la parte después del último '%' std::string new_after_last_percent = invert_x_coordinates(after_last_percent); // Combinar ambas partes std::string new_gerber_data = before_last_percent + new_after_last_percent; // Escribir el contenido invertido en el nuevo archivo Gerber std::ofstream outfile(output_file); if (!outfile) { std::cerr << "No se puede escribir el archivo: " << output_file << std::endl; return; } outfile << new_gerber_data; outfile.close(); } void process_all_gbl_files() { std::vector<std::string> gbl_files; // Buscar todos los archivos .GBL en el directorio actual for (const auto& entry : fs::directory_iterator(".")) { if (entry.path().extension() == ".GBL") { gbl_files.push_back(entry.path().string()); } } for (const auto& gbl_file : gbl_files) { // Generar el nombre del archivo de salida std::string output_file = gbl_file.substr(0, gbl_file.rfind(".GBL")) + "_espejo.GBL"; // Procesar el archivo mirror_gerber_x(gbl_file, output_file); std::cout << "Archivo espejado guardado en " << output_file << std::endl; } } int main() { process_all_gbl_files(); std::cout << "Proceso completado." << std::endl; return 0; }
invert_x_coordinates: Utiliza un iterador regex para encontrar coincidencias de coordenadas X, invierte el valor, y construye la cadena resultante manualmente.std::ifstream y std::ofstream para leer y escribir archivos.std::filesystem::directory_iterator para encontrar y procesar todos los archivos .GBL en el directorio actual.mirror_gerber.cpp.g++:
Sh
g++ -o mirror_gerber mirror_gerber.cpp -std=c++17
Sh
./mirror_gerber
.GBL en el directorio actual y generará los archivos espejados correspondientes.Reviews
Documents
Documents are markdown text files which describe project goals, capture details, or even simulation outputs.
Assets
No assets added.
Screeching Amethyst Lightcycle
Properties
Properties describe core aspects of the project.
Pricing & Availability
Distributor | Qty 1 |
|---|---|
Digi-Key | $1.16–$1.81 |
Mouser | $1.09 |
Controls
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.
lucs26
copilot
%para determinar hasta dónde agregar el espejo.Xen el archivo y las espeja añadiendo un signo negativo.g++) para compilar este código.lucs26
copilot
findLastPercentPositionpara encontrar la última aparición del símbolo%en el archivo.mirrorLinepara agregar un signo negativo a los valores de coordenadasX.mirrorGerberFileque utiliza las dos funciones anteriores para procesar el archivo de entrada y crear la versión espejada.main, se especifican los nombres de los archivos de entrada y salida y se llama a la funciónmirrorGerberFile."archivo.GBL"con el nombre del archivo original.