Corte Modular
Cut clean vector SVG directly, for free — without paying for the Designer Edition.
A local panel for your Silhouette Cameo: load your SVGs, compose layers with different tools and cut clean lines with no auto-tracing. A Modular Reality project.
Requirements & installation
macOS 12 or later. Silhouette Cameo 5 / 5 Plus connected over USB. The app is not signed by Apple: on first launch, right-click the icon → “Open” and confirm.
Close Silhouette Studio before using Corte Modular: only one program can talk to the machine at a time.
Is Corte Modular useful to you?
It is free and will stay free. If it saves you time (or money), you can buy us a coffee.
☕ Support the projectVersion history
Passes no longer run backwards: on a closed contour each pass is now another lap in the SAME direction. Going back forced the drag knife to spin 180° on the spot and left the same start half-cut at both ends — exactly what you saw with two passes. Open paths still retrace, since 'carrying on' there would mean lifting the tip and repositioning. The closing overcut now applies once, after all the passes. New per-carriage 'Corners (mm)', off by default: at every vertex turning more than 30°, the path overshoots a few tenths along the incoming side (so the tip reaches the point) and backs up as much along the outgoing side, which is the stretch where the blade swivels. It is what stops text coming out with rounded corners or uncut tags — the only way to reorient a passive tip, since there is no motor and lifting it does nothing. Those whiskers do leave the drawing, hence off by default; start at 0.2-0.3 mm. Closed contours only. Not yet validated on the machine.
SHA-256
4e8adbfb790f6a0503a6be2d2b19a7e690539b67440253f83ebc76037b1e0cfeClosed paths now overcut: every closed contour keeps going a few millimetres past its closing point, back over its own start, so the drag knife's first — unswivelled — stretch gets cut for real. That leftover tag was what kept the piece attached and tore it when weeding; with two passes it happened at both ends. New per-carriage 'Overcut (mm)' field, 0.5 mm by default, 0 turns it off; open paths and fill lines are untouched. And the mirror now has a chosen axis: 'Whole mat' (as before — the piece moves to the other side, what HTV needs) or 'Each layer' (every path flips about its own centre and stays put). Saved with the job. Not yet validated on the machine.
SHA-256
c082e1d2bfb9402457dddac8a8875009a12a891f3c3ae8e836f3381a863da71e📏 Print calibration is now findable when you need it. It shipped in 0.43.0, but its help text started with 'only if the sheet is ALREADY printed at another scale': when the cut is off by the SAME amount all over the sheet — the common case — nobody recognises their problem there, and you end up moving the piece by hand, which cannot work (separating the cut from the artwork widens the grid tile and the error piles up copy after copy: 6, 12, 18 mm). The help now separates the two symptoms — same offset everywhere → X/Y shift; offset that GROWS away from the edge → scale % — and states the sign. Labels now carry the active unit: with the job in centimetres, typing 6 meaning millimetres moved the cut 60 mm. And the warning now names the shift: with scale at 100% and 6 mm of shift, it used to say 'cutting at 100%', which sounds harmless. No geometry changes: the machine receives exactly the same. 934 tests.
SHA-256
ca88a0cc4edb70b6ad61e39a4dfff87876d419adccd9710141b56e906c4112d8📏 Print calibration: cut on a sheet that was printed at a different scale. If the paper is already printed and cannot be reprinted, you can now tell the program what scale it came out at, and the cut comes out at that same scale so it lands on the print. Three new fields under Material and sheet: scale %, X shift and Y shift. Measured in five seconds with a ruler: the 100.0 mm ruler mark at the foot of the printed sheet reads the percentage directly. The panel says so while the calibration is not neutral. What gets printed does not change: the calibration describes what the printer already did. It travels with the job.
SHA-256
a7fcc8ae64819c389b8e89c9dcf8a6831263e9ac4ad8bb845eb901fcaef0a500🖨️ El PDF de referencia ya sale nítido en papel (arregla lo de 0.42.2): un PDF colocado como referencia —el inserto legal japonés, multiplicado en la malla— se imprimía pixelado por muchos píxeles que se pidieran. La causa: se rasterizaba con `sips`, que dibuja la página a los 72 puntos en que viene declarada y luego agranda ese bitmap; pedirle 2400 px de una tira de 60 mm devolvía un aumento borroso de 170 px de ancho. Ahora el PDF se vuelve a dibujar a la resolución pedida (QuickLook), y la referencia se pide a 600 DPI de los milímetros que ocupa en la hoja —escala incluida—, no a un número fijo de píxeles. Si el documento no se deja dibujar, se sigue cayendo al método anterior antes que quedarse sin fondo. Las referencias ya rasterizadas se regeneran solas: la cache distingue el método con que se hizo cada PNG. Sin cambios para PNG y JPG: un bitmap solo se puede reescalar.
SHA-256
e9b2218037297066c7be56cf37c6b4999911124b2dcbb23c8d0dd6d86c92ca25🖨️ Impresión de alta resolución (600 DPI) para referencias PDF y rasterizadas: `render_hoja` solicita imágenes y documentos PDF a 600 DPI para impresión en papel en lugar del preview de pantalla (1200 px). Aumentado el techo de rasterización en `raster.py` a 8000 px para evitar pixelado en textos finos y kanji.
SHA-256
c073e9de26b40f96340053d6fc735fd98559f189758c3f227cb5152d525c274a📐 La malla de repetición respeta al 100% las modificaciones de formas: Las copias generadas en la rejilla conservan el estiramiento y escala no uniforme (`escala_x`, `escala_y`), rotación y deformación de nodos. El cálculo de dimensiones de celda y paso de rejilla en `malla.py` toma en cuenta la anchura y altura reales de las formas modificadas.
SHA-256
785ec64a1ee512cd939a5eb501fb82cf519cc021cba62bcd2591c43bbacef88d✍️ Generador de textos en trazo único (Single-Line / Centerline) con grosor y relleno. Tipografía de trazo central: trazado sin doble contorno optimizado para pluma/bolígrafo y corte. Grosor de trazo paramétrico: generación automática de pasadas paralelas continuas para engrosar el texto a cualquier grosor deseado. Alineación y formato: control de espaciado, interlineado multilínea y alineación (izquierda, centro, derecha). Integración con relleno hatch: compatibilidad directa con el botón y parámetros de relleno por trama de la tanda.
SHA-256
fca77cddc75f576849281dbed1ad3cfce85fbad50a124180dd6ec85d3f7021e7📐 Edición interactiva de formas, tiradores de estiramiento y manipulación de nodos en vivo. Tiradores axiales (N, E, S, W): estiramiento independiente de anchura y altura directamente arrastrando los bordes en el canvas. Cotas reales y bloqueo de proporción: el inspector muestra Ancho y Alto en la unidad activa con botón de candado (🔒/🔓) para alternar entre escalado proporcional y libre. Editor de nodos y curvas Bézier: modo de edición de vértices en el lienzo con arrastre de puntos, inserción en el punto medio de aristas y botón de suavizado Bézier (Chaikin) para convertir esquinas en curvas fluidas.
SHA-256
624455f5f7be9b1b536925e96b8ee6e89b1ab73076a73e012911d1cc13d87fbb↩️ Revertida la calibración de la 0.40.1: el 15×15 vuelve a 18 mm. Andres: *«antes hizo un trazado en el que salía bien… y ahora se desplaza hacia abajo tres milímetros»*. Aquel +3 se aplicó sobre una medida tomada sin confirmar qué versión corría: era el residuo del modelo viejo, que la 0.40.0 ya había corregido. Se corrigió dos veces la misma cosa. Nada más cambia: la 0.40.2 no tocó geometría, así que volver al 18 devuelve el corte exactamente a donde salía bien.
SHA-256
f38b6a30495eafa7447eb6ea8b0830e7b0f9177a3b85986882b23dee57700916🖨️ «No hay ninguna capa marcada para imprimir»… con una marcada. Dos guardas que se quedaron viejas al hacer que la referencia también se imprima: El servidor exigía al menos una capa que no fuera referencia ni raster. Eso valía cuando la referencia no iba al papel; ahora un print & cut con el arte en el carro de referencia —donde se pone lo que no se corta— es el caso normal. El arte se decide por el ARCHIVO, no por el carro: un diseño con rellenos (texto, QR) se incrusta entero esté donde esté. Por estar en el carro de referencia se dibujaba como trazos grises, y su texto y su QR no llegaban al papel.
SHA-256
0f819fd0450b1d31ab83867c2c349c188b8807a22c6dc605d3269783513f982c📏 El 15×15 queda calibrado en 21 mm en el eje de avance (antes 18). Con la 0.40.0 el eje transversal ya cuadraba —Andres: *«ahora está corregido pero solo en X»*— y en el de avance quedaban 3 mm, medidos por él con la hoja trazada delante. No es lo mismo que el arreglo de la 0.40.0: aquel quitó un error de modelo (una magnitud contada dos veces); esto es el dato físico de dónde arranca la máquina respecto de la esquina donde se apoya el papel — el número para el que existe el campo, y que solo se puede saber midiendo. Solo se toca el 15×15, que es el que se ha medido. Los demás tapetes (y las tapas, que van en el 24×24) no se mueven.
SHA-256
54ad16147ca8d656c4c44175058548e27f83a1b5b05e10c1b2d4cbe629b4f2d8📐 EL TRA
SHA-256
4935751a97bf0065daee5e6d63de68282a59d2bcf3f5277b35cfe1a3bed77f0a✂️ «No se envían las tandas». Con un trabajo de print & cut, el trabajo entero se rechazaba por culpa de la tanda del arte: como no tiene nada que cortar, el programa la daba por rota y no dejaba trazar ninguna tanda. Una tanda que solo lleva referencia es de impresión, no una tanda estropeada: ya no tumba el trabajo. Se queda en su sitio en la cola —si se saltara, los números dejarían de coincidir con lo que ves y cortarías otra—. ENVIAR TANDA ya no apunta a ella: va a la primera que sí corta. Antes mandaba la tanda 1 (el arte) mientras mirabas la 2, y el aviso parecía no tener sentido. En la lista, esa tanda se marca «solo impresión». Pedir expresamente que se corte esa tanda sigue siendo un error, pero ahora el mensaje explica que es la que va a la impresora.
SHA-256
3ed245bce2ceae5b96032bda1d5d37a84ce0a3880e6e428bb22d65d6efb0db88🖨️ «Le doy a Imprimir y no hace nada» (Andres). Eran tres cosas, y la primera explica por qué a veces sí funcionaba: La ventana se pedía DESPUÉS de preparar la hoja. Para entonces el navegador ya podía haber dado por caducado el permiso que da tu clic, y bloqueaba la ventana en silencio. Por eso salía unas veces sí y otras no. Ahora se abre en el clic y luego se le pone el contenido. Si aun así la bloquea una extensión, se te da el enlace. Los errores se pintaban detrás del diálogo, así que cualquier fallo se veía como «no hace nada». Ahora salen dentro, en rojo. Las capas de referencia venían desmarcadas. Con la impresión dentro del programa, ese carro pasa a significar *lo que no se corta* — que en un print & cut es justo el arte que va al papel. Ahora viene todo marcado, y el botón se apaga si desmarcas todo (antes se quedaba encendido sin poder hacer nada).
SHA-256
bd5a367a3e979e2dd33c361afbf6fa657ea01569a782a0be699c149e7bb6e1de🖼️ El arte se imprime ENTERO. Salió al repetir el fondo de la caja de cables (logo, texto y QR) en malla: la hoja salía casi en blanco. Eran tres cosas encadenadas: Un `<svg>` dentro de otro no se leía a su escala. El fondo de la caja compone cada pieza así, y se leía amontonado en 12 × 10 mm donde el diseño mide 62,5. Afectaba a todo lo que se apoya en la geometría: el lienzo, la baldosa de la malla y el corte. El texto y el QR son rellenos, no trazos. Un pipeline de trazado no los dibuja —y hace bien, no se cortan—, así que ahora lo que va al papel se incrusta entero, como en un programa de diseño, mientras que lo que va a la cuchilla sigue siendo trazado. Los dos comparten colocación, así que caen uno sobre otro. Las copias de la malla salían amontonadas en el archivo impreso: el desplazamiento iba en un sitio que los visores ignoran en silencio. 🎨 Se imprime con el estilo de la pantalla: cada capa con su color, y la capa de referencia gris y discontinua, tal como se ve. Pero sin el atenuado: en el lienzo las copias y lo no seleccionado se ven translúcidos para poder trabajar; en el papel todo va a plena tinta y con el mismo grosor. El diálogo de imprimir también lista ahora las capas de referencia, desmarcadas. 🔒 Un SVG no puede ejecutar nada al imprimirse. La hoja se sirve desde la propia aplicación, así que un archivo con `<script>` (los SVG se descargan de internet a diario) podía tocar la API local. Se limpia al incrustar; el archivo del disco no se toca. ⏳ Sin validar: falta imprimir, medir la cota y cortar encima.
SHA-256
f76ca0500ac07daf5157e1e37ce103616150de62ab9f498c26c578954488d51f✏️ Formas dentro del programa. Cuadrado, rectángulo (con radio de esquina), elipse/círculo, polígono regular y línea, en la unidad que tengas activa. Aparecen en «Diseños → Formas»: eliges, pones la medida e Insertar. Ya no hace falta salir a otro editor para poner un cuadrado. La forma entra como una capa más: funciona con la malla, el espejo, el inspector, el guardado y el ⌘
SHA-256
ed4452a107ed17acaf00934c469ac745bb6e67b8d1095a097ba3848ac61ae075The 15x15 mat is now calibrated at 14 mm instead of 10. After Andres fixed his printer, everything lined up except 4 mm vertically. Those 4 mm came from the first measurement being taken against a sheet printed at 97 %: shrinking toward the centre of the page pushed the first printed line 4.11 mm lower than it should be, and the offset was measured against that line. Horizontally the same scaling only shifted things half as much (2.06 mm), which is why it went unnoticed there. The cumulative 1.5 mm drift was that same printer, not the program: the coordinates sent to the machine were exact all along.
SHA-256
49682eba652844ecac39ba631ce188f36c4fd70ed345975c0895daf029d0994dThe 15x15 calibration from 0.38.0 never made it inside the app. Andres measured with a ruler on 0.38.0 and got the same offset as 0.37.0, and he was right: the DMG ships catalogo.seed.json, not catalogo.json, and the new value only existed in the latter. It now travels. A new check makes sure every mat's geometry — sizes, margins and origin — is identical in both files: cut settings may differ, where the blade lands may not. Also: emptying the job now releases the open project. Emptying cleared the batches but still pointed at the previous project, so whatever you built next was saved into that project's file — with autosave, without touching anything. That is how Andres lost his 8 tapas batches. An empty job is no longer any project: the header clears and Save asks for a new name.
SHA-256
3e6a5abcc7554cb121612b3e5c8def194625bf57c6d8a897a92154edb3e700ffCalibrated where the machine starts on the 15x15 mat. With 0.37.0 the vertical lines lined up, but the horizontal ones were still 1 cm too high: across the mat the Cameo starts right at the corner where the sheet rests, but along the feed axis it starts 10 mm earlier. New per-mat value in the catalogue, origen_mm, saying where the machine's zero sits relative to that corner — recalibrated by measuring, no code changes. Not to be confused with the margin: the margin describes the strip the machine cannot reach (dead band and warnings) and does not move the design; adding it was the 0.37.0 bug. Only the 15x15 is calibrated (y: 10); every other mat stays at 0, so the tapas job on the 24x24 comes out exactly the same.
SHA-256
a5ac96af1b5ffc7258dab1c227c028e4bc2438e5f697b0429bc71a9ded00cf14The offset was a real bug: the mat margin was being counted twice. Andres had the sheet resting on the corner of the mat's sticky area — exactly where the program assumed it was — and the cut still came out 13 mm to the right. The machine already starts its zero at that corner, and the program was adding the mat margin on top (13 mm from the left and 20 from the top on the 15x15). Fixed: what goes to the machine no longer carries that sum. If you had a job hand-adjusted on a mat with a margin (15x15 or 12 inch), the compensation you added is no longer needed and that job will shift by 13/20 mm. The 24x24 and 8x12 mats are unchanged — their margin is 0, so they never added anything.
SHA-256
54665ffde05fa9414476befae3ebc17d1061f317e8962b26b1536d362cf851dcYou now tell the program where the sheet is stuck on the mat. The design origin is the first point the blade can reach — 13 mm in from the left and 20 mm from the top on the 15x15 mat — and the program silently assumed your paper's corner was right there. Stuck flush with the mat edge, the whole cut came out 13 and 20 mm off. Two new fields next to the sheet size, 'from the left' and 'from the top', plus a 'Flush with the mat corner' button. It also warns, with exact millimetres, when part of the design falls where the machine cannot reach, instead of cutting it short in silence. Leaving them blank keeps the old behaviour, so no saved job moves.
SHA-256
078f1b2b06a5ccaf6a5ee551cf227b2ecc96b700ef6d66783d57b9aaddd0745cReference PDFs and images now always show up when adding a design. They used to appear only when the active slot was the Reference carriage — an invisible state that, with the app freshly opened, was impossible to reach. Clicking a PDF or image now routes it to the Reference carriage on its own, creating the batch if there is none, and warns that it is shown but never cut. A reference sitting on a cutting carriage is now a clear error.
SHA-256
ce56f53a3e04ade6cc45ab7c739f9294246872e3878f1d23964bb43f695552c9- **↶ Modification history: undo is here.** ⌘Z undoes the last change to the job and ⇧⌘Z redoes it (Ctrl+Z / Ctrl+Y on Windows and Linux). It covers everything that changes the job: move, scale, rotate, position by coordinates, add or delete a design, delete or duplicate a batch, the eye, the frame, the fill, the grid, a carriage tool and its settings, material, cutting mat, sheet, mirror and unit. - While typing in a text field, ⌘Z is still the text one: fixing a batch name does not undo your work. - **The list of what you did lives in Settings → History**, naming each action ("Move *tapa-contorno.svg*"), marking where you are, and letting you **click any earlier step to jump to it**. The last 60 are kept. - **Sending a batch to the machine shows up in the list for reference** (`✂ Batch 3 sent · 18:42`) so you know where you were when you cut, **but it is not undoable**: the shortcuts skip it and keep going back through your edits. Undo never cancels a cut in progress. - **`Clear` is now undoable**: press it by mistake and ⌘Z brings the job back. - Opening a project starts a fresh history with a first step you can always return to. Refreshing the page empties it (the job itself is recovered as usual). - Also: changing a carriage force or speed is now saved right away; it used to wait for the next change to the job. - 🟡 **Not yet validated by Andres.**
SHA-256
69ae12f7ea3d63c8f32eb61b901de33be622049c2b4d4b90a8a77d5c58d3fec3🔢 The repeat grid is no longer set as rows × columns, but as a number of copies. Andres: «you have to keep picking how many rows and how many columns, but we are going to do it another way: we are going to add a number and let the grid fill itself, and odd numbers should work too». Now there is a single field, «Copies»: you type 7 and 7 come out. The grid uses every column that fits on the mat and the last row is left incomplete, aligned to the left like the rest (7 lids on a mat three wide = 3 + 3 + 1). It used to be impossible: every total was a product of rows by columns, so a 7 could not even be asked for — you settled for 6 (3×2) or went up to 8 (4×2). Leaving «Copies» empty still fills the whole mat, as before, and the field shows in grey how many fit. If you ask for more than fit, you still get a warning («you asked for 20 and only 15 fit») instead of quietly cutting fewer. Saved projects open just the same: a 3×2 grid comes in as 6 copies.
SHA-256
ca19f4e1ca5a2265cddbbfe82637a2878d07c91e3519a1e033a47ec327fc76e4🔴 Fixed: refreshing the page brought the work back with every fill cleared and impossible to switch on. Andres: «the work I resumed came back with all the fills empty and I couldn't activate them». What was happening: on opening, the panel recovered the work from the machine, which only keeps what is needed to cut; the fill marks, the grid frame, the per-layer passes and each carriage's force/speed were lost on the way. And since that poorer copy was already loaded, the good one (the session snapshot) was never read… and the first canvas refresh overwrote it. What was lost did not come back. What was done: on resuming, the session snapshot is preferred when it describes the same work, and if the machine's queue must be used it is copied whole. Nothing restored counts as a change, so it no longer overwrites itself. The «NEXT → Batch N» notice no longer gets stuck, and it is off by default. Andres: «I get a long text in the way, suggesting I jump to batch eight, and there is no way to close it». It now only appears if you turn on Settings › Suggest the next batch when one finishes, and when on it closes with the ✕ or with Esc. Every batch still has its own ▸ Send in the list, and automatic advance chains just the same with the notice silent. 🏷 Every batch can carry a name and a note. Andres: «being able to edit the batch name or add some label that identifies what the batch contains». The name is typed in the header itself (next to «Batch 3», which never disappears: it is the number used when sending) and below it there is a note line for the material, the settings or the version. They travel with the project and survive a page refresh.
SHA-256
94b16b4501f23bd4102b21c25976a0379dc3aed8bb4617a522ad3d17e37e636aFixed: after finishing a batch you had to press STOP and start twice to run the next one. The app used to ask the machine 'are you done yet?' while the Cameo was still drawing from its buffer — it cannot answer while cutting, so that request timed out and left the USB channel unusable. The app never noticed and handed over a dead channel, so the NEXT batch died on its first command; the channel was only reset then, which is why the third attempt worked. Now the machine is left alone while it draws and is only asked once it should be done, and a broken channel is repaired before releasing the machine instead of at the cost of the next job. As a result a batch now ends CONFIRMED by the machine rather than 'finished by estimated time': the 'I cannot confirm it finished' warning is gone and automatic advance between batches works again. NOT yet validated on the machine.
SHA-256
280e127b8a437326fec8af806035845d17290fc62cae44a3a507daab49cc5caaFix: Fill was there but hard to find, and switching it on seemed to do nothing. Which paths get filled could only be set through a faint icon in the row, so if you missed it the canvas never changed. The Fill section now lists its paths with a checkbox each: the pattern is set once at the top, each path only says whether it applies. It also tells you which ones cannot be filled (reference carriage, hidden) instead of letting you tick with no effect. New fifth fill shape: Spiral, a single spiral from the centre with no ring-to-ring jumps, for rounded shapes. The angle field now hides for Concentric and Spiral. Not yet validated on the machine.
SHA-256
9a4aec98adeac2c9a937e84d5ce1ee0d25eaac0a1d2566f0b1f005a45f757fdeFill now has shapes, not just parallel lines: Lines, Cross, Zigzag and Concentric, each with a thumbnail in the panel. Zigzag stitches the sweep into a single continuous stroke so the tool never lifts — the one that actually gives solid colour with a pen, and the fastest. Concentric draws rings following the outline inwards. All four respect holes and stay inside the shape, including concave pieces. Not yet validated on the machine.
SHA-256
518398e080a77a96406821167118a63853edf77f56f21563af0e33b14768f31dPasses (1-10) per carriage, with a per-layer override: the path is retraced without lifting the tool, so the second pass lands exactly on the first. New Fill section per batch (spacing, angle, cross-hatch) with a per-path toggle; only closed shapes are filled, holes are respected, and it warns before filling with a blade. New 'Plot only this' button next to Reset: sends a single path without moving the registration of the rest. Not yet validated on the machine.
SHA-256
ed285317f26d71ffb9b98642967fafe96515f50b45829e61bc2bc19878f5d471⚠ Not yet validated on the machine. Andres gives the final sign-off while plotting. 🔴 The grid no longer shifts when you add or remove a design. The cell size came from the box enclosing everything in the batch, so a single design defined it: adding something larger — or that design missing from one batch — changed the cell and relocated every copy but the first. 🆕 Grid frame. Every design now has a frame button next to the eye. The one you mark anchors the grid: it fixes the cell size and where it starts, and the rest of the content can come and go without moving anything. With no frame marked, the grid still comes from the content, as before. 🔴 Cut and score land on top of each other again. The cell is computed once for the whole job, not per batch: two batches with different contents no longer get different grids and steps. 🆕 It warns when the grid trims copies. Asking for 3×3 and only fitting 3×2 used to happen silently; now it says how many you asked for and how many fit. 🆕 It warns if the frame is hidden, because then the grid depends on the content again. 🆕 The cell is drawn on the canvas: every copy shows its cell as a faint dashed rectangle.
SHA-256
a22cd2a3af724aaa3b984f4c7acf171cf73faeeb6a3af31962a3e894ef6795e2⚠ Sin validar con la máquina delante. El visto bueno lo da Andres, trazando. 🔴 Quitada la declaración de tapete (`TG`) — es lo único que la versión buena no mandaba. Andres: *«qué es lo que se ha hecho para levantar el boli en las esquinas, que tiene que ir del tirón»* y *«esto empezó desde que se intentó implementar lo del corte para cartón»*. Se volcó la secuencia exacta de comandos de su tanda real con la 0.25.0 —la que trazaba del tirón— y con la actual, y se compararon. Aparte de la fuerza (arreglada en la 0.26.4), el único comando que la 0.25.0 no mandaba nunca era `TG9`: la orden que le dice a la máquina qué tapete tiene puesto, añadida en la versión del cartón. Se había dado por inofensiva porque con la máquina parada no movía nada — lo que no dice nada de lo que hace mientras traza. Con el tapete declarado, el firmware puede aplicar su propio perfil, y eso incluye levantar la herramienta en los vértices, que es justo lo que hace un plotter cuando cree que corta material grueso. Ahora la app manda exactamente lo mismo que la 0.25.0, con la fuerza correcta. 📌 Volverá, pero solo donde hace falta (decisión de Andres): cuando confirme que esta versión traza del tirón, el `TG` se reactivará únicamente para la cuchilla de cartón (Kraft), que es la que lo necesita.
SHA-256
c868d7d75a1ee629cc96de1edb1897ceacdf065ebd1adfb5a4fced1551f5a06f⚠ Sin validar con la máquina delante. El visto bueno lo da Andres, trazando. 🔴 Arreglado (esta era LA causa): el trazo iba a fuerza 1 y no marcaba. Andres, después de la 0.26.3: *«sigue levantando la punta en trazos que deberían de ser continuos»*. No levantaba nada: apretaba con fuerza 1, el mínimo de la escala (1-33). Con esa presión el boli roza el papel y salta, y el trazo sale a trocitos — que visto de cerca es exactamente «levanta la punta». ¿De dónde salía el 1? De que no había ajustes para esa herramienta sobre ese material. Cuando falta la pareja, la app usaba unos valores de reserva con fuerza 1 y no lo decía. Sus trabajos del 5 de agosto iban sobre *papel fino* (que sí tenía ajustes: fuerza 3) y el de ahora sobre *cartulina 250*, que no los tenía. Y la versión del utillaje pasó el catálogo de 4 herramientas a 17 sin añadir ajustes para ninguna: 271 de las 289 combinaciones caían en la fuerza 1. Tres cosas cambian: 1. Cartulina 250 ya trae ajustes para boli fino, boli grueso y punta seca (fuerza 3 el boli, 8 la punta seca; son los valores que Andres midió en abril sobre cartulina). 2. La herramienta se marca en el panel con un ⚠ *«sin ajustes para este material»* — se ve antes de trazar, no después de gastar el material. 3. El corte se para y te pregunta en vez de trazar en balde: te dice qué herramienta es y te deja poner la fuerza a mano o seguir igualmente. 📌 Nota sobre la 0.26.3: lo que arregló (una preparación de máquina por herramienta en vez de una por diseño) era real y se queda —esa tanda pasó de 187 s parada a 1,5 s—, pero no era la causa de lo que Andres veía. Medido después: el trazado que sale por el cable es el mismo que el de la 0.25.0, levantada por levantada.
SHA-256
87e4512cd057387603bfb35a38da9a131b451a5ff14bcc379c4b7cec5e422bb6⚠ Sin validar con la máquina delante. El visto bueno lo da Andres, trazando. 🔴 Arreglado: el trazado se hacía a tracitos, lento y con un golpe al origen. Andres, con boli sobre la 0.26.2: *«levanta la punta para hacer cada línea, es muy lento y encima pega un golpe a la izquierda del tapete»*. La segunda causa del mismo síntoma (la primera era el trazo repasado de la 0.26.2), y esta estaba más arriba: no en cómo se dibuja, sino en cómo se manda. Cada diseño del lienzo —y cada copia de la malla— se le presentaba a la máquina como si fuera un trabajo nuevo: elegir carro, esperar un segundo, poner la fuerza, esperar otro poco, y volver al origen al cambiar de herramienta. En la tanda real de Andres (16 diseños × malla 3×3 = 144) eso son 144 selecciones de carro —que mueven y bajan el cabezal, de ahí «levanta la punta»— y 187 segundos parada frente a 279 de trazado: casi el 40 % del tiempo sin dibujar nada. Ahora la máquina se prepara una vez por herramienta, no una por diseño: 2 selecciones de carro y 1,5 segundos en esa misma tanda. Entre diseño y diseño ya no se manda nada: se traza del tirón, como hacía el trazador antiguo de las tapas. El viaje al origen al cambiar de carro desaparece; el del final se queda (deja el cabezal fuera de la pieza para descargar el tapete). Se conservan intactos el vaciado del canal USB y el no-reintento del trazado. Arreglado: una parada podía dejar el trabajo entero muerto en silencio. Si la tanda que parabas moría además por USB, la orden de parar se quedaba puesta y todas las tandas siguientes se abortaban nada más empezar: parecía que trazaban, y no salía nada. La parada ahora es de la tanda que se para, y no le sobrevive. Retirado un camino de corte muerto. `/api/cortar` no lo usaba el panel desde hace versiones, pero seguía ahí con su propia lógica: esa misma mañana se le arregló un fallo a él en vez de al camino que corre. Fuera. Sus pruebas se conservan, ahora sobre el camino de verdad.
SHA-256
88e8e2fe546584f2595f669f5489ac0889f7293a411b84000bb1489aeb421ac0- Fixed: the tool lifted mid-stroke and went over the line again. Caught by Andres while plotting with a pen: "it used to draw in one continuous stroke". A regression introduced in 0.26.0: fixing the USB channel jam added a retry whenever the connection times out. The catch is that a USB timeout does NOT mean the data failed to arrive — the machine usually already has it. So the retry sent the same stroke a second time: it drew it, lifted the tool, went back to the start and traced over it. Strokes are now sent once only: if the connection fails the job stops and tells you, instead of ruining the piece silently. The retry stays where it belongs, on stop commands — missing a stop is worse than repeating one. The fix for the jam between batches is untouched: it never depended on the retry, only on flushing the channel.
SHA-256
32c023189577eac766cffc246fa4cb7f6d79f20e498987513366192fbef56f2d- Fixed: the "a new version is available" notice never showed up. It had been broken without anyone noticing: the panel requested the version file from modularreality.com, which redirects to www., and the browser cancelled the request at the redirect due to a security rule. The result was that the banner never appeared and you never found out about any published version. It now requests the final address and the notice does appear (checked with an older version installed). Everything else is the same as 0.26.0.
SHA-256
ea97508e1aa18d86ba91bebe1eac18b4b6db7ecd90cb09266a7ec5bbc98ca558⚠ Not yet validated on the machine — the suite passes (603 tests) and the panel was checked live, but the real-cut sign-off is Andres's. - Fixed (the big one): the jam between batches. "I can't run two jobs in a row without unplugging the machine" finally has a measured cause: the USB channel was going out of sync. A reply the Cameo sends and nobody reads blocks the channel, and from then on everything written to it times out. The channel is now flushed on connect and whenever needed, and a timeout is no longer read as "the machine is dead": it is cleared and retried. (Silhouette's own software does exactly this; we never did.) - The machine now knows which mat is loaded. It is declared when the batch starts — it never had been. - New: the catalogue is finally your real tooling. It had 4 tips and none was the blade you cut card with. It now holds the whole Cameo 5 Plus range — whether you own it or not — with its carriage, adapter and the maximum thickness each one cuts, and your Kraft Blade 3 mm among the available ones. That brings warnings that did not exist: material thicker than the tip can cut, and a tip that belongs in another carriage. The selector only offers what you actually have. - The depth control now only appears where it does something. It showed up for any blade, including the card one, which is tightened by hand: it promised a control that did not exist. It is now only for the AutoBlade, the one that adjusts itself. - The canvas tells you which mat is selected, with its measurements, and warns you when its margins have not been measured — that assumed 0 mm margin is what placed a lid against an edge the mat cannot reach. - Each batch folds, like the layers already did: with three or four, the list was one long sheet. - Heat foil: still not possible, and now it is written down why. The Heat Pen appears in the catalogue marked as not drivable, with its reason.
SHA-256
73855019d6bc1c84a856e6d0d76e60fe2ebf29003da5c69b808e26c433c7182dArreglado (y es el gordo): lo que tenías con el ojo apagado se cortaba igual. Si escondías una tanda, un carro o un trazado, el lienzo dejaba de pintarlo… pero la máquina lo trazaba de todas formas. Un trabajo real de packaging tenía la tanda entera oculta: en pantalla no se veía nada de ella y la Cameo trazó 84 copias sobre el material bueno. Ahora el ojo manda también sobre el corte: lo que no ves, no se traza. Si quieres verlo sin cortarlo, para eso está el carro de referencia, que además se dibuja de fondo. Y si escondes *todo* lo de una tanda, se te dice con todas las letras en vez de mandar una tanda vacía a la máquina. Arreglado: activar la malla ya no te mueve el trabajo de sitio. La rejilla nacía siempre pegada a la esquina del tapete y arrastraba hasta allí lo que hubieras colocado — medido: hasta 20 cm de salto si lo tenías lejos del origen. Ahora la primera copia se queda exactamente donde la pusiste y las demás brotan desde ahí. Los campos Origen X/Y pasan a ser un desplazamiento *sobre* tu colocación. Arreglado: en modo «alternar», el lienzo y la máquina repartían las piezas en celdas distintas. Pasaba cuando en el panel tenías los carros en un orden distinto al de trazado: veías una pieza en la columna izquierda y la máquina la hacía en la derecha. Nuevo aviso: la hoja que declaras no cabe en el tapete. Un A3 sobre un tapete de 15" se sale casi 4 cm por abajo: ese papel no lo sujeta nadie y ahí no se debe cortar. Ahora se te dice; no se te bloquea. Arreglado: un margen de rejilla negativo sacaba copias fuera del área trazable. El margen *entre celdas* sigue admitiendo negativo (el solape es deliberado); el del perímetro ya no. ⚠️ Sin validar cortando: 544 pruebas en verde y verificado contra el trabajo real que provocó el fallo (la tanda oculta pasa de trazar 84 copias a no trazar ninguna), pero la máquina no ha cortado con esta versión todavía. ⚠️ Si tenías proyectos con la malla activa, revisa dónde caen las copias antes de cortar: la rejilla ya no arranca donde arrancaba.
SHA-256
387452c72993be167015d84641b2c0dc745501584c5d25caf0b3570eb9cc77f2- **Fixed: sending a new batch raised an error blaming you for stopping the machine from its own screen.** You hadn't, and it wasn't your doing: **the app itself was causing the jam**. To find out whether the machine had finished, it kept asking over and over; your Cameo doesn't answer that query, and the insisting left its channel blocked — so **the next batch died**. The log always showed the same pair: one batch "unconfirmed", and the next one dead. - **It no longer insists.** It asks three times; if there is no answer, it **leaves the machine alone** and waits for **however long the plot takes**, computed from the travel distance and the speed. If your machine did answer, its word would still win — that is better data than any estimate. - **And the channel is cleaned before releasing it**, so the next batch starts healthy. - **The error message no longer blames anyone**: it says the connection got stuck, that it has been reset, and to send again. - ⚠️ **Not validated cutting**: with a simulated Cameo that doesn't answer status (like yours) → **3 of 3 batches in a row OK**; replicating 0.24.2 behaviour → **2 of 3**, with the very error you were seeing. 521 automated tests.
SHA-256
f551b16e4a69723ef2b2a6e34b67e53a48d2a2e19524125fc5201965d2cb8f82- **Fixed: after a batch finished you had to press STOP before you could send another one.** When the machine doesn't answer the «are you done?» query — Andres's doesn't — the app kept insisting for up to **three minutes**, refusing any new job in the meantime. Now, with no answer, it **gives up after 15 seconds** and hands control back to you. - **And it no longer blocks you meanwhile.** Sending a batch while the machine is "finishing" is no longer rejected: you are the one watching the machine. The only thing that still waits for confirmation is the **automatic chaining**, so it never drops a job on top of another. - **Asking for status is far cheaper now** (1 s instead of 5 per attempt), so a silent machine no longer costs minutes. - 🩹 Internal: if you launch a batch while the previous one is still closing, the old one can no longer write its outcome over the new one. - ⚠️ **The underlying issue still needs design**: the Cameo does **not** reliably report whether it has finished (it either stays silent or says "ready" while still plotting), so the app cannot know for sure. Until the job is fed at a controlled rate, "it finished" is always a guess — which is why automatic chaining prefers to wait for you.
SHA-256
9d52532defcc976b6cb6bececd49d824e761eb0a6380f3a5e8719af7e246f198- **Fixed: asking to STOP left the app blocked for a minute.** If the machine had stopped listening (typically because you stopped it from its own screen), the stop command never arrived and the app kept asking for 60 s before giving up, with no way to send anything. Now, when you ask to stop, it insists a couple of times and **gives you back control in seconds**. - **The connection recovers on its own after a failure like that.** Before, the next job died the same way and only powering off and unplugging fixed it. Now the endpoint is cleared and the connection is reset in software: **you can send again without touching the cable**. - **The error makes sense.** Instead of `[Errno 60] Operation timed out`, the panel tells you what happened, why it usually happens (stopping from the machine's screen) and what to do. In all three languages. - ℹ️ **Important, and not specific to this app:** the stop button cannot halt what the machine already has inside it. The job is sent in full and the machine stores it, so it keeps plotting what it received — Silhouette Studio has exactly the same behaviour. Making stop immediate requires feeding the job at a controlled rate; that is identified and is the next step.
SHA-256
86a25ac5fe3e3942d102c435cecf5ef5d2f63c33e8d7ae75ae3ba8cc327c3881- **Fixed: the machine got stuck between two jobs in a row.** The app treated a batch as done as soon as it had finished **sending** it — but the Cameo buffers what it receives and keeps plotting for a good while afterwards. In that gap the connection was released and, with automatic advance on, the next batch was sent **on top of the job it was still cutting**: the machine hung and you had to power it off and unplug the cable. The app now **waits for the machine to confirm it has finished** before calling the batch done. - **You can see what is going on.** While the machine finishes, the panel says so («the machine is still finishing the plot»), the send buttons refuse another batch and automatic advance waits. If the machine never confirms, a warning appears and **nothing is chained automatically**. - **If the connection is left dirty, it recovers without touching the cable.** Any leftover from the previous job used to kill the attempt, and only powering off and unplugging fixed it. Now it retries and, as a last resort, resets the connection in software. If there is still no way, the message tells you exactly what to do. - **STOP also works while the machine is finishing** — which is where nearly all the remaining plotting lives. - 🩹 Also: the status bar no longer touches USB while a job is running (it could step on the connection and cause intermittent failures), and every open, wait and close is recorded in `~/Library/Logs/CorteModular/corte.log`. - ⚠️ **Not validated on the machine itself**: checked against a simulated Cameo with a buffer (two chained batches: 0 intrusions with this fix, 2 without it) and 498 automated tests. What is missing is **two real jobs back to back**.
SHA-256
2476c2c9e0eafbd54069c9b98c2cb60dfc776f16e3e20d1cc19c9504060c450cReference art for precise placement: now PDF, PNG and JPG too. The reference carriage is no longer limited to SVG. Drag in the PDF you are about to print — or a photo, or a scan — and it appears underneath, at its real size, so you can place the cut on top knowing it lands where it should. It moves, rotates and scales like any other design, and it never reaches the blade. The size comes from the file itself, not from a guess: a PDF uses its page size, an image its declared density. If an image doesn't state a size, 96 DPI is assumed and you are told on screen — so if it comes out wrong, you'll know why. Only where it makes sense: PDFs and images show up when you are adding to the reference; the machine carriages still list drawings alone, because a photo there means nothing. Also fixed: with the grid on, a non-SVG reference used to bring the whole batch down, and its placement handles didn't work either. Not yet validated by cutting: the alignment is verified to the millimetre on the canvas (the cable insert and its 8 crosses land exactly under the cut corners), but nobody has printed and cut that sheet yet.
SHA-256
8cd1e8900c229a2765da3a0537544ca04b27d72a2beedd80b14d5e9be10f3b5bFuerza, velocidad y cuchilla, a la vista y en tus manos. Hasta ahora esos números salían del material elegido y viajaban a la máquina sin que los vieras ni pudieras tocarlos. Ahora aparecen en la cabecera de cada herramienta, dentro de su carro: los ves antes de enviar y los cambias para el trabajo en curso. Cuando des con los valores buenos cortando, Guardar como preset los deja fijados para ese material — y sobreviven a las actualizaciones, porque se guardan aparte del programa. La AutoBlade se ajusta sola. Antes de cortar, la máquina lleva el cabezal al alojamiento del lado derecho y enrosca la cuchilla a la profundidad indicada. Tarda unos segundos y se oye. Se puede apagar en Ajustes si prefieres girarla a mano. Nunca se hace con un boli montado, ni se repite entre trazados que comparten profundidad. Cada herramienta corre a su velocidad. Antes toda la tanda iba a una sola, y encima elegida por accidente: si mezclabas boli y cuchilla, uno de los dos corría a la velocidad del otro. Ahora el boli puede ir rápido y la cuchilla despacio en la misma pasada. ⚠️ Sin validar en la máquina: el ajuste automático de la cuchilla está verificado en esta Cameo desde abril como comando suelto, pero dentro de una tanda de dos carros no se ha probado todavía cortando.
SHA-256
f6ed09af732d9c326272cb902f7030cd9c5230ca5153e1ade5ed58e5d6ef264fMat margins: each mat can declare the strip the machine cannot reach, so canvas zero is now the first plottable point and the dead band is shaded. Batches are now SENT rather than 'repeated', and every send button obeys the USB status light.
SHA-256
f636cfc805d11502ee2f16790242909e3501db133cbc4823c1d9ae0f060f06c2Fixed: the update check was rejected by the web server (403) because the app did not identify itself. If you are on 0.20.0, install this one by hand — it is the last manual install.
SHA-256
3872e368035b8b68e874d6ee7d255d53fe4ad92ffde55613435292ccbec188f3One-step auto-update from the web (single dialog, verified download), honest USB status light (tells apart 'no machine', 'connected but not responding' and 'ready'), and a warning when an older copy is already running.
SHA-256
e35a0e47369060375259607f16829d09f167ba05bac77e0e5a680f783e447c56Fixed: the second batch failed with Access denied. When starting a job the app reserved the connection to the machine and never released it, so the first batch ran fine and the next one died with [Errno 13] Access denied without moving the head. The connection is now always released when the job ends, even if it fails or you stop it. No more unplugging the cable between batches. Reminder: always stop with the panel STOP button, not from the machine touchscreen, which leaves the USB link half open.
SHA-256
e6b32d851e834652eda661d6c276e5b634ea7015d7174bfa89884be381d7025aFix for 0.19.0: the cut goes back to its place. In 0.19.0, straightening the canvas also changed how coordinates were translated to the machine, which pushed the work to the right-hand edge of the carriage travel. Fixed: the machine-coordinate conversion is the original one again, while keeping the 0.19.0 canvas improvements (your design shown as it is, X and Y in place, a mirror toggle that really mirrors, dragging right increasing X). Technical reason: the machine uses a left-handed coordinate system relative to the drawing, so the straight axis swap is the correct translation. Not yet validated on a physical cut.
SHA-256
2e5f68b7b2b5e68c51e27eb820e15704c53d9efc8d40f89376e54f2d77ea375eThe canvas now shows your design as it really is. Until now any non-symmetric design appeared mirrored, with X and Y swapped, and the machine cut it that way: the fix is in how drawing coordinates are translated to machine coordinates. The mirror toggle now does what it says (off = as the file, on = flipped left-right for HTV). Dragging right increases X and dragging down increases Y, and a 2-column grid looks like 2 columns. Saved projects still open, but a hand-tuned placement may need adjusting. Not yet validated on a physical cut.
SHA-256
7430c18c0c12a6ca60e76ac1bf4d9599005c0fd91a628fc3ab09a0d0ad8c3483Reference carriage: an extra carriage in every batch that is never cut. Use it to lay a template underneath, or to park designs you do not want to cut in this pass without losing their placement. The repeat grid now belongs to each batch. Show/hide eyes for every batch, carriage and trace.
SHA-256
8c9b73cddc9147ff21e4f8f799e87b6ea4e0e4fa57ea2540777058a9e80cbf03Drag traces within a batch: grab a design by its row and drop it on the other carriage, or onto another trace to place it before or after. The order within a carriage is the cutting order, so now you decide it by hand. You can also drop it into a carriage of another batch.
SHA-256
79637044ddc2130d34fc08f06c53d1d0834dfb2a2e45d31a7f5a38e4da3b7443One batch = one pass with both carriages: each batch now has a block per carriage, with its tool and its traces, cut in order. STOP no longer discards your work, and now really stops. Your work survives closing the app, with optional autosave. The Jobs menu is now Projects.
SHA-256
65c1e56770dd63d1028f8ab7aedf2fd812e086f74143d2792c618cd69f3effc8Paper size presets (A6-A3, B6-B4 JIS, Letter, 6x6in and 12x12in scrapbook, hagaki, meishi): pick one and width and height fill in automatically in your active unit. Hand cursor when moving designs on the canvas, and readable layer names.
SHA-256
0bc22906d969197b857649a16036ad7591d665a4839dc2396cc011e1fb514f12Work manager reorganised by flow (Designs / Material and sheet / Repeat grid), canvas zoom and pan, per-layer 3x3 anchor, separate grid margins, and a grid that respects your manual layout. Robustness: the canvas no longer goes blank when the grid does not fit.
SHA-256
3d55fd291bc8397113c2c73d58d539b197cc89b337fbbf2f0ad2fc6a19d9e307Repeat grid (Fill the mat): set a margin and your designs tile the mat in auto-calculated rows x columns, in Overlay or Alternate mode. Fix: with several batches, the cut now uses exactly the same grid as the preview.
SHA-256
6f99041e3e14a1c1900f5011493b2caa2c0e0dc009429566ee5a8112bbcca5ffSelf-update: when the app opens, if a newer downloaded version sits in the builds folder it asks “Update now?” and reinstalls itself. No network calls, no background checks.
SHA-256
f33e0cc6f13e62fe51d4eb15d4e03d4660270c7f457f586c06968d6435da668dMirror (HTV): toggle next to Orientation, auto-enabled when picking an HTV material. Layer inspector: full-color multi-layer preview with per-layer X/Y, rotation, scale and reset. General settings (⚙): global unit (in/cm/mm) and language grouped together. More visible inactive-layer gray.
SHA-256
c01fc6069d31780a6df04d60272f800fa9609c1f7f0181b8a7805ff10bfc0f8aSelf-install: the app offers to move itself to Applications when opened from the DMG. DMG with Applications shortcut. Per-material settings guide (es/en/ja). Clean seed catalog.
SHA-256
a992b52cabbce81b09e4b8d00ea15f5251771c82aa184457cab40522310cb2e1First packaged DMG for macOS.
SHA-256
89a939d9f5ffeff837c29a220ccfebc43ef1c68bec8e258bf8e515ed5ad18ea6