CAM Postprocessor Customization/es: Difference between revisions

From FreeCAD Documentation
(Created page with "==Introducción==")
 
(Updating to match new version of source page)
 
(41 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{UnfinishedDocu{{#translation:}}}}


{{Docnav
{{TutorialInfo
|[[CAM_SetupSheet|SetupSheet]]
|Topic=Path Workbench
|[[CAM_fourth_axis|Fourth axis]]
|Level=
|[[CAM_Workbench|CAM]]
|Time=
|IconL=
|Author=chrisb
|IconR=
|FCVersion=
|IconC=Workbench_CAM.svg
|Files=
}}
}}


{{TOCright}}

<span id="Introduction"></span>
==Introducción==
==Introducción==


<div class="mw-translate-fuzzy">
FreeCAD uses as internal representation for the generated paths, so called G-codes. They can describe such things as: speed and feed rates, stopping the motor etc... But the most important thing is the movements they describe. These movements are rather simple: They can be straight lines or they can be circular arcs. More sophisticated curves such as B-splines are already approximated by FreeCAD's [[Image:Workbench_Path.svg|24px]] [[Path Workbench]].
FreeCAD utiliza como representación interna para las trayectorias generadas, los llamados G-codes. Pueden describir cosas como: la velocidad y el avance, la parada del motor, etc... Pero lo más importante son los movimientos que describen. Estos movimientos son bastante simples: Pueden ser líneas rectas o arcos circulares. Curvas más sofisticadas como las B-splines ya son aproximadas por el [[Image:Workbench_Path.svg|24px]] de FreeCAD. [[Path Workbench/es|Ambiente de trabajo Trayectoria]].
</div>


<span id="What_the_postprocessor_can_do_for_you"></span>
==What the postprocessor can do for you==
==Lo que el postprocesador puede hacer por ti==


<div class="mw-translate-fuzzy">
Many mills use G-codes as well to control the milling process. They may look almost like the internal codes, but there may be some differences:
Muchas fresadoras utilizan también G-codes para controlar el proceso de fresado. Pueden parecerse casi a los códigos internos, pero puede haber algunas diferencias:
* the machine can have a special startup sequence
* la máquina puede tener una secuencia especial de arranque
* it can have a special stop sequence
* puede tener una secuencia de parada especial
* arcs can be defined with a relative or an absolute center
* los arcos pueden definirse con un centro relativo o absoluto
* it may require line numbers in a certain format
* puede requerir números de línea en un formato determinado
* it can used so called canned cycles for predefined subprocesses such as drilling
* puede utilizar los llamados ciclos enlatados para subprocesos predefinidos como el taladrado
* You might prefer your g-code output in either metric or imperial units.
* Puede que prefiera la salida de su G-code en unidades métricas o imperiales.
* It might be useful to perform a set of moves prior to calling for a tool change to make the action easier for the operator
* Podría ser útil realizar un conjunto de movimientos antes de llamar a un cambio de herramienta para facilitar la acción al operario
* You might wish to include comments for readability or suppress them to keep the program small
* Puede que desee incluir comentarios para facilitar la lectura o suprimirlos para que el programa sea pequeño.
* You might wish to include a custom header to identify or document the program for future reference.
* Puede que desee incluir una cabecera personalizada para identificar o documentar el programa para futuras referencias.
* ...
* ...
</div>


Furthermore there are other languages to control a mill, such as HPGL, DXF, or others.
Además, existen otros lenguajes para controlar un fresadora, como HPGL, DXF u otros.


El postprocesador es un programa que traduce los códigos internos en un archivo completo, que puede ser cargado en su máquina.
The postprocessor is a program which translates the internal codes into a complete file, that can be uploaded to your machine.


<span id="Preparation_for_writing_your_own_postprocessor"></span>
==Preparation for writing your own postprocessor==
==Preparación para escribir su propio postprocesador==


Puede empezar con un modelo muy sencillo que muestre cómo su máquina lee las líneas rectas y los arcos. Prepárelo con cualquier programa adecuado para su máquina.
You may start with a very simple model showing how your machine reads straight lines and arcs. Prepare it with any program suitable for your machine.


Un archivo para estas trayectorias que comienzan en (0,0,0) y van hacia Y sería útil. Asegúrese de que es la propia herramienta la que se mueve a lo largo de esta trayectoria, es decir, no debe aplicarse ninguna compensación del radio de la herramienta.
A file for such paths starting at (0,0,0) and going towards Y would be helpful. Make sure it is the tool itself moving along this path, i.e. no tool radius compensation must be applied.


[[File:Path_PostProcessorSketch.png]]
[[File:Path_PostProcessorSketch.png]]


La trayectoria en FreeCAD tendría este aspecto. Tenga en cuenta la pequeña flecha azul, que indica la dirección de inicio. Para un primer intento puede proporcionar sólo un nivel en el plano XY.
The path in FreeCAD would look like this. Please note the small blue arrow, it indicates the starting direction. For a very first go you may provide only one level in the XY-plane.


[[File:Path PostProcessorModel.png]]
[[File:Path PostProcessorModel.png]]


<div class="mw-translate-fuzzy">
You can then have a look at the file and compare it to the output of existing postprocessors such as {{FileName|linux_cnc_post.py}} or {{FileName|grbl_post.py}} and try yourself to adapt them or you upload your to the Path forum https://forum.freecadweb.org/viewforum.php?f=15 to get some help.
A continuación, puede echar un vistazo al archivo y compararlo con la salida de los postprocesadores existentes como {{FileName|linux_cnc_post.py}} o {{FileName|grbl_post.py}} y tratar de adaptarlos usted mismo o subir el suyo al foro Path https://forum.freecadweb.org/viewforum.php?f=15 para obtener ayuda.
</div>


<span id="Naming_convention"></span>
==Naming convention==
==Convención de denominación==


<div class="mw-translate-fuzzy">
For a file format {{FileName|<filename>}} the postprocessor should get the name {{FileName|<filename>_post.py}}. Please note that {{FileName|_post.py}} has to be in all lower case letters.
Para un formato de archivo {{FileName|<filename>}} el postprocesador debe obtener el nombre {{FileName|<filename>_post.py}}. Tenga en cuenta que {{FileName|_post.py}} tiene que estar en minúsculas.
</div>


The new name should be reflected at the head of the parser arguments list in the {{FileName|<filename>_post.py}} file, e.g.:
If you are testing, place it in your macro directory. If it functions well, please consider providing it for others to benefit (post it to the FreeCAD Path forum) so that it can be included in the FreeCAD distribution going forward.


{{Code|lang=text|code=
==Other existing postprocessors==
parser = argparse.ArgumentParser(prog="grbl", add_help=False)
}}

<div class="mw-translate-fuzzy">
Si estás probando, colócalo en tu directorio de macros. Si funciona bien, por favor, considera proporcionarla para que otros se beneficien (publícala en el FreeCAD Path foro) para que pueda ser incluida en la distribución de FreeCAD en el futuro.
</div>

<span id="Other_existing_postprocessors"></span>
==Otros postprocesadores existentes==

<div class="mw-translate-fuzzy">
Para comparar puedes mirar los postprocesadores que vienen con tu instalación de FreeCAD.
Se encuentran bajo el directorio Mod en Path/PathScripts/post. Los postprocesadores [[Image:linuxcnc.png|64px]] [http://linuxcnc.org/ linuxcnc] y [[Image:grbl.png|64px]] [https://github.com/grbl/grbl grbl] son muy utilizados. El estudio de su código puede ser útil.
* En Linux la ruta es /usr/share/freecad/Mod/Path/PathScripts/post
</div>


<span id="Programming_your_own_postprocessor"></span>
For comparison you may look at the postprocessors which come with your FreeCAD installation. They are located under the Mod directory in Path/PathScripts/post. Widely used are the linuxcnc and the grbl postprocessors. Studying their code can give helpful insights.
<div class="mw-translate-fuzzy">
* On Linux the path is /usr/share/freecad/Mod/Path/PathScripts/post
==Programación de tu propio postprocesador==
Este post discute algunos aspectos internos de los postprocesadores linuxcnc. La misma estructura se utiliza en otros postprocesadores también.
</div>


==Programming your own postprocessor==
This post discusses some internals from the linuxcnc postprocessors. The same strucure is used in other postprocessors as well.
This post discusses some internals from the linuxcnc postprocessors. The same strucure is used in other postprocessors as well.


Looking at linux_cnc_post.py, you'll see the export function (as of 0.19.20514 its at line 156)
Mirando linux_cnc_post.py, verás la función de exportación (a partir de 0.19.20514 está en la línea 156)


{{Code|code=
{{Code|code=
Line 70: Line 102:
...
...
}}
}}

it collects step by step in the variable "gcode" the processed G-codes and handles the overall exporting of post-processable objects (operations, tools, jobs ,etc).
<div class="mw-translate-fuzzy">
Export handles the high level stuff like comments and coolant but any objects that have multiple path commands (tool changes and operations) it delegates to the parse function (as of 0.19.20514 its at line 288).
Recoge paso a paso en la variable "gcode" los G-codes procesados y maneja la exportación general de los objetos post-procesables (operaciones, herramientas, trabajos, etc).
La exportación maneja las cosas de alto nivel como los comentarios y el refrigerante, pero cualquier objeto que tenga múltiples comandos de ruta (cambios de herramientas y operaciones) se delega a la función de análisis (a partir de la versión 0.19.20514 está en la línea 288).
</div>


{{Code|code=
{{Code|code=
Line 81: Line 116:
...
...
}}
}}

Similarly to the "export" function collects parse the G-codes in the variable "out". In the variable "command" the commands as seen in the Path workbench's "inspect G-code" function are stored and can be investigated for further processing.
<div class="mw-translate-fuzzy">
De forma similar a la función "export", recoge los G-codes en la variable "out". En la variable "command" se almacenan los comandos vistos en la función "inspect G-code" del ambiente de trabajo ruta y se pueden investigar para su posterior procesamiento.
</div>


{{Code|code=
{{Code|code=
Line 88: Line 126:
command = c.Name
command = c.Name
}}
}}
It recognizes the different G, M, F, S, and other G-codes. By remembering the last command in the variable "lastcommand" it can suppress subsequent repetitions of modal commands.


Reconoce los diferentes códigos G, M, F, S y otros G-codes. Recordando el último comando en la variable "lastcommand" puede suprimir las repeticiones posteriores de los comandos modales.
Both parse and export are just formatting strings and concatenating them together into what will be the final output.


Tanto el parse como el export se limitan a formatear cadenas y concatenarlas en lo que será la salida final.
You'll see that both functions also call the "linenumber()" function. If the user wants line numbers, the linenumber function returns the string to stick in to the appropriate spot, otherwise it returns an empty string so nothing is added.


Verá que ambas funciones también llaman a la función "linenumber()". Si el usuario quiere números de línea, la función linenumber devuelve la cadena para pegar en el lugar apropiado, de lo contrario devuelve una cadena vacía para que no se añada nada.
==Related==


<span id="Related"></span>
* [[Image:Path_PostProcess.svg|24px]] [[Path_Post|Path PostProcess]]
==Relacionados==

<div class="mw-translate-fuzzy">
* [[Image:Path_PostProcess.svg|24px]] [[Path_Post/es|Trayectoria ProcesoPuesto]]
</div>


{{Docnav
|[[CAM_SetupSheet|SetupSheet]]
|[[CAM_fourth_axis|Fourth axis]]
|[[CAM_Workbench|CAM]]
|IconL=
|IconR=
|IconC=Workbench_CAM.svg
}}


{{Tutorials navi{{#translation:}}}}
{{CAM_Tools_navi{{#translation:}}}}
{{Path Tools navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 14:21, 26 March 2024

This documentation is not finished. Please help and contribute documentation.

GuiCommand model explains how commands should be documented. Browse Category:UnfinishedDocu to see more incomplete pages like this one. See Category:Command Reference for all commands.

See WikiPages to learn about editing the wiki pages, and go to Help FreeCAD to learn about other ways in which you can contribute.

Introducción

FreeCAD utiliza como representación interna para las trayectorias generadas, los llamados G-codes. Pueden describir cosas como: la velocidad y el avance, la parada del motor, etc... Pero lo más importante son los movimientos que describen. Estos movimientos son bastante simples: Pueden ser líneas rectas o arcos circulares. Curvas más sofisticadas como las B-splines ya son aproximadas por el de FreeCAD. Ambiente de trabajo Trayectoria.

Lo que el postprocesador puede hacer por ti

Muchas fresadoras utilizan también G-codes para controlar el proceso de fresado. Pueden parecerse casi a los códigos internos, pero puede haber algunas diferencias:

  • la máquina puede tener una secuencia especial de arranque
  • puede tener una secuencia de parada especial
  • los arcos pueden definirse con un centro relativo o absoluto
  • puede requerir números de línea en un formato determinado
  • puede utilizar los llamados ciclos enlatados para subprocesos predefinidos como el taladrado
  • Puede que prefiera la salida de su G-code en unidades métricas o imperiales.
  • Podría ser útil realizar un conjunto de movimientos antes de llamar a un cambio de herramienta para facilitar la acción al operario
  • Puede que desee incluir comentarios para facilitar la lectura o suprimirlos para que el programa sea pequeño.
  • Puede que desee incluir una cabecera personalizada para identificar o documentar el programa para futuras referencias.
  • ...

Además, existen otros lenguajes para controlar un fresadora, como HPGL, DXF u otros.

El postprocesador es un programa que traduce los códigos internos en un archivo completo, que puede ser cargado en su máquina.

Preparación para escribir su propio postprocesador

Puede empezar con un modelo muy sencillo que muestre cómo su máquina lee las líneas rectas y los arcos. Prepárelo con cualquier programa adecuado para su máquina.

Un archivo para estas trayectorias que comienzan en (0,0,0) y van hacia Y sería útil. Asegúrese de que es la propia herramienta la que se mueve a lo largo de esta trayectoria, es decir, no debe aplicarse ninguna compensación del radio de la herramienta.

La trayectoria en FreeCAD tendría este aspecto. Tenga en cuenta la pequeña flecha azul, que indica la dirección de inicio. Para un primer intento puede proporcionar sólo un nivel en el plano XY.

A continuación, puede echar un vistazo al archivo y compararlo con la salida de los postprocesadores existentes como linux_cnc_post.py o grbl_post.py y tratar de adaptarlos usted mismo o subir el suyo al foro Path https://forum.freecadweb.org/viewforum.php?f=15 para obtener ayuda.

Convención de denominación

Para un formato de archivo <filename> el postprocesador debe obtener el nombre <filename>_post.py. Tenga en cuenta que _post.py tiene que estar en minúsculas.

The new name should be reflected at the head of the parser arguments list in the <filename>_post.py file, e.g.:

parser = argparse.ArgumentParser(prog="grbl", add_help=False)

Si estás probando, colócalo en tu directorio de macros. Si funciona bien, por favor, considera proporcionarla para que otros se beneficien (publícala en el FreeCAD Path foro) para que pueda ser incluida en la distribución de FreeCAD en el futuro.

Otros postprocesadores existentes

Para comparar puedes mirar los postprocesadores que vienen con tu instalación de FreeCAD. Se encuentran bajo el directorio Mod en Path/PathScripts/post. Los postprocesadores linuxcnc y grbl son muy utilizados. El estudio de su código puede ser útil.

  • En Linux la ruta es /usr/share/freecad/Mod/Path/PathScripts/post

Programación de tu propio postprocesador

Este post discute algunos aspectos internos de los postprocesadores linuxcnc. La misma estructura se utiliza en otros postprocesadores también.

This post discusses some internals from the linuxcnc postprocessors. The same strucure is used in other postprocessors as well.

Mirando linux_cnc_post.py, verás la función de exportación (a partir de 0.19.20514 está en la línea 156)

def export(objectslist, filename, argstring):
    # pylint: disable=global-statement
    ...
    gcode = ""
    ...
    ...

Recoge paso a paso en la variable "gcode" los G-codes procesados y maneja la exportación general de los objetos post-procesables (operaciones, herramientas, trabajos, etc). La exportación maneja las cosas de alto nivel como los comentarios y el refrigerante, pero cualquier objeto que tenga múltiples comandos de ruta (cambios de herramientas y operaciones) se delega a la función de análisis (a partir de la versión 0.19.20514 está en la línea 288).

def parse(pathobj):
    ...
    out = ""
    lastcommand = None
    ...
    ...

De forma similar a la función "export", recoge los G-codes en la variable "out". En la variable "command" se almacenan los comandos vistos en la función "inspect G-code" del ambiente de trabajo ruta y se pueden investigar para su posterior procesamiento.

for c in pathobj.Path.Commands:

            command = c.Name

Reconoce los diferentes códigos G, M, F, S y otros G-codes. Recordando el último comando en la variable "lastcommand" puede suprimir las repeticiones posteriores de los comandos modales.

Tanto el parse como el export se limitan a formatear cadenas y concatenarlas en lo que será la salida final.

Verá que ambas funciones también llaman a la función "linenumber()". Si el usuario quiere números de línea, la función linenumber devuelve la cadena para pegar en el lugar apropiado, de lo contrario devuelve una cadena vacía para que no se añada nada.

Relacionados