Reglas de diseño
Una regla de diseño comprueba si un dibujo tiene un problema que estropearía el trabajo: un contorno que no se cierra, un corte demasiado corto para la cuchilla, una línea dibujada dos veces, un hendido demasiado cerca de un corte. Archivo › Comprobar diseño ejecuta todas las reglas y enumera lo que encuentran, cada problema con Mostrar y, cuando su regla puede arreglarlo, Corregir (consulte Comprobar diseño y corregir problemas). También se comprueban antes de cada exportación de máquina (G-code, HP-GL y posprocesadores): si alguna encuentra un problema, se le pregunta si desea exportar de todos modos.
Declarar una
designRule({
name: "Holes big enough",
description: "Circles on the cutting layer are at least 3 mm across.",
severity: "error",
check(drawing) {
for (const e of drawing.elements)
if (e.kind === "CIRCLE" && e.cutting && e.radius < 1.5)
report(`${e.id} is only ${(2 * e.radius).toFixed(2)} across`, [e], e.start);
}
});
| Propiedad | Significado |
|---|---|
name, description |
Tal como se muestran en los mensajes. |
severity |
"warning" (si se omite) o "error": cómo se muestran sus problemas. |
beforeExport |
false para comprobarla solo con Comprobar diseño, no antes de la salida de máquina. |
check(drawing) |
Examina el dibujo y llama a report por cada problema. |
fix(drawing, issue) |
Opcional: arregla un problema (consulte Correcciones). |
fixLabel |
Lo que hace su corrección, mostrado en la sugerencia del botón Corregir y en el nombre del paso de deshacer ("Join the ends"). |
El dibujo
| Propiedad | Significado |
|---|---|
name |
El nombre de archivo del dibujo, sin su extensión ("" si no se ha guardado). |
units |
"mm" o "in". |
bounds |
La extensión de sus elementos: {minX, minY, maxX, maxY, width, height} (null si no hay ninguno). |
layers |
La tabla de capas: {layer, name, cutting} para cada una. |
elements |
Cada elemento exportado (no las líneas de construcción ni las ocultas en la salida). |
selected |
Cuántos de ellos están seleccionados. |
page |
La página en la que se trabaja (sus elementos son los que se enumeran). |
nests |
Los anidados de todas las páginas, como se indica más abajo. |
frames |
Los marcos de moldura a inglete: consulte API de dibujo. |
notes |
Las notas del dibujo, por nombre: drawing.notes["Customer"] ({} si no tiene ninguna). |
Cada elemento tiene:
| Propiedad | Significado |
|---|---|
id |
"@12". |
kind |
Su comando: "LINE", "ARC", "CIRCLE", "BEZIER", "POLYLINE", "POINT" … |
layer, layerName |
El número y el nombre de su capa. |
cutting |
Si esa capa corta de lado a lado. |
selected |
Si está seleccionado. |
length |
Su longitud (0 para un punto). |
closed |
Si vuelve a su inicio. |
area |
El área que encierra, si está cerrado (0 si no). |
start, end |
Sus extremos, como {x, y}. |
bounds |
{minX, minY, maxX, maxY, width, height}. |
radius |
Para un círculo o un arco. |
rule |
Qué tipo de cuchilla es su capa en un troquel: "cut", "crease", "reverseCrease", "partialCut", "perforation", "cutCrease" o "vCut"; null si no es una cuchilla (cotas, cinta, capas propias). |
minRadius, minRadiusAt |
Su curvatura más cerrada: el radio más pequeño en que se curva (sus arcos, los arcos de una polilínea, o donde una curva se curva más), y dónde ({x, y}); null si es recto. |
corners |
Donde gira más de 10° (las esquinas de una polilínea), como {x, y}; sus propios extremos no cuentan. |
pieces |
De qué está hecho, en orden: los lados y abombamientos de una polilínea, los segmentos de una curva, lo que creó un bloque (o el propio elemento). Cada uno tiene kind ("line", "arc" o "curve"), start, end, startTangent y endTangent (la dirección en que va en cada extremo, como vector unitario {x, y}), layer y cutting; un arco tiene además su centre, radius y sweep (en radianes, positivo en sentido antihorario; el de un círculo es una vuelta entera), y una curva, points a lo largo de ella. |
bridges |
{count, width, at}, si tiene puentes (muescas): at es dónde va cada uno, tal como los coloca Crear troquel ({x, y}). |
tool |
Sus ajustes de herramienta, aquellos con los que se corta (los suyos propios por encima de los de su capa), o null. |
Cada anidado tiene:
| Propiedad | Significado |
|---|---|
id, page, part |
Su id, la página en la que está y la pieza (o página) que anida. |
onPage, selected |
Si está en la página en la que se trabaja, y si está seleccionado. |
layerName |
El nombre de su capa. |
sheet |
{width, height, margin, gutterX, gutterY}, tal como está ahora el dibujo. |
perSheet |
Las copias por pliego (0 si no cabe ninguna). |
quantity |
Las copias necesarias (su QUANTITY; 0: lo que cabe en un pliego). |
sheets, made, spare |
Los pliegos que requieren, con cada pliego lleno; las copias producidas; las que exceden las necesarias. |
sheetArea, usedArea |
El área de un pliego y la parte usada (el pliego entero). |
partsArea, partArea |
El área de las copias de un pliego y la de una copia. |
wasteArea, wastage |
El desperdicio de un pliego (el pliego menos sus copias), y como fracción de él. |
utilisation |
La fracción de un pliego que cubren sus copias. |
runWastage |
El desperdicio de la tirada: todos los pliegos menos las copias necesarias, como fracción (las copias sobrantes cuentan como desperdicio). |
problem |
Por qué no tiene disposición (una pieza mayor que el pliego …), o null. |
Los informes reciben el dibujo de la misma forma.
Notificar y medir
| Función | Significado |
|---|---|
report(message, elements, at, fix) |
Un problema: qué es; los elementos a los que se refiere (un elemento, un array de ellos o sus ids), que se seleccionan cuando se muestra; si está en un lugar concreto, dónde ({x, y}); y, si la regla puede arreglarlo, lo que necesita su fix (cualquier valor; un label en él da nombre a esa corrección). Solo message es obligatorio; a un problema indicado sin fix no se le ofrece corrección. |
distanceBetween(a, b) |
La distancia más corta entre dos elementos (0 donde se tocan o se cruzan). |
crossings(a, b) |
Dónde se tocan o se cruzan dos elementos: un array de {x, y}. |
made3D() |
Lo que el dibujo crea en 3D, tal como lo crea su página 3D y montado por sus puntos de acople: cada cuerpo extruido, como {id, element, layer, thickness, materialThickness, ownThickness, noThickness, flush}: el id de su contorno (element, null si no tiene uno propio), el espesor con que se crea, el espesor de su material (el THICK de su capa, si no el T del dibujo), si su espesor es propio (RULE THICK), el ajuste de espesor que queda en 0 o menos ("RULE THICK", "LAYER3D THICK" o "T"; null si ninguno) y, por cada cuerpo en el que se mete a lo largo de su espesor (un trasero en sus galces, un panel en sus ranuras), {neighbour, element, by}: cuánto sobresale de la cara de ese cuerpo junto a él (by mayor que 0) o queda por debajo. El 3D se crea la primera vez que una regla lo pide. |
También se pueden usar las funciones de lectura de la API de dibujo: variable("L"), getPoint(4),
evaluate("…"). El check de una regla no puede modificar el dibujo; su fix sí.
Correcciones
Una regla con fix ofrece Corregir para cada problema que indicó con un cuarto valor. La corrección recibe el
dibujo (como check) y el problema: {message, rule, elements, at, fix}, donde fix es lo que se le dio a report.
Modifica el dibujo con la API de dibujo (command("…"), setVariable, newPoint …) y con estas:
| Función | Significado |
|---|---|
removeElement(e) |
Quita del dibujo un elemento (o un array de ellos). |
joinEnds(e, at, other, to) |
Une el extremo de e que está en at al extremo de other que está en to (ambos {x, y}): el punto de ese extremo se define como el del otro, de modo que lo sigue. |
moveElements(e, dx, dy) |
Mueve un elemento (o un array de ellos) dx, dy, como al arrastrar: las cantidades se guardan en variables nuevas (MOVX1, MOVY1). |
setPartSetting(e, key, value) |
Da a un ajuste 3D propio de una pieza ("THICK", "Z", "DEPTH", "LOOK" …: véase los ajustes 3D de una pieza) un valor o una expresión, o lo quita (null), de modo que se usa el de su capa. |
Todo lo que hace una corrección es un solo paso del historial de deshacer, llamado Corregir: … (su fixLabel). Una
corrección que falla, o que no cambia nada, se deshace y se muestra el motivo.
designRule({
name: "Holes big enough",
description: "Circles on the cutting layer are at least 3 mm across.",
fixLabel: "Remove the hole",
check(drawing) {
for (const e of drawing.elements)
if (e.kind === "CIRCLE" && e.cutting && e.radius < 1.5)
report(`${e.id} is only ${(2 * e.radius).toFixed(2)} across`, [e], e.start, { element: e.id });
},
fix(drawing, issue) {
removeElement(issue.fix.element);
}
});
Reglas incluidas con la aplicación
| Regla | Encuentra |
|---|---|
| Open cut lines (error) | Un extremo de una línea de corte que no se encuentra con ninguna otra línea de corte. Corregir une un extremo al extremo de otro corte (o al propio inicio del contorno) a menos de 0.5 mm (0.02 in). |
| Very short cuts | Líneas de corte de menos de 1 mm (0.04 in), o sin longitud. Corregir quita el corte. |
| Lines drawn twice | Dos líneas en una misma capa entre los mismos dos lugares. Corregir quita la segunda. |
| Creases too near cuts | Un hendido que se acerca a menos de 2 mm (0.08 in) de un corte sin llegar a tocarlo. |
| Rules bent too tight | Una cuchilla de corte (corte, perforado, medio corte, corte-hendido) con una curva más cerrada que un radio de 1.5 mm (0.06 in), o una cuchilla de hendido (hendido, hendido inverso) más cerrada que 3 mm (0.12 in): la cuchilla no se puede doblar tanto. |
| Knives too close | Dos cuchillas de corte que no se tocan pero corren paralelas a menos de 3 mm (0.12 in): queda muy poca base del troquel entre ellas y no hay sitio para la goma. Las rectas solo cuentan donde corren una junto a otra (casi en la misma dirección, solapándose), no extremo con extremo ni a través de una esquina. |
| Bridge widths | Puentes de menos de 3 mm (0.12 in), demasiado débiles para sujetar la base del troquel, o de más de 12 mm (0.5 in), que dejan la cuchilla sin apoyo. |
| Rules too short | Un trozo de cuchilla de menos de 3 mm (0.12 in): una cuchilla de extremo a extremo (contando como parte de esa cuchilla más larga un elemento corto que continúa en línea recta en otra cuchilla en cada extremo), o los trozos de una cuchilla que quedan entre sus puentes. Los cortes de menos de 1 mm se dejan a Very short cuts. |
| Bridges too near corners | Un puente cuyo borde queda a menos de 3 mm (0.12 in) de una esquina de su cuchilla, de uno de sus extremos o de otra cuchilla que se une con ella o la cruza. |
| Holes too near glass and stone edges | En un dibujo cuyo sector es Vidrio o Piedra y baldosas: un agujero (un agujero redondo, o un coliso: dos semicírculos unidos por lados rectos, como una polilínea o como líneas y arcos) cuyo borde queda más cerca de un canto (el de su panel, o el de una entalla o un hueco) o del borde de otro agujero que el doble del espesor del panel (la T del dibujo, o 6 mm, 0.25 in), o más cerca de una esquina (la del panel, o la interior de una entalla o un hueco) que seis veces el espesor, o un agujero de diámetro menor (un coliso: de anchura menor) que el espesor del panel. Una esquina redondeada se mide desde donde se cortarían sus lados. Corregir aleja en línea recta del canto un agujero demasiado cercano. Consulte Vidrio. |
| Sharp inner corners in glass and stone | En un dibujo cuyo sector es Vidrio o Piedra y baldosas: una esquina interior (de una entalla, de un hueco o del propio panel, como en una forma en L) viva, o redondeada con un radio menor del que admite el panel: en vidrio, su espesor y al menos 10 mm (0.375 in); en piedra, 10 mm (0.375 in). Los arcos y los abombamientos de una polilínea cuentan como esquinas redondeadas. Consulte Agujeros cerca de los cantos en la página Vidrio. |
| Notches too big in glass | En un dibujo cuyo sector es Vidrio: una entalla en el contorno del panel (en un canto, o una esquina recortada) de más de un tercio de la anchura del panel de ancho o de un tercio de su altura de profundidad. Consulte Vidrio. |
| Cut-outs too near glass and stone edges | En un dibujo cuyo sector es Vidrio: un hueco (una forma cerrada dentro del panel que no es un agujero) con menos vidrio entre él y los cantos del panel que la mitad de su anchura a su izquierda y a su derecha, o la mitad de su altura por encima y por debajo. En Piedra y baldosas: un hueco con menos de 50 mm (2 in) de piedra alrededor. Consulte Vidrio. |
| 3D thickness not the material's | Una pieza con un espesor 3D propio (RULE THICK: véase los ajustes 3D de una pieza) que no es el de su material: el espesor 3D de su capa, si no el T del dibujo. También se indica una pieza que debe ser más fina (un trasero de 6 mm), como recordatorio del tablero del que se corta. Corregir quita su espesor propio. |
| Panels proud of or below their neighbours | Un panel metido por sus puntos de acople en un galce o una ranura de otro cuya cara, una vez montados, sobresale de la cara de ese otro junto a él o queda por debajo (más de 0,05 mm, 0.002 in): un trasero más grueso o más fino de lo que mide de ancho su galce. |
| Bodies with no thickness (error) | Un cuerpo creado en 3D cuyo espesor queda en 0 o menos: el suyo propio (RULE THICK menor que 0; 0 ahí significa el de su capa), el LAYER3D THICK de su capa o el T del dibujo (entonces se crea con el siguiente, o como una lámina fina). |
Están en rules.js, en la carpeta Extensions de la aplicación. Las cuatro primeras consideran la capa 0 como corte y la
capa 1 como hendido; las reglas del troquel se guían por el rule de cada elemento, de modo que funcionan con cualquier
tabla de capas, y sus límites, en milímetros y en pulgadas (para los dibujos en pulgadas), están en la tabla DIE al
principio de su parte del archivo. Los límites son un punto de partida: compruébelos con las cuchillas y las máquinas
de su fabricante de troqueles. Copie el archivo a su propia carpeta para cambiar los límites o las capas; las distancias para vidrio y piedra (en espesores) y el radio mínimo de las
esquinas interiores, la proporción máxima del panel que puede ocupar una entalla y las distancias mínimas de los huecos al canto están en su tabla GLASS. Las tres últimas crean el dibujo en 3D (made3D()), así que solo se comprueban con Comprobar diseño, no antes de la salida de máquina; sus límites están en la tabla MADE3D.
Notas
- Una regla que falla se indica como un problema propio, con el archivo y la línea, y las demás se siguen comprobando.
- Los problemas se muestran en la ventana Interactiva, cada uno como error o advertencia con sus botones, y en la lista de Comprobar diseño.
Véase también: Extensiones, API de dibujo, Crear un troquel.