Extensiones
Las extensiones amplían ParametriQ CAD con JavaScript: posprocesadores de máquina para el G-code y el HPGL que esperan sus máquinas, reglas de diseño que comprueban un dibujo antes de cortarlo, plantillas que construyen un dibujo paramétrico nuevo a partir de unas pocas medidas, informes que cuentan y miden lo que hay en un dibujo, y extensiones de guardado que registran un dibujo en otro sitio cada vez que se guarda. Algunas vienen con la aplicación; puede modificarlas y escribir las suyas.
| Tipo | Se declara con | Se usa desde |
|---|---|---|
| Posprocesadores | postProcessor({…}) |
Archivo › Exportar › Exportar con posprocesador… |
| Reglas de diseño | designRule({…}) |
Archivo › Comprobar diseño, y antes de cada exportación a máquina |
| Plantillas | template({…}) |
Archivo › Extensiones › Nuevo a partir de plantilla… |
| Informes | drawingReport({…}) |
Archivo › Informes… |
| Extensiones de guardado | onSave({…}) |
Cada Archivo › Guardar y Guardar como… |
| Registro con cámara | cameraRegistration({…}) |
Archivo › Enviar con perfil de máquina, con un perfil de máquina que lo nombra |
| Comandos (en un paquete) | command({…}) |
Sus elementos de menú y botones de la barra de herramientas, un atajo de teclado, Archivo › Extensiones › Ejecutar comando… |
| Menús y barra de herramientas (en un paquete) | uiExtension({…}) |
Los menús y la barra de herramientas, al iniciarse la aplicación |
Todas usan la misma API de dibujo que las funciones JavaScript de un dibujo: las variables y los puntos del dibujo, y funciones para crear puntos y elementos.
Los scripts de automatización usan la misma API para abrir, modificar, exportar y guardar dibujos sin la
ventana de la aplicación (para un sistema de pedidos o una base de datos, o un lote de archivos): ejecútelos con PiQ run script.js desde la
línea de comandos, o con Archivo › Extensiones › Ejecutar script….
Dónde están las extensiones
Un archivo de extensiones es un archivo .js de JavaScript que declara una o más extensiones. ParametriQ CAD lee todos
los archivos .js de dos carpetas al iniciarse:
- Su propia carpeta
Extensions, junto al programa: los posprocesadores, reglas, plantillas e informes que vienen con él. - La suya: Archivo › Extensiones › Abrir carpeta de extensiones la abre (y la crea la primera vez). Ponga aquí sus propios archivos; se conservan al actualizar la aplicación.
Después de modificar un archivo, use Archivo › Extensiones › Recargar extensiones: vuelve a leerlos todos e indica cuántos ha encontrado de cada tipo. Un archivo que no se puede leer se omite, y el mensaje indica qué archivo, qué línea y por qué.
Una carpeta con un manifest.json es un paquete de extensión: su script, sus textos en cada idioma y sus iconos
juntos, con los permisos que usa. Los paquetes pueden añadir comandos, elementos de menú, botones de la barra de herramientas y cuadros de diálogo
a la ventana, y ocultar los propios de la aplicación para un espacio de trabajo reducido; Archivo › Extensiones › Administrar extensiones… activa
o desactiva cada uno.
Las mismas carpetas contienen las demás bibliotecas de la aplicación, cada una en una carpeta propia: dibujos
Parametric para Ejecutar paramétrico, Parts para el panel Piezas,
Materials para Archivo › Nuevo (véase Materiales), Appearances para los materiales de las
páginas 3D (véase Apariencias), y Ask Claude.md para Preguntar a Claude. Los
materiales y las apariencias tienen sus propios editores: Archivo › Extensiones › Materiales… y Archivo ›
Extensiones › Apariencias… muestran los de la aplicación, crean sus propias copias y modifican las suyas, sin editar
sus archivos a mano. Archivo › Extensiones › Generar miniaturas… crea las imágenes que Ejecutar paramétrico
muestra de sus propios dibujos de Parametric (véase Ejecutar paramétrico).
Para modificar una que viene con la aplicación, copie su archivo a su carpeta, cámbiele el nombre y modifique la copia (dé nombres nuevos a las extensiones que contiene, o se mostrarán ambas versiones).
Un archivo de extensiones
// my-shop.js
postProcessor({
name: "Router 2",
base: "gcode",
options: { header: "(Router 2)" },
edit(lines, program, options) {
return [options.header, ...lines];
}
});
designRule({
name: "Nothing outside the sheet",
check(drawing) {
for (const e of drawing.elements)
if (e.bounds.maxX > 1600 || e.bounds.maxY > 1200)
report(`${e.id} is off the 1600 × 1200 sheet`, [e]);
}
});
Cada declaración es un objeto con un name (que se muestra en los menús y mensajes), una description opcional (que
se muestra al elegirla) y lo que necesite ese tipo. El código del principio del archivo (constantes, funciones
auxiliares) se ejecuta una vez al leer el archivo y puede compartirse con todo lo que contiene.
Opciones
Los posprocesadores, informes y plantillas pueden pedir ajustes: los posprocesadores y los informes, sus opciones; las plantillas, sus parámetros. Cada uno se muestra como una fila del cuadro de diálogo, y lo elegido se recuerda para la próxima vez. Indíquelos como un objeto, con una propiedad para cada uno:
options: {
feed: { label: "Feed", type: "number", value: 1500, min: 1, max: 20000, unit: "mm/min",
description: "Used when an element has no tool feed of its own." },
coolant: { label: "Coolant", type: "bool", value: false },
header: { label: "Header", type: "text", value: "(Machine 1)" },
machine: { label: "Machine", type: "choice", values: ["Small", "Large"], value: "Large" }
}
| Propiedad | Significado |
|---|---|
label |
Lo que indica la fila (el nombre de la propiedad si se omite). |
type |
"number", "bool", "text" o "choice" (si se omite: según el valor, o "choice" si hay values). |
value |
El valor inicial. |
values |
Las opciones de una elección. |
min, max |
Los límites de un número. |
unit |
Se muestra después de un número. |
description |
Se muestra debajo de la etiqueta. |
En resumen: feed: 1500 es un número, coolant: false un interruptor, header: "(M1)" texto y
machine: ["Small", "Large"] una elección (con la primera elegida al principio).
Qué pueden hacer las extensiones
Las extensiones se ejecutan aisladas. Pueden leer y crear geometría a través de la API de dibujo,
y nada más: ni archivos, ni red, ni programas, ni la configuración del equipo. Una llamada se detiene si ejecuta más de
un millón de instrucciones o dura más de diez segundos, se llama a sí misma con más de 200 niveles de profundidad o usa
demasiada memoria. A diferencia de una función JavaScript de un dibujo, una extensión puede usar Date y
Math.random() (un posprocesador puede poner fecha a su salida).
Las reglas de diseño, los informes, los posprocesadores y las extensiones de guardado solo examinan el dibujo: uno que intente modificarlo se detiene con un mensaje. El dibujo de una plantilla es nuevo, y la plantilla lo crea como quiera.
Véase también: API de dibujo, Funciones JavaScript, G-code, HP-GL.