From fad3c0032b4900b69923dc20863303a1b36befac Mon Sep 17 00:00:00 2001 From: litio2001 Date: Wed, 21 Oct 2026 17:57:36 +0200 Subject: [PATCH] Add Spanish (Spain) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The whole interface (messages.es.ts, all 2,858 sentences of 1.98.0) and the 17 chapters of the guide (docs/guide/es/, under the English file names), in the Spanish of Spain and informal ("tú"), like the German "du". - languages.ts: "Español" between Deutsch and Français, with the numbers and quotation marks of es-ES and the labels of a Spanish keyboard (Mayús, Supr, Retroceso, Inicio, Fin, Re Pág, Av Pág, Intro), which the chapters use too, as the German ones write [[Strg]]. The guide folder is guia-es. Any Spanish browser (es-ES, es-MX, es-419) gets it, rather than English. Not marked complete on purpose, like Hungarian: sentences added later show in English until the Spanish ones follow. - i18n.ts: fetched when chosen, a chunk of its own. - guideLinks.ts: the ids of the Spanish headings, so the question marks land on the right heading. - The wording takes Tinkercad's Spanish where it has a term (sólido, orificio, plano de trabajo) and the words of a Spanish workshop elsewhere (rosca, muelle, chaflán, escariado, avellanado). - Tests: four tests used Spanish as the example of a language layerling does not speak; they use Swedish now, and the page-language test checks that a Spanish browser gets es-ES. The list of guide languages has es. Translated with Claude from the English, checked against the German. Co-Authored-By: Claude Opus 5.5 --- .gitignore | 2 + apps/web/src/lib/guideLinks.ts | 162 +- apps/web/src/lib/i18n.ts | 1 + apps/web/src/lib/languages.ts | 57 +- apps/web/src/lib/messages.es.ts | 2892 +++++++++++++++++++++ docs/guide/es/01-getting-started.md | 114 + docs/guide/es/02-view-and-workplane.md | 195 ++ docs/guide/es/03-shapes.md | 156 ++ docs/guide/es/04-select-and-arrange.md | 164 ++ docs/guide/es/05-solids-and-holes.md | 86 + docs/guide/es/06-edges-and-hollowing.md | 98 + docs/guide/es/07-sketches.md | 173 ++ docs/guide/es/08-text.md | 165 ++ docs/guide/es/09-threads-and-mechanics.md | 171 ++ docs/guide/es/10-measuring-and-notes.md | 79 + docs/guide/es/11-printing.md | 57 + docs/guide/es/12-files-and-saving.md | 106 + docs/guide/es/13-shortcuts.md | 38 + docs/guide/es/14-ai-with-mcp.md | 118 + docs/guide/es/15-offline-and-install.md | 50 + docs/guide/es/16-videos.md | 20 + docs/guide/es/17-tablet-and-touch.md | 50 + tests/unit/guideAllLanguages.test.ts | 4 +- tests/unit/i18n.test.ts | 15 +- tests/unit/noBrowserTranslation.test.ts | 5 +- 25 files changed, 4888 insertions(+), 90 deletions(-) create mode 100644 apps/web/src/lib/messages.es.ts create mode 100644 docs/guide/es/01-getting-started.md create mode 100644 docs/guide/es/02-view-and-workplane.md create mode 100644 docs/guide/es/03-shapes.md create mode 100644 docs/guide/es/04-select-and-arrange.md create mode 100644 docs/guide/es/05-solids-and-holes.md create mode 100644 docs/guide/es/06-edges-and-hollowing.md create mode 100644 docs/guide/es/07-sketches.md create mode 100644 docs/guide/es/08-text.md create mode 100644 docs/guide/es/09-threads-and-mechanics.md create mode 100644 docs/guide/es/10-measuring-and-notes.md create mode 100644 docs/guide/es/11-printing.md create mode 100644 docs/guide/es/12-files-and-saving.md create mode 100644 docs/guide/es/13-shortcuts.md create mode 100644 docs/guide/es/14-ai-with-mcp.md create mode 100644 docs/guide/es/15-offline-and-install.md create mode 100644 docs/guide/es/16-videos.md create mode 100644 docs/guide/es/17-tablet-and-touch.md diff --git a/.gitignore b/.gitignore index 0f1e53d9b..313492904 100644 --- a/.gitignore +++ b/.gitignore @@ -88,6 +88,8 @@ apps/web/public/dalil/ apps/web/public/kilavuz/ # Built Brazilian Portuguese user guide. apps/web/public/guia/ +# Built Spanish user guide. +apps/web/public/guia-es/ # The Japanese typeface, cut from Zen Maru Gothic by scripts/build-japanese-typeface.mjs apps/web/public/fonts/japanese/ diff --git a/apps/web/src/lib/guideLinks.ts b/apps/web/src/lib/guideLinks.ts index 575e9c985..e5d433935 100644 --- a/apps/web/src/lib/guideLinks.ts +++ b/apps/web/src/lib/guideLinks.ts @@ -9,22 +9,22 @@ import type { ShapeKind } from "@/types/layerling"; * every question mark pointing nowhere. */ export const GUIDE_CHAPTERS = { - start: { de: "erste-schritte", en: "getting-started", nl: "aan-de-slag", ru: "getting-started", cs: "getting-started", sl: "prvi-koraki", hu: "getting-started" }, - view: { de: "ansicht-und-arbeitsebene", en: "view-and-workplane", nl: "weergave-en-werkvlak", ru: "view-and-workplane", cs: "view-and-workplane", sl: "pogled-in-delovna-ravnina", hu: "view-and-workplane" }, - shapes: { de: "formen", en: "shapes", nl: "vormen", ru: "shapes", cs: "shapes", sl: "oblike", hu: "shapes" }, - select: { de: "auswaehlen-und-anordnen", en: "select-and-arrange", nl: "selecteren-en-schikken", ru: "select-and-arrange", cs: "select-and-arrange", sl: "izbiranje-in-razporejanje", hu: "select-and-arrange" }, - solids: { de: "koerper-und-aussparungen", en: "solids-and-holes", nl: "lichamen-en-gaten", ru: "solids-and-holes", cs: "solids-and-holes", sl: "telesa-in-luknje", hu: "solids-and-holes" }, - edges: { de: "kanten-und-aushoehlen", en: "edges-and-hollowing", nl: "randen-en-uithollen", ru: "edges-and-hollowing", cs: "edges-and-hollowing", sl: "robovi-in-izdolbljenje", hu: "edges-and-hollowing" }, - sketches: { de: "skizzen", en: "sketches", nl: "schetsen", ru: "sketches", cs: "sketches", sl: "skice", hu: "sketches" }, - text: { de: "text", en: "text", nl: "tekst", ru: "text", cs: "text", sl: "besedilo", hu: "text" }, - threads: { de: "gewinde-und-mechanik", en: "threads-and-mechanics", nl: "schroefdraad-en-mechanica", ru: "threads-and-mechanics", cs: "threads-and-mechanics", sl: "navoj", hu: "threads-and-mechanics" }, - measuring: { de: "messen-und-notizen", en: "measuring-and-notes", nl: "meten-en-notities", ru: "measuring-and-notes", cs: "measuring-and-notes", sl: "merjenje-in-opombe", hu: "measuring-and-notes" }, - printing: { de: "drucken", en: "printing", nl: "printen", ru: "printing", cs: "printing", sl: "tiskanje", hu: "printing" }, - files: { de: "dateien-und-speichern", en: "files-and-saving", nl: "bestanden-en-opslaan", ru: "files-and-saving", cs: "files-and-saving", sl: "datoteke-in-shranjevanje", hu: "files-and-saving" }, - shortcuts: { de: "tastenkuerzel", en: "shortcuts", nl: "sneltoetsen", ru: "shortcuts", cs: "shortcuts", sl: "bliznjice", hu: "shortcuts" }, - ai: { de: "ki-mit-mcp", en: "ai-with-mcp", nl: "ai-met-mcp", ru: "ai-with-mcp", cs: "ai-with-mcp", sl: "ai-z-mcp", hu: "ai-with-mcp" }, - tablet: { de: "tablet-und-touch", en: "tablet-and-touch", nl: "tablet-en-touch", ru: "tablet-and-touch", cs: "tablet-and-touch", sl: "tablica-in-dotik", hu: "tablet-and-touch" }, - offline: { de: "offline-und-installieren", en: "offline-and-install", nl: "offline-en-installeren", ru: "offline-and-install", cs: "offline-and-install", sl: "offline-in-namestitev", hu: "offline-and-install" }, + start: { de: "erste-schritte", en: "getting-started", nl: "aan-de-slag", ru: "getting-started", cs: "getting-started", sl: "prvi-koraki", hu: "getting-started", es: "getting-started" }, + view: { de: "ansicht-und-arbeitsebene", en: "view-and-workplane", nl: "weergave-en-werkvlak", ru: "view-and-workplane", cs: "view-and-workplane", sl: "pogled-in-delovna-ravnina", hu: "view-and-workplane", es: "view-and-workplane" }, + shapes: { de: "formen", en: "shapes", nl: "vormen", ru: "shapes", cs: "shapes", sl: "oblike", hu: "shapes", es: "shapes" }, + select: { de: "auswaehlen-und-anordnen", en: "select-and-arrange", nl: "selecteren-en-schikken", ru: "select-and-arrange", cs: "select-and-arrange", sl: "izbiranje-in-razporejanje", hu: "select-and-arrange", es: "select-and-arrange" }, + solids: { de: "koerper-und-aussparungen", en: "solids-and-holes", nl: "lichamen-en-gaten", ru: "solids-and-holes", cs: "solids-and-holes", sl: "telesa-in-luknje", hu: "solids-and-holes", es: "solids-and-holes" }, + edges: { de: "kanten-und-aushoehlen", en: "edges-and-hollowing", nl: "randen-en-uithollen", ru: "edges-and-hollowing", cs: "edges-and-hollowing", sl: "robovi-in-izdolbljenje", hu: "edges-and-hollowing", es: "edges-and-hollowing" }, + sketches: { de: "skizzen", en: "sketches", nl: "schetsen", ru: "sketches", cs: "sketches", sl: "skice", hu: "sketches", es: "sketches" }, + text: { de: "text", en: "text", nl: "tekst", ru: "text", cs: "text", sl: "besedilo", hu: "text", es: "text" }, + threads: { de: "gewinde-und-mechanik", en: "threads-and-mechanics", nl: "schroefdraad-en-mechanica", ru: "threads-and-mechanics", cs: "threads-and-mechanics", sl: "navoj", hu: "threads-and-mechanics", es: "threads-and-mechanics" }, + measuring: { de: "messen-und-notizen", en: "measuring-and-notes", nl: "meten-en-notities", ru: "measuring-and-notes", cs: "measuring-and-notes", sl: "merjenje-in-opombe", hu: "measuring-and-notes", es: "measuring-and-notes" }, + printing: { de: "drucken", en: "printing", nl: "printen", ru: "printing", cs: "printing", sl: "tiskanje", hu: "printing", es: "printing" }, + files: { de: "dateien-und-speichern", en: "files-and-saving", nl: "bestanden-en-opslaan", ru: "files-and-saving", cs: "files-and-saving", sl: "datoteke-in-shranjevanje", hu: "files-and-saving", es: "files-and-saving" }, + shortcuts: { de: "tastenkuerzel", en: "shortcuts", nl: "sneltoetsen", ru: "shortcuts", cs: "shortcuts", sl: "bliznjice", hu: "shortcuts", es: "shortcuts" }, + ai: { de: "ki-mit-mcp", en: "ai-with-mcp", nl: "ai-met-mcp", ru: "ai-with-mcp", cs: "ai-with-mcp", sl: "ai-z-mcp", hu: "ai-with-mcp", es: "ai-with-mcp" }, + tablet: { de: "tablet-und-touch", en: "tablet-and-touch", nl: "tablet-en-touch", ru: "tablet-and-touch", cs: "tablet-and-touch", sl: "tablica-in-dotik", hu: "tablet-and-touch", es: "tablet-and-touch" }, + offline: { de: "offline-und-installieren", en: "offline-and-install", nl: "offline-en-installeren", ru: "offline-and-install", cs: "offline-and-install", sl: "offline-in-namestitev", hu: "offline-and-install", es: "offline-and-install" }, } as const satisfies Record>>; export type GuideChapter = keyof typeof GUIDE_CHAPTERS; @@ -35,71 +35,71 @@ export type GuideChapter = keyof typeof GUIDE_CHAPTERS; * same test checks every id against the headings on disk. */ export const GUIDE_SECTIONS = { - sectionView: { chapter: "view", de: "ins-innere-schauen-die-schnittansicht", en: "looking-inside-the-section-view", nl: "naar-binnen-kijken-de-doorsnede", ru: "zaglyanut-vnutr-vid-v-razreze", cs: "pohled-dovnitr-rez", sl: "pogled-v-notranjost-prerezni-pogled", hu: "belelatni-a-metszeti-nezet" }, - viewCube: { chapter: "view", de: "der-ansichtswuerfel", en: "the-view-cube", nl: "de-weergavekubus", ru: "kub-orientatsii", cs: "orientacni-krychle", sl: "orientacijska-kocka", hu: "a-nezetkocka" }, - cameraBar: { chapter: "view", de: "die-kameraleiste", en: "the-camera-bar", nl: "de-camerabalk", ru: "panel-kamery", cs: "lista-pohledu", sl: "vrstica-kamere", hu: "a-kamerasav" }, - gridAndSnapping: { chapter: "view", de: "gitter-und-raster", en: "grid-and-snapping", nl: "raster-en-vastklikken", ru: "setka-i-privyazka", cs: "mrizka-a-prichytavani", sl: "mreza-in-pripenjanje", hu: "racs-es-illesztes" }, - colorCard: { chapter: "shapes", de: "farben-waehlen", en: "choosing-colours", nl: "kleuren-kiezen", ru: "vybor-tsveta", cs: "vyber-barev" }, - shapeSettings: { chapter: "shapes", de: "die-einstellungen-der-form", en: "the-shape-s-settings", nl: "de-instellingen-van-de-vorm", ru: "nastroyki-figury", cs: "nastaveni-tvaru", sl: "nastavitve-oblike", hu: "az-alakzat-beallitasai" }, - wrapCylinder: { chapter: "shapes", de: "um-einen-zylinder-wickeln", en: "wrapping-around-a-cylinder", nl: "om-een-cilinder-wikkelen", ru: "oborachivanie-vokrug-tsilindra", cs: "obtoceni-kolem-valce", sl: "ovijanje-okoli-valja", hu: "hengerre-tekeres" }, - textFill: { chapter: "text", de: "kontur-silhouette-und-breiter", en: "outline-silhouette-and-wider", nl: "contour-silhouet-en-breder", ru: "kontur-siluet-i-shire", cs: "obrys-silueta-a-rozsireni", sl: "kontura-silhueta-in-sirse", hu: "koervonal-sziluett-es-szelesebb" }, - textLayers: { chapter: "text", de: "schichten-und-namensschilder", en: "layers-and-name-tags", nl: "lagen-en-naambordjes", ru: "sloi-i-birki-s-imenem", cs: "vrstvy-a-jmenovky", sl: "plasti-in-napisi-z-imenom", hu: "retegek-es-nevcimkek" }, - iconTag: { chapter: "text", de: "symbolschilder", en: "icon-tags", nl: "icoonbordjes", ru: "birki-so-znachkom", cs: "stitky-se-symbolem", sl: "simbolne-oznake", hu: "ikoncimkek" }, - qrCode: { chapter: "text", de: "qr-codes", en: "qr-codes", nl: "qr-codes", fr: "codes-qr", ru: "qr-kody", cs: "qr-kody", sl: "kode-qr", hu: "qr-kodok" }, - myShapes: { chapter: "shapes", de: "eigene-formen", en: "custom-shapes", nl: "eigen-vormen", ru: "sobstvennye-figury", cs: "vlastni-tvary", sl: "oblike-po-meri", hu: "sajat-alakzatok" }, - objectList: { chapter: "select", de: "die-objektliste", en: "the-object-list", nl: "de-objectlijst", ru: "spisok-obektov", cs: "seznam-objektu", sl: "seznam-objektov", hu: "az-objektumlista" }, - pattern: { chapter: "select", de: "muster-reihe-und-kreis", en: "patterns-row-and-circle", nl: "patronen-rij-en-cirkel", ru: "massivy-ryad-i-krug", cs: "opakovani-v-rade-a-po-kruznici", sl: "polja-vrsta-in-krog", hu: "ismetles-sor-es-koer" }, - holePattern: { chapter: "select", de: "lochmuster-auf-einer-flaeche", en: "hole-pattern-on-a-face", nl: "gatenpatroon-op-een-vlak", ru: "massiv-otverstiy-na-grani", cs: "rastr-otvoru-na-plose", sl: "vzorec-lukenj-na-ploskvi", hu: "lyukminta-egy-lapon" }, - faceTool: { chapter: "select", de: "eine-flaeche-heraus-oder-hineinziehen", en: "pushing-a-face-out-or-in", nl: "een-vlak-naar-buiten-of-naar-binnen-trekken", fr: "tirer-une-face-vers-l-exterieur-ou-l-interieur", ru: "vytyagivanie-grani-naruzhu-ili-vnutr", cs: "vysunuti-plochy-ven-nebo-dovnitr", sl: "vlecenje-ploskve-navzven-ali-navznoter" }, - scaleByPercent: { chapter: "select", de: "um-prozent-skalieren", en: "scaling-by-percent", nl: "schalen-in-procenten", ru: "masshtabirovanie-v-protsentakh", cs: "zmena-velikosti-o-procenta", sl: "povecava-v-odstotkih", hu: "meretezes-szazalekban" }, - selectionProperties: { chapter: "select", de: "mehrere-teile-auf-einmal-aendern", en: "changing-several-parts-at-once", nl: "meerdere-onderdelen-tegelijk-veranderen", ru: "izmenenie-neskolkikh-detaley-srazu", cs: "soucasna-zmena-vice-dilu", sl: "sprememba-vec-delov-naenkrat", hu: "toebb-resz-modositasa-egyszerre" }, - historyView: { chapter: "select", de: "zurueckschauen-die-verlaufsansicht", en: "looking-back-the-history-view", nl: "terugkijken-de-geschiedenisweergave", ru: "vzglyad-nazad-prosmotr-istorii", cs: "prohlizeni-historie", sl: "pogled-nazaj-pogled-zgodovine", hu: "visszatekintes-az-elozmenynezet" }, - grouping: { chapter: "solids", de: "gruppieren", en: "grouping", nl: "groeperen", ru: "gruppirovka", cs: "slouceni", sl: "zdruzevanje-v-skupino", hu: "csoportositas" }, - bundling: { chapter: "solids", de: "buendeln", en: "bundling", nl: "bundelen", ru: "svyazka", cs: "seskupeni", sl: "povezovanje-v-svezenj", hu: "koetegbe-fogas" }, - intersection: { chapter: "solids", de: "schnittmenge", en: "intersection", nl: "doorsnijding", ru: "peresechenie", cs: "prunik", sl: "presek", hu: "metszet" }, - splitting: { chapter: "solids", de: "teilen", en: "splitting", nl: "splitsen", ru: "razdelenie", cs: "rozdeleni", sl: "rezanje", hu: "kettevagas" }, - edgeTreatment: { chapter: "edges", de: "kanten-fasen-und-verrunden", en: "chamfering-and-filleting-edges", nl: "randen-afschuinen-en-afronden", ru: "faska-i-skruglenie-kromok", cs: "zkoseni-a-zaobleni-hran", sl: "posnetje-in-zaokrozitev-robov", hu: "elek-letoerese-es-lekerekitese" }, - hollowing: { chapter: "edges", de: "koerper-aushoehlen", en: "hollowing-bodies", nl: "lichamen-uithollen", ru: "sozdanie-obolochki", cs: "vytvareni-dutin", sl: "izdolbljenje-teles", hu: "testek-kiueregelese" }, - deleteFace: { chapter: "edges", de: "flaechen-loeschen", en: "deleting-faces", nl: "vlakken-verwijderen", fr: "supprimer-des-faces", ru: "udalenie-graney", cs: "mazani-ploch", sl: "brisanje-ploskev" }, - threads: { chapter: "threads", de: "gewinde", en: "threads", nl: "schroefdraad", ru: "rezba", cs: "zavity", sl: "navoj", hu: "menetek" }, - gears: { chapter: "threads", de: "zahnraeder", en: "gears", nl: "tandwielen", ru: "shesterni", cs: "ozubena-kola", sl: "zobniki", hu: "fogaskerekek" }, - springs: { chapter: "threads", de: "federn", en: "springs", nl: "veren", ru: "pruzhiny", cs: "pruziny", sl: "vzmeti", hu: "rugok" }, - bentTubes: { chapter: "threads", de: "gebogene-rohre", en: "bent-tubes", nl: "gebogen-buizen", ru: "izognutye-truby", cs: "ohnute-trubky", sl: "ukrivljene-cevi", hu: "hajlitott-csoevek" }, - loft: { chapter: "threads", de: "uebergang", en: "loft", nl: "loft", ru: "perekhod", cs: "propojeni-profilu", sl: "prehod", hu: "atmenet" }, - gridfinity: { chapter: "threads", de: "gridfinity", en: "gridfinity", nl: "gridfinity", ru: "gridfinity", cs: "gridfinity", sl: "gridfinity", hu: "gridfinity" }, - hinge: { chapter: "threads", de: "scharnier", en: "hinge", nl: "scharnier", ru: "petlya", cs: "pant", sl: "tecaj", hu: "zsaner" }, - knurl: { chapter: "threads", de: "raendelung", en: "knurling", nl: "kartel", ru: "nakatka", cs: "ryhovane-uchopy", sl: "narebricenje", hu: "recezes" }, - dovetail: { chapter: "threads", de: "schwalbenschwanz", en: "dovetail", nl: "zwaluwstaart", ru: "lastochkin-khvost", cs: "rybinovy-spoj", sl: "lastovicji-rep", hu: "fecskefark" }, - teardrop: { chapter: "threads", de: "tropfenbohrung", en: "teardrop-hole", nl: "druppelgat", ru: "kaplevidnoe-otverstie", cs: "kapkovity-otvor", sl: "kapljicna-izvrtina", hu: "csepp-alaku-lyuk" }, - screwHoles: { chapter: "threads", de: "stufen-und-senkbohrung", en: "counterbore-and-countersink", nl: "verzinkboring-en-verzinking", ru: "tsekovka-i-zenkovka", cs: "valcove-a-kuzelove-zahloubeni", sl: "stopnicasta-in-udirna-izvrtina", hu: "hengeres-es-kupos-suellyesztes" }, - ruler: { chapter: "measuring", de: "das-lineal", en: "the-ruler", nl: "de-liniaal", ru: "lineyka", cs: "pravitko", sl: "ravnilo", hu: "a-vonalzo" }, - printer: { chapter: "printing", de: "den-drucker-waehlen", en: "choosing-your-printer", nl: "je-printer-kiezen", ru: "vybor-printera", cs: "vyber-tiskarny", sl: "izbira-tiskalnika", hu: "a-nyomtatod-kivalasztasa" }, - designFolders: { chapter: "files", de: "ordner-fuer-deine-entwuerfe", en: "folders-for-your-designs", nl: "mappen-voor-je-ontwerpen", fr: "des-dossiers-pour-vos-dessins", ru: "papki-dlya-proektov", cs: "slozky-pro-projekty", sl: "mape-za-tvoje-projekte" }, - backingUp: { chapter: "files", de: "sichern-und-weitergeben", en: "backing-up-and-passing-on", nl: "back-up-maken-en-doorgeven", ru: "rezervnye-kopii-i-peredacha", cs: "zalohovani-a-predavani", sl: "varnostno-kopiranje-in-deljenje", hu: "biztonsagi-mentes-es-tovabbadas" }, - exporting: { chapter: "files", de: "exportieren", en: "exporting", nl: "exporteren", ru: "eksport", cs: "export", sl: "izvoz", hu: "exportalas" }, - importing: { chapter: "files", de: "importieren", en: "importing", nl: "importeren", ru: "import", cs: "import", sl: "uvoz", hu: "importalas" }, - simplifyMesh: { chapter: "files", de: "ein-importiertes-netz-vereinfachen", en: "simplifying-an-imported-mesh", nl: "een-geimporteerde-mesh-vereenvoudigen", ru: "uproshchenie-importirovannoy-setki", cs: "zjednoduseni-importovane-site", sl: "poenostavitev-uvozene-mreze", hu: "importalt-halo-egyszerusitese" }, - tapeMeasure: { chapter: "measuring", de: "das-massband", en: "the-tape-measure", nl: "het-meetlint", ru: "ruletka", cs: "mereni-vzdalenosti", sl: "merilni-trak", hu: "a-meroszalag" }, - notes: { chapter: "measuring", de: "notizen", en: "notes", nl: "notities", ru: "zametki", cs: "poznamky", sl: "opombe", hu: "jegyzetek" }, - sketchCorners: { chapter: "sketches", de: "ecken-runden-oder-fasen", en: "rounding-or-chamfering-corners", nl: "hoeken-afronden-of-afschuinen", ru: "skruglenie-i-faska-na-uglakh", cs: "zaobleni-a-zkoseni-rohu", sl: "zaokrozevanje-ali-posnetje-vogalov", hu: "sarkok-lekerekitese-vagy-letoerese" }, - sketchImage: { chapter: "sketches", de: "ein-bild-als-vorlage", en: "a-picture-as-template", nl: "een-afbeelding-als-sjabloon", ru: "kartinka-kak-podlozhka", cs: "obrazek-jako-predloha", sl: "slika-kot-predloga", hu: "kep-mint-minta" }, - sketchStroke: { chapter: "sketches", de: "als-kontur-bauen", en: "building-as-a-stroke", nl: "als-lijn-opbouwen", ru: "postroenie-obvodkoy", cs: "teleso-z-rozsirene-cary", sl: "gradnja-kot-kontura", hu: "vonalkent-epites" }, - customFonts: { chapter: "text", de: "eigene-schriften", en: "your-own-fonts", nl: "je-eigen-lettertypen", ru: "svoi-shrifty", cs: "vlastni-pisma", sl: "lastne-pisave", hu: "sajat-betutipusok" }, - sketchFill: { chapter: "sketches", de: "fuellung-und-silhouette", en: "fill-and-silhouette", nl: "vulling-en-silhouet", ru: "zalivka-i-siluet", cs: "vypln-a-silueta", sl: "polnilo-in-silhueta", hu: "kitoeltes-es-sziluett" }, - sketchDrawing: { chapter: "sketches", de: "zeichnen", en: "drawing", nl: "tekenen", ru: "risovanie", cs: "kresleni", sl: "risanje", hu: "rajzolas" }, - sketchSweep: { chapter: "sketches", de: "entlang-eines-pfades-ziehen", en: "sweeping-along-a-path", nl: "langs-een-pad-trekken", fr: "balayer-le-long-d-un-chemin", ru: "protyagivanie-vdol-traektorii", cs: "protazeni-podel-drahy", sl: "vleka-vzdolz-poti" }, - sketchToBody: { chapter: "sketches", de: "ein-koerper-daraus-machen", en: "making-a-body-from-it", nl: "er-een-lichaam-van-maken", ru: "kak-sdelat-iz-nego-telo", cs: "vytvoreni-telesa", sl: "iz-tega-narediti-telo", hu: "test-keszitese-belole" }, - addShape: { chapter: "shapes", de: "eine-form-hinzufuegen", en: "adding-a-shape", nl: "een-vorm-toevoegen", ru: "dobavlenie-figury", cs: "pridani-tvaru", sl: "dodaj-obliko", hu: "alakzat-hozzaadasa" }, - rotating: { chapter: "select", cs: "otaceni-a-stred-otaceni", da: "rotation-og-indstilling-af-rotationspunkt", de: "drehen-und-den-drehpunkt-setzen", en: "rotating-and-setting-the-pivot", fr: "rotation-et-reglage-du-pivot", hu: "forgatas-es-a-forgatasi-pont-megadasa", nl: "draaien-en-het-draaipunt-instellen", pl: "obracanie-i-ustawianie-punktu-obrotu", ru: "vrashchenie-i-tsentr-vrashcheniya", sl: "vrtenje-in-postavitev-vrtisca" }, - selecting: { chapter: "select", de: "auswaehlen", en: "selecting", nl: "selecteren", ru: "vydelenie", cs: "vyber", sl: "izbiranje", hu: "kijeloeles" }, - layFlat: { chapter: "select", de: "auf-eine-flaeche-legen", en: "laying-flat-on-a-face", nl: "plat-op-een-vlak-leggen", ru: "ukladka-na-gran", cs: "polozeni-na-plochu", sl: "polaganje-na-ploskev", hu: "lapra-fektetes" }, - referencePoints: { chapter: "measuring", de: "bezugspunkte", en: "reference-points", nl: "referentiepunten", ru: "opornye-tochki", cs: "referencni-body", sl: "referencne-tocke", hu: "referenciapontok" }, - addingText: { chapter: "text", de: "text-hinzufuegen", en: "adding-text", nl: "tekst-toevoegen", ru: "dobavlenie-teksta", cs: "vlozeni-textu", sl: "dodajanje-besedila", hu: "szoeveg-hozzaadasa" }, - sketchMirror: { chapter: "sketches", de: "spiegeln", en: "mirroring", nl: "spiegelen", fr: "symetrie", ru: "zerkalnoe-otrazhenie", cs: "zrcadleni", sl: "zrcaljenje", hu: "tuekroezes", pl: "odbicie-lustrzane", da: "spejling" }, - sketchCurve: { chapter: "sketches", de: "eine-gerade-seite-kruemmen", en: "curving-a-straight-side", nl: "een-rechte-zijde-buigen", ru: "izgib-pryamoy-storony", cs: "prohnuti-prime-strany", sl: "ukrivljanje-ravne-stranice", hu: "egyenes-oldal-goerbitese" }, - commandSearch: { chapter: "shortcuts", de: "befehlssuche", en: "command-search", nl: "opdrachten-zoeken", ru: "poisk-komand", cs: "vyhledavani-prikazu", sl: "iskanje-ukazov", hu: "parancskereso" }, - interactiveHelp: { chapter: "shortcuts", de: "interaktive-hilfe", en: "interactive-help", nl: "interactieve-hulp", fr: "aide-interactive", ru: "interaktivnaya-spravka", cs: "interaktivni-napoveda", sl: "interaktivna-pomoc" }, - whatsNew: { chapter: "start", de: "neu-seit-deinem-letzten-besuch", en: "new-since-your-last-visit", nl: "nieuw-sinds-je-laatste-bezoek", ru: "novoe-s-vashego-poslednego-vizita", cs: "novinky-od-posledni-navstevy", sl: "novo-od-tvojega-zadnjega-obiska", hu: "ujdonsagok-a-legutobbi-latogatasod-ota" }, + sectionView: { chapter: "view", de: "ins-innere-schauen-die-schnittansicht", en: "looking-inside-the-section-view", nl: "naar-binnen-kijken-de-doorsnede", ru: "zaglyanut-vnutr-vid-v-razreze", cs: "pohled-dovnitr-rez", sl: "pogled-v-notranjost-prerezni-pogled", hu: "belelatni-a-metszeti-nezet", es: "mirar-por-dentro-la-vista-de-seccion" }, + viewCube: { chapter: "view", de: "der-ansichtswuerfel", en: "the-view-cube", nl: "de-weergavekubus", ru: "kub-orientatsii", cs: "orientacni-krychle", sl: "orientacijska-kocka", hu: "a-nezetkocka", es: "el-cubo-de-vista" }, + cameraBar: { chapter: "view", de: "die-kameraleiste", en: "the-camera-bar", nl: "de-camerabalk", ru: "panel-kamery", cs: "lista-pohledu", sl: "vrstica-kamere", hu: "a-kamerasav", es: "la-barra-de-camara" }, + gridAndSnapping: { chapter: "view", de: "gitter-und-raster", en: "grid-and-snapping", nl: "raster-en-vastklikken", ru: "setka-i-privyazka", cs: "mrizka-a-prichytavani", sl: "mreza-in-pripenjanje", hu: "racs-es-illesztes", es: "cuadricula-y-ajuste" }, + colorCard: { chapter: "shapes", de: "farben-waehlen", en: "choosing-colours", nl: "kleuren-kiezen", ru: "vybor-tsveta", cs: "vyber-barev", es: "elegir-colores" }, + shapeSettings: { chapter: "shapes", de: "die-einstellungen-der-form", en: "the-shape-s-settings", nl: "de-instellingen-van-de-vorm", ru: "nastroyki-figury", cs: "nastaveni-tvaru", sl: "nastavitve-oblike", hu: "az-alakzat-beallitasai", es: "los-ajustes-de-la-forma" }, + wrapCylinder: { chapter: "shapes", de: "um-einen-zylinder-wickeln", en: "wrapping-around-a-cylinder", nl: "om-een-cilinder-wikkelen", ru: "oborachivanie-vokrug-tsilindra", cs: "obtoceni-kolem-valce", sl: "ovijanje-okoli-valja", hu: "hengerre-tekeres", es: "envolver-alrededor-de-un-cilindro" }, + textFill: { chapter: "text", de: "kontur-silhouette-und-breiter", en: "outline-silhouette-and-wider", nl: "contour-silhouet-en-breder", ru: "kontur-siluet-i-shire", cs: "obrys-silueta-a-rozsireni", sl: "kontura-silhueta-in-sirse", hu: "koervonal-sziluett-es-szelesebb", es: "contorno-silueta-y-mas-ancho" }, + textLayers: { chapter: "text", de: "schichten-und-namensschilder", en: "layers-and-name-tags", nl: "lagen-en-naambordjes", ru: "sloi-i-birki-s-imenem", cs: "vrstvy-a-jmenovky", sl: "plasti-in-napisi-z-imenom", hu: "retegek-es-nevcimkek", es: "capas-y-placas-con-nombre" }, + iconTag: { chapter: "text", de: "symbolschilder", en: "icon-tags", nl: "icoonbordjes", ru: "birki-so-znachkom", cs: "stitky-se-symbolem", sl: "simbolne-oznake", hu: "ikoncimkek", es: "placas-con-icono" }, + qrCode: { chapter: "text", de: "qr-codes", en: "qr-codes", nl: "qr-codes", fr: "codes-qr", ru: "qr-kody", cs: "qr-kody", sl: "kode-qr", hu: "qr-kodok", es: "codigos-qr" }, + myShapes: { chapter: "shapes", de: "eigene-formen", en: "custom-shapes", nl: "eigen-vormen", ru: "sobstvennye-figury", cs: "vlastni-tvary", sl: "oblike-po-meri", hu: "sajat-alakzatok", es: "formas-personalizadas" }, + objectList: { chapter: "select", de: "die-objektliste", en: "the-object-list", nl: "de-objectlijst", ru: "spisok-obektov", cs: "seznam-objektu", sl: "seznam-objektov", hu: "az-objektumlista", es: "la-lista-de-objetos" }, + pattern: { chapter: "select", de: "muster-reihe-und-kreis", en: "patterns-row-and-circle", nl: "patronen-rij-en-cirkel", ru: "massivy-ryad-i-krug", cs: "opakovani-v-rade-a-po-kruznici", sl: "polja-vrsta-in-krog", hu: "ismetles-sor-es-koer", es: "patrones-fila-y-circulo" }, + holePattern: { chapter: "select", de: "lochmuster-auf-einer-flaeche", en: "hole-pattern-on-a-face", nl: "gatenpatroon-op-een-vlak", ru: "massiv-otverstiy-na-grani", cs: "rastr-otvoru-na-plose", sl: "vzorec-lukenj-na-ploskvi", hu: "lyukminta-egy-lapon", es: "patron-de-orificios-en-una-cara" }, + faceTool: { chapter: "select", de: "eine-flaeche-heraus-oder-hineinziehen", en: "pushing-a-face-out-or-in", nl: "een-vlak-naar-buiten-of-naar-binnen-trekken", fr: "tirer-une-face-vers-l-exterieur-ou-l-interieur", ru: "vytyagivanie-grani-naruzhu-ili-vnutr", cs: "vysunuti-plochy-ven-nebo-dovnitr", sl: "vlecenje-ploskve-navzven-ali-navznoter", es: "empujar-una-cara-hacia-fuera-o-hacia-dentro" }, + scaleByPercent: { chapter: "select", de: "um-prozent-skalieren", en: "scaling-by-percent", nl: "schalen-in-procenten", ru: "masshtabirovanie-v-protsentakh", cs: "zmena-velikosti-o-procenta", sl: "povecava-v-odstotkih", hu: "meretezes-szazalekban", es: "escalar-en-porcentaje" }, + selectionProperties: { chapter: "select", de: "mehrere-teile-auf-einmal-aendern", en: "changing-several-parts-at-once", nl: "meerdere-onderdelen-tegelijk-veranderen", ru: "izmenenie-neskolkikh-detaley-srazu", cs: "soucasna-zmena-vice-dilu", sl: "sprememba-vec-delov-naenkrat", hu: "toebb-resz-modositasa-egyszerre", es: "cambiar-varias-piezas-a-la-vez" }, + historyView: { chapter: "select", de: "zurueckschauen-die-verlaufsansicht", en: "looking-back-the-history-view", nl: "terugkijken-de-geschiedenisweergave", ru: "vzglyad-nazad-prosmotr-istorii", cs: "prohlizeni-historie", sl: "pogled-nazaj-pogled-zgodovine", hu: "visszatekintes-az-elozmenynezet", es: "mirar-atras-la-vista-del-historial" }, + grouping: { chapter: "solids", de: "gruppieren", en: "grouping", nl: "groeperen", ru: "gruppirovka", cs: "slouceni", sl: "zdruzevanje-v-skupino", hu: "csoportositas", es: "agrupar" }, + bundling: { chapter: "solids", de: "buendeln", en: "bundling", nl: "bundelen", ru: "svyazka", cs: "seskupeni", sl: "povezovanje-v-svezenj", hu: "koetegbe-fogas", es: "crear-conjuntos" }, + intersection: { chapter: "solids", de: "schnittmenge", en: "intersection", nl: "doorsnijding", ru: "peresechenie", cs: "prunik", sl: "presek", hu: "metszet", es: "interseccion" }, + splitting: { chapter: "solids", de: "teilen", en: "splitting", nl: "splitsen", ru: "razdelenie", cs: "rozdeleni", sl: "rezanje", hu: "kettevagas", es: "dividir" }, + edgeTreatment: { chapter: "edges", de: "kanten-fasen-und-verrunden", en: "chamfering-and-filleting-edges", nl: "randen-afschuinen-en-afronden", ru: "faska-i-skruglenie-kromok", cs: "zkoseni-a-zaobleni-hran", sl: "posnetje-in-zaokrozitev-robov", hu: "elek-letoerese-es-lekerekitese", es: "achaflanar-y-redondear-aristas" }, + hollowing: { chapter: "edges", de: "koerper-aushoehlen", en: "hollowing-bodies", nl: "lichamen-uithollen", ru: "sozdanie-obolochki", cs: "vytvareni-dutin", sl: "izdolbljenje-teles", hu: "testek-kiueregelese", es: "vaciar-cuerpos" }, + deleteFace: { chapter: "edges", de: "flaechen-loeschen", en: "deleting-faces", nl: "vlakken-verwijderen", fr: "supprimer-des-faces", ru: "udalenie-graney", cs: "mazani-ploch", sl: "brisanje-ploskev", es: "eliminar-caras" }, + threads: { chapter: "threads", de: "gewinde", en: "threads", nl: "schroefdraad", ru: "rezba", cs: "zavity", sl: "navoj", hu: "menetek", es: "roscas" }, + gears: { chapter: "threads", de: "zahnraeder", en: "gears", nl: "tandwielen", ru: "shesterni", cs: "ozubena-kola", sl: "zobniki", hu: "fogaskerekek", es: "engranajes" }, + springs: { chapter: "threads", de: "federn", en: "springs", nl: "veren", ru: "pruzhiny", cs: "pruziny", sl: "vzmeti", hu: "rugok", es: "muelles" }, + bentTubes: { chapter: "threads", de: "gebogene-rohre", en: "bent-tubes", nl: "gebogen-buizen", ru: "izognutye-truby", cs: "ohnute-trubky", sl: "ukrivljene-cevi", hu: "hajlitott-csoevek", es: "tubos-curvados" }, + loft: { chapter: "threads", de: "uebergang", en: "loft", nl: "loft", ru: "perekhod", cs: "propojeni-profilu", sl: "prehod", hu: "atmenet", es: "recubrimiento" }, + gridfinity: { chapter: "threads", de: "gridfinity", en: "gridfinity", nl: "gridfinity", ru: "gridfinity", cs: "gridfinity", sl: "gridfinity", hu: "gridfinity", es: "gridfinity" }, + hinge: { chapter: "threads", de: "scharnier", en: "hinge", nl: "scharnier", ru: "petlya", cs: "pant", sl: "tecaj", hu: "zsaner", es: "bisagra" }, + knurl: { chapter: "threads", de: "raendelung", en: "knurling", nl: "kartel", ru: "nakatka", cs: "ryhovane-uchopy", sl: "narebricenje", hu: "recezes", es: "moleteado" }, + dovetail: { chapter: "threads", de: "schwalbenschwanz", en: "dovetail", nl: "zwaluwstaart", ru: "lastochkin-khvost", cs: "rybinovy-spoj", sl: "lastovicji-rep", hu: "fecskefark", es: "cola-de-milano" }, + teardrop: { chapter: "threads", de: "tropfenbohrung", en: "teardrop-hole", nl: "druppelgat", ru: "kaplevidnoe-otverstie", cs: "kapkovity-otvor", sl: "kapljicna-izvrtina", hu: "csepp-alaku-lyuk", es: "orificio-en-lagrima" }, + screwHoles: { chapter: "threads", de: "stufen-und-senkbohrung", en: "counterbore-and-countersink", nl: "verzinkboring-en-verzinking", ru: "tsekovka-i-zenkovka", cs: "valcove-a-kuzelove-zahloubeni", sl: "stopnicasta-in-udirna-izvrtina", hu: "hengeres-es-kupos-suellyesztes", es: "escariado-y-avellanado" }, + ruler: { chapter: "measuring", de: "das-lineal", en: "the-ruler", nl: "de-liniaal", ru: "lineyka", cs: "pravitko", sl: "ravnilo", hu: "a-vonalzo", es: "la-regla" }, + printer: { chapter: "printing", de: "den-drucker-waehlen", en: "choosing-your-printer", nl: "je-printer-kiezen", ru: "vybor-printera", cs: "vyber-tiskarny", sl: "izbira-tiskalnika", hu: "a-nyomtatod-kivalasztasa", es: "elegir-tu-impresora" }, + designFolders: { chapter: "files", de: "ordner-fuer-deine-entwuerfe", en: "folders-for-your-designs", nl: "mappen-voor-je-ontwerpen", fr: "des-dossiers-pour-vos-dessins", ru: "papki-dlya-proektov", cs: "slozky-pro-projekty", sl: "mape-za-tvoje-projekte", es: "carpetas-para-tus-disenos" }, + backingUp: { chapter: "files", de: "sichern-und-weitergeben", en: "backing-up-and-passing-on", nl: "back-up-maken-en-doorgeven", ru: "rezervnye-kopii-i-peredacha", cs: "zalohovani-a-predavani", sl: "varnostno-kopiranje-in-deljenje", hu: "biztonsagi-mentes-es-tovabbadas", es: "hacer-copias-de-seguridad-y-compartir" }, + exporting: { chapter: "files", de: "exportieren", en: "exporting", nl: "exporteren", ru: "eksport", cs: "export", sl: "izvoz", hu: "exportalas", es: "exportar" }, + importing: { chapter: "files", de: "importieren", en: "importing", nl: "importeren", ru: "import", cs: "import", sl: "uvoz", hu: "importalas", es: "importar" }, + simplifyMesh: { chapter: "files", de: "ein-importiertes-netz-vereinfachen", en: "simplifying-an-imported-mesh", nl: "een-geimporteerde-mesh-vereenvoudigen", ru: "uproshchenie-importirovannoy-setki", cs: "zjednoduseni-importovane-site", sl: "poenostavitev-uvozene-mreze", hu: "importalt-halo-egyszerusitese", es: "simplificar-una-malla-importada" }, + tapeMeasure: { chapter: "measuring", de: "das-massband", en: "the-tape-measure", nl: "het-meetlint", ru: "ruletka", cs: "mereni-vzdalenosti", sl: "merilni-trak", hu: "a-meroszalag", es: "la-cinta-metrica" }, + notes: { chapter: "measuring", de: "notizen", en: "notes", nl: "notities", ru: "zametki", cs: "poznamky", sl: "opombe", hu: "jegyzetek", es: "notas" }, + sketchCorners: { chapter: "sketches", de: "ecken-runden-oder-fasen", en: "rounding-or-chamfering-corners", nl: "hoeken-afronden-of-afschuinen", ru: "skruglenie-i-faska-na-uglakh", cs: "zaobleni-a-zkoseni-rohu", sl: "zaokrozevanje-ali-posnetje-vogalov", hu: "sarkok-lekerekitese-vagy-letoerese", es: "redondear-o-achaflanar-esquinas" }, + sketchImage: { chapter: "sketches", de: "ein-bild-als-vorlage", en: "a-picture-as-template", nl: "een-afbeelding-als-sjabloon", ru: "kartinka-kak-podlozhka", cs: "obrazek-jako-predloha", sl: "slika-kot-predloga", hu: "kep-mint-minta", es: "una-imagen-como-plantilla" }, + sketchStroke: { chapter: "sketches", de: "als-kontur-bauen", en: "building-as-a-stroke", nl: "als-lijn-opbouwen", ru: "postroenie-obvodkoy", cs: "teleso-z-rozsirene-cary", sl: "gradnja-kot-kontura", hu: "vonalkent-epites", es: "construir-como-trazo" }, + customFonts: { chapter: "text", de: "eigene-schriften", en: "your-own-fonts", nl: "je-eigen-lettertypen", ru: "svoi-shrifty", cs: "vlastni-pisma", sl: "lastne-pisave", hu: "sajat-betutipusok", es: "tus-fuentes" }, + sketchFill: { chapter: "sketches", de: "fuellung-und-silhouette", en: "fill-and-silhouette", nl: "vulling-en-silhouet", ru: "zalivka-i-siluet", cs: "vypln-a-silueta", sl: "polnilo-in-silhueta", hu: "kitoeltes-es-sziluett", es: "relleno-y-silueta" }, + sketchDrawing: { chapter: "sketches", de: "zeichnen", en: "drawing", nl: "tekenen", ru: "risovanie", cs: "kresleni", sl: "risanje", hu: "rajzolas", es: "dibujar" }, + sketchSweep: { chapter: "sketches", de: "entlang-eines-pfades-ziehen", en: "sweeping-along-a-path", nl: "langs-een-pad-trekken", fr: "balayer-le-long-d-un-chemin", ru: "protyagivanie-vdol-traektorii", cs: "protazeni-podel-drahy", sl: "vleka-vzdolz-poti", es: "barrer-a-lo-largo-de-una-trayectoria" }, + sketchToBody: { chapter: "sketches", de: "ein-koerper-daraus-machen", en: "making-a-body-from-it", nl: "er-een-lichaam-van-maken", ru: "kak-sdelat-iz-nego-telo", cs: "vytvoreni-telesa", sl: "iz-tega-narediti-telo", hu: "test-keszitese-belole", es: "convertirlo-en-un-cuerpo" }, + addShape: { chapter: "shapes", de: "eine-form-hinzufuegen", en: "adding-a-shape", nl: "een-vorm-toevoegen", ru: "dobavlenie-figury", cs: "pridani-tvaru", sl: "dodaj-obliko", hu: "alakzat-hozzaadasa", es: "anadir-una-forma" }, + rotating: { chapter: "select", cs: "otaceni-a-stred-otaceni", da: "rotation-og-indstilling-af-rotationspunkt", de: "drehen-und-den-drehpunkt-setzen", en: "rotating-and-setting-the-pivot", es: "girar-y-fijar-el-punto-de-giro", fr: "rotation-et-reglage-du-pivot", hu: "forgatas-es-a-forgatasi-pont-megadasa", nl: "draaien-en-het-draaipunt-instellen", pl: "obracanie-i-ustawianie-punktu-obrotu", ru: "vrashchenie-i-tsentr-vrashcheniya", sl: "vrtenje-in-postavitev-vrtisca" }, + selecting: { chapter: "select", de: "auswaehlen", en: "selecting", nl: "selecteren", ru: "vydelenie", cs: "vyber", sl: "izbiranje", hu: "kijeloeles", es: "seleccionar" }, + layFlat: { chapter: "select", de: "auf-eine-flaeche-legen", en: "laying-flat-on-a-face", nl: "plat-op-een-vlak-leggen", ru: "ukladka-na-gran", cs: "polozeni-na-plochu", sl: "polaganje-na-ploskev", hu: "lapra-fektetes", es: "apoyar-sobre-una-cara" }, + referencePoints: { chapter: "measuring", de: "bezugspunkte", en: "reference-points", nl: "referentiepunten", ru: "opornye-tochki", cs: "referencni-body", sl: "referencne-tocke", hu: "referenciapontok", es: "puntos-de-referencia" }, + addingText: { chapter: "text", de: "text-hinzufuegen", en: "adding-text", nl: "tekst-toevoegen", ru: "dobavlenie-teksta", cs: "vlozeni-textu", sl: "dodajanje-besedila", hu: "szoeveg-hozzaadasa", es: "anadir-texto" }, + sketchMirror: { chapter: "sketches", de: "spiegeln", en: "mirroring", nl: "spiegelen", fr: "symetrie", ru: "zerkalnoe-otrazhenie", cs: "zrcadleni", sl: "zrcaljenje", hu: "tuekroezes", pl: "odbicie-lustrzane", da: "spejling", es: "reflejar" }, + sketchCurve: { chapter: "sketches", de: "eine-gerade-seite-kruemmen", en: "curving-a-straight-side", nl: "een-rechte-zijde-buigen", ru: "izgib-pryamoy-storony", cs: "prohnuti-prime-strany", sl: "ukrivljanje-ravne-stranice", hu: "egyenes-oldal-goerbitese", es: "curvar-un-lado-recto" }, + commandSearch: { chapter: "shortcuts", de: "befehlssuche", en: "command-search", nl: "opdrachten-zoeken", ru: "poisk-komand", cs: "vyhledavani-prikazu", sl: "iskanje-ukazov", hu: "parancskereso", es: "busqueda-de-comandos" }, + interactiveHelp: { chapter: "shortcuts", de: "interaktive-hilfe", en: "interactive-help", nl: "interactieve-hulp", fr: "aide-interactive", ru: "interaktivnaya-spravka", cs: "interaktivni-napoveda", sl: "interaktivna-pomoc", es: "ayuda-interactiva" }, + whatsNew: { chapter: "start", de: "neu-seit-deinem-letzten-besuch", en: "new-since-your-last-visit", nl: "nieuw-sinds-je-laatste-bezoek", ru: "novoe-s-vashego-poslednego-vizita", cs: "novinky-od-posledni-navstevy", sl: "novo-od-tvojega-zadnjega-obiska", hu: "ujdonsagok-a-legutobbi-latogatasod-ota", es: "novedades-desde-tu-ultima-visita" }, } as const satisfies Record>>; export type GuideSection = keyof typeof GUIDE_SECTIONS; diff --git a/apps/web/src/lib/i18n.ts b/apps/web/src/lib/i18n.ts index 6b939dc94..af3db0cca 100644 --- a/apps/web/src/lib/i18n.ts +++ b/apps/web/src/lib/i18n.ts @@ -82,6 +82,7 @@ const LOADERS: Partial> = { cs: () => import("@/lib/messages.cs").then((module) => module.MESSAGES_CS), nl: () => import("@/lib/messages.nl").then((module) => module.MESSAGES_NL), da: () => import("@/lib/messages.da").then((module) => module.MESSAGES_DA), + es: () => import("@/lib/messages.es").then((module) => module.MESSAGES_ES), fr: () => import("@/lib/messages.fr").then((module) => module.MESSAGES_FR), // Polish is a separate chunk: only browsers that pick Polish download it. pl: () => import("@/lib/messages.pl").then((module) => module.MESSAGES_PL), diff --git a/apps/web/src/lib/languages.ts b/apps/web/src/lib/languages.ts index b637f8cea..9f1ea6dba 100644 --- a/apps/web/src/lib/languages.ts +++ b/apps/web/src/lib/languages.ts @@ -16,7 +16,7 @@ * (Čeština, Dansk, Deutsch, Français, ...); then the others, by the name in their own script. * A new language goes in at its place, not at the end. */ -export const LANGUAGES = ["en", "cs", "da", "de", "fr", "it", "hu", "nl", "pl", "pt-br", "sl", "tr", "ru", "ar", "ja"] as const; +export const LANGUAGES = ["en", "cs", "da", "de", "es", "fr", "it", "hu", "nl", "pl", "pt-br", "sl", "tr", "ru", "ar", "ja"] as const; export type Language = (typeof LANGUAGES)[number]; export const DEFAULT_LANGUAGE: Language = "en"; @@ -198,6 +198,61 @@ export const LANGUAGE_INFO: Readonly> = { printButton: "Drucken", }, }, + // Spanish as written in Spain: the whole interface and the 17 chapters of the guide, informal ("tú") like the German + // "du". A browser that asks for the Spanish of Latin America (es-MX, es-AR, ...) gets it too, rather than English. + // Not marked complete on purpose, like Hungarian: sentences added later show in English until the Spanish ones follow + // in a small pull request, so a release never waits for them. The README stays English. + es: { + name: "Español", + htmlLang: "es-ES", + numberLocale: "es-ES", + quotes: ["«", "»"], + guideDir: "guia-es", + communityUrl: GITHUB_DISCUSSIONS, + readme: "README.md", + quickstartAnchor: "windows-quickstart", + legal: { imprint: "Aviso legal", privacy: "Política de privacidad" }, + // The labels of a Spanish keyboard. + keyNames: { + Ctrl: "Ctrl", + Shift: "Mayús", + Delete: "Supr", + Backspace: "Retroceso", + Home: "Inicio", + End: "Fin", + "Page Up": "Re Pág", + "Page Down": "Av Pág", + Enter: "Intro", + Click: "Clic", + RightClick: "Clic derecho", + Drag: "Arrastrar", + }, + asciiUmlauts: false, + complete: false, + guide: { + site: "Guía de usuario de layerling", + home: "Guía de usuario", + openEditor: "Abrir el editor", + backToEditor: "Volver al editor", + editorElsewhere: "El editor ya está abierto en otra pestaña: cambia a ella.", + chapters: "Capítulos", + onThisPage: "En esta página", + previous: "Capítulo anterior", + next: "Capítulo siguiente", + overviewLead: "Todo lo que sabe hacer layerling, paso a paso. Las imágenes salen del programa en marcha y se renuevan con cada versión.", + sourceNote: "Esta guía crece con el programa. Si falta algo o algo no es correcto, dínoslo en las", + forum: "discusiones", + notTranslated: "Este capítulo aún no está traducido al español. A continuación, el texto en inglés.", + languageMenu: "Idioma", + search: "Buscar en la guía", + searchNothing: "No se ha encontrado nada.", + printAll: "Guía completa, para imprimir", + printAllTitle: "Toda la guía en una sola página", + printAllLead: "Todos los capítulos seguidos, para imprimir o guardar como PDF: pulsa Ctrl+P y desactiva «Encabezados y pies de página» en las opciones de impresión. Para imprimir solo una parte, elige allí los números de página.", + printContents: "Índice", + printButton: "Imprimir", + }, + }, nl: { name: "Nederlands", htmlLang: "nl", diff --git a/apps/web/src/lib/messages.es.ts b/apps/web/src/lib/messages.es.ts new file mode 100644 index 000000000..0fe1dc4b0 --- /dev/null +++ b/apps/web/src/lib/messages.es.ts @@ -0,0 +1,2892 @@ +import type { MessageKey } from "@/lib/messages.en"; + +/** + * Los textos de la interfaz en castellano, tal como se escribe en España, de tú. + * Las frases que se añadan después al inglés salen en inglés hasta que se traduzcan + * (ver docs/TRANSLATING.md). + * + * Los marcadores, como {count} o {name}, se quedan exactamente como están. + */ +export const MESSAGES_ES: Partial> = { + "common.cancel": "Cancelar", + "common.save": "Guardar", + "common.delete": "Eliminar", + "common.rename": "Cambiar nombre", + "common.duplicate": "Duplicar", + "dashboard.sendToServer": "Pasar al servidor", + "common.language": "Idioma", + "common.theme": "Tema", + "theme.short.system": "Sistema", + "theme.short.light": "Claro", + "theme.short.dark": "Oscuro", + "theme.short.graphite": "Grafito", + + "aria.originDimensions": "Distancias al origen", + "aria.moveDimensions": "Medidas del desplazamiento", + "aria.axisMovement": "Desplazamiento en {axis}", + "aria.tapeMeasurements": "Mediciones de la cinta métrica", + "aria.rulerDimensions": "Medidas de la regla", + "aria.cornerRulerTool": "Escuadra", + "aria.deleteCornerRuler": "Quitar la escuadra", + "aria.toggleCornerRulerMode": "Cambiar el punto de referencia (extremo / punto medio)", + "aria.rulerCoordinateX": "Distancia en X a la regla", + "aria.rulerCoordinateZ": "Distancia en Y a la regla", + "aria.rulerCoordinateElevation": "Altura respecto a la regla", + "ruler.mode.endpoint": "Extremo (clic para el punto medio)", + "ruler.mode.midpoint": "Punto medio (clic para el extremo)", + "aria.toggleCornerRulerOcclude": "Elegir si los cuerpos tapan la regla", + "ruler.occlude.on": "Los cuerpos tapan la regla (haz clic para tenerla siempre a la vista)", + "ruler.occlude.off": "Regla siempre a la vista (haz clic para que los cuerpos la tapen)", + "ruler.coordinate.x": "Posición en X respecto a la regla", + "ruler.coordinate.z": "Posición en Y respecto a la regla", + "ruler.coordinate.elevation": "Altura respecto a la regla", + "aria.workplane": "Plano de trabajo", + "aria.alignmentHandles": "Tiradores de alineación", + "aria.mirrorHandles": "Tiradores de reflejo", + "aria.colorPresets": "{name}: colores predefinidos", + "aria.useColor": "{name}: usar {color}", + "aria.colorHex": "{name}: valor hexadecimal", + "aria.resetColor": "{name}: restablecer", + "aria.colorValue": "{name} {color}", + "aria.setColor": "Aplicar el color {color}", + + "brand.home": "Página de inicio de layerling", + "brand.tagline": "CAD 3D fácil para impresión 3D", + + "editor.loading": "Cargando el editor", + + "dashboard.searchPlaceholder": "Buscar diseños", + "dashboard.searchLabel": "Buscar diseños", + "dashboard.createDesign": "Crear nuevo diseño 3D", + "dashboard.untitledDesign": "Diseño sin título {number}", + "dashboard.copyOf": "{name} (copia)", + "dashboard.copyOfNumbered": "{name} (copia {number})", + "notice.createdFromHistory": "Se ha creado «{name}» a partir de ese estado. Te espera en la página de inicio.", + "dashboard.projectOnGitHub": "Más sobre el proyecto en GitHub", + "dashboard.releaseNotes": "Notas de la versión v{version}", + "dashboard.footerHelp": "El pie de página", + "dashboard.forum": "Foro", + "dashboard.userGuide": "Guía de usuario", + "dashboard.sponsor": "Apoyar el proyecto", + "footer.trademark": "Tinkercad es una marca comercial de Autodesk, Inc. layerling es un proyecto independiente: no está afiliado a Autodesk ni cuenta con su respaldo o su patrocinio.", + "dashboard.updateAvailable": "Actualización disponible: {version}", + "newVersion.title": "Hay una versión nueva de layerling", + "newVersion.body": "Esta página se abrió con la versión {current} y el servidor ya tiene la {latest}. Recarga para cambiar de versión: tus diseños siguen en este navegador, y el que tienes abierto se guarda antes y vuelve tal como estaba.", + "newVersion.titleMismatch": "Parte de esta página es de otra versión", + "newVersion.bodyMismatch": "Un archivo que esta página cargó más tarde no encaja con el resto; suele pasar tras una actualización o con una copia guardada de una versión anterior. Recarga para arreglarlo: tus diseños siguen en este navegador, y el que tienes abierto se guarda antes y vuelve tal como estaba.", + "newVersion.reload": "Guardar y recargar", + "newVersion.later": "Más tarde", + "dashboard.updateLocalHint": "Usas layerling en este ordenador: el acceso directo «Start layerling» descarga la actualización la próxima vez que lo abras. Haz clic para ver los pasos.", + "dashboard.updateBannerText": "Hay una versión más reciente de layerling: {latest} (instalada: {current})", + "dashboard.updateBannerLink": "Notas de la versión y descarga", + "tabs.newerVersion": "En otra pestaña ya se ejecuta layerling {version}, pero esta sigue en la {current}. Recárgala o seguirá guardando con la versión antigua.", + "tabs.alreadyOpen": "layerling ya está abierto en otra pestaña. Lo mejor es seguir trabajando allí y cerrar esta.", + "tabs.closeRefused": "El navegador no deja que esta pestaña se cierre sola. Ciérrala con Ctrl+W o con la cruz de la pestaña.", + "tabs.closeThis": "Cerrar esta pestaña", + "tabs.keepHere": "Seguir trabajando aquí", + "tabs.sameProject": "Este diseño también está abierto en otra pestaña. Las dos guardan automáticamente y se sobrescriben entre sí: sigue trabajando solo en una de ellas.", + "tabs.reload": "Recargar", + "dashboard.updateDismiss": "Cerrar el aviso de actualización", + "dashboard.importGeometry": "Abrir un diseño o importar geometría", + "dashboard.continueWorkplane": "Seguir con el último diseño", + "dashboard.sharedProjects": "En el servidor", + "dashboard.projects": "Diseños", + "dashboard.newFolderTitle": "Crear una carpeta para los diseños de este navegador", + "dashboard.folderTrailLabel": "Ruta hasta esta carpeta", + "dashboard.parentFolderRoot": "Volver a todos los diseños", + "dashboard.folderEmpty": "Carpeta vacía", + "dashboard.folderDesignsOne": "Carpeta · 1 diseño", + "dashboard.folderDesignsMany": "Carpeta · {count} diseños", + "dashboard.folderDragHint": "Arrástrala sobre otra carpeta para meterla dentro", + "dashboard.dragHintServer": "Arrástralo sobre una carpeta, o sobre la carpeta del servidor, para mover allí este diseño", + "dashboard.folderEmptyTitle": "Todavía no hay nada en esta carpeta", + "dashboard.folderEmptyHint": "Arrastra diseños a la carpeta o elige Mover a… en el menú de un diseño. Los diseños nuevos que crees aquí van a esta carpeta.", + "dashboard.moveToRoot": "Diseños (sin carpeta)", + "dashboard.moveNoFolders": "Aún no hay ninguna carpeta. Crea una con Nueva carpeta.", + "dashboard.deleteFolderBodyRoot": "¿Eliminar la carpeta {name}? Lo que contiene pasa al nivel superior de tus diseños. No se elimina ningún diseño.", + "dashboard.deleteFolderBodyIn": "¿Eliminar la carpeta {name}? Lo que contiene pasa a la carpeta {parent}. No se elimina ningún diseño.", + "dashboard.projectsVisibleOne": "1 en este navegador", + "dashboard.projectsVisibleMany": "{count} en este navegador", + "dashboard.serverFolderCountOne": "1 diseño", + "dashboard.serverFolderCountMany": "{count} diseños", + "dashboard.sortLabel": "Ordenar diseños", + "dashboard.backupAll": "Hacer copia de seguridad", + "dashboard.newOnServer": "Diseños nuevos en el servidor", + "dashboard.newOnServerTitle": "Los diseños nuevos empiezan en la carpeta del servidor, así que se guardan allí desde el primer cambio. Los diseños de este navegador se quedan como están.", + "dashboard.newOnServerLockedTitle": "Lo fija el servidor: todos los diseños nuevos empiezan en la carpeta del servidor.", + "dashboard.sendAllToServer": "Pasar todos al servidor", + "dashboard.sendAllToServerTitle": "Pasa todos los diseños de este navegador a la carpeta del servidor. A partir de entonces, cada uno se guarda allí solo.", + "dashboard.backupAllTitle": "Guardar todos los diseños y las formas personalizadas en un solo archivo: «Abrir un diseño o importar geometría» los recupera todos, también en otro ordenador", + "dashboard.restoreBackup": "Restaurar copia de seguridad", + "dashboard.restoreBackupTitle": "Elegir un archivo hecho con «Hacer copia de seguridad»: vuelven todos sus diseños y formas personalizadas, y se omiten los diseños que ya están aquí", + "dashboard.backupFallbackName": "Diseño", + "dashboard.sortRecent": "Recientes", + "dashboard.sortName": "Nombre", + "dashboard.viewLabel": "Vista de los diseños", + "dashboard.viewGrid": "Vista en mosaico", + "dashboard.viewList": "Vista en lista", + "dashboard.emptyTitle": "Aún no hay diseños", + "dashboard.emptyHint": "Crea un diseño 3D y aparecerá aquí.", + "welcome.teaserTitle": "Te damos la bienvenida a layerling", + "welcome.teaserHint": "Una guía breve, sobre todo para quien viene de Tinkercad", + "welcome.lead": "layerling es CAD para impresión 3D en el propio navegador: tan fácil de usar como Tinkercad, pero un paso más cerca de Fusion 360. Gratis, sin cuenta y sin instalar nada; y lo que construyes se queda en este ordenador.", + "welcome.switchTitle": "¿Conoces Tinkercad?", + "welcome.switchBody": "Entonces te orientarás enseguida: arrastrar formas al plano de trabajo, agrupar orificios, alinear, reflejar, crear conjuntos, arrastrar con Alt para copiar… Los controles son los mismos a propósito; solo que aquí ya no chocas con los límites que allí te molestaban. Y en Ajustes → Apariencia, con un clic, la zona de trabajo también se ve como allí.", + "welcome.gapTitle": "Lo que layerling añade", + "welcome.gap1": "Achaflanar y redondear aristas, también con un redondeo cuyo radio cambia a lo largo de la arista, y deshacerlo o cambiarlo en cualquier momento, sobre geometría CAD exacta que llega intacta al archivo STEP.", + "welcome.gap2": "Vaciar cuerpos (con grosor de pared uniforme) y dividirlos con un plano, también inclinado.", + "welcome.gap3": "Bocetos con medidas exactas y esquinas redondeadas, que extruyes para crear cuerpos, revolucionas alrededor de un eje o barres a lo largo de una trayectoria.", + "welcome.gap4": "Roscas métricas, UNC/UNF y Whitworth: tornillos, tuercas, varillas roscadas y orificios roscados.", + "welcome.gap5": "Patrones en fila, en círculo o en espiral, y formas envueltas alrededor de un cilindro.", + "welcome.gap6": "Intercambio STEP con programas de CAD, además de STL, 3MF, OBJ y SVG; y también mediciones, vista de sección y un historial para volver a ver estados anteriores.", + "welcome.gap7": "Perfiles de unas 220 impresoras, con aviso cuando algo se sale de la cama, voladizos marcados y estimación del filamento.", + "welcome.gap8": "Si quieres, una IA puede construir contigo a través de la interfaz MCP, con una copia de layerling que ejecutes en tu propio equipo.", + "welcome.localTitle": "Instalarlo como aplicación o alojarlo por tu cuenta", + "welcome.localBody": "Instalado como aplicación, layerling se abre como un programa normal, con su propio icono y su propia ventana, incluso sin internet; basta un clic en Chrome o Edge. Si prefieres alojarlo por tu cuenta para que nada salga de casa, en Windows basta una línea en PowerShell, que además crea un acceso directo en el escritorio. Para un NAS o un servidor doméstico hay una imagen de Docker lista para amd64 y arm64; en ese caso los diseños también pueden guardarse en el servidor, de modo que todos los dispositivos de casa ven los mismos. Los pasos están en el capítulo de la guía sobre la instalación y el alojamiento propio.", + "welcome.step1Title": "Empezar un diseño", + "welcome.step1Body": "«Crear nuevo diseño 3D» abre un plano de trabajo vacío. Un archivo que ya tengas se abre con el mosaico de al lado.", + "welcome.step2Title": "Colocar formas", + "welcome.step2Body": "Arrastra una caja, un cilindro, un texto o cualquier otra forma de la biblioteca de formas (Formas, arriba a la izquierda en la cinta) hasta el plano de trabajo, y ajusta el tamaño y la posición. Las medidas admiten también porcentajes: 50 % las reduce a la mitad. «Transparente» te deja ver a través de un cuerpo.", + "welcome.step3Title": "Agrupar los orificios", + "welcome.step3Body": "Cada forma es un sólido o un orificio. Al agrupar, el orificio quita material: así se hacen taladros, ranuras y huecos. La lista de objetos (Ctrl+Mayús+O) muestra todas las piezas, también las agrupadas, y si cada una es sólido u orificio; su buscador encuentra también las piezas que están dentro de grupos. «Editar grupo» (E o doble clic) te deja cambiar piezas sueltas de un grupo, y «Listo» lo vuelve a calcular.", + "welcome.step4Title": "Suavizar las aristas y exportar", + "welcome.step4Body": "El chaflán y el redondeo actúan sobre las aristas en las que haces clic. Cuando termines, envía el diseño al laminador como STL o 3MF, o a un programa de CAD como STEP.", + "welcome.moreTitle": "Qué más hace layerling", + "welcome.moreHollowTitle": "Vaciar", + "welcome.moreHollowBody": "cuerpos con una pared uniforme, abiertos por los lados que elijas (arriba, abajo, delante, detrás, izquierda, derecha, también combinados) o cerrados del todo, con las aristas interiores redondeadas o vivas.", + "welcome.moreDeleteFaceTitle": "Eliminar cara", + "welcome.moreDeleteFaceBody": "haz clic en las caras de un redondeo, un orificio o un saliente y elimínalas: las caras de alrededor crecen hasta cerrar el hueco, y el cuerpo sigue siendo exacto para más redondeos y para la exportación a STEP.", + "welcome.moreSplitTitle": "Dividir", + "welcome.moreSplitBody": "corta un cuerpo o un orificio en dos con un plano que puedes mover e inclinar para hacer un corte en ángulo; muy práctico para piezas que no caben en la cama.", + "welcome.moreSketchTitle": "Bocetos", + "welcome.moreSketchBody": "dibuja contornos, traza un arco de verdad por tres puntos, curva cualquier lado recto (un doble clic en el cuerpo vuelve a abrir su boceto), escribe la longitud y el ángulo de una línea mientras la dibujas («50<30») o ajústala en pasos de 15°, da a las líneas una longitud exacta y a las esquinas un ángulo exacto, redondea o achaflana esquinas, refleja una selección respecto a un eje o una línea, traza líneas de construcción a las que se ajustan los puntos, y extruye los contornos o revoluciónalos alrededor de un eje; o crea solo la línea con una anchura, como marco o como franja.", + "welcome.moreLibraryTitle": "Biblioteca de formas", + "welcome.moreLibraryBody": "roscas (métricas, UNC/UNF y roscas de tubo G), tornillos y tuercas, engranajes, coronas dentadas y cremalleras con dientes de evolvente o redondos que engranan entre sí, muelles, tubos curvados, recubrimientos de un contorno a otro, también torcidos o inclinados, cápsulas con un extremo más estrecho, texto (con espaciado entre letras ajustable, que también se puede curvar a lo largo de un arco, con tus propias fuentes, incluso en árabe y hebreo de derecha a izquierda, como contorno, como silueta o por capas como placa con nombre para impresión multicolor, y con orificio para llavero (en un lado o donde tú lo pongas) y aristas redondeadas en las letras si quieres; también un icono SVG como placa con icono por capas), códigos QR a partir de un texto o una dirección web (solos, en relieve sobre una placa o grabados), bisagras que se imprimen ya montadas, cajas Gridfinity (con compartimentos si quieres) y sus placas base, moleteados para empuñaduras (rectos, cruzados o redondos), uniones de cola de milano, orificios en lágrima para taladros horizontales, escariados, avellanados y dobles avellanados para cabezas de tornillo, y más; todo se puede ajustar después. Los cuerpos que necesitas una y otra vez se guardan como formas personalizadas, en el navegador o en tu propio servidor, y entran en cualquier diseño con un clic.", + "welcome.morePatternTitle": "Patrones", + "welcome.morePatternBody": "repite una forma n veces en fila o en círculo, para rejillas de orificios o coronas dentadas; y escala varias piezas a la vez en un porcentaje.", + "welcome.moreBundleTitle": "Crear conjunto", + "welcome.moreBundleBody": "mantén varias piezas juntas con Ctrl+B, como en Tinkercad, sin fusionarlas: los colores se conservan y cada pieza es un cuerpo propio al exportar, muy práctico para impresiones multicolor. También un grupo muestra cada pieza en su color con el interruptor Multicolor, incluso después de fusionarlo con orificios.", + "welcome.moreWorkplaneTitle": "Plano de trabajo en cualquier cara", + "welcome.moreWorkplaneBody": "coloca formas directamente sobre caras inclinadas o laterales, y oculta el plano para ver mejor sin quitarlo.", + "welcome.morePlaceTitle": "Colocar con un clic", + "welcome.morePlaceBody": "una forma nueva sigue al puntero y se coloca donde haces clic; se puede desactivar en los ajustes.", + "welcome.moreSnapTitle": "Ajuste a otras formas", + "welcome.moreWindowsTitle": "Una vista despejada", + "welcome.moreWindowsBody": "la lista de objetos, los ajustes y los paneles de herramientas se pueden arrastrar a cualquier parte de la zona de trabajo; arrastrar el cubo de vista gira la vista, un clic en sus esquinas y aristas muestra el modelo en ángulo, y la placa se puede ocultar para mirar desde abajo. Un clic derecho en un cuerpo muestra los comandos más usados, y la vista se puede guardar como imagen.", + "welcome.moreSnapBody": "al mover, las aristas y los centros se ajustan a las formas vecinas y una línea guía muestra dónde; pulsar Alt durante el arrastre lo pausa. Mayús mantiene el movimiento en un solo eje, y Alt pulsado desde el principio arrastra una copia, como en Tinkercad. Las formas nuevas se apoyan en la cara que queda bajo el puntero, también en las inclinadas, y C posa la selección de la misma manera sobre otra cara, como Cruise en Tinkercad.", + "welcome.moreGridTitle": "Cuadrículas de ajuste propias", + "welcome.moreGridBody": "añade en los ajustes una medida como el paso de 2,54 mm de los pines de los chips y las placas perforadas; el menú de ajuste la ofrece entera, a la mitad y a un cuarto.", + "welcome.moreLayFlatTitle": "Apoyar sobre una cara", + "welcome.moreLayFlatBody": "haz clic en una cara y la pieza se apoya en la placa con ese lado hacia abajo: la mejor orientación de impresión con un solo clic. «Alinear caras» hace lo mismo entre dos piezas: haz clic en una cara de una y luego en una cara de la otra, y se tocan o quedan a ras, con una separación opcional.", + "welcome.morePivotTitle": "Punto de giro", + "welcome.morePivotBody": "gira alrededor del eje del extremo de un tubo o del centro de una cara en lugar del centro del cuerpo. Si es un solo cuerpo, el punto de giro se queda con él.", + "welcome.moreMeasureTitle": "Medir", + "welcome.moreMeasureBody": "cinta métrica, regla y escuadra, distancias al origen (también para varios cuerpos seleccionados), notas directamente sobre el plano de trabajo y una vista de sección que corta el modelo para ver su interior, mide en el corte grosores de pared y huecos, y lo guarda como SVG para una cortadora láser o una plantilla.", + "welcome.moreSaveTitle": "Guardar en tu carpeta", + "welcome.moreSaveBody": "en Chrome y Edge eliges tú la carpeta y el nombre, y Ctrl+S vuelve a guardar el diseño en ese archivo; un archivo que hayas abierto se sobrescribe en su sitio. Otros navegadores lo descargan.", + "welcome.moreBackupTitle": "Copia de seguridad de todos los diseños", + "welcome.moreBackupBody": "un clic mete todos los diseños en un solo archivo; al abrirlo vuelven todos, en este navegador o en otro.", + "welcome.morePrintersTitle": "Listo para imprimir", + "welcome.morePrintersBody": "unas 220 impresoras con su cama; layerling avisa cuando algo se sale de la cama o es demasiado alto, marca los voladizos que necesitarían soportes y estima el peso y el filamento al exportar.", + "welcome.moreImportTitle": "Importar", + "welcome.moreImportBody": "STL, OBJ y 3MF con sus colores, STEP y SVG, además de imágenes como referencia; y piezas de otros diseños de layerling directamente en el que tienes abierto. Un SVG entra como boceto: como relleno, como trazo por fuera o por dentro, o como silueta sin sus huecos, por ejemplo para un cortador de galletas; y si lo cambias a boceto de revolución, se convierte en un cuerpo redondo, como un jarrón. Un patrón o un rótulo en SVG se puede envolver alrededor de un cilindro, en relieve o grabado.", + "installHint.title": "Instalar layerling como aplicación", + "installHint.body": "Como aplicación, layerling arranca más rápido, funciona sin internet, tiene su propio icono y su propia ventana, y no hay que volver a cargarlo cada vez. No pierdes nada: tus diseños se quedan como están y layerling te sigue avisando cuando sale una versión nueva.", + "installHint.install": "Instalar ahora", + "installHint.dismiss": "Ocultar este aviso", + "installHint.later": "Ahora no", + "tabletHint.title": "¿Usas una tableta?", + "tabletHint.body": "La guía tiene un capítulo para el uso con los dedos o con lápiz: cómo seleccionar varios cuerpos, girar la vista, el menú de pulsación larga y lo que conviene saber en un iPad.", + "tabletHint.open": "Abrir el capítulo", + "tabletHint.dismiss": "Ocultar este aviso", + "storageNotice.title": "Tus diseños viven en este navegador: haz copias de seguridad", + "storageNotice.body": "layerling no se hace responsable de los diseños guardados en el navegador. Un navegador puede fallar, o una actualización suya puede dar problemas. Por eso, guarda tus diseños de vez en cuando: «Hacer copia de seguridad» mete todos los diseños en un archivo, y un diseño abierto se puede guardar como archivo con Exportar (LYL).", + "supportNudge.title": "¿Te gusta layerling?", + "supportNudge.body": "layerling es gratuito y no tiene anuncios. Si te resulta útil, puedes ayudar a pagar el servidor y el desarrollo futuro.", + "supportNudge.more": "Apoyar el proyecto", + "supportNudge.dismiss": "Cerrar este aviso", + "update.previewShow": "Vista previa: ¿qué trae la actualización?", + "update.previewHide": "Ocultar la vista previa", + "update.previewLoading": "Cargando la vista previa…", + "update.previewNone": "Para esta versión no hay vista previa. Las notas de la versión están en el enlace.", + "whatsNew.title": "Novedades desde tu última visita ({from} → {to})", + "whatsNew.titleRecent": "Lo último que se ha añadido", + "whatsNew.version": "Versión {version}", + "whatsNew.earlier": "Mostrar versiones anteriores ({count})", + "whatsNew.beforeLastVisit": "Antes de tu última visita", + "whatsNew.earlierHeading": "Versiones anteriores", + "whatsNew.dismiss": "Entendido", + "whatsNew.close": "Cerrar este aviso", + "whatsNew.footerLink": "Novedades", + "whatsNew.excerpt": "Esto es solo un extracto. Una versión puede traer más cambios pequeños y correcciones de errores.", + "whatsNew.releaseNotes": "Todos los cambios están en las notas de la versión, en GitHub.", + "palette.open": "Buscar comandos (Ctrl+K)", + "palette.title": "Búsqueda de comandos", + "palette.placeholder": "Busca una herramienta, una forma o un comando…", + "palette.close": "Cerrar la búsqueda de comandos", + "palette.empty": "No se ha encontrado nada. Prueba con otra palabra, por ejemplo «Redondeo», «Reflejar» o «Cilindro».", + "palette.disabled": "No disponible ahora mismo; a menudo es porque no hay nada seleccionado.", + "palette.hint": "↑ ↓ elegir · Intro ejecutar · Esc cerrar", + "palette.addShape": "Añadir forma: {shape}", + "palette.group.mode": "Modo", + "palette.group.objects": "Objetos", + "palette.selectObject": "Seleccionar cuerpo: {name}", + "palette.recent": "Usados recientemente", + "palette.all": "Todos los comandos", + "palette.switchGeometry": "Cambiar al Editor 3D", + "palette.switchSketch": "Cambiar al modo Boceto", + "shortcuts.group.help": "Ayuda", + "shortcuts.commandSearch": "Abrir la búsqueda de comandos", + "interactiveHelp.title": "Ayuda interactiva", + "interactiveHelp.subtitle": "Haz clic en cualquier elemento para leer su explicación", + "interactiveHelp.named": "«{name}»", + "interactiveHelp.close": "Cerrar la ventana de ayuda", + "interactiveHelp.nothing": "Aquí no hay nada que explicar. Señala un botón, un campo, un tirador o una ventana.", + "interactiveHelp.loading": "Buscándolo en la guía…", + "interactiveHelp.noIndex": "La guía todavía no está disponible aquí. Ábrela desde la página de inicio.", + "interactiveHelp.panelOnly": "Esta parte no tiene nombre propio. El signo de interrogación de su ventana abre la sección de la guía que trata de ella.", + "interactiveHelp.sectionOnly": "La guía tiene una sección sobre esta parte.", + "interactiveHelp.noMatch": "La guía todavía no dice nada sobre «{name}». Prueba con su buscador.", + "interactiveHelp.also": "También en la guía", + "interactiveHelp.search": "Buscar en la guía", + "interactiveHelp.open": "Abrir en la guía", + "interactiveHelp.started": "La ayuda interactiva está activada: haz clic en un botón, un campo o una ventana para leer su explicación. Esc la cierra.", + "interactiveHelp.ended": "La ayuda interactiva está desactivada", + "shortcuts.interactiveHelp": "Activar o desactivar la ayuda interactiva", + "installHint.chromium": "Instálalo con el icono de la derecha de la barra de direcciones o desde el menú del navegador, con «Instalar como aplicación».", + "installHint.safariMac": "En Safari: menú Archivo → «Añadir al Dock».", + "installHint.ios": "En Safari: icono Compartir → «Añadir a pantalla de inicio».", + "installHint.firefox": "Firefox no puede instalar aplicaciones, pero layerling arranca igualmente sin conexión aquí, en la pestaña.", + "welcome.moreOfflineTitle": "Funciona sin conexión", + "welcome.moreOfflineBody": "tras la primera visita, layerling arranca también sin internet; instálalo como un programa normal y tus diseños se quedan en tu ordenador.", + "welcome.moreAiTitle": "Construir con IA", + "welcome.moreAiBody": "a través de la interfaz MCP, un asistente de IA puede crear y editar formas en un editor que abre él mismo. Para ello hace falta una copia que ejecutes en tu propio equipo (npm run dev o la imagen de Docker); en layerling.com la conexión con la IA está desactivada.", + "welcome.morePointsTitle": "Puntos de referencia", + "welcome.moreSearchTitle": "Búsqueda de comandos", + "welcome.moreSimplifyTitle": "Simplificar mallas", + "welcome.moreSimplifyBody": "una malla importada con muchísimos triángulos se reduce a una fracción, con una vista de antes y después y un control deslizante, para que cortar, agrupar y arrastrar sigan yendo con fluidez.", + "welcome.moreHistoryTitle": "Historial", + "welcome.moreLookTitle": "A tu gusto", + "welcome.moreLookBody": "el fondo y el plano de trabajo, las flechas de los ejes X, Y y Z, las líneas de arista en todos los cuerpos, los colores del boceto, y el contraste, las sombras y la dirección de la luz los eliges tú en los ajustes; por ejemplo, para que los cuerpos oscuros no se confundan unos con otros. En ordenadores más lentos, el modo rápido desactiva de golpe todo lo que consume muchos recursos.", + "welcome.moreHistoryBody": "vuelve a ver cualquier estado anterior del diseño con un control deslizante, sin cambiar nada; exporta ese estado, empieza un diseño nuevo a partir de él o recupera de él objetos sueltos.", + "welcome.moreDrawingTitle": "Plano para el taller", + "welcome.moreDrawingBody": "Exportar → Plano: vistas de alzado, planta y perfil a escala 1:1 en una hoja ISO, con las cotas generales, las aristas ocultas y una tabla de los taladros redondos, en PDF o SVG, para imprimirlo o llevarlo al torno y a la fresadora.", + "welcome.moreSearchBody": "pulsa Ctrl+K y escribe el nombre de una herramienta, una forma o un comando para ir directamente a él (también en inglés o en alemán), con el atajo de teclado al lado de cada uno. También encuentra por su nombre los cuerpos de tu diseño.", + "welcome.morePointsBody": "haz clic derecho en un cuerpo para marcar su centro, sus esquinas o los puntos medios de sus aristas con puntos que no se imprimen y a los que se ajustan las formas; así puedes colocar un orificio justo en el centro de otra pieza.", + "welcome.videosTitle": "Vídeos sobre layerling", + "welcome.videosHint": "Los han hecho otras personas, no este proyecto. Los enlaces abren YouTube en una pestaña nueva; no se carga nada de allí hasta que haces clic.", + "welcome.help": "En el editor, el grupo Ayuda tiene una guía rápida y la lista de todos los atajos de teclado. En el pie de página, «Informe de error» guarda tu diseño con todo lo necesario para informar del problema en el foro o en GitHub.", + "welcome.guideLink": "Leer la guía de usuario completa, con imágenes", + "welcome.guideUrl": "/guia-es/index.html", + "guide.helpLink": "Más sobre esto en la guía de usuario", + "guide.fullGuide": "Abrir la guía de usuario completa, con imágenes", + "guide.videos": "Vídeos de otras personas:", + "dashboard.projectOptions": "Opciones del diseño", + "dashboard.projectOptionsFor": "Opciones del diseño {name}", + "dashboard.optionsFor": "Opciones de {name}", + "shared.optionsFor": "Opciones del diseño del servidor {name}", + "shared.menuFor": "Opciones del diseño del servidor {name}", + "dashboard.noSnapshot": "Aún sin miniatura", + "dashboard.shapeCount": "{count} formas", + "dashboard.today": "Hoy", + "dashboard.justNow": "Ahora mismo", + "dashboard.minutesAgo": "Hace {count} min", + + "shared.title": "Diseños en el servidor", + "shared.refresh": "Actualizar", + "shared.backToLocal": "Volver a los diseños de este navegador", + "shared.trailLabel": "Ruta dentro de la carpeta del servidor", + "shared.trailRoot": "Servidor", + "shared.newFolder": "Nueva carpeta", + "shared.newDesign": "Nuevo diseño", + "shared.newFolderTitle": "Nueva carpeta", + "shared.newFolderCancel": "Descartar la nueva carpeta", + "shared.newFolderSuggestion": "Nueva carpeta", + "shared.folderName": "Nombre de la carpeta", + "shared.createFolder": "Crear", + "shared.renameFolderTitle": "Cambiar el nombre de la carpeta", + "shared.renameFolderCancel": "Cancelar el cambio de nombre", + "shared.deleteFolderTitle": "Eliminar carpeta", + "shared.deleteFolderCancel": "Cancelar la eliminación", + "shared.folderOptions": "Opciones de la carpeta", + "shared.folderOptionsFor": "Opciones de la carpeta {name}", + "shared.folderMenuFor": "Opciones de la carpeta {name}", + "shared.moveTo": "Mover a…", + "shared.searchCountOne": "1 resultado para {query}", + "shared.searchCountMany": "{count} resultados para {query}", + "shared.searchHitsOne": "1 resultado en el servidor", + "shared.searchHitsMany": "{count} resultados en el servidor", + "shared.searchTruncated": "Solo se muestran los primeros.", + "shared.searchClear": "Volver a la carpeta", + "shared.searchEmptyTitle": "No se ha encontrado nada", + "shared.searchEmptyHint": "Ningún diseño ni ninguna carpeta del servidor lleva eso en su nombre.", + "shared.searchFolderIn": "Carpeta dentro de {name}", + "shared.searchFolderRoot": "Carpeta en el nivel superior de la carpeta del servidor", + "shared.openFolderOf": "Abrir la carpeta {name}", + "shared.moveToTitle": "Mover {name}", + "shared.moveToCancel": "Cancelar el traslado", + "shared.moveNoTargets": "Aquí no hay ninguna carpeta a la que mover el diseño. Crea una primero.", + "shared.folderNameBadStart": "Un nombre que empieza por un punto queda oculto en el servidor.", + "shared.folderNameBadChars": "No se admiten barras, comillas ni < > : | ? *", + "shared.folderNameTaken": "Aquí ya hay una carpeta con ese nombre.", + "shared.folderMeta": "Carpeta", + "shared.parentFolderRoot": "Volver al servidor", + "shared.parentFolderIn": "Volver a {name}", + "shared.dragHint": "Arrástralo sobre una carpeta para mover allí este diseño", + "shared.options": "Opciones del diseño del servidor", + "shared.emptyHint": "Guarda un diseño de layerling (.lyl) en el servidor desde la ventana Exportar.", + "shared.emptyTitle": "Aquí todavía no hay nada", + "shared.loadingTitle": "Cargando los diseños del servidor", + + "confirm.deleteProjectTitle": "¿Eliminar el diseño?", + "confirm.deleteProjectCancel": "Cancelar la eliminación del diseño", + "confirm.deleteSharedTitle": "¿Eliminar el diseño del servidor?", + "confirm.deleteSharedCancel": "Cancelar la eliminación del diseño del servidor", + "confirm.renameTitle": "Cambiar el nombre del diseño", + "confirm.renameCancel": "Cancelar el cambio de nombre del diseño", + "confirm.projectName": "Nombre del diseño", + "confirm.deleteProjectBody": "¿Seguro que quieres eliminar el diseño {name}?", + "confirm.deleteSharedBody": "¿Eliminar {name} del servidor? Desaparecerá para todas las personas que usan este servidor, y también su copia de trabajo en este navegador.", + "confirm.deleteFolderBody": "La carpeta {name} se eliminará del servidor.", + "confirm.deleteFolderProjectOne": "El diseño que contiene también se eliminará.", + "confirm.deleteFolderProjectMany": "Los {count} diseños que contiene también se eliminarán.", + "confirm.deleteFolderSubfolders": "Y también las subcarpetas, con todo lo que contienen.", + "confirm.clearTapeTitle": "¿Eliminar todas las mediciones?", + "confirm.clearTapeCancel": "Cancelar la eliminación de las mediciones", + "confirm.clearTapeBody": "Se eliminarán todas las mediciones de la cinta métrica de este diseño. Esto no se puede deshacer.", + "confirm.emptyProjectTitle": "¿Conservar el diseño vacío?", + "confirm.emptyProjectBody": "{name} está vacío. ¿Quieres conservarlo?", + "confirm.yes": "Sí", + "confirm.no": "No", + "confirm.cancel": "Cancelar", + "confirm.delete": "Eliminar", + "sketch.revolvePreview": "Vista previa 3D de la revolución", + "sketch.revolvePreviewTitle": "Vista previa 3D", + "sketch.revolvePreviewEmpty": "Dibuja un perfil cerrado a la izquierda del eje", + "sketch.revolveAxis": "EJE DE REVOLUCIÓN", + "sketch.shapeMoved": "Forma del boceto movida", + "sketch.shapeResized": "Forma del boceto redimensionada", + "sketch.shapeRotated": "Selección girada", + "sketch.rotateSelection": "Girar la selección (Mayús: en pasos de 15°)", + "sketch.imageMoved": "Imagen del boceto movida", + "sketch.imageResized": "Imagen del boceto redimensionada", + "sketch.viewControls": "Controles de la vista del boceto", + "sketch.resetView": "Restablecer la vista del boceto", + "sketch.zoomIn": "Acercar", + "sketch.showMeasurements": "Mostrar medidas", + "sketch.showPartEdges": "Mostrar las piezas por transparencia: todas sus aristas sobre el plano del boceto", + "sketch.zoomOut": "Alejar", + "sketch.removeMeasurement": "Quitar la medida", + "sketch.pointActions": "Acciones del punto", + "sketch.makeCorner": "Convertir en esquina", + "sketch.corner": "Esquina", + "sketch.segmentActions": "Acciones de la línea", + "sketch.curveLine": "Curvar línea", + "sketch.curveLineHint": "Convierte este lado recto en una curva; arrastra sus dos tiradores para darle forma", + "sketch.straightenLine": "Línea recta", + "sketch.straightenLineHint": "Vuelve a hacer recto este lado curvo", + "sketch.mirror": "Reflejar", + "sketch.mirrorHint": "Copia la selección al otro lado de un eje", + "sketch.mirrorLeftRight": "Izquierda-derecha", + "sketch.mirrorLeftRightHint": "Reflejar respecto al eje vertical que pasa por el centro de la cuadrícula: la copia queda al otro lado, a la izquierda o a la derecha", + "sketch.mirrorTopBottom": "Arriba-abajo", + "sketch.mirrorTopBottomHint": "Reflejar respecto al eje horizontal que pasa por el centro de la cuadrícula: la copia queda encima o debajo", + "sketch.mirrorAcrossLine": "Respecto a una línea", + "sketch.mirrorAcrossLineHint": "Reflejar respecto a una línea recta del boceto: a continuación, haz clic en la línea", + "sketch.mirrorPickLine": "Haz clic en la línea recta que hará de eje de reflejo", + "status.sketchMirrored": "Copia reflejada añadida", + "status.sketchMirrorNoAxis": "Elige como eje una línea recta, no una curva", + "status.sketchMirrorNothing": "Primero selecciona los puntos o las líneas que quieres reflejar", + "sketch.makeSmooth": "Suavizar", + "sketch.splitHandles": "Separar los tiradores", + "sketch.split": "Separado", + "sketch.fillet": "Redondear", + "sketch.filletCorner": "Redondear esquina", + "sketch.filletCornerDisabled": "Selecciona un punto de esquina para redondearlo", + "sketch.filletRadius": "Radio", + "sketch.filletAppliedMany": "{count} esquinas redondeadas", + "sketch.chamferAppliedMany": "{count} esquinas achaflanadas", + "sketch.cornersSkipped": "({count} no eran una esquina entre dos líneas rectas)", + "sketch.filletCorners": "Redondear las {count} esquinas seleccionadas", + "sketch.chamferCorners": "Achaflanar las {count} esquinas seleccionadas", + "sketch.filletApplied": "Esquina redondeada", + "sketch.chamfer": "Achaflanar", + "sketch.chamferCorner": "Achaflanar esquina", + "sketch.chamferCornerDisabled": "Selecciona un punto de esquina para achaflanarlo", + "sketch.chamferDistance": "Distancia", + "sketch.chamferApplied": "Esquina achaflanada", + "sketch.apply": "Aplicar", + "sketch.imageWidthUpdated": "Anchura de la imagen del boceto actualizada", + "sketch.imageHeightUpdated": "Altura de la imagen del boceto actualizada", + "sketch.imageOpacityUpdated": "Opacidad de la imagen del boceto actualizada", + "sketch.imageAspectUpdated": "Ajuste de la relación de aspecto de la imagen actualizado", + "sketch.closeImageSettings": "Cerrar los ajustes de la imagen", + "sketch.lockImage": "Bloquear la imagen del boceto", + "sketch.keepProportions": "Mantener proporciones", + "sketch.keepProportionsHint": "Los tiradores del marco y las medidas que escribas estiran por igual en los dos sentidos", + "sketch.lockOutline": "Bloquear", + "sketch.unlockOutline": "Desbloquear", + "sketch.lockOutlineHint": "Bloquear el contorno (L): ya no se puede mover, redimensionar ni modificar", + "sketch.unlockOutlineHint": "Desbloquear el contorno (L)", + "status.sketchOutlineLocked": "Contorno bloqueado: desbloquéalo primero (L)", + "status.selectSketchOutlineLock": "Selecciona un contorno para bloquearlo", + "status.sketchOutlineLockedOn": "Contorno bloqueado", + "status.sketchOutlineUnlocked": "Contorno desbloqueado", + "sketch.unlockImage": "Desbloquear la imagen del boceto", + "sketch.lockImageHint": "Bloquear la imagen (L)", + "sketch.unlockImageHint": "Desbloquear la imagen (L). Una imagen bloqueada deja pasar los clics; con Alt+clic vuelves a seleccionarla.", + "sketch.imageLocked": "Imagen del boceto bloqueada", + "sketch.imageUnlocked": "Imagen del boceto desbloqueada", + "sketch.deleteImage": "Eliminar la imagen del boceto", + "sketch.deleteImageHint": "Eliminar la imagen", + "sketch.unlockBeforeDelete": "Desbloquea la imagen antes de eliminarla", + "sketch.aspectLocked": "Relación de aspecto bloqueada", + "sketch.aspectUnlocked": "Relación de aspecto libre", + "sketch.imageSettings": "Ajustes de la imagen {name}", + "sketch.imageProperties": "Propiedades", + "sketch.imageWidth": "Anchura", + "sketch.imageHeight": "Altura", + "sketch.imageOpacity": "Opacidad", + "sketch.imagePositionX": "Posición X", + "sketch.imagePositionY": "Posición Y", + "sketch.imageAlign": "Alinear", + "sketch.imageRotation": "Rotación", + "sketch.imageRotated": "Imagen de referencia girada", + "sketch.centreImageX": "A X = 0", + "sketch.centreImageY": "A Y = 0", + "sketch.centreImageAxisHint": "En una revolución, X = 0 es el eje.", + "sketch.imageCentred": "Imagen de referencia centrada", + "sketch.calibrateImage": "Calibrar", + "sketch.calibrateCancel": "Cancelar la calibración", + "sketch.calibrateFirst": "Haz clic en la imagen en el primer punto de una distancia conocida.", + "sketch.calibrateSecond": "Haz clic en el segundo punto.", + "sketch.calibrateLength": "Distancia real", + "sketch.calibrateApply": "Aplicar", + "sketch.imageCalibrated": "Imagen de referencia calibrada", + "sketch.cropImage": "Recortar", + "sketch.cropImageDone": "Terminar el recorte", + "sketch.cropImageHint": "Arrastra los tiradores hacia dentro: la imagen no se deforma, solo se deja fuera el borde. Hacia fuera, el borde vuelve a aparecer.", + "sketch.uncropImage": "Mostrar la imagen entera", + "sketch.imageCropped": "Imagen de referencia recortada", + "sketch.imageUncropped": "Recorte quitado", + "workspace.gridColor": "Color de la cuadrícula", + "workspace.backgroundColor": "Fondo de la ventana (tema claro)", + "workspace.surfaceColor": "Plano de trabajo bajo la cuadrícula (tema claro)", + "workspace.showAxes": "Flechas de los ejes", + "workspace.showPlateLabels": "Rótulos en la placa", + "workspace.gridLinesGrow": "Líneas de cuadrícula que crecen con el zoom", + "workspace.gridLinesGrowHint": "Las líneas de la cuadrícula también se dibujan sobre la placa como bandas que se engrosan al acercar la vista, como en Tinkercad. Si se desactiva, mantienen un píxel de anchura con cualquier zoom, como en el boceto.", + "workspace.showPlateLabelsHint": "Escribe en la placa el nombre del diseño y, si has elegido una impresora, su nombre y su volumen de impresión.", + "workspace.showAxesHint": "Muestra flechas para X (roja, hacia la derecha), Y (verde, hacia el fondo) y Z (azul, hacia arriba) en la esquina delantera izquierda de la placa, en el sentido en que crecen los números.", + "workspace.edgeLines": "Líneas de arista en todos los cuerpos", + "workspace.edgeLinesHint": "Dibuja un contorno en cada cuerpo para que los colores oscuros no se confundan unos con otros. Las mallas importadas muy grandes se quedan fuera.", + "workspace.strongHoles": "Resaltar los orificios", + "workspace.strongHolesHint": "Dibuja los orificios más oscuros y menos transparentes, con una línea oscura alrededor, para que destaquen entre los cuerpos transparentes.", + "workspace.edgeColor": "Color de las líneas de arista", + "workspace.sketchBackground": "Boceto: fondo de la ventana (tema claro)", + "workspace.sketchPlateColor": "Boceto: zona bajo la cuadrícula (tema claro)", + "workspace.sketchGridColor": "Boceto: color de la cuadrícula (tema claro)", + "workspace.sketchMatch": "Boceto igual que la zona de trabajo", + "workspace.sketchMatchHint": "Usa en el boceto el fondo de la ventana, la zona bajo la cuadrícula y el color de la cuadrícula de la zona de trabajo.", + "workspace.shadowStrength": "Intensidad de las sombras", + "workspace.shadowSoftness": "Suavidad de las sombras", + "workspace.shadowCrisp": "nítidas", + "workspace.shadowSoft": "suaves", + "workspace.lightAzimuth": "Dirección de la luz", + "workspace.lightFromLeft": "desde la izquierda", + "workspace.lightFromFront": "desde delante", + "workspace.lightFromRight": "desde la derecha", + "workspace.lightElevation": "Altura de la luz", + "workspace.lightLow": "baja", + "workspace.lightAbove": "desde arriba", + "workspace.classicLook": "Aspecto clásico", + "workspace.classicLookHint": "Fondo blanco, cuadrícula azul claro con una línea más oscura cada centímetro, líneas de arista negras y luz desde arriba con sombras suaves. Todo se puede ajustar después.", + "workspace.gridMajorEvery": "Línea más oscura cada", + "workspace.gridMajorSteps": "{count} pasos de cuadrícula", + "workspace.gridMajorColor": "Color de la línea más oscura", + "workspace.lightReset": "Restablecer luz y sombras", + "workspace.shadeContrast": "Contraste del sombreado", + "workspace.shadeSoft": "suave", + "workspace.shadePunchy": "intenso", + + + "editor.group.home": "Inicio", + "editor.group.clipboard": "Portapapeles", + "editor.group.history": "Historial", + "editor.group.shapes": "Formas", + "editor.group.visibility": "Visibilidad", + "editor.group.combine": "Combinar", + "editor.group.modify": "Modificar", + "editor.group.arrange": "Organizar", + "editor.group.manage": "Gestionar", + "editor.tool.note": "Nota", + "editor.tool.copy": "Copiar", + "editor.tool.paste": "Pegar", + "editor.tool.duplicate": "Duplicar", + "editor.tool.delete": "Eliminar", + "editor.tool.undo": "Deshacer", + "editor.tool.redo": "Rehacer", + "editor.tool.history": "Historial", + "editor.tool.hideSelected": "Ocultar selección", + "editor.tool.showSelected": "Mostrar selección", + "editor.tool.showOutliner": "Mostrar lista de objetos", + "editor.tool.hideOutliner": "Ocultar lista de objetos", + "editor.tool.group": "Agrupar", + "editor.tool.ungroup": "Desagrupar", + "editor.tool.bundle": "Crear conjunto", + "editor.tool.intersect": "Intersección booleana", + "editor.tool.intersectPreview": "Mostrar la parte común", + "status.intersectPreviewOn": "Se muestra lo que comparten las formas seleccionadas. Mueve una forma para ver cómo cambia; {tool} lo aplica y Esc cierra la vista previa.", + "status.intersectPreviewOff": "La vista previa se ha cerrado: quedan menos de dos formas que puedan compartir algo", + "status.intersectPreviewEmpty": "Ahora mismo estas formas no comparten nada", + "status.intersectPreviewTooBig": "Demasiados triángulos para la vista previa de la parte común", + "status.intersectionEmptyKept": "Las formas no comparten nada, así que no hay intersección. No se ha cambiado nada.", + "editor.tool.align": "Alinear", + "editor.tool.mirror": "Reflejar", + "editor.tool.rotationPivot": "Fijar el punto de giro", + "editor.tool.array": "Patrón", + "editor.tool.split": "Dividir", + "editor.tool.snapToGrid": "Ajustar a la cuadrícula", + "editor.tool.chamfer": "Chaflán", + "editor.tool.fillet": "Redondeo", + "editor.tool.hollow": "Vaciar", + "editor.tool.deleteFace": "Eliminar cara", + "editor.tool.simplify": "Simplificar malla", + "mate.title": "Alinear caras", + "mate.subtitle": "Llevar una cara contra otra", + "mate.cancel": "Cancelar la alineación de caras", + "mate.step.source": "1. Haz clic en la cara de este cuerpo que debe moverse.", + "mate.step.target": "2. Haz clic en la cara del otro cuerpo con la que debe juntarse.", + "mate.step.ready": "Ya has elegido las dos caras. Elige el modo y la separación, y aplica.", + "mate.mode": "Modo", + "mate.mode.against": "Cara contra cara", + "mate.mode.flush": "A ras", + "mate.gap": "Separación", + "mate.apply": "Alinear", + "shell.title": "Vaciar cuerpo", + "shell.subtitle": "Paredes del mismo grosor", + "shell.help": "Las paredes crecen hacia dentro y el exterior se queda como está.", + "shell.wall": "Grosor de pared", + "shell.openings": "Lados abiertos", + "shell.side.top": "Arriba", + "shell.side.bottom": "Abajo", + "shell.side.front": "Delante", + "shell.side.back": "Detrás", + "shell.side.left": "Izquierda", + "shell.side.right": "Derecha", + "shell.side.closed": "Cerrado (cavidad interior)", + "shell.sidesNone": "Ningún lado abierto: cerrado por completo.", + "shell.sidesHint": "Se pueden combinar varios lados.", + "shell.edges": "Aristas interiores", + "shell.edges.round": "Redondeadas", + "shell.edges.sharp": "Vivas", + "shell.edgesHint": "Se aplica donde las paredes interiores se separan, en un escalón o en una abertura. Las esquinas de una caja simple quedan vivas por dentro: redondea primero sus aristas exteriores para que el interior también quede redondeado.", + "shell.apply": "Vaciar", + "shell.working": "Vaciando…", + "shell.cancel": "Cancelar el vaciado", + "shell.errorTooThick": "Las paredes no pueden ser tan gruesas en este cuerpo. Elige una pared más fina.", + "shell.errorRoundedEdges": "Esta caja tiene redondeadas las aristas superiores e inferiores, y la pared tiene que ser bastante más fina que ese redondeo. Elige una pared más fina o pon a 0 el redondeo de las aristas superiores e inferiores antes de vaciarla. Si aun así falla, «Informe de error», en el pie de página, guarda el diseño para que puedas enviar un informe.", + "shell.errorCannotHollow": "Este cuerpo no se puede vaciar, ni siquiera con una pared muy fina. Probablemente su contorno no está lo bastante limpio para el núcleo CAD; puede deberse a un orificio que llega hasta el borde exterior, como una puerta recortada hasta la arista inferior de una forma importada.", + "shell.errorNoFlatTop": "Este cuerpo no tiene arriba ninguna cara plana que se pueda dejar abierta. Las esferas y las formas libres no se pueden vaciar de esta manera.", + "shell.errorNoFlatBottom": "Este cuerpo no tiene abajo ninguna cara plana que se pueda dejar abierta.", + "edge.errorOldRevolve": "Este cuerpo de revolución lo creó como malla una versión antigua de layerling. Abre Editar boceto y vuelve a terminarlo para convertirlo en un cuerpo exacto; después podrás vaciarlo, redondearlo y achaflanarlo.", + "shell.errorNoFlatSide": "Este cuerpo no tiene en el lado elegido ninguna cara plana que se pueda dejar abierta.", + "shell.errorProjectChanged": "El objeto o el diseño ha cambiado mientras se vaciaba; inténtalo de nuevo.", + "shell.errorFailed": "No se ha podido vaciar el cuerpo. Elige otro grosor de pared u otra abertura.", + "status.shelled": "Vaciado con paredes de {size} mm", + "status.shelledClosed": "Vaciado con paredes de {size} mm y cerrado por completo: la cavidad queda dentro y solo se ve en la vista de sección", + "status.shelledMcp": "MCP ha vaciado el objeto con paredes de {size} mm", + "status.shellRebuilt": "Paredes recalculadas, otra vez de {size} mm de grosor", + "status.shellRebuildFailed": "No se ha podido recalcular el vaciado con este tamaño. Las paredes se han escalado junto con el cuerpo.", + "status.sketchRebuildFailed": "No se ha podido reconstruir el cuerpo del boceto con este tamaño. El chaflán y el redondeo volverán a funcionar en él cuando edites el boceto.", + "edge.revertShell": "Vaciado (paredes de {size} mm)", + "deleteFace.title": "Eliminar cara", + "deleteFace.subtitle": "Las caras vecinas cierran el hueco", + "deleteFace.help": "Haz clic en las caras que quieras eliminar; otro clic vuelve a quitar una cara de la selección. Las caras de alrededor crecen hasta cerrar el hueco: el redondeo, el orificio o el saliente desaparece, y el cuerpo sigue siendo exacto.", + "deleteFace.preparing": "Leyendo las caras…", + "deleteFace.countNone": "Aún no has elegido ninguna cara", + "deleteFace.countOne": "1 cara elegida", + "deleteFace.countMany": "{count} caras elegidas", + "deleteFace.apply": "Eliminar", + "deleteFace.working": "Eliminando caras…", + "deleteFace.cancel": "Cancelar la eliminación de caras", + "deleteFace.errorUnchanged": "Estas caras no se pueden eliminar: las caras de alrededor no cierran el hueco. Elige todas las caras de lo que debe desaparecer, por ejemplo todas las caras de un redondeo o toda la pared de un orificio, y ninguna cara del propio cuerpo.", + "deleteFace.errorMesh": "Este cuerpo no tiene caras exactas que eliminar: layerling lo trata como una malla, igual que un STL, OBJ o 3MF importado, un cuerpo dividido, envuelto o simplificado, o una forma muy detallada, como un texto largo. Una pieza importada como STEP sí tiene caras exactas.", + "deleteFace.errorResized": "Este cuerpo se redimensionó con «Mantener el tamaño de las aristas al redimensionar» activado, así que sus caras exactas ya no se corresponden con su tamaño. Deshaz el cambio de tamaño, elimina las caras y vuelve a redimensionarlo.", + "deleteFace.errorProjectChanged": "El objeto o el diseño ha cambiado mientras se eliminaban las caras; inténtalo de nuevo.", + "deleteFace.errorFailed": "No se han podido eliminar las caras. Elige otras caras.", + "deleteFace.errorNoFaces": "No se han podido leer las caras de este cuerpo. Cierra la herramienta y vuelve a abrirla.", + "deleteFace.errorTooSlow": "Eliminar estas caras estaba tardando demasiado y se ha detenido a los 45 segundos; no ha cambiado nada. El núcleo CAD no puede con estas caras en esta pieza: elige otras caras, o menos.", + "status.facesDeletedOne": "1 cara eliminada", + "status.facesDeletedMany": "{count} caras eliminadas", + "status.facesDeletedMcpOne": "MCP ha eliminado 1 cara", + "status.facesDeletedMcpMany": "MCP ha eliminado {count} caras", + "status.deleteFaceCancelled": "Eliminación de caras cancelada", + "status.deleteFaceCancelledChanged": "Eliminación de caras cancelada porque el objeto ha cambiado", + "edge.revertDeleteFaceOne": "Caras eliminadas (1 cara)", + "edge.revertDeleteFaceMany": "Caras eliminadas ({count} caras)", + "editor.tool.dropToWorkplane": "Bajar al plano de trabajo", + "editor.tool.layFlat": "Apoyar sobre una cara", + "editor.tool.mateFaces": "Alinear caras", + "editor.tool.centerOnWorkplane": "Centrar en el plano de trabajo", + "editor.homeDashboard": "Página de inicio", + "editor.addShape": "Añadir forma", + "editor.visibilityOptions": "Opciones de visibilidad", + "editor.import": "Importar", + "editor.export": "Exportar", + "editor.workspaceSettings": "Ajustes del espacio de trabajo", + "editor.keyboardShortcuts": "Atajos de teclado", + "editor.bugReport": "Informe de error", + "editor.bugReportHint": "Guardar un informe de error como ZIP: el diseño con su versión, el navegador y los últimos mensajes, para adjuntarlo en el foro o en GitHub", + "bugReport.fileSuffix": "informe-de-error", + "status.bugReportBuilding": "Creando el informe de error…", + "status.bugReportSaved": "Informe de error guardado como ZIP. Adjunta el archivo a tu mensaje en el foro o en GitHub.", + "editor.group.help": "Ayuda", + "editor.guide": "Guía rápida", + "guide.title": "Guía rápida", + "guide.close": "Cerrar la guía rápida", + "guide.footer": "Las teclas de todo esto: el botón del teclado, junto a este.", + "guide.group.view": "Moverse por la vista", + "guide.view.orbit": "El botón derecho del ratón gira la vista, el central la desplaza y la rueda hace zoom. Ctrl con el botón izquierdo también la desplaza. Un clic derecho breve en un cuerpo abre un menú con los comandos más usados. Si no hay nada seleccionado, las teclas de flecha también giran la vista.", + "guide.view.touch": "En una pantalla táctil, dos dedos hacen lo mismo: sepáralos para hacer zoom y muévelos juntos para desplazar la vista. El interruptor de la barra de cámara permite girarla con un solo dedo.", + "guide.view.cube": "Con el cubo de la esquina saltas a las vistas principales, arrastrándolo giras la vista, y el botón de la casa vuelve a encuadrar toda la escena. Las teclas 1 a 6 también saltan a esas vistas, y con Mayús además hacen zoom a la selección.", + "guide.view.panels": "La lista de objetos, la ventana de ajustes, las guías y los paneles de herramientas se pueden apartar arrastrándolos por su barra de título cuando tapan algo; un doble clic los vuelve a acoplar.", + "guide.view.projection": "El botón del cubo, junto a los controles de zoom, cambia entre la vista normal y una vista plana, ortogonal. El ojo sobre una cuadrícula que hay debajo oculta la placa, para que puedas ver la parte inferior desde abajo. Las flechas roja, verde y azul de la esquina delantera izquierda de la placa muestran X, Y y Z en el sentido en que crecen los números (se pueden desactivar en los ajustes).", + "guide.view.section": "El botón de sección (la herramienta de corte), abajo del todo en la barra izquierda, corta la vista por un plano para ver paredes y cavidades. Es solo una vista: el diseño y sus exportaciones quedan enteros. «Sección como SVG» guarda los contornos que hay sobre el plano a escala 1:1, por ejemplo para una cortadora láser. «Medir» mide directamente sobre el corte: dos clics en el contorno azul y un clic en cualquier punto de la pared opuesta dan el grosor de pared, medido en perpendicular. El panel se mueve arrastrándolo por su barra de título.", + "guide.group.workplane": "Plano de trabajo", + "guide.workplane.place": "La tecla W o el icono del plano de trabajo coloca un plano de trabajo temporal sobre cualquier cara en la que hagas clic: cerca de una esquina, justo en la esquina; cerca de una arista, sobre la arista; y en la placa vacía, donde hagas clic. Las formas nuevas se alinean con él.", + "guide.workplane.reset": "Un clic en un espacio vacío (o Esc) devuelve el plano de trabajo al suelo, igual que la flecha hacia abajo que hay bajo el ojo. Mayús+W lo coloca directamente sobre la selección.", + "guide.workplane.hide": "El ojo que hay junto al botón del plano de trabajo oculta un plano de trabajo colocado sobre una cara sin quitarlo: las formas nuevas siguen cayendo en él.", + "guide.workplane.grid": "En los ajustes del espacio de trabajo (icono del engranaje), la cuadrícula se puede ocultar por completo si hace falta.", + "guide.group.shapes": "Construir con formas", + "guide.shapes.add": "Abre Formas en la cinta y suelta en la placa una caja, un cilindro, una esfera, un engranaje, un texto o un tejado.", + "guide.shapes.text": "El texto es una forma propia: elige la fuente (también fuentes tuyas), cúrvalo a lo largo de un arco y, en Relleno, crea contornos, una silueta o una capa más ancha. Crear capas lo convierte en una placa con nombre para impresión multicolor, y la Placa con icono de la biblioteca de formas hace lo mismo con un icono SVG.", + "guide.shapes.inspector": "El panel de la derecha tiene los números reales: anchura, profundidad, altura, posición, rotación y color. Escribir es más preciso que arrastrar. Un clic en una esquina de la forma abre a la vez la anchura y la profundidad. Un cuerpo girado muestra además, bajo la selección, sus ángulos respecto a X, Y y Z, y la tarjeta Rotación los admite como números.", + "guide.shapes.wrap": "Un SVG o un texto plano se puede colocar sobre la pared de un cilindro desde sus ajustes, en «Envolver alrededor de un cilindro», en relieve o grabado; después, céntralo en el cilindro.", + "guide.shapes.myShapes": "Los cuerpos que necesitas a menudo se convierten en formas personalizadas, arriba en la biblioteca de formas: selecciónalos, pulsa «Guardar selección» y con un clic los insertas en cualquier diseño. Se quedan en este navegador o, con el almacén compartido del servidor, en el servidor para todos los dispositivos; «Hacer copia de seguridad», en la página de inicio, también se los lleva.", + "guide.shapes.handles": "Los tiradores que rodean una selección la mueven, la redimensionan y la giran. Mayús en una esquina mantiene las proporciones en las tres direcciones (o activa «Mantener proporciones» en las propiedades), y Alt escala desde el centro. El selector de cuadrícula de abajo a la derecha decide a qué se ajusta la selección. Al moverla, una forma también se ajusta a las aristas y los centros de otras formas (línea guía rosa); Alt durante el arrastre lo pausa. Mayús mientras arrastras mantiene el movimiento en X o en Y, y con Alt pulsado desde el principio arrastras una copia. Puedes dejar una forma aparcada junto a la placa para usarla más tarde.", + "guide.group.select": "Seleccionar y ordenar", + "guide.select.click": "Haz clic para seleccionar, mantén pulsada Mayús para añadir y haz clic en un espacio vacío para soltar la selección.", + "guide.select.position": "En Posición, en el panel de propiedades, escribes dónde está un cuerpo: X e Y sobre la placa, y Z como la altura de su cara inferior.", + "guide.select.group": "Agrupa lo que va junto, bloquea lo que no debe moverse y oculta lo que estorba; todo desde la cinta. Crear conjunto (Ctrl+B) solo mantiene juntas las piezas, sin fusionarlas: los colores se conservan, por ejemplo para impresiones multicolor. Un grupo también muestra cada pieza en su color si activas «Multicolor» en sus ajustes.", + "guide.select.align": "Alinear pone en línea varios cuerpos por un lado o por el centro; Reflejar voltea la selección respecto a un plano (izquierda-derecha, delante-detrás o arriba-abajo). Para obtener una copia reflejada, duplica primero.", + "guide.select.pivot": "Elige Fijar el punto de giro y haz clic en una cara: una cara plana da su centro, como el eje del extremo de un tubo. A partir de entonces, la selección gira alrededor de ese punto en lugar de su propio centro, así que el extremo inclinado de un tubo se mantiene en su eje. Con un cuerpo seleccionado, el punto de giro se queda con ese cuerpo; con varios, solo vale para esa selección. Su marcador rojo se puede arrastrar con el ratón y se ajusta a esquinas y a puntos medios de aristas. Un nuevo clic en la herramienta lo quita.", + "guide.select.mateFaces": "Alinear caras (en Organizar): selecciona la pieza que debe moverse, haz clic en una de sus caras y luego en una cara de otra pieza. «Cara contra cara» junta las dos, espalda con espalda; «A ras» las pone en un mismo plano, una al lado de la otra. Una separación opcional deja holgura. La pieza solo gira hasta que las caras quedan paralelas y después se desliza a lo largo de la normal de la otra cara, de modo que conserva su posición lateral. Un solo paso de Deshacer lo revierte.", + "guide.select.carry": "C recoge la selección: se apoya en la cara que queda bajo el puntero, también en las inclinadas, y un clic la posa (Esc lo cancela). Las formas nuevas lo hacen por sí solas cuando las pasas por encima de un cuerpo.", + "guide.select.layFlat": "Elige Apoyar sobre una cara (en Organizar) y haz clic en una cara de la selección: la cara que queda bajo el puntero se ilumina antes del clic, y el cuerpo gira para que esa cara se apoye en el plano de trabajo; muy práctico para poner una pieza sobre su mejor lado para imprimirla.", + "guide.select.pattern": "Patrón repite la selección n veces en fila o en círculo: para rejillas de orificios, círculos de taladros y coronas dentadas. Las copias se ven como vista previa, y solo «Crear» las añade. Con varias piezas seleccionadas, el panel de propiedades de la derecha les da color a la vez o las convierte en orificios. Escalar en porcentaje (clic derecho o Ctrl+K) agranda o reduce la selección en un porcentaje, en conjunto o cada pieza en su sitio.", + "guide.select.overhangs": "Mostrar voladizos (en el menú que hay junto al ojo) raya en rojo y blanco cada cara cuyo voladizo supere los 45° y que necesitaría soportes al imprimir. El ángulo se cambia en los ajustes, en Apariencia.", + "guide.select.notes": "Una nota recoge lo que la geometría no puede decir. Colócala sobre un cuerpo y se moverá con él; colócala al lado y se quedará en el plano de trabajo. Las notas se guardan con el diseño y nunca llegan a una exportación. Haz clic derecho en un cuerpo para marcar su centro, sus esquinas o los puntos medios de sus aristas con puntos de referencia a los que se ajustan las formas.", + "guide.select.history": "Historial (junto a Deshacer y Rehacer) mira atrás sin cambiar nada: desliza hasta un estado anterior del diseño, avanza paso a paso con las teclas de flecha, y Esc te devuelve al presente. Desde ahí puedes exportar ese estado, empezar un diseño nuevo a partir de él o eliminar todo el historial para siempre (con el botón de abajo a la izquierda, tras una pregunta). Mientras la vista está abierta, las herramientas que cambian el diseño están desactivadas.", + "guide.group.measure": "Medir", + "guide.measure.tape": "La cinta métrica mide distancias entre esquinas, aristas y caras: fija un punto, arrastra hasta el siguiente y ya tienes la medición.", + "guide.measure.cornerRuler": "La escuadra se coloca en el plano de trabajo con un clic y muestra dos brazos graduados en ángulo recto, sin cuerpo propio. Arrastra el tirador para moverla, haz clic en él para girarla 90°, y la × de al lado la quita. El botón pequeño a la izquierda del tirador mide hasta el centro de un cuerpo en lugar de hasta su arista. Con el plano de trabajo sobre una pared lateral, se coloca en esa pared, y se ajusta a la esquina de un cuerpo que tenga cerca.", + "guide.measure.ruler": "La regla de la lista de formas (una herramienta solo de medida: nunca aparece en una exportación y no se puede agrupar ni cortar) muestra, para cada cuerpo que la toca o se solapa con ella, su extensión como un número flotante en la propia vista, que se puede editar ahí mismo. El símbolo flotante de más crea una copia de la forma medida.", + "guide.group.solid": "Sólidos y orificios", + "guide.solid.modes": "Cada forma es un sólido o un orificio. Un orificio es una herramienta de corte: quita material.", + "guide.solid.group": "Al agrupar, los orificios se aplican a los sólidos que tienen debajo: así se hace un taladro, una ranura o una cavidad.", + "guide.solid.intersect": "La intersección conserva solo lo que dos cuerpos tienen en común.", + "guide.solid.edit": "Editar grupo (E) muestra por separado las piezas de un grupo, y Listo lo vuelve a calcular; también sirve para un grupo dentro de otro.", + "guide.solid.split": "Dividir corta un sólido o un orificio en dos con un plano. Gira el plano para hacer un corte en ángulo.", + "guide.group.edges": "Chaflán y redondeo", + "guide.edges.pick": "Selecciona un cuerpo, elige Chaflán o Redondeo (las teclas B y Mayús+B hacen lo mismo) y haz clic en las aristas a las que quieras aplicarlo.", + "guide.edges.apply": "Escribe la medida y pulsa Intro. Este es el paso que les falta a la mayoría de los diseños de Tinkercad.", + "guide.edges.undo": "Un cuerpo con acabados en las aristas admite más acabados. En la herramienta de aristas, «Deshacer una operación de aristas» quita uno de ellos y «Editar» lo vuelve a abrir con sus aristas y su valor; Deshacer lo revierte todo.", + "guide.edges.hollow": "Vaciar convierte un cuerpo en una carcasa con paredes de grosor uniforme: elige la pared, qué lados quedan abiertos (cualquiera de ellos, o ninguno) y si las aristas interiores son redondeadas o vivas. Un cuerpo vaciado se puede volver a cambiar, igual que un redondeo.", + "guide.edges.deleteFace": "Eliminar cara quita un redondeo, un orificio o un saliente: haz clic en todas sus caras y luego en Eliminar. Las caras de alrededor cierran el hueco, y el cuerpo sigue siendo exacto.", + "guide.group.sketch": "Bocetos", + "guide.sketch.start": "La pestaña Boceto dibuja un contorno plano y lo convierte en un cuerpo, elevándolo (extrusión) o girándolo alrededor de un eje (revolución).", + "guide.sketch.draw": "Líneas, curvas y formas ya hechas. Un contorno cerrado se convierte en un sólido; con Trazo, en cambio, se construye la propia línea con una anchura, aunque esté abierta.", + "guide.sketch.construction": "Una línea de construcción es discontinua y nunca forma parte del contorno: actívala en Dibujar o convierte en ella una línea existente. Los puntos nuevos se ajustan donde cruza otra línea, para poner una esquina en un punto medio o a una distancia fija.", + "guide.sketch.image": "Puedes colocar debajo una imagen de referencia y calcarla; bloquéala cuando esté bien colocada.", + "guide.sketchGroup.draw": "Dibujar", + "guide.sketchDraw.close": "Haz clic de nuevo en el primer punto para cerrar el contorno. Esc termina una cadena de líneas.", + "guide.sketchGroup.edit": "Seleccionar y editar", + "guide.sketchEdit.select": "«Seleccionar» mueve puntos y líneas (arrastrando, o con las teclas de flecha en pasos finos; Mayús mientras arrastras mantiene el movimiento en un eje); Mayús+clic añade o quita un punto o una línea, y un clic dentro de un contorno cerrado lo selecciona entero; su marco tiene tiradores en las esquinas y los lados, y Mayús en una esquina mantiene las proporciones. «Añadir o quitar puntos» añade un punto con un clic en un tramo y lo quita con un clic en un punto; «Borrar» elimina.", + "guide.sketchEdit.corner": "Un clic en un punto de esquina ofrece para él «Redondear esquina» y «Achaflanar esquina»; un clic en una línea recta ofrece «Curvar línea» (arrastra sus dos tiradores para darle forma), y donde se juntan dos líneas rectas se muestra el ángulo entre ellas: haz clic en el valor para escribir uno nuevo (Tab cambia la línea que gira). R gira un contorno cerrado 45 grados.", + "guide.sketchGroup.clipboard": "Portapapeles", + "guide.sketchClipboard.use": "Copiar, cortar (Ctrl+X), pegar y duplicar (Ctrl+D) actúan sobre la selección. La copia queda en un sitio libre junto al original, así que no se une a él.", + "guide.sketchGroup.view": "Moverse y medir", + "guide.sketchView.zoom": "La rueda hace zoom. Inicio encuadra todo el boceto en la vista y F hace zoom a la selección.", + "guide.sketchView.measure": "La cinta métrica de la barra lateral mide entre dos puntos. Un clic en una línea o en un punto muestra sus longitudes; en una línea recta puedes escribir la longitud en la etiqueta de su medida.", + "guide.sketchGroup.finish": "Crear un cuerpo", + "guide.sketchFinish.body": "«Terminar boceto» convierte un contorno cerrado en un cuerpo. Para una revolución, dibuja la mitad de la sección a la izquierda del eje y usa «Terminar revolución».", + "guide.sketchFinish.edit": "«Editar boceto» en el cuerpo, o un doble clic sobre él, te trae de vuelta aquí. Las operaciones de aristas que le hayas hecho se pierden, porque las aristas se crean de nuevo.", + "guide.group.files": "Guardar y compartir", + "guide.files.autosave": "Los diseños y las exportaciones se calculan y se guardan al 100 % en local, en tu navegador. Sin cuenta, y no se sube nada.", + "guide.files.project": "LYL es el formato de diseño propio de layerling: el diseño completo, con su historial, en un solo archivo. En Exportar eliges el nombre del archivo y cuántos pasos de deshacer se incluyen, hasta Ninguno, para compartir un diseño sin su historial. En Chrome y Edge eliges tú la carpeta, y Ctrl+S vuelve a guardar en ese archivo; otros navegadores lo descargan. Los archivos .skf antiguos se siguen abriendo. Con la aplicación instalada (Chrome o Edge), un doble clic en un archivo .lyl en el explorador de archivos lo abre en layerling.", + "guide.files.export": "STL, 3MF y OBJ para el laminador (3MF y OBJ con colores), STEP para un programa de CAD completo y SVG para contornos planos. Las piezas ocultas se quedan fuera. El recuadro Material muestra el volumen, el peso y los metros de filamento, calculados como si la pieza fuera maciza. PNG guarda una imagen de la vista, con fondo transparente si quieres.", + "guide.files.import": "Se pueden importar STL, OBJ, 3MF, STEP y SVG para seguir construyendo a su alrededor, y una imagen PNG o JPG se calca como un contorno de 50 mm de ancho. Un OBJ o 3MF con colores entra como un cuerpo por color, y un 3MF con varios objetos, como un cuerpo por objeto; para un OBJ, selecciona también su .mtl o el ZIP de Tinkercad. Una malla con muchísimos triángulos se aligera con «Simplificar malla», en el grupo Modificar, con una vista de antes y después; cuántos triángulos pueden manejar todavía el corte y el agrupado se ajusta en los ajustes del espacio de trabajo.", + "guide.files.bugReport": "«Informe de error», en el pie de página, guarda un ZIP con el diseño en .lyl y un texto con su versión, el navegador y los últimos mensajes, para adjuntarlo en el foro o en GitHub.", + "guide.files.storeOff": "En tu propio servidor, crea una carpeta llamada «store» junto a index.html para guardar los diseños también en el servidor, además de en el navegador. Hace falta PHP.", + "guide.files.storeOn": "Esta instalación guarda los diseños también en el servidor. La página de inicio muestra esa carpeta junto a los diseños de tu navegador: arrastra diseños a ella, crea subcarpetas o empieza un diseño nuevo directamente ahí; se guarda solo. Las formas personalizadas también pueden ir ahí, en la carpeta «Custom shapes».", + "guide.group.search": "Encontrar comandos", + "guide.search.palette": "¿No encuentras una herramienta? Ctrl+K (o la lupa del grupo Ayuda) abre la búsqueda de comandos: escribe «Redondeo», «Reflejar» o «Cilindro», elige con las teclas de flecha y pulsa Intro. También entiende palabras en inglés y en alemán, muestra junto a cada entrada su atajo de teclado y su zona de la barra de herramientas, y lista también las que están desactivadas para que veas dónde están.", + "guide.group.settings": "Ajustes", + "guide.settings.workspace": "El engranaje abre las unidades, la cuadrícula, el tamaño de la placa, los colores, la luz y las sombras, el tamaño de los botones de la barra de herramientas, si las líneas de la cuadrícula crecen con el zoom, el modo rápido para ordenadores más lentos y cuánto historial se guarda. Ahí también se añaden pasos de ajuste propios, como un paso de pines de 2,54 mm.", + "guide.settings.language": "El idioma se elige en la lista de idiomas, arriba del todo a la derecha, y en Ajustes, en la página de inicio.", + "shortcuts.title": "Atajos de teclado", + "shortcuts.close": "Cerrar los atajos de teclado", + "shortcuts.print": "Imprimir o guardar como PDF", + "shortcuts.intro": "Los atajos funcionan mientras el lienzo tiene el foco. No interfieren mientras escribes en un campo.", + "shortcuts.or": "o", + "shortcuts.click": "Clic", + "shortcuts.rightClick": "Clic derecho", + "shortcuts.drag": "Arrastrar", + "shortcuts.footer": "En un Mac, usa Cmd donde ponga Ctrl.", + "shortcuts.group.selection": "Selección", + "shortcuts.group.clipboard": "Portapapeles", + "shortcuts.group.history": "Historial", + "shortcuts.group.file": "Archivo", + "shortcuts.group.organise": "Agrupar y visibilidad", + "shortcuts.group.shape": "Dar forma a la selección", + "shortcuts.group.transform": "Mover y girar", + "shortcuts.group.view": "Vista y plano de trabajo", + "shortcuts.group.sketch": "Modo Boceto", + "shortcuts.group.edgeModifier": "Chaflán y redondeo", + "shortcuts.clearSelection": "Anular la selección", + "shortcuts.delete": "Eliminar la selección", + "shortcuts.selectAll": "Seleccionar todas las formas visibles", + "shortcuts.addToSelection": "Añadir a la selección o quitar de ella", + "shortcuts.contextMenu": "Menú con los comandos más usados para la selección", + "shortcuts.axisLockDrag": "Mantener pulsado al arrastrar: mover solo en X o en Y", + "shortcuts.duplicateDrag": "Arrastrar una copia; el original se queda en su sitio", + "shortcuts.pauseObjectSnap": "Pulsado una vez durante el arrastre: pausar el ajuste a otras formas", + "shortcuts.sizeAroundCenter": "Al escribir una medida junto a la forma: crecer desde el centro en lugar de desde el lado opuesto", + "shortcuts.copy": "Copiar", + "shortcuts.cut": "Cortar", + "shortcuts.paste": "Pegar", + "shortcuts.duplicate": "Duplicar", + "shortcuts.undo": "Deshacer", + "shortcuts.redo": "Rehacer", + "shortcuts.historyView": "En la vista del historial: estado anterior o posterior", + "shortcuts.historyViewClose": "En la vista del historial: volver al estado actual", + "shortcuts.historyViewPage": "En la vista del historial: diez estados antes o después", + "shortcuts.historyViewEnds": "En la vista del historial: el estado más antiguo o el actual", + "shortcuts.wheel": "Rueda del ratón", + "shortcuts.group": "Agrupar", + "shortcuts.ungroup": "Desagrupar o deshacer un conjunto", + "shortcuts.bundle": "Crear conjunto (mantener juntas las piezas sin fusionarlas)", + "shortcuts.editGroup": "Editar el grupo seleccionado", + "shortcuts.lock": "Bloquear o desbloquear la selección", + "shortcuts.hide": "Ocultar la selección", + "shortcuts.showHidden": "Mostrar todo lo oculto", + "shortcuts.import": "Abrir o cerrar el cuadro de importación", + "shortcuts.export": "Abrir o cerrar el cuadro de exportación", + "shortcuts.save": "Guardar el diseño en su archivo", + "shortcuts.outliner": "Mostrar u ocultar la lista de objetos", + "shortcuts.hole": "Convertir la selección en orificio", + "shortcuts.solid": "Volver a convertir la selección en sólido", + "shortcuts.transparent": "Hacer transparente la selección, o volverla opaca", + "shortcuts.multicolor": "Multicolor para el grupo seleccionado: cada pieza en su color, o un solo color para todas", + "shortcuts.mirror": "Modo de reflejo", + "shortcuts.fillet": "Herramienta de redondeo para el cuerpo seleccionado (otra vez: cerrarla)", + "shortcuts.chamfer": "Herramienta de chaflán para el cuerpo seleccionado (otra vez: cerrarla)", + "shortcuts.align": "Modo de alineación", + "shortcuts.note": "Colocar una nota", + "shortcuts.carryOntoFace": "Levantar la selección y posarla sobre una cara (como Cruise en Tinkercad)", + "shortcuts.dropToWorkplane": "Bajar la selección al plano de trabajo", + "shortcuts.nudge": "Mover un paso de cuadrícula, según cómo esté girada la vista", + "shortcuts.nudgeCoarse": "Mover cinco pasos de cuadrícula", + "shortcuts.raise": "Subir o bajar la selección", + "shortcuts.rotate": "Girar 45°", + "transform.rotateHandle": "Arrastra para girar", + "transform.cornerWidth": "Anchura", + "transform.cornerDepth": "Profundidad", + "transform.resize": "Cambiar tamaño", + "transform.height": "Altura", + "transform.lift": "Elevar", + "sketch.modeBadge": "Vista de boceto", + "sketch.modeBadgeRevolve": "Boceto de revolución", + "status.sketchUpdated": "Boceto actualizado", + "status.revolveCreated": "Boceto de revolución creado", + "shortcuts.rotateFine": "Girar 22,5°", + "shortcuts.views": "Las seis vistas estándar", + "shortcuts.viewsFocus": "Vista estándar, con zoom a la selección", + "shortcuts.savedViews": "Ir a la vista guardada en esa tecla", + "shortcuts.saveView": "Guardar la vista (giro, desplazamiento y zoom) para este diseño", + "shortcuts.orbit": "Girar la vista 15° cuando no hay nada seleccionado", + "shortcuts.orbitCoarse": "Girar la vista 90° cuando no hay nada seleccionado", + "shortcuts.pan": "Desplazar la vista cuando no hay nada seleccionado", + "shortcuts.panCoarse": "Desplazar más la vista cuando no hay nada seleccionado", + "shortcuts.resetView": "Encajar toda la escena en la vista", + "shortcuts.focusSelection": "Hacer zoom a la selección", + "shortcuts.projection": "Ortográfica o en perspectiva", + "shortcuts.zoom": "Acercar o alejar", + "shortcuts.placeWorkplane": "Colocar un plano de trabajo", + "shortcuts.placeWorkplaneOnSelection": "Colocarlo en la cara seleccionada", + "shortcuts.reverseWorkplane": "Mantener pulsada al colocarlo para invertir la dirección", + "shortcuts.leaveMode": "Salir del modo de plano de trabajo o de cinta métrica", + "shortcuts.sketchEscape": "Soltar la herramienta (volver a Seleccionar) y después quitar la selección", + "shortcuts.sketchDelete": "Eliminar el elemento seleccionado", + "shortcuts.sketchRotate": "Girar 45° un boceto cerrado", + "shortcuts.sketchLockImage": "Bloquear o desbloquear el contorno seleccionado o la imagen de referencia", + "shortcuts.sketchResetView": "Encajar todo el boceto en la vista", + "shortcuts.sketchFocusSelection": "Hacer zoom a la selección del boceto", + "shortcuts.sketchZoom": "Acercar o alejar el boceto", + "shortcuts.sketchNudge": "Mover un paso de cuadrícula los puntos, las líneas o la imagen seleccionados (Mayús: un paso mayor)", + "shortcuts.sketchTools": "Elegir herramienta de dibujo: 1 Línea, 2 Curva de Bézier, 3 Curva suave, 4 Añadir o quitar puntos (mientras no se esté dibujando una línea)", + "shortcuts.sketchHandleNudge": "Mover un paso de cuadrícula el tirador de curva en el que has hecho clic (Mayús: un paso mayor)", + "shortcuts.sketchAxisLock": "Al arrastrar: mantener el movimiento en un solo eje", + "shortcuts.sketchAngleSnap": "Al dibujar: ajustar la nueva línea en pasos de 15°", + "shortcuts.sketchTypedLine": "Al dibujar: escribir la longitud, «<» o Tab para el ángulo; Intro fija el punto", + "shortcuts.sketchDimensionSymmetric": "En el campo de longitud de una línea: crecer hacia los dos lados", + "shortcuts.edgeApply": "Aplicar la vista previa", + "shortcuts.edgeCancel": "Descartar la vista previa", + "editor.modeLabel": "Modo del editor", + "editor.modeGeometry": "Editor 3D", + "editor.modeSketch": "Boceto", + "editor.renameProject": "Cambiar nombre del diseño", + + "status.ready": "Listo", + "status.alreadyAligned": "Ya está alineado", + "status.buildingBrep": "Construyendo B-Rep… la primera exportación a STEP carga el núcleo OpenCascade (~22 MB), una vez por sesión", + "status.buildingSvg": "Generando la proyección SVG de la vista superior…", + "status.buildingSketch": "Construyendo la geometría exacta del boceto…", + "status.chooseSelectFirst": "Elige Seleccionar antes de añadir una imagen al boceto", + "status.chooseImageFile": "Elige un archivo de imagen PNG, JPG, WebP, GIF u otro formato", + "status.chooseEdgeFeature": "Elige la operación de aristas que quieres quitar", + "status.chooseSecondPoint": "Elige el segundo punto de medición", + "status.sketchStrokeSet": "El boceto se construye como trazo", + "status.sketchStrokeOff": "El boceto vuelve a construirse como superficie", + "pivot.dragHint": "Arrastra para mover el punto de giro: se ajusta a las esquinas y a los puntos medios de las aristas", + "status.closeProfile": "Cierra al menos un perfil antes de terminar el boceto", + "status.sketchChainCleared": "Cadena de líneas actual descartada", + "status.edgeCancelled": "Tratamiento de aristas cancelado", + "status.edgeCancelledChanged": "Tratamiento de aristas cancelado porque el objeto ha cambiado", + "status.edgeNeedsAdjustment": "Hay que ajustar el tratamiento de aristas", + "status.edgePreviewReady": "Vista previa del tratamiento de aristas lista", + "status.finishBeforeRedo": "Termina de arrastrar o transformar antes de rehacer", + "status.finishBeforeRotate": "Termina de arrastrar o transformar antes de girar", + "status.finishBeforeSave": "Termina de arrastrar o transformar antes de guardar el archivo del diseño", + "status.finishBeforeUndo": "Termina de arrastrar o transformar antes de deshacer", + "status.clipboardEmpty": "El portapapeles de layerling está vacío", + "status.noHiddenShapes": "No hay formas ocultas", + "status.nothingToMirror": "No hay nada que reflejar", + "status.nothingToRedo": "No hay nada que rehacer", + "status.nothingToRedoSketch": "No hay nada que rehacer en este boceto", + "status.nothingToUndoSketch": "No hay nada que deshacer en este boceto", + "status.oneLylAtATime": "Abre los archivos de diseño de uno en uno; la geometría STL, OBJ, STEP y SVG se importa aparte", + "status.lylUnavailable": "Aquí no se pueden abrir archivos de diseño de layerling (.lyl)", + "status.pasteCancelled": "Pegado cancelado porque el diseño ha cambiado", + "status.rotationClosedOnly": "Solo se pueden girar objetos de boceto cerrados", + "status.selectClosedSketch": "Selecciona un objeto de boceto cerrado para girarlo", + "status.selectGroupFirst": "Selecciona primero un grupo", + "scalePercent.title": "Escalar en porcentaje", + "scalePercent.subtitle": "Igual en todas las direcciones", + "scalePercent.help": "Escribe el tamaño que debe tener: 120 % es una quinta parte más grande y 50 %, la mitad. La parte de abajo se queda donde está.", + "scalePercent.percent": "Nuevo tamaño", + "scalePercent.mode": "Varias piezas", + "scalePercent.mode.together": "Juntas", + "scalePercent.mode.togetherHint": "Crecen alrededor de su centro común, así que la distribución crece con ellas, como si fueran una sola pieza", + "scalePercent.mode.each": "Cada una en su sitio", + "scalePercent.mode.eachHint": "Cada pieza crece donde está y los huecos entre ellas se mantienen", + "scalePercent.apply": "Escalar", + "scalePercent.errorPercent": "Escribe un porcentaje entre 1 y 1000.", + "holePattern.title": "Patrón de orificios", + "holePattern.subtitle": "Orificios en una cara plana", + "holePattern.cancel": "Cerrar patrón de orificios", + "holePattern.step.pick": "Haz clic en una cara plana del cuerpo.", + "holePattern.count.one": "Cabe 1 orificio en la cara.", + "holePattern.count.many": "Caben {count} orificios en la cara.", + "holePattern.none": "Aquí no cabe ningún orificio: la cara es demasiado pequeña para este tamaño y este margen.", + "holePattern.tooMany": "Serían más de {limit} orificios. Haz los orificios más grandes o aumenta la separación.", + "holePattern.form": "Forma del orificio", + "holePattern.form.round": "Redondo", + "holePattern.form.square": "Cuadrado", + "holePattern.form.rectangle": "Rectangular", + "holePattern.form.hexagon": "Hexagonal", + "holePattern.form.slot": "Ranura", + "holePattern.size.diameter": "Diámetro (Ø)", + "holePattern.size.side": "Longitud del lado", + "holePattern.size.corners": "Diámetro entre esquinas (Ø)", + "holePattern.size.width": "Anchura", + "holePattern.size.height": "Altura", + "holePattern.spacing": "Separación entre centros", + "holePattern.wall": "Pared entre orificios", + "holePattern.arrangement": "Disposición", + "holePattern.arrangement.grid": "Cuadrícula", + "holePattern.arrangement.staggered": "Al tresbolillo", + "holePattern.margin": "Margen hasta el borde de la cara", + "holePattern.depth": "Profundidad", + "holePattern.depth.through": "A través de todo el cuerpo", + "holePattern.depth.custom": "Profundidad personalizada", + "holePattern.depthValue": "Profundidad del orificio", + "holePattern.repick": "Otra cara", + "holePattern.apply": "Crear", + "holePattern.holeName": "Orificio", + "status.holePatternStart": "Patrón de orificios: haz clic en una cara plana del cuerpo.", + "status.holePatternCancelled": "Patrón de orificios cancelado", + "status.holePatternSelectOne": "Selecciona un solo cuerpo para el patrón de orificios.", + "status.holePatternNeedsSolid": "Un patrón de orificios va sobre un cuerpo sólido, no sobre un orificio.", + "status.holePatternOtherTool": "Termina primero con la otra herramienta.", + "status.holePatternMissed": "Eso no era una cara del cuerpo seleccionado.", + "status.holePatternCurved": "Esta cara es curva. Elige una cara plana.", + "status.holePatternReady": "Cara elegida. Ajusta la forma, el tamaño y la separación.", + "status.holePatternTooMany": "Serían demasiados orificios para un solo patrón.", + "status.holePatternNone": "No cabe ningún orificio en la cara.", + "status.holePatternCreated": "Patrón de orificios creado: {count} orificios, agrupados con el cuerpo", + "faceTool.title": "Cara", + "faceTool.subtitle": "Tirar de una cara plana o empujarla", + "faceTool.cancel": "Cerrar herramienta de cara", + "faceTool.step.pick": "Haz clic en una cara plana del cuerpo.", + "faceTool.step.ready": "Ajusta el margen, el radio de esquina y la profundidad, y haz clic en «Crear».", + "faceTool.empty": "Con este margen y este radio de esquina no queda nada de la cara. Hazlos más pequeños.", + "faceTool.direction": "Dirección", + "faceTool.direction.out": "Hacia fuera: añadir material", + "faceTool.direction.in": "Hacia dentro: abrir un hueco", + "faceTool.inset": "Margen hasta el borde de la cara", + "faceTool.radius": "Radio de esquina", + "faceTool.depth": "Profundidad", + "faceTool.repick": "Otra cara", + "faceTool.apply": "Crear", + "faceTool.bodyName": "Extrusión de cara", + "faceTool.pocketName": "Hueco en cara", + "status.faceToolStart": "Cara: haz clic en una cara plana del cuerpo.", + "status.faceToolCancelled": "Herramienta de cara cancelada", + "status.faceToolSelectOne": "Selecciona un solo cuerpo para la herramienta de cara.", + "status.faceToolNeedsSolid": "La herramienta de cara trabaja sobre un cuerpo sólido, no sobre un orificio.", + "status.faceToolOtherTool": "Termina primero con la otra herramienta.", + "status.faceToolMissed": "Eso no era una cara del cuerpo seleccionado.", + "status.faceToolCurved": "Esta cara es curva. Elige una cara plana.", + "status.faceToolReady": "Cara elegida. Ajusta el margen, el radio de esquina y la profundidad.", + "status.faceToolCreated": "Cara extruida {depth} mm hacia fuera", + "status.faceToolPocketCreated": "Hueco de {depth} mm de profundidad abierto en la cara", + "status.faceToolFailed": "La herramienta de cara no ha podido construir este cuerpo: {message}", + "status.honeycombConverted": "Panal convertido en patrón de orificios: {count}", + "welcome.moreHolePatternTitle": "Patrón de orificios", + "welcome.moreHolePatternBody": "Haz clic en una cara plana de un cuerpo y reparte orificios por ella: redondos, cuadrados, rectangulares, hexagonales o ranuras, en cuadrícula o al tresbolillo, con separación, margen hasta el borde y profundidad (a través de todo el cuerpo o una medida fija). Una vista previa muestra los orificios antes de crearlos; siguen siendo orificios normales, agrupados con el cuerpo. Sirve para rejillas de ventilación, altavoces, cestas y carcasas.", + "guide.select.holePattern": "Patrón de orificios (el botón de la barra de herramientas junto a Patrón, clic derecho en un cuerpo o Ctrl+K): haz clic en una cara plana y ajusta la forma, el tamaño, la separación, la disposición, el margen y la profundidad de los orificios. Los orificios aparecen como vista previa; «Crear» los añade como orificios agrupados con el cuerpo. Al desagrupar vuelven a quedar sueltos.", + "guide.select.faceTool": "Cara (el botón de la barra de herramientas junto a Patrón de orificios, clic derecho en un cuerpo o Ctrl+K): haz clic en una cara plana, elige Hacia fuera o Hacia dentro y ajusta el margen hasta el borde, el radio de esquina y la profundidad. Lo que añade es un cuerpo de boceto agrupado con el cuerpo.", + "scalePercent.errorTooSmall": "«{name}» quedaría por debajo de 0,01 mm.", + "scalePercent.errorTooLarge": "«{name}» quedaría más grande de lo que permite su forma. Sube su «Límite de tamaño propio» en los ajustes, en Valores iniciales de las formas, o elige un porcentaje menor.", + "status.scaledByPercent": "Escalado al {percent} %", + "status.scaledByPercentSkipped": "Escalado al {percent} %; {skipped} bloqueados se han quedado como estaban", + "status.selectionColored": "{count} piezas coloreadas", + "status.selectShapeFirst": "Selecciona primero una forma", + "status.selectShapeWithEdge": "Selecciona primero una forma con una operación de aristas", + "status.selectSketchImageLock": "Selecciona una imagen del boceto para bloquearla o desbloquearla", + "status.selectSketchPoint": "Selecciona un punto o un segmento del boceto para quitarlo", + "status.selectSketchGeometry": "Selecciona primero algo del boceto", + "status.sketchCopied": "Selección del boceto copiada", + "status.sketchCut": "Selección del boceto cortada", + "status.sketchPasted": "Geometría del boceto pegada", + "status.sketchDuplicated": "Selección del boceto duplicada", + "status.sketchClipboardEmpty": "Copia primero algo del boceto", + "status.selectSolidAndHole": "Para la intersección, selecciona dos sólidos, o un sólido y un orificio", + "status.selectSolidForStep": "Selecciona al menos una forma sólida antes de exportar a STEP", + "status.selectTwoToAlign": "Selecciona al menos dos formas para alinearlas", + "status.selectTwoToGroup": "Selecciona al menos dos formas para agruparlas", + "status.rulerNotSolid": "Una regla no es un sólido y aquí no cuenta", + "status.selectHighlightedEdges": "Selecciona las aristas resaltadas y ajusta la vista previa", + "status.sharpAngleLowered": "Ninguna arista alcanzaba el umbral: ahora está en {angle}°", + "status.sharpAngleLoweredForEdge": "Umbral bajado a {angle}° para que cuente la arista en la que has hecho clic", + "status.selectOneToSeparate": "Selecciona un objeto para separarlo", + "status.selectSketchShape": "Selecciona una forma creada a partir de un boceto para editarla", + "status.selectedAllVisible": "Seleccionadas todas las formas visibles", + "status.selectionCleared": "Selección anulada", + "status.selectionHidden": "Selección oculta", + "status.selectionShown": "Selección visible", + "status.selectionLockedNow": "Selección bloqueada", + "status.selectionUnlocked": "Selección desbloqueada", + "status.objectLocked": "Objeto bloqueado", + "status.selectionToHole": "La selección ahora es un orificio", + "status.selectionTransparent": "La selección ahora es transparente", + "status.selectionOpaque": "La selección ahora es opaca", + "status.selectionMulticolor": "Cada pieza del grupo seleccionado muestra su propio color", + "status.selectionOneColor": "El grupo seleccionado muestra un solo color", + "status.multicolorNeedsGroup": "Multicolor funciona con un grupo: selecciona uno primero", + "status.selectionToSolid": "La selección ahora es un sólido", + "status.selectionRaised": "Selección subida", + "status.selectionLowered": "Selección bajada", + "status.centeredOne": "Selección centrada en el plano de trabajo", + "status.centeredMany": "{count} objetos centrados en el plano de trabajo", + "status.nothingMeasurable": "La selección no tiene geometría medible que centrar", + "status.alreadyCentered": "La selección ya está centrada en el plano de trabajo", + "status.sharedUnavailable": "Esta instalación no guarda diseños en el servidor", + "status.sketchCancelled": "Boceto cancelado", + "status.sketchImageSelected": "Imagen del boceto seleccionada", + "status.sketchMeasurementRemoved": "Medida del boceto eliminada", + "status.sketchRedo": "Rehecho en el boceto", + "status.sketchUndo": "Deshecho en el boceto", + "status.edgeRemoveChanged": "El objeto ha cambiado mientras se quitaba la operación de aristas; vuelve a intentarlo", + "status.groupChanged": "La escena ha cambiado mientras se agrupaba; selecciona los objetos y vuelve a intentarlo", + "status.intersectChanged": "La escena ha cambiado mientras se hacía la intersección; selecciona los objetos y vuelve a intentarlo", + "status.noPrintableSurface": "El objeto seleccionado no tiene ninguna superficie imprimible", + "status.onlyOnePart": "El objeto seleccionado es una sola pieza continua", + "status.meshTooDense": "Esta malla tiene {triangles} triángulos. El tratamiento de aristas admite {limit}; por encima, el núcleo tarda más de lo que merece la pena esperar. Si es una forma de la lista de formas, de momento usa sus propios ajustes. Si es una pieza importada, impórtala como STEP o guárdala antes con menos triángulos.", + "status.threadTooDense": "Una rosca se construye con {triangles} triángulos, demasiados para el tratamiento de aristas, que se detiene en {limit}. Así que añade la rosca después del tratamiento de aristas: primero achaflana o redondea el cuerpo y luego pon la rosca. El chaflán de la cabeza, en las propiedades, rompe el canto de la cabeza del tornillo sin dar este rodeo.", + "status.unlockImageDelete": "Desbloquea la imagen del boceto con L antes de eliminarla", + "status.unlockImageEdit": "Desbloquea la imagen del boceto con L antes de editarla", + "status.updatingRevolve": "Actualizando la vista previa de la revolución…", + "status.waitForPreview": "Espera a que haya una vista previa válida de las aristas antes de aplicar", + "status.deletedOne": "1 forma eliminada", + "status.deletedMany": "{count} formas eliminadas", + "status.cutTooComplex": "Esta geometría es demasiado compleja para el corte: {triangles} triángulos, y el límite es {limit}. Simplifica (diezma) la malla primero o sube el límite en los ajustes del espacio de trabajo.", + "status.groupNotMerged": "Agrupado, pero no fusionado en un solo sólido: juntas, las piezas tienen {triangles} triángulos, más que el límite de {limit}. Al exportar quedan solapadas, y los laminadores lo señalan como error (aristas no múltiples). Sube el límite en los ajustes del espacio de trabajo o simplifica la malla y vuelve a agrupar.", + "status.cutNotWatertightTooComplex": "Esta malla no es estanca y, con {triangles} triángulos, es demasiado compleja para el corte alternativo (límite {limit}). Repara o simplifica (diezma) la malla primero.", + "status.cutOne": "1 forma cortada", + "status.cutMany": "{count} formas cortadas", + "status.movedOne": "1 forma movida", + "status.movedMany": "{count} formas movidas", + "status.rotatedOne": "1 forma girada {angle}°", + "status.rotatedMany": "{count} formas giradas {angle}°", + "status.snappedOne": "1 forma ajustada a la cuadrícula de {grid} mm", + "status.snappedMany": "{count} formas ajustadas a la cuadrícula de {grid} mm", + "status.shownHiddenOne": "1 forma oculta mostrada", + "status.shownHiddenMany": "{count} formas ocultas mostradas", + "status.hiddenOnOpenOne": "Hay 1 forma oculta en este diseño", + "status.hiddenOnOpenMany": "Hay {count} formas ocultas en este diseño", + "status.hiddenOnOpenShow": "Mostrar todas", + "status.droppedToWorkplane": "Selección bajada al plano de trabajo", + "status.layFlatStart": "Apoyar sobre una cara: pasa el ratón por una cara de la selección (se ilumina) y haz clic en ella para apoyarla en el plano de trabajo", + "status.layFlatCancelled": "Apoyar sobre una cara: cancelado", + "status.mateStart": "Alinear caras: haz clic en una cara del cuerpo seleccionado", + "status.mateTarget": "Ahora haz clic en una cara de otro cuerpo", + "status.mateReady": "Las dos caras están elegidas", + "status.mateMissedSource": "Haz clic en una cara del cuerpo seleccionado", + "status.mateMissedTarget": "Haz clic en una cara de otro cuerpo", + "status.mateCancelled": "Alinear caras: cancelado", + "status.mateSelectOne": "Selecciona solo el cuerpo que debe moverse", + "status.mated": "Caras alineadas", + "status.layFlatMissed": "No has tocado ninguna cara de la selección: no se ha girado nada", + "status.laidFlat": "Apoyado sobre la cara", + "status.selectOneToWrap": "Selecciona un cuerpo para envolver", + "status.wrapTooWide": "{length} no caben alrededor de este cilindro: una vuelta completa son solo {circumference}. Usa un diámetro de al menos {diameter} o acorta el cuerpo.", + "status.wrapTooThick": "El cuerpo es más grueso que la mitad del diámetro y no cabe en la pared", + "status.wrapNeedsDiameter": "Escribe un diámetro", + "status.wrapNothing": "No hay nada que envolver en este cuerpo", + "status.wrappedAround": "Envuelto alrededor de un cilindro de {diameter} de diámetro", + "status.wrappedInward": "Envuelto hacia dentro de la pared de un cilindro de {diameter} de diámetro", + "status.mcpWrapped": "MCP ha envuelto un cuerpo alrededor de un cilindro", + "status.separatedParts": "{count} piezas separadas", + "status.separatedOutlines": "Separado en {count} cuerpos, uno por contorno; cada uno conserva su propio boceto", + "status.copiedOne": "1 forma copiada", + "status.copiedMany": "{count} formas copiadas", + "status.alignAnchor": "Ancla de alineación: {name} (bloqueado)", + "status.measured": "Medido: {value} mm", + "status.preparingEdges": "{kind}: preparando las aristas en el proceso CAD", + "status.removedFeature": "Eliminado: {label}", + "status.editingFeature": "{label} retirado: las aristas y el valor vuelven a estar puestos. Cámbialos y vuelve a aplicarlo.", + "status.selectOneSolid": "{kind}: selecciona un solo sólido", + "status.validatingFile": "Comprobando {name} antes de abrirlo como diseño nuevo", + "status.importCancelled": "Importación de {count} archivos cancelada porque el diseño ha cambiado", + "status.svgInvalid": "{reason}. Vuelve a importar el SVG original después de corregir sus contornos", + "status.mcpAligned": "MCP: ya estaba alineado ({label})", + + "status.exportedStepOne": "B-Rep STEP exportado con 1 cuerpo{skipNote}", + "status.exportedStepMany": "B-Rep STEP exportado con {count} cuerpos{skipNote}", + "status.importedFile": "Importado: {name}.", + "status.importedFiles": "{count} de {total} archivos importados.", + "status.importFailedList": "No importados: {details}{more}.", + "status.importFailedMore": " y {count} más", + "status.importColoredParts": "{name} tiene {count} colores y entra como {count} cuerpos, cada uno en su sitio y seleccionados juntos.", + "status.importObjectParts": "{name} contiene {objects} objetos y entra como {count} cuerpos, cada uno en su sitio y seleccionados juntos.", + "status.importSvgSkipped": "{count} forma(s) de {name} no se han podido convertir en sólido y se han dejado fuera. Une las piezas solapadas en el programa de dibujo, cierra los contornos y vuelve a guardar el SVG.", + "status.importObjNoMtl": "Faltan los colores de material de {name}: selecciona también su archivo .mtl o importa el ZIP completo.", + "status.importObjVertexColors": "{name} tiene un color propio en casi cada punto, un degradado como el de los escaneos y los modelos hechos con IA. layerling no puede mostrarlo y lo ha importado como un solo cuerpo de un único color.", + "status.importMtlAlone": "Un archivo .mtl solo contiene colores. Selecciónalo junto con su .obj.", + "status.importZipEmpty": "El ZIP no contiene ningún archivo que layerling pueda importar", + "status.importZipUnreadable": "No se ha podido abrir el ZIP", + "status.import3mfPainted": "Las caras de {name} se pintaron en el laminador; layerling no lee esa pintura y las piezas entran con el color de su filamento.", + "status.importUnsupported": "Este tipo de archivo no se puede importar", + "status.importUnreadable": "No se ha podido leer el archivo", + "status.importingFile": "Importando {index} de {total}: {name}{stepNote}", + "status.stepKernelNote": "… la primera importación STEP carga el núcleo OpenCascade (~22 MB)", + + "status.edgeNoUndoHistory": "Esta operación de aristas no tiene guardado ningún historial para deshacer", + "status.noEdgeFeature": "No hay ninguna operación de aristas que quitar", + "status.editingProfile": "Editando el perfil del boceto", + "status.editingInsetProfile": "Editando el contorno de la cara (margen {distance} mm, radio de esquina {radius} mm)", + "status.sketchProfileClosed": "Perfil cerrado: edita la trayectoria o termina el boceto", + "status.sketchSegmentAdded": "Segmento añadido al boceto", + "status.sketchPointSegmentAdded": "Punto y segmento añadidos al boceto", + "status.sketchPointAdded": "Punto añadido al boceto", + "status.sketchPrimitiveAdded": "Añadido al boceto: {shape}", + "status.sketchPointRemoved": "Punto del boceto eliminado", + "status.sketchLineRemoved": "Línea del boceto eliminada", + "status.sketchImageRemoved": "Imagen del boceto eliminada", + "status.sketchImageAdded": "Imagen {name} añadida al boceto", + "status.sketchSelectionRemoved": "Geometría seleccionada del boceto eliminada", + "status.sketchPointMoved": "Punto del boceto movido", + "status.sketchHandleAdjusted": "Tirador de curva ajustado", + "status.sketchMadeCorner": "Convertido en esquina", + "status.sketchLineCurved": "Línea curvada", + "status.sketchLineStraightened": "Línea enderezada", + "status.sketchLinesCurved": "{count} líneas curvadas", + "status.sketchLinesStraightened": "{count} líneas enderezadas", + "status.sketchMadeSmooth": "Convertido en curva suave", + "status.sketchHandlesSplit": "Tiradores de curva separados", + "status.sketchPointInserted": "Punto añadido a la trayectoria", + "status.editingRevolveProfile": "Editando el perfil de revolución", + "status.sketchCannotExtrude": "Este perfil del boceto no se puede extruir en 3D", + "status.sketchCannotRevolve": "Este perfil del boceto no se puede revolucionar en 3D", + "status.revolveStarted": "Boceto de revolución iniciado: dibuja a la izquierda del eje", + "status.sketchStarted": "Boceto iniciado: coloca el primer punto", + "status.sketchTool.line": "Línea: haz clic en puntos para dibujar segmentos rectos", + "status.sketchArcStraight": "Los tres puntos están en línea recta, así que ningún arco pasa por ellos", + "status.sketchArcAdded": "Arco añadido, radio {radius}", + "status.sketchTool.arc": "Arco: haz clic en los dos extremos y luego en un tercer punto por el que pase el arco", + "status.sketchTool.bezier": "Bézier: haz clic en los puntos y arrastra para estirar los tiradores de la curva", + "status.sketchTool.smooth": "Curva suave: haz clic en puntos para trazar una trayectoria fluida", + "status.sketchTool.rectangle": "Rectángulo: arrastra por el boceto para crear un rectángulo cerrado", + "status.sketchTool.circle": "Círculo: arrastra un recuadro para crear un círculo cerrado", + "status.sketchTool.ellipse": "Óvalo: arrastra un recuadro para crear un óvalo cerrado", + "status.sketchTool.halfCircle": "Semicírculo: arrastra un recuadro para crear un semicírculo cerrado", + "status.sketchTool.pieSlice": "Sector circular: arrastra un recuadro para crear un sector cerrado", + "status.sketchTool.boltCircle": "Círculo de orificios: arrastra un recuadro para crear un disco con orificios", + "status.sketchTool.triangle": "Triángulo: arrastra un recuadro para crear un triángulo cerrado", + "status.sketchTool.hexagon": "Hexágono: arrastra un recuadro para crear un hexágono cerrado", + "status.sketchTool.select": "Seleccionar: edita la geometría del boceto, haz clic dentro de un contorno cerrado para seleccionarlo entero, o coloca y escala imágenes de referencia", + "status.sketchTool.refine": "Añadir o quitar puntos: haz clic en un segmento para añadir un punto, o en un punto para quitarlo", + "status.sketchTool.erase": "Borrar: haz clic en un punto o un segmento para quitarlo", + "status.sketchTool.measure": "Medir: elige dos puntos", + "status.imageNotAdded": "No se ha podido añadir la imagen al boceto", + "status.revolveSettingsFailed": "No se han podido aplicar los ajustes de revolución", + "status.noteAdded": "Nota colocada", + "status.notePinned": "Nota fijada al objeto", + "status.noteRemoved": "Nota eliminada", + "status.pointsAdded": "{count} puntos de referencia colocados", + "status.pointsExist": "Estos puntos ya están marcados", + "status.pointRemoved": "Punto de referencia eliminado", + "status.pointsRemoved": "{count} puntos de referencia eliminados", + "status.alreadyWrapped": "Esta forma ya está envuelta alrededor de un cilindro. Deshaz el envoltorio o vuelve a empezar desde la forma plana.", + "status.noteLimitReached": "Un diseño admite como máximo {count} notas", + "status.noteMode": "Haz clic en un objeto o en el plano de trabajo para colocar una nota", + "status.notesHidden": "Notas ocultas", + "status.overhangsShown": "Rayado en rojo y blanco: caras en voladizo con más de {angle}° de inclinación, que necesitarían soportes. El ángulo se cambia en los ajustes.", + "status.overhangsHidden": "Voladizos ocultos", + "status.notesShown": "Notas visibles", + "status.nothingToUndo": "No hay nada que deshacer", + "status.undo": "Deshecho", + "status.redo": "Rehecho", + "status.undoWorkplaneBase": "Deshecho: el plano de trabajo vuelve a estar sobre la placa base", + "status.undoWorkplaneFace": "Deshecho: el plano de trabajo vuelve a estar sobre una cara", + "status.redoWorkplaneBase": "Rehecho: el plano de trabajo vuelve a estar sobre la placa base", + "status.redoWorkplaneFace": "Rehecho: el plano de trabajo vuelve a estar sobre una cara", + "status.historyViewOpened": "Mirando atrás. Desliza hasta un estado anterior; no cambia nada hasta que cierres la vista.", + "status.historyViewClosed": "De vuelta al estado actual", + "status.historyViewBlocksEdits": "Cierra la vista del historial antes de cambiar el diseño", + "status.historyViewEmpty": "Todavía no hay historial que mirar", + "status.finishBeforeHistory": "Termina la acción en curso antes de mirar atrás", + "status.historyProjectCreating": "Creando un diseño a partir de este estado…", + "status.historyProjectCreateFailed": "No se ha podido crear un diseño a partir de este estado", + "status.historyProjectUnavailable": "Desde aquí no se puede crear un diseño nuevo", + "historyView.title": "Historial", + "historyView.subtitle": "Mirar atrás sin cambiar nada", + "historyView.close": "Cerrar la vista del historial", + "historyView.slider": "Pasos de deshacer", + "historyView.earlier": "Estado anterior", + "historyView.later": "Estado posterior", + "historyView.position": "Estado {index} de {count}", + "historyView.objectsOne": "1 objeto", + "historyView.objectsMany": "{count} objetos", + "historyView.atCurrent": "el estado actual", + "historyView.stepsBackOne": "1 paso antes del estado actual", + "historyView.stepsBackMany": "{count} pasos antes del estado actual", + "historyView.stepsAheadOne": "1 paso después del estado actual (rehacer)", + "historyView.stepsAheadMany": "{count} pasos después del estado actual (rehacer)", + "historyView.export": "Exportar este estado", + "historyView.bringBack": "Traer al diseño", + "historyView.bringBackMany": "Traer {count} objetos al diseño", + "historyView.bringBackHint": "Añade al diseño una copia de los objetos seleccionados, tal como estaban en este estado", + "historyView.bringBackNothing": "Haz clic en un objeto de este estado para recuperarlo en el diseño (Mayús+clic para varios)", + "status.broughtBackOne": "Recuperado del estado de {time}: {name}", + "status.broughtBackOneNoTime": "Recuperado del estado {index}: {name}", + "status.broughtBackMany": "{count} objetos recuperados del estado de {time}", + "status.broughtBackManyNoTime": "{count} objetos recuperados del estado {index}", + "historyView.inside": "Dentro de {path}: solo para mirar y elegir; no cambia nada", + "historyView.backOut": "Salir", + "historyView.backOutHint": "Vuelve a cerrar este grupo y deja seleccionado el propio grupo", + "historyView.openGroup": "Abrir grupo", + "historyView.openGroupHint": "Mira dentro del grupo seleccionado para elegir sus piezas; no cambia nada", + "historyView.openGroupNothing": "Selecciona un grupo para mirar dentro", + "historyView.delete": "Eliminar historial", + "historyView.deleteHint": "Elimina para siempre todos los pasos anteriores; el diseño se queda en su estado actual", + "historyView.deleteNothing": "No hay pasos anteriores que eliminar", + "historyView.deleteTitle": "¿Eliminar todo el historial?", + "historyView.deleteBody": "El diseño se queda exactamente como está ahora. Todos los pasos anteriores se eliminan para siempre: ni Deshacer ni esta vista podrán volver atrás, y un archivo que guardes después no llevará historial.", + "historyView.deleteConfirm": "Eliminar historial", + "status.historyCleared": "Historial eliminado: el diseño se queda en su estado actual", + "historyView.createProject": "Nuevo diseño a partir de este estado", + "historyView.copyName": "{name} ({time})", + "historyView.lastStep": "Último paso", + "historyView.nextStep": "Paso siguiente", + "historyView.lastStepNone": "ninguno: es el estado más antiguo", + "historyView.nextStepNone": "ninguno: es el estado más reciente", + "historyStep.start": "Inicio del historial", + "historyStep.addedOne": "Añadido: {name}", + "historyStep.addedMany": "{count} objetos añadidos", + "historyStep.deletedOne": "Eliminado: {name}", + "historyStep.deletedMany": "{count} objetos eliminados", + "historyStep.grouped": "{count} objetos agrupados en {name}", + "historyStep.ungrouped": "Desagrupado: {name}", + "historyStep.splitOne": "Dividido en {count} objetos: {name}", + "historyStep.replaced": "{removed} objetos sustituidos por {added}", + "historyStep.movedOne": "Movido: {name}", + "historyStep.movedMany": "{count} objetos movidos", + "historyStep.rotatedOne": "Girado: {name}", + "historyStep.rotatedMany": "{count} objetos girados", + "historyStep.resizedOne": "Cambio de tamaño: {name}", + "historyStep.resizedMany": "Cambio de tamaño de {count} objetos", + "historyStep.colorOne": "Cambio de color: {name}", + "historyStep.colorMany": "Cambio de color de {count} objetos", + "historyStep.holeOne": "Convertido en orificio: {name}", + "historyStep.holeMany": "{count} objetos convertidos en orificios", + "historyStep.solidOne": "Convertido en sólido: {name}", + "historyStep.solidMany": "{count} objetos convertidos en sólidos", + "historyStep.renamedOne": "Cambio de nombre de {name} a {newName}", + "historyStep.mirroredOne": "Reflejado: {name}", + "historyStep.mirroredMany": "{count} objetos reflejados", + "historyStep.edgesOne": "Aristas cambiadas: {name}", + "historyStep.edgesMany": "Aristas cambiadas en {count} objetos", + "historyStep.roundedOne": "Aristas redondeadas: {name}", + "historyStep.roundedMany": "Aristas redondeadas en {count} objetos", + "historyStep.chamferedOne": "Aristas achaflanadas: {name}", + "historyStep.chamferedMany": "Aristas achaflanadas en {count} objetos", + "historyStep.hollowedOne": "Vaciado: {name}", + "historyStep.hollowedMany": "{count} objetos vaciados", + "historyStep.facesDeletedOne": "Caras eliminadas: {name}", + "historyStep.facesDeletedMany": "Caras eliminadas en {count} objetos", + "historyStep.groupOpened": "Grupo {name} abierto para editar sus piezas", + "historyStep.groupClosed": "Grupo {name} cerrado", + "historyStep.duplicatedOne": "Duplicado: {name}", + "historyStep.duplicatedMany": "{count} objetos duplicados", + "historyStep.copiesOf": "{count} copias de {name}", + "historyStep.hiddenOne": "Ocultado: {name}", + "historyStep.hiddenMany": "{count} objetos ocultados", + "historyStep.shownOne": "Mostrado: {name}", + "historyStep.shownMany": "{count} objetos mostrados", + "historyStep.lockedOne": "Bloqueado: {name}", + "historyStep.lockedMany": "{count} objetos bloqueados", + "historyStep.unlockedOne": "Desbloqueado: {name}", + "historyStep.unlockedMany": "{count} objetos desbloqueados", + "historyStep.editedOne": "Modificado: {name}", + "historyStep.editedMany": "{count} objetos modificados", + "historyStep.reordered": "Cambio en el orden de los objetos", + "historyStep.noteAdded": "Nota añadida", + "historyStep.noteRemoved": "Nota eliminada", + "historyStep.noteChanged": "Nota modificada", + "historyStep.pointAdded": "Punto de referencia añadido", + "historyStep.pointRemoved": "Punto de referencia eliminado", + "historyStep.pointChanged": "Punto de referencia movido", + "historyStep.workplane": "Plano de trabajo cambiado", + "historyStep.changed": "Diseño modificado", + "status.edgeCancelledUndo": "Tratamiento de aristas cancelado · Deshecho", + "status.edgeCancelledRedo": "Tratamiento de aristas cancelado · Rehecho", + "status.alignStart": "Alinear: elige un punto o haz clic en una forma seleccionada para anclarla", + "status.alignCancelled": "Alineación cancelada", + "status.alignAnchorSet": "Ancla de alineación fijada", + "status.alignAnchorNamed": "Ancla de alineación: {name}", + "status.mirrorStart": "Reflejar: elige una flecha de eje", + "status.mirrorCancelled": "Reflejar: cancelado", + "status.pivotPickStart": "Punto de giro: haz clic en una cara; una cara plana fija su centro, por ejemplo el eje del extremo de un tubo", + "status.pivotPickCancelled": "Fijación del punto de giro cancelada", + "status.pivotSet": "Punto de giro fijado: ahora la selección gira alrededor de este punto", + "status.pivotMissed": "No has tocado ningún cuerpo: el punto de giro no se ha fijado", + "status.pivotCleared": "Punto de giro quitado: se vuelve a girar alrededor del centro", + "array.title": "Patrón", + "array.subtitle": "Una fila o un círculo de copias", + "array.targetMany": "{count} formas", + "array.cancel": "Cancelar patrón", + "array.helpRow": "La selección se repite con una separación uniforme, a lo largo de X, Y y Z a la vez si quieres (una fila en diagonal, una escalera). Con una separación negativa, la fila va en sentido contrario en ese eje.", + "array.helpCircle": "La selección se reparte alrededor del centro. Una subida por copia forma una hélice; un cambio de radio, una espiral. Consejo: haz clic en una cara con «Fijar el punto de giro» y el centro quedará ahí.", + "array.helpCirclePivot": "La selección se reparte alrededor del centro, que es el punto de giro que has fijado.", + "array.mode": "Disposición", + "array.mode.row": "Fila", + "array.mode.circle": "Círculo", + "array.count": "Cantidad (con el original)", + "array.spacingX": "Separación X", + "array.spacingY": "Separación Y", + "array.spacingZ": "Separación Z (altura)", + "array.rise": "Subida por copia", + "array.radiusChange": "Cambio de radio por copia", + "array.angle": "Ángulo total", + "array.centerX": "Centro X", + "array.centerY": "Centro Y", + "array.rotateCopies": "Copias", + "array.rotateCopies.yes": "Girar con el círculo", + "array.rotateCopies.no": "Mantener orientación", + "array.apply": "Crear", + "status.arrayStart": "Patrón: ajusta la cantidad y la separación; la vista previa muestra las copias", + "status.arrayCancelled": "Patrón cancelado", + "status.arrayCreated": "Patrón creado: {count} copias", + "status.workplaneToolStart": "Nuevo plano de trabajo", + "status.workplaneToolCancelled": "Herramienta de plano de trabajo cancelada", + "status.workplaneFromFace": "Plano de trabajo colocado en la cara seleccionada", + "status.workplaneReset": "Plano de trabajo devuelto a la placa base", + "status.workplaneHidden": "Plano de trabajo oculto. Las formas nuevas se siguen colocando en él.", + "status.workplaneShown": "Plano de trabajo visible", + "status.workplaneUpdated": "Plano de trabajo actualizado", + "status.mcpSelectedOne": "MCP ha seleccionado 1 objeto", + "status.mcpSelectedMany": "MCP ha seleccionado {count} objetos", + "status.mcpCleared": "MCP ha anulado la selección", + "status.selectSolidBeforeExport": "Selecciona al menos una forma sólida antes de exportar", + "status.addSolidBeforeExport": "Añade una forma sólida antes de exportar", + "status.exportedSelectedOne": "1 forma seleccionada exportada", + "status.exportedSelectedMany": "{count} formas seleccionadas exportadas", + "status.exportedSelectedAs": "{selected} como {label}", + "status.exportedAs": "Exportado como {label}", + "status.exportHiddenSkippedOne": " (1 pieza oculta no incluida)", + "status.exportHiddenSkippedMany": " ({count} piezas ocultas no incluidas)", + "status.exportOnlyHidden": "Todas las piezas que se van a exportar están ocultas. Muéstralas para exportarlas.", + "status.exportFailed": "No se ha podido exportar como {label}", + "status.exportFileFailed": "No se ha podido escribir en {name}. Puede que esté abierto en otro programa; la próxima exportación STL volverá a pedir un archivo.", + "status.stlSavedToFile": "STL guardado en {name}. Las próximas exportaciones STL de este diseño sobrescribirán este archivo, salvo que uses Guardar como en la ventana de exportación.", + "status.exportUnioned": "Guardado como {label}: se han fusionado {count} cuerpos solapados", + "status.exportUnionFailed": "No se han podido fusionar los cuerpos solapados: van por separado en el archivo", + "status.exportSplinters": "Fuera del archivo: {count} trocitos sueltos que había dejado un corte.", + "status.dismiss": "Cerrar mensaje", + "export.drawing.label": "Plano", + "export.drawing.description": "Alzado, planta y perfil derecho con las cotas generales y la posición de los orificios circulares, a escala 1:1.", + "export.drawing.note": "Descarga un SVG o un PDF vectorial. La hoja crece hasta que cabe el diseño; imprímela al 100 % (tamaño real). Las tablas de orificios recogen los orificios redondos alineados con los ejes; los orificios inclinados, las roscas, las profundidades y las tolerancias no se acotan automáticamente.", + "export.drawing.fileFormat": "Formato de archivo del plano", + "status.buildingDrawing": "Generando el plano…", + "status.exportedDrawing": "Plano 1:1 exportado como {format}", + "status.drawingHoleCutFailed": "No se han podido cortar todos los orificios para el plano. Comprueba la geometría de los orificios antes de exportar.", + "status.drawingFailed": "No se ha podido exportar el plano", + "export.drawing.short": "2D", + "drawing.front": "Alzado", + "drawing.top": "Planta", + "drawing.right": "Perfil derecho", + "drawing.bores": "ORIFICIOS CIRCULARES — posiciones desde la esquina inferior izquierda de cada vista (mm)", + "drawing.id": "ID", + "drawing.view": "Vista", + "drawing.diameter": "Diámetro", + "drawing.firstAngle": "PRIMER DIEDRO", + "drawing.customSheet": "FORMATO PERSONALIZADO", + "drawing.revision": "PLANO / REVISIÓN", + "drawing.drawnBy": "DIBUJADO POR / FECHA", + "drawing.scale": "ESCALA", + "drawing.units": "COTAS EN", + "drawing.sheet": "HOJA", + "drawing.notes": "NOTAS", + "drawing.note1": "Imprimir al 100 % (tamaño real).", + "drawing.note2": "Geometría nominal obtenida de la malla.", + "drawing.note3": "Solo orificios paralelos a los ejes de las vistas.", + "drawing.note4": "Las roscas, profundidades y tolerancias", + "drawing.note5": "no se acotan automáticamente.", + "error.drawingTooManyHoles": "Este plano tendría más de 200 orificios circulares. Elige una pieza más pequeña.", + "error.drawingTooLarge": "El plano a escala 1:1 mediría más de 5080 mm. Elige una pieza más pequeña.", + "error.drawingTooManyTriangles": "Las vistas de un plano admiten hasta {limit} triángulos, y estas tienen {count}. Elige menos objetos o más sencillos.", + "error.drawingTooManyEdges": "Una vista tiene demasiadas aristas para el plano. Elige menos objetos o más sencillos.", + "error.drawingNoGeometry": "Esta vista no tiene geometría sólida.", + "status.exportStepFailed": "No se ha podido exportar a STEP", + "status.exportStepNothing": "Aquí no hay nada que se pueda escribir como STEP: usa STL", + "status.exportStepSkippedList": " · no incluido en el STEP: {list}", + "status.exportStepSkippedItem": "«{name}» ({reason})", + "status.exportStepSkippedMore": " y {count} más", + "status.exportStepSkip.twist": "esta torsión aún no tiene una forma exacta", + "status.exportStepSkip.deform": "esta deformación aún no tiene una forma exacta", + "status.exportStepSkip.mesh": "una malla sin origen CAD; las piezas importadas como STEP sí se incluyen", + "status.exportStepSkip.oval": "base ovalada sin forma exacta", + "status.exportStepSkip.hole": "orificio sin forma exacta, sin cortar", + "status.exportStepSkip.holeCut": "no se han podido cortar los orificios; el cuerpo se ha exportado sin ellos", + "status.exportStepSkip.failed": "el núcleo CAD no ha podido construirlo", + "status.exportStepSkip.noExact": "sin forma exacta", + "status.packagingShared": "Empaquetando el diseño para el servidor…", + "status.serverSaved": "Guardado en el servidor", + "status.serverSaveRetry": "Ahora mismo no se ha podido guardar en el servidor; se volverá a intentar.", + "status.sharedNoProject": "Abre un diseño antes de guardarlo en el servidor", + "status.serverSaveStopped": "Guardado automático detenido: el diseño ha cambiado en el servidor. Vuelve a cargarlo o guárdalo con otro nombre.", + "status.packagingProject": "Empaquetando el diseño editable, el historial y los recursos sin duplicados…", + "status.savedProject": "Diseño editable de layerling guardado (.lyl)", + "status.savedToFile": "Guardado en {name}", + "status.saveFileFailed": "No se ha podido escribir en {name}. Vuelve a elegir el archivo con Exportar, Guardar como.", + "status.fileNotWritable": "No tienes permiso para cambiar {name}. Vuelve a elegir el archivo con Exportar, Guardar como.", + "status.saveProjectFailed": "No se ha podido guardar el diseño de layerling", + "status.importNoneFailed": "No se ha podido importar ninguno de los {total} archivos seleccionados.{summary}", + "status.sketchSelectedOne": "1 elemento del boceto seleccionado", + "status.sketchSelectedMany": "{count} elementos del boceto seleccionados", + "status.sketchSelectionCleared": "Selección del boceto anulada", + + "status.cruisePlace": "Haz clic para colocar {name}. Esc para cancelar.", + "status.carryPlace": "La selección sigue al puntero: sobre un cuerpo, se apoya en la cara de debajo. Haz clic para posarla; Esc para cancelar.", + "status.carryCancelled": "Posar sobre una cara: cancelado", + "status.dragCancelled": "Cancelado: todo vuelve a estar como antes", + "status.carryPlaced": "{count} pieza(s) posada(s) sobre la cara", + "status.cruiseCancelled": "Colocación cancelada", + "status.shapeAdded": "Añadido: {name}", + "status.shapeAddedMcp": "Añadido por MCP: {name}", + "status.shapeImportedMcp": "Importado por MCP: {name}", + "status.shapeUpdatedMcp": "Actualizado por MCP: {name}", + "status.shapeLocked": "Bloqueado: «{name}»", + "status.shapeUnlocked": "Desbloqueado: «{name}»", + "status.shapeHidden": "Ocultado: «{name}»", + "status.shapeShown": "Mostrado: «{name}»", + "status.alignedOne": "1 forma alineada: {alignment}", + "status.alignedMany": "{count} formas alineadas: {alignment}", + "status.duplicatedOne": "1 forma duplicada", + "status.duplicatedMany": "{count} formas duplicadas", + "status.groupedMany": "{count} formas agrupadas", + "status.cutLeftOpen": "Cortado, pero la cara de corte ha quedado abierta: la superficie de esta pieza tiene huecos ({count} aristas abiertas) y layerling no ha podido cerrarla. Si importas la pieza como STL o 3MF, puede que la malla quede cerrada.", + "status.bundledMany": "Conjunto de {count} formas: se mueven juntas y conservan su color y su tipo", + "status.selectTwoToBundle": "Selecciona al menos dos formas para crear un conjunto", + "status.bundleNotOneBody": "Un conjunto no es un solo cuerpo. Agrúpalo (Ctrl+G) o trabaja con sus piezas una a una (E lo abre).", + "status.intersectedMany": "Intersección de {count} formas", + "status.mcpAlignedOne": "MCP ha alineado 1 objeto: {alignment}", + "status.mcpAlignedMany": "MCP ha alineado {count} objetos: {alignment}", + "status.mcpDeletedOne": "MCP ha eliminado 1 objeto", + "status.mcpDeletedMany": "MCP ha eliminado {count} objetos", + "status.mcpGrouped": "MCP ha agrupado {count} objetos", + "status.mcpBundled": "MCP ha creado un conjunto con {count} objetos", + "status.mcpSeparated": "MCP ha separado {count} piezas", + "status.mcpUngroupedOne": "MCP ha desagrupado 1 grupo", + "status.mcpUngroupedMany": "MCP ha desagrupado {count} grupos", + "status.mirroredOne": "1 forma reflejada: {axis}", + "status.mirroredMany": "{count} formas reflejadas: {axis}", + "status.pastedOne": "1 forma pegada", + "status.pastedMany": "{count} formas pegadas", + "status.ungroupedOne": "1 grupo desagrupado", + "status.ungroupedEdgesTakenBack": "Desagrupado tras retirar las operaciones de aristas (Ctrl+Z las recupera)", + "status.ungroupedMany": "{count} grupos desagrupados", + "status.exactSketchCreated": "Boceto exacto creado a 10 mm de altura", + "status.groupedHoleConsumed": "Agrupado: el orificio ha eliminado todo el sólido", + "status.intersectionEmpty": "La intersección está vacía", + "status.mcpBooleanCut": "Corte booleano de MCP completado", + "status.mcpCutConsumed": "El corte de MCP ha eliminado todo el sólido", + "status.mcpGroupConsumed": "El agrupado de MCP ha eliminado todo el sólido", + "status.insertedDesign": "{count} cuerpos insertados desde {name}", + "status.insertDesignEmpty": "{name} no tiene cuerpos que insertar", + "status.insertDesignFailed": "No se ha podido insertar {name}", + "status.revolveUpdated": "Revolución actualizada", + "status.filletedOne": "1 arista redondeada", + "status.filletedMany": "{count} aristas redondeadas", + "status.chamferedOne": "1 arista achaflanada", + "status.chamferedMany": "{count} aristas achaflanadas", + "status.chamfilletedOne": "1 arista con chaflán redondeado", + "status.chamfilletedMany": "{count} aristas con chaflán redondeado", + "status.filletedMcpOne": "1 arista redondeada por MCP", + "status.filletedMcpMany": "{count} aristas redondeadas por MCP", + "status.chamferedMcpOne": "1 arista achaflanada por MCP", + "status.chamferedMcpMany": "{count} aristas achaflanadas por MCP", + + "inspector.selectionTitle": "{count} piezas seleccionadas", + "inspector.selectionMixed": "Mezcla: con un clic, todas pasan a ser sólidos u orificios.", + "inspector.selectionMixedColors": "varios", + "inspector.gearPair": "Par de engranajes: distancia entre centros de {distance} mm para que engranen. Ahora sus centros están a {current} mm.", + "inspector.gearPairMismatch": "Estos engranajes no engranan: módulo {a} y módulo {b}. Pon el mismo módulo a los dos.", + "inspector.gearPairInternal": "Corona interior y piñón: distancia entre centros de {distance} mm para que engranen. Ahora sus centros están a {current} mm.", + "inspector.gearPairFit": "Con un módulo de {module} engranarían donde están ahora.", + "inspector.gearPairFitApply": "Ajustar el módulo de ambos", + "inspector.gearPairFitHint": "Cambia el tamaño de los dos engranajes a este módulo para que engranen donde están. Los dientes, la altura y el orificio central se mantienen.", + "status.gearPairFitted": "Los dos engranajes tienen ahora módulo {module}.", + "inspector.selectionHint": "El color, sólido u orificio y el bloqueo se aplican a todas las piezas seleccionadas. Las medidas se cambian en una sola pieza, con los tiradores o con Escalar en porcentaje (clic derecho).", + "inspector.shapeMode": "Tipo de forma", + "inspector.solid": "Sólido", + "inspector.hole": "Orificio", + "inspector.transparent": "Transparente", + "inspector.multicolor": "Multicolor", + "inspector.settingsFor": "Ajustes de {name}", + "inspector.expand": "Desplegar ajustes", + "inspector.minimize": "Contraer ajustes", + "inspector.moveHint": "Arrastra para moverlo; suéltalo en el borde derecho o haz doble clic para volver a acoplarlo", + "inspector.editSketch": "Editar boceto", + "inspector.shapeColor": "Color de la forma", + "inspector.color": "Color", + "inspector.customColor": "Color personalizado", + "export.png.description": "Imagen de la vista", + "export.png.note": "Guarda la vista tal como está ahora como imagen al doble de resolución, sin tiradores, marcos de selección ni medidas. Va bien para publicar en foros o en webs de impresión, o para hacer una consulta. Antes, gira y haz zoom hasta que la imagen quede bien.", + "export.png.scope": "Vista", + "export.png.plate": "Mostrar la cama", + "export.png.transparent": "Fondo transparente", + "status.imageSaved": "Vista guardada como imagen", + "status.imageFailed": "No se ha podido crear la imagen de la vista", + "inspector.recentColors": "Usados recientemente", + "inspector.keptColors": "Guardados", + "inspector.keepColor": "Guardar este color", + "inspector.unkeepColor": "Quitar este color de los guardados", + "inspector.keptFull": "Hay 21 colores guardados; quita uno primero", + "contextMenu.label": "Comandos para la selección", + "contextMenu.paste": "Pegar", + "contextMenu.selectAll": "Seleccionar todo", + "contextMenu.selectMultiple": "Seleccionar varios", + "status.selectMultipleStart": "Seleccionar varios: toca cuerpos para añadirlos o quitarlos. Toca un espacio vacío o pulsa Esc para terminar.", + "status.selectMultipleEnd": "Selección múltiple terminada", + "contextMenu.showHidden": "Mostrar todo lo oculto", + "contextMenu.toHole": "Convertir en orificio", + "contextMenu.toSolid": "Convertir en sólido", + "contextMenu.group": "Agrupar", + "contextMenu.ungroup": "Desagrupar", + "contextMenu.hide": "Ocultar", + "contextMenu.lock": "Bloquear", + "contextMenu.unlock": "Desbloquear", + "contextMenu.drop": "Bajar al plano de trabajo", + "contextMenu.carry": "Posar sobre una cara", + "contextMenu.simplify": "Simplificar malla…", + "contextMenu.markCenter": "Marcar el centro", + "contextMenu.markCorners": "Marcar las esquinas", + "contextMenu.markMidpoints": "Marcar los puntos medios de las aristas", + "contextMenu.removeAllPoints": "Eliminar todos los puntos de referencia ({count})", + "contextMenu.deleteKey": "Supr", + "inspector.custom": "Personalizado", + "inspector.wrapCylinder": "Envolver alrededor de un cilindro", + "inspector.wrapDiameter": "Diámetro", + "inspector.wrapInward": "Hacia dentro (grabado)", + "inspector.wrapHint": "Lo que está tumbado en la placa se pone de pie en la pared: de izquierda a derecha da la vuelta al cilindro y el borde trasero pasa a ser la parte de arriba. Después, céntralo en el cilindro.", + "inspector.wrapInwardHint": "El grosor se mete en la pared. Si lo conviertes en orificio y lo centras, graba un cilindro de este diámetro.", + "inspector.wrapApply": "Envolver", + "simplify.title": "Simplificar malla", + "simplify.showTriangles": "Mostrar triángulos", + "simplify.before": "Antes · {count} triángulos", + "simplify.after": "Después · {count} triángulos", + "simplify.working": "Después · calculando…", + "simplify.hint": "Arrastra con el botón derecho para girar, gira la rueda para hacer zoom y arrastra con el botón central para mover. Las dos vistas se mueven a la vez.", + "simplify.groupNote": "Este cuerpo es el resultado de un grupo. Al simplificarlo solo se conserva su malla: ya no podrás usar Editar grupo ni recuperar sus piezas originales.", + "simplify.keep": "Conservar", + "simplify.keepPercent": "Porcentaje de triángulos que se conservan", + "simplify.targetTriangles": "Número de triángulos que se conservan", + "simplify.triangles": "triángulos", + "simplify.apply": "Simplificar", + "status.meshSimplified": "Simplificada de {before} a {after} triángulos", + "status.mcpSimplified": "MCP ha simplificado una malla", + "status.selectOneMeshToSimplify": "Selecciona una malla importada para simplificarla", + "inspector.separateParts": "Separar piezas", + "inspector.makeEllipse": "Convertir en elipse", + "inspector.makeEllipseHint": "Un cilindro siempre es redondo. Como elipse es el mismo cuerpo, con una longitud y una anchura que ajustas por separado.", + "inspector.separatedPartName": "{name}, pieza {index}", + "inspector.keepProportions": "Mantener proporciones", + "inspector.properties": "Propiedades", + "inspector.resetProperty": "Volver al valor predeterminado", + "inspector.saveDefaults": "Guardar como predeterminado", + "inspector.saveDefaultsHint": "Las formas nuevas de este tipo empiezan con estos valores (igual que Valores iniciales de las formas, en los ajustes).", + "inspector.resetDefaults": "Restablecer predeterminados", + "inspector.resetDefaultsHint": "Vuelve a los valores iniciales de la aplicación para este tipo de forma.", + "inspector.position": "Posición", + "inspector.rotation": "Rotación", + "inspector.pivot": "Punto de giro", + "inspector.pivotRemove": "Quitar", + "inspector.taper": "Estrechamiento", + "inspector.twist": "Torsión e inclinación", + "inspector.teeth": "Dientes", + "inspector.helix": "Hélice", + "inspector.snapGrid": "Cuadrícula de ajuste", + "inspector.unitsSwitch": "Unidad: milímetros o pulgadas", + "inspector.objectSnap": "Ajustar a formas", + "inspector.objectSnapHint": "Las aristas y los centros se ajustan a otras formas. Mantén pulsada Alt mientras arrastras para desactivarlo un momento.", + "inspector.gearType": "Tipo de engranaje", + "gear.spur": "Engranaje recto", + "gear.helical": "Engranaje helicoidal", + "gear.herringbone": "Engranaje en espiga", + "gear.bevel": "Engranaje cónico", + "gear.profileInvolute": "Evolvente", + "gear.profileSimple": "Simple", + "gear.involuteHint": "Circunferencia primitiva de {pitch} mm. Engrana con cualquier engranaje de módulo {module}; distancia entre centros = (dientes + dientes) × módulo / 2.", + "gear.profileRound": "Redondo", + "gear.roundHint": "Dientes redondos hechos de arcos, que perdonan errores al imprimir engranajes pequeños y dan un agarre suave en los pomos. Circunferencia primitiva de {pitch} mm. Engrana con cualquier engranaje redondo de módulo {module}; distancia entre centros = (dientes + dientes) × módulo / 2.", + "gear.simpleHint": "Dientes rectos, solo de adorno. Para que dos engranajes engranen bien, elige Evolvente.", + "gear.internal": "Corona interior", + "gear.rack": "Cremallera", + "gear.internalHint": "Dientes hacia dentro. Circunferencia primitiva de {pitch} mm. Dentro gira un engranaje de módulo {module}; distancia entre centros = (dientes − sus dientes) × módulo / 2.", + "gear.internalRoundHint": "Dientes redondos hacia dentro. Circunferencia primitiva de {pitch} mm. Dentro gira un engranaje redondo de módulo {module}; distancia entre centros = (dientes − sus dientes) × módulo / 2.", + "gear.rackHint": "Paso de {pitchLength} mm por diente; la longitud es dientes × paso. Un engranaje de módulo {module} rueda sobre ella: su centro queda a sus dientes × módulo / 2 por delante de la línea primitiva, que está {offset} mm por detrás de las puntas de los dientes.", + "gear.rackRoundHint": "Dientes redondos, paso de {pitchLength} mm por diente; la longitud es dientes × paso. Un engranaje redondo de módulo {module} rueda sobre ella: su centro queda a sus dientes × módulo / 2 por delante de la línea primitiva, que está {offset} mm por detrás de las puntas de los dientes.", + "inspector.threadRole": "Tipo", + "inspector.threadHead": "Cabeza", + "inspector.thread": "Rosca", + "thread.rod": "Varilla roscada", + "thread.screw": "Tornillo", + "thread.nut": "Tuerca", + "thread.bore": "Orificio roscado", + "thread.headCylinder": "Cilíndrica", + "thread.headCountersunk": "Avellanada", + "thread.headHex": "Hexagonal", + "thread.right": "A derechas", + "thread.left": "A izquierdas", + "thread.profileV": "Triangular (ISO)", + "thread.profileTrapezoidal": "Trapezoidal", + "thread.profileRound": "Redonda", + "thread.profileWhitworth": "Whitworth (55°)", + "thread.profileCustom": "Personalizada (trapecio)", + "thread.customSize": "Personalizado", + "thread.group.metric": "M – métrica, paso grueso", + "thread.group.UNC": "UNC – pulgadas EE. UU., paso grueso", + "thread.group.UNF": "UNF – pulgadas EE. UU., paso fino", + "thread.group.G": "G – rosca gas (tubería)", + "thread.hint.metric": "Rosca métrica ISO de paso grueso (ISO 261), como la de los tornillos y tuercas normalizados.", + "thread.hint.UNC": "Por ejemplo, el tornillo de cámara y trípode 1/4\"-20 (ISO 1222); las rótulas de trípode más grandes, 3/8\"-16.", + "thread.hint.UNF": "Los mismos diámetros que UNC, con un paso más fino (ASME B1.1).", + "thread.hint.G": "Por ejemplo, manguera de ducha G1/2, lavadora G3/4, grifo de jardín para el conector rápido G3/4 (pequeño G1/2).", + "shape.box": "Caja", + "shape.roundedBox": "Caja redondeada", + "shape.cylinder": "Cilindro", + "shape.slot": "Cápsula", + "shape.ellipse": "Elipse", + "shape.sphere": "Esfera", + "shape.cone": "Cono", + "shape.pyramid": "Pirámide", + "shape.wedge": "Cuña", + "shape.text": "Texto", + "shape.nameTag": "Placa con nombre", + "shape.roundRoof": "Tejado redondo", + "shape.halfSphere": "Semiesfera", + "shape.torus": "Toroide", + "shape.tube": "Tubo", + "shape.bentTube": "Tubo curvado", + "shape.loft": "Recubrimiento", + "shape.star": "Estrella", + "shape.heart": "Corazón", + "shape.crescent": "Media luna", + "shape.gear": "Engranaje", + "shape.honeycomb": "Panal", + "shape.hinge": "Bisagra", + "shape.knurl": "Moleteado", + "shape.dovetail": "Cola de milano", + "shape.teardrop": "Orificio en lágrima", + "shape.counterbore": "Escariado", + "shape.countersink": "Avellanado", + "shape.doubleCountersink": "Doble avellanado", + "shape.thread": "Rosca", + "shape.spring": "Muelle", + "shape.gridfinity": "Gridfinity", + "shape.polygon": "Polígono", + "shape.ruler": "Regla", + "shape.group": "Grupo", + "shape.bundle": "Conjunto", + "inspector.bundleNote": "Un conjunto solo mantiene unidas sus piezas: cada una conserva su color y su tipo, los orificios no cortan nada y, al exportar, cada pieza es un cuerpo independiente. E lo abre para editarlo; Ctrl+Mayús+G lo deshace.", + "shape.intersection": "Intersección", + "shape.importedMesh": "Malla importada", + "shape.sketchExtrusion": "Cuerpo de boceto", + "shape.sketchRevolve": "Cuerpo de revolución", + "shape.threadMenu": "Rosca\nTornillo\nTuerca", + "shape.basicShapes": "Formas", + "shapeMenu.moveHint": "Arrastra la barra de título para mover este panel; haz doble clic en ella para devolverlo bajo su botón", + "shapeMenu.keepOpen": "Mantener abierto al colocar formas", + "shapeMenu.keepOpenOn": "Sigue abierto hasta que lo desfijes", + "shapeMenu.resize": "Cambiar tamaño de la biblioteca de formas", + "shapeMenu.resizeHint": "Arrastra un borde o una esquina para cambiar el tamaño; con doble clic vuelve al original. Cuando es estrecha, solo quedan las imágenes", + "myShapes.title": "Formas personalizadas", + "myShapes.basicShapes": "Formas básicas", + "myShapes.saveSelection": "Guardar selección", + "myShapes.saveSelectionHint": "Guarda aquí los cuerpos seleccionados para volver a insertarlos en cualquier diseño", + "myShapes.selectFirst": "Selecciona primero los cuerpos que quieres guardar", + "myShapes.nameLabel": "Nombre", + "myShapes.defaultName": "Forma personalizada", + "myShapes.empty": "Selecciona uno o varios cuerpos y elige «Guardar selección». Aquí te esperan para cualquier diseño.", + "myShapes.insertHint": "Haz clic para insertarla o arrástrala al plano de trabajo", + "myShapes.deleteConfirm": "¿Eliminar?", + "myShapes.backup": "Copia de seguridad de las formas", + "myShapes.backupHint": "Haz una copia de seguridad de las formas personalizadas de este navegador: todas en un archivo ZIP, para otro navegador u ordenador", + "myShapes.load": "Cargar formas", + "myShapes.loadHint": "Carga formas en este navegador: desde un ZIP de copia de seguridad o desde diseños .lyl", + "myShapes.onServer": "En el servidor", + "myShapes.inBrowser": "En este navegador", + "myShapes.locationLabel": "Dónde guardarla", + "myShapes.groupEmpty": "Todavía ninguna", + "myShapes.moveToServer": "Subir al servidor", + "myShapes.newFolder": "Carpeta nueva", + "myShapes.newFolderHint": "Crea una carpeta para ordenar las formas personalizadas", + "myShapes.folderNameLabel": "Nombre de la carpeta", + "myShapes.createFolder": "Crear", + "myShapes.folderLabel": "Carpeta", + "myShapes.noFolder": "Sin carpeta", + "myShapes.moveToFolder": "Mover a carpeta", + "myShapes.renameFolder": "Cambiar nombre de la carpeta", + "myShapes.deleteFolder": "Eliminar carpeta", + "myShapes.deleteFolderConfirm": "¿Eliminar con su contenido ({count})?", + "myShapes.folderEmpty": "Esta carpeta está vacía", + "myShapes.newSubfolder": "Carpeta nueva dentro", + "status.myShapeSaved": "«{name}» guardada en las formas personalizadas de este navegador", + "status.myShapeSavedServer": "«{name}» guardada en las formas personalizadas del servidor", + "status.myShapeMovedToServer": "«{name}» ya está en el servidor", + "status.myShapeFolderCreated": "Carpeta «{name}» creada", + "status.myShapeFolderDeleted": "Carpeta «{name}» eliminada con sus formas", + "status.myShapeMovedToFolder": "«{name}» movida a «{folder}»", + "status.myShapeMovedOutOfFolder": "«{name}» ya no está en ninguna carpeta", + "status.myShapeNameTakenInFolder": "Ya hay una forma personalizada llamada «{name}» en «{folder}»; cambia antes el nombre de una de las dos", + "status.myShapeNameTaken": "Ya hay una forma personalizada llamada «{name}» en el servidor; elige otro nombre", + "status.myShapeGone": "Esta forma ya no existe; se ha actualizado la lista", + "status.myShapeInserted": "«{name}» insertada", + "status.myShapeDeleted": "«{name}» quitada de las formas personalizadas", + "status.myShapesNoneToBackUp": "Todavía no hay formas de las que hacer una copia de seguridad", + "status.myShapesBackedUp": "Copia de seguridad de {count} formas hecha", + "status.myShapesLoaded": "{count} formas añadidas a las formas personalizadas", + "status.myShapesLoadedSkipped": "{count} formas añadidas a las formas personalizadas; {skipped} ya estaban", + "status.myShapesLoadFailed": "{count} formas añadidas; no se han podido leer: {names}", + "prop.length": "Longitud", + "prop.width": "Anchura", + "prop.height": "Altura", + "prop.textHeightHint": "Grosor, desde la placa hacia arriba", + "prop.bevel": "Bisel", + "prop.topRadius": "Radio superior", + "prop.baseRadius": "Radio inferior", + "prop.thickness": "Grosor", + "prop.outerDiameter": "Diámetro exterior", + "prop.innerDiameter": "Diámetro interior", + "prop.toothSize": "Tamaño del diente", + "prop.toothWidth": "Anchura del diente", + "prop.gearProfile": "Forma del diente", + "prop.gearModule": "Módulo (mm)", + "prop.gearPressureAngle": "Ángulo de presión", + "prop.gearBacklash": "Juego", + "prop.gearRim": "Llanta", + "prop.centerHole": "Orificio central", + "prop.topLength": "Longitud superior", + "prop.loftBottomOutline": "Contorno inferior", + "prop.loftTopOutline": "Contorno superior", + "prop.loftBottomWidth": "Anchura inferior", + "prop.loftBottomDepth": "Longitud inferior", + "prop.loftTopWidth": "Anchura superior", + "prop.loftTopDepth": "Longitud superior", + "prop.loftBottomCorner": "Radio de esquina inferior", + "prop.loftTopCorner": "Radio de esquina superior", + "prop.loftBottomSides": "Esquinas inferiores", + "prop.loftTopSides": "Esquinas superiores", + "prop.loftOffsetX": "Desplazamiento superior en anchura", + "prop.loftOffsetZ": "Desplazamiento superior en longitud", + "prop.loftWall": "Grosor de pared (0 = macizo)", + "prop.loftSmooth": "Transición suave (%)", + "loft.smoothHint": "0 es un estrechamiento recto, como un cono. 100 da una curva en S: los lados salen rectos hacia arriba por ambos extremos y cambian de tamaño entre medias, como un adaptador de manguera que se ensancha suavemente de un tubo estrecho a uno ancho.", + "prop.loftTwist": "Torsión", + "prop.sketchFill": "Relleno", + "prop.sketchFill.area": "Superficie", + "prop.sketchFill.outside": "Trazo exterior", + "prop.sketchFill.inside": "Trazo interior", + "prop.sketchFill.center": "Trazo centrado", + "prop.sketchFill.grow": "Más ancho", + "prop.sketchFill.shrink": "Más estrecho", + "prop.sketchFill.shrinkHint": "La forma rellena, con el contorno desplazado hacia dentro el ancho de la línea por todos lados: una holgura de ajuste, o una pared interior cortada del mismo boceto.", + "prop.sketchFill.growHint": "La forma rellena, ensanchada el ancho de la línea por todos lados: una capa base bajo un texto o un logotipo para una impresión multicolor.", + "nameTag.title": "Placa con nombre", + "nameTag.defaultText": "Nombre", + "nameTag.makeLayers": "Crear capas", + "nameTag.makeLayersHint": "Convierte el texto en una placa con nombre: las letras arriba y, debajo, capas de colores, cada una un poco más ancha.", + "nameTag.cardHint": "Las letras arriba; cada fila de debajo es una capa con su propio color. Cada cambio se ve al momento.", + "nameTag.letterSize": "Tamaño de letra", + "nameTag.letterSizeHint": "Altura de las mayúsculas sobre la placa, vistas desde arriba.", + "nameTag.layers": "Capas", + "nameTag.addLayer": "Añadir una capa abajo", + "nameTag.removeLayer": "Quitar la capa de abajo", + "nameTag.color": "Color", + "nameTag.wider": "Ensanche ({unit})", + "nameTag.height": "Altura ({unit})", + "nameTag.noHoles": "Sin huecos", + "nameTag.corners": "Esquinas", + "nameTag.corner.round": "Redondas", + "nameTag.corner.bevel": "Biseladas", + "nameTag.corner.miter": "En punta", + "nameTag.letterEdge": "Aristas de las letras", + "nameTag.edge.none": "Ninguna", + "nameTag.edge.round": "Redondeadas", + "nameTag.edge.chamfer": "Achaflanadas", + "nameTag.letterEdgeSize": "Tamaño de arista", + "nameTag.keyring": "Orificio para llavero", + "nameTag.keyringDiameter": "Diámetro del orificio", + "nameTag.keyringSide": "Lado", + "nameTag.side.left": "Izquierda", + "nameTag.side.right": "Derecha", + "nameTag.side.top": "Arriba", + "nameTag.keyringAlong": "Posición a lo largo del lado", + "nameTag.keyringAlongHint": "Mueve la lengüeta hacia arriba o hacia abajo a lo largo de su lado, por ejemplo hasta una letra que sobresale más. 0 es el centro.", + "nameTag.keyringAlongHintTop": "Mueve la lengüeta a izquierda o derecha a lo largo del borde superior. 0 es el centro.", + "nameTag.side.free": "Libre", + "nameTag.side.freeHint": "Pone el orificio para llavero en una lengüeta propia junto a la placa: muévela y gírala como cualquier forma, y después fíjala a la placa donde esté.", + "nameTag.keyringTab": "Lengüeta del llavero", + "nameTag.keyringTabFix": "Fijar a la placa", + "nameTag.keyringTabFixHint": "Hace que la lengüeta forme parte de la placa más cercana, donde está ahora: el orificio atraviesa todas las capas y la lengüeta sigue con la placa aunque cambien las palabras o el tamaño. «Libre» la vuelve a separar.", + "nameTag.letters": "Letras", + "nameTag.makeTags": "Crear {count} placas con nombre", + "nameTag.makeTagsOne": "Crear 1 placa con nombre", + "nameTag.makeTagsNone": "Crear placas con nombre", + "nameTag.bundleNote": "Cada capa es un cuerpo independiente con su propio color. Para redondear o biselar las aristas de una capa, abre el conjunto.", + "shape.iconTag": "Placa con icono", + "iconTag.title": "Placa con icono", + "iconTag.hint": "Elige un archivo SVG, PNG o JPG: el icono se convierte en una placa por capas, como una placa con nombre.", + "iconTag.browse": "Examinar…", + "iconTag.noFile": "Todavía no has elegido ningún archivo", + "iconTag.preview": "Vista previa", + "iconTag.width": "Anchura (mm)", + "iconTag.widthHint": "Anchura del icono, de {min} a {max} mm.", + "iconTag.ok": "Aceptar", + "iconTag.building": "Construyendo…", + "iconTag.unreadable": "Este SVG no puede convertirse en una placa con icono: necesita contornos cerrados.", + "iconTag.cardHint": "El icono arriba; cada fila de debajo es una capa con su propio color. Cada cambio se ve al momento.", + "iconTag.icon": "Icono", + "iconTag.iconWidth": "Anchura", + "iconTag.iconWidthHint": "Anchura del icono de arriba, visto desde arriba.", + "iconTag.makeLayersHint": "Convierte el contorno en una placa con icono: el icono arriba y, debajo, capas de colores, cada una un poco más ancha.", + "iconTag.count": "Cantidad", + "iconTag.countHint": "Cuántas placas iguales, de 1 a 100, repartidas por el centro de la placa.", + "iconTag.fill": "Todas las que quepan", + "iconTag.fitsNone": "No cabe ni una placa en la placa.", + "iconTag.makeTags": "Crear {count} placas", + "iconTag.replace": "Otro archivo…", + "iconTag.part": "Calcado de", + "iconTag.part.dark": "Parte oscura", + "iconTag.part.light": "Parte clara", + "iconTag.partHint": "La imagen se calca como un contorno. Elige qué parte de ella se convierte en el icono.", + "status.iconReplaced": "Icono sustituido por «{name}»", + "status.iconLayered": "Icono dividido en {count} capas", + "status.iconLayersUpdated": "Capas actualizadas", + "status.iconTagsMade": "{count} placas creadas", + "status.iconTagAdded": "Placa con icono «{name}» añadida", + "shape.qrCode": "Código QR", + "shape.qrPlate": "Placa QR", + "qrCode.title": "Código QR", + "qrCode.hint": "Escribe un texto o una dirección web. Se convierte en un código QR que puedes imprimir, solo o sobre una placa.", + "qrCode.text": "Texto o dirección", + "qrCode.count": "{used} de {max} bytes", + "qrCode.tooLong": "Demasiado largo: {used} de {max} bytes. Acorta el texto o elige una corrección de errores más baja.", + "qrCode.enterHint": "Intro crea el código; Mayús+Intro empieza una línea nueva.", + "qrCode.noText": "Escribe un texto para el código.", + "qrCode.failed": "No se ha podido construir el código QR.", + "qrCode.preview": "Vista previa", + "qrCode.errorCorrection": "Corrección de errores", + "qrCode.errorCorrectionHint": "Un nivel más alto se sigue leyendo aunque parte del código esté sucia o dañada, pero necesita más módulos.", + "qrCode.recovery": "Sigue siendo legible con un {percent} % del código dañado", + "qrCode.style": "Tipo", + "qrCode.styleHint": "Sobre una placa, el código va en relieve con su propio color, para una impresión multicolor, o grabado en la placa.", + "qrCode.style.code": "Solo el código", + "qrCode.style.raised": "En relieve sobre placa", + "qrCode.style.engraved": "Grabado", + "qrCode.sizeBy": "Tamaño según", + "qrCode.sizeBy.width": "Anchura", + "qrCode.sizeBy.module": "Tamaño de módulo", + "qrCode.width": "Anchura (mm)", + "qrCode.moduleSize": "Tamaño de módulo (mm)", + "qrCode.moduleInfo": "Un módulo: {size} mm ({count} × {count} módulos)", + "qrCode.widthInfo": "Anchura: {width} mm ({count} × {count} módulos)", + "qrCode.widthHint": "De {min} a {max} mm de ancho.", + "qrCode.moduleSmall": "Los módulos de menos de 0,8 mm son difíciles de imprimir de forma legible; es una regla práctica, no una garantía. Haz el código más ancho, acorta el texto o baja la corrección de errores.", + "qrCode.quietZone": "Zona de silencio (4 módulos)", + "qrCode.quietZoneHint": "El margen vacío que necesitan los lectores alrededor del código: aquí, el borde de la placa.", + "qrCode.quietZoneAlone": "Un código sin placa no tiene margen propio: deja 4 módulos libres a su alrededor.", + "qrCode.height": "Altura (mm)", + "qrCode.heightRaised": "Altura del código (mm)", + "qrCode.heightEngraved": "Profundidad del grabado (mm)", + "qrCode.tooDeep": "El grabado debe ser al menos 0,2 mm menos profundo que el grosor de la placa.", + "qrCode.plateThickness": "Grosor de la placa (mm)", + "qrCode.ok": "Aceptar", + "qrCode.building": "Generando…", + "qrCode.cardHint": "Cambia el texto y vuelve a generar el código. Conserva su posición y su anchura.", + "qrCode.regenerate": "Regenerar", + "status.qrCodeAdded": "Código QR añadido", + "status.qrCodeRegenerated": "Código QR regenerado", + "inspector.more": "Más", + "inspector.less": "Menos", + "prop.textFill": "Relleno", + "prop.textFill.filled": "Macizo", + "prop.textFill.outline": "Contorno", + "prop.textFill.outer": "Línea exterior", + "prop.textFill.inner": "Línea interior", + "prop.textWider": "Más ancho (base para impresión multicolor)", + "textLayers.layer": "Capa {number}", + "textLayers.grow": "Ensanchar", + "textLayers.names": "Lista de nombres", + "textLayers.namesHint": "Un nombre por línea, hasta 100: una placa como esta para cada uno, colocadas en filas debajo.", + "textLayers.namesPlaceholder": "Ana\nBruno\nCarla", + "status.textLayered": "Texto dividido en {count} capas", + "status.textLayersUpdated": "Capas actualizadas", + "status.keyringTabMade": "Junto a la placa hay una lengüeta de llavero propia: muévela y gírala hasta su sitio como cualquier forma, y después pulsa «Fijar a la placa» en su panel.", + "status.keyringTabFixed": "La lengüeta del llavero ya forma parte de la placa, donde la pusiste.", + "status.keyringTabNoTag": "No hay ninguna placa con nombre ni placa con icono a la que fijar la lengüeta del llavero.", + "status.textTagsMade": "{count} placas creadas", + "status.mcpTextLayered": "MCP ha creado el texto en {count} capas", + "status.mcpTextTagsMade": "MCP ha creado {count} placas", + "prop.textFillHint": "El bisel y los segmentos solo se aplican a las letras macizas; con un modo de relleno o con la silueta, las letras se dibujan planas.", + "prop.sketchLineWidth": "Grosor de línea", + "prop.sketchSilhouette": "Silueta (sin orificios)", + "prop.slotSmallEnd": "Extremo pequeño (diámetro)", + "prop.slotCentreDistance": "Distancia entre centros", + "prop.loftTiltX": "Inclinación superior, delante/detrás", + "prop.loftTiltZ": "Inclinación superior, izquierda/derecha", + "loft.round": "Círculo / elipse", + "loft.rectangle": "Rectángulo", + "loft.polygon": "Polígono", + "prop.topWidth": "Anchura superior", + "prop.bottomLength": "Longitud inferior", + "prop.bottomWidth": "Anchura inferior", + "prop.positionX": "X", + "prop.positionY": "Y", + "prop.positionZ": "Z (altura)", + "prop.rotateX": "Sobre X", + "prop.rotateY": "Sobre Y", + "prop.rotateZ": "Sobre Z (altura)", + "prop.pivotX": "Punto de giro X", + "prop.pivotY": "Punto de giro Y", + "prop.pivotZ": "Punto de giro Z (altura)", + "prop.twist": "Torsión", + "prop.widthOffset": "Desplazamiento a lo ancho", + "prop.tiltedMeasures": "El cuerpo está inclinado: longitud, anchura y altura son sus propias medidas, no las direcciones del espacio.", + "prop.lengthOffset": "Desplazamiento a lo largo", + "font.manage": "Tus fuentes…", + "font.customGroup": "Tus fuentes", + "font.builtInGroup": "Integradas", + "font.missing": "Fuente no disponible", + "font.title": "Tus fuentes", + "font.subtitle": "Para el texto: un archivo de fuente o una fuente del ordenador", + "font.close": "Cerrar tus fuentes", + "font.addFile": "Elegir un archivo de fuente…", + "font.addFileHint": "TrueType (.ttf), OpenType (.otf) o WOFF (.woff). La fuente se queda en este navegador.", + "font.fromSystem": "Fuente del ordenador…", + "font.systemSearch": "Buscar fuentes", + "font.systemUnsupported": "Solo Chrome y Edge en un ordenador pueden leer las fuentes instaladas. Elige el archivo de fuente o arrástralo aquí. En Windows, el cuadro de diálogo de archivos oculta la carpeta Fuentes; en ese caso, arrastra la fuente desde el Explorador de archivos. En un Mac, las fuentes están en /Library/Fonts y ~/Library/Fonts.", + "font.dropHint": "O arrastra aquí un archivo de fuente, también directamente desde la carpeta Fuentes del Explorador de archivos.", + "font.systemNeedsHttps": "El navegador solo ofrece las fuentes instaladas en páginas seguras, con https, como en layerling.com. Esta página va por http. Arrastra aquí la fuente desde la carpeta Fuentes del Explorador de archivos.", + "font.systemDenied": "El navegador no tiene permiso para leer las fuentes instaladas. Dáselo en los ajustes del sitio o elige el archivo de fuente.", + "font.systemMore": "y {count} más: afina la búsqueda.", + "font.reading": "Leyendo la fuente…", + "font.added": "Fuente «{name}» añadida", + "font.use": "Usar", + "font.remove": "Quitar de este navegador", + "font.removed": "«{name}» ya no está en este navegador. Los diseños conservan las letras que usan sus textos.", + "font.stored": "en este navegador", + "font.fromDesign": "solo las letras del diseño", + "font.none": "Aún no tienes fuentes propias.", + "font.licence": "Un diseño guarda solo los contornos de las letras que usan sus textos, nunca el archivo de la fuente. Antes de compartirlo, comprueba la licencia de la fuente.", + "font.usedOnText": "Fuente «{name}» aplicada al texto", + "font.error.font-too-large": "El archivo ocupa más de 40 MB.", + "font.error.font-woff2": "layerling no puede leer WOFF2. Usa la versión TTF u OTF de la fuente.", + "font.error.font-collection": "Es una colección de fuentes (.ttc). Usa un archivo con una sola fuente.", + "font.error.font-unreadable": "El archivo no es una fuente legible.", + "font.error.font-no-letters": "La fuente no tiene letras que layerling pueda dibujar.", + "font.error.generic": "No se ha podido añadir la fuente: {message}", + "prop.font": "Fuente", + "prop.text": "Texto", + "prop.textCurved": "En arco", + "prop.textSpacing": "Espaciado entre letras (%)", + "prop.textSpacingHint": "Espacio entre las letras, además del que ya trae la fuente, en porcentaje del tamaño de letra; por debajo de 0, más juntas. Las letras conservan su tamaño y el cuadro se adapta.", + "prop.textStretch": "Estirar las letras hasta el marco", + "prop.textRadius": "Radio del arco", + "prop.textInward": "Por la parte inferior", + "prop.textFlipped": "Boca abajo", + "prop.segments": "Segmentos", + "prop.sidesFollowSize": "Lados según el tamaño", + "prop.sides": "Lados", + "prop.steps": "Pasos", + "prop.torusSides": "Lados del anillo", + "prop.torusSteps": "Pasos del tubo", + "prop.teeth": "Dientes", + "prop.helixAngle": "Ángulo de hélice", + "prop.quality": "Calidad", + "prop.turns": "Vueltas", + "prop.wire": "Grosor del alambre", + "prop.springHand": "Sentido del bobinado", + "spring.right": "A derechas", + "spring.left": "A izquierdas", + "prop.threadSize": "Tamaño", + "prop.diameter": "Diámetro", + "prop.pitch": "Paso", + "prop.threadHand": "Sentido", + "prop.threadProfile": "Perfil", + "prop.threadFlankAngle": "Ángulo de flanco", + "prop.threadDepth": "Profundidad de rosca", + "prop.threadCoreDiameter": "Diámetro del núcleo", + "thread.flankAngleHint": "El ángulo entre los dos flancos de un diente. 60° es la rosca en V afilada; 30°, la rosca trapezoidal. A 90° o menos, ningún flanco queda más tendido que 45°, así que la rosca se imprime sin soportes.", + "prop.clearance": "Holgura (XY)", + "prop.threadChamferTop": "Chaflán, extremo superior", + "prop.threadChamferBottom": "Chaflán, extremo inferior", + "thread.axialClearanceHint": "Juego adicional a lo largo de la rosca, en mm, además de la holgura: cada diente de la tuerca se adelgaza en esta medida, sin que cambie el diámetro. Para una rosca que gire suelta sin bailar de lado, deja la holgura entre 0,2 y 0,3 y pon aquí 0,2. Con 0, el juego sale solo de la holgura, que abre los flancos más o menos la mitad.", + "thread.clearanceHint": "El espacio adicional en todo el diámetro. Una rosca impresa necesita más de lo que parece: la separación entre los flancos es solo la mitad, más o menos. Con unos 0,3 queda ajustada; con 0,4, normal; con 0,5, holgada. Imprime antes una pareja de prueba.", + "thread.boltClearanceHint": "Adelgaza el tornillo en esta medida, para una tuerca metálica que no tiene juego propio (de 0,3 a 0,4, lo que tendría una tuerca impresa). Con una tuerca impresa, déjalo en 0 y dale la holgura a la tuerca.", + "prop.boltClearance": "Holgura para varillas y tornillos", + "prop.axialClearance": "Juego axial (Z)", + "prop.headHeight": "Altura de la cabeza", + "prop.chamfer": "Chaflán", + "prop.headChamfer": "Chaflán de la cabeza", + "prop.rimChamfer": "Chaflán del borde", + "prop.threadsPerInch": "Hilos por pulgada", + "prop.startAngle": "Ángulo inicial", + "prop.sweep": "Amplitud", + "prop.starPoints": "Puntas", + "prop.starOuterSize": "Medida exterior", + "prop.starInnerSize": "Medida interior", + "prop.starOuterFillet": "Redondeo exterior", + "prop.starInnerFillet": "Redondeo interior", + "prop.heartTipFillet": "Redondeo de la punta", + "prop.crescentThickness": "Grosor", + "prop.crescentTipFillet": "Redondeo de las puntas", + "prop.honeycombCellSize": "Tamaño de celda", + "prop.honeycombWallThickness": "Grosor de pared", + "prop.honeycombFrameWidth": "Anchura del marco", + "prop.dovetailWideEnd": "Anchura (extremo ancho)", + "prop.dovetailNeckWidth": "Anchura del cuello", + "prop.dovetailLength": "Longitud de la cola", + "prop.dovetailClearance": "Holgura como orificio", + "prop.hingeLength": "Longitud (eje)", + "prop.hingeOpenWidth": "Anchura abierta", + "prop.hingeKnuckleDiameter": "Diámetro del nudillo", + "prop.hingeKnuckles": "Nudillos", + "prop.hingePinDiameter": "Diámetro del pasador", + "prop.hingeLeafThickness": "Grosor de la hoja", + "prop.hingePinless": "Sin pasador (pon el tuyo)", + "prop.hingeClearance": "Holgura", + "prop.gridfinityType": "Tipo", + "gridfinity.bin": "Caja", + "gridfinity.baseplate": "Placa base", + "gridfinity.binHint": "Una caja en la cuadrícula de 42 mm de Gridfinity: se encaja en una placa base y se apila sobre otras cajas, también las hechas con otros generadores de Gridfinity.", + "gridfinity.baseplateHint": "La placa en la que se encajan las cajas de Gridfinity, de 5 mm de alto: un hueco por cada unidad de 42 mm de la cuadrícula.", + "prop.gridfinityUnitsX": "Unidades de ancho", + "prop.gridfinityUnitsZ": "Unidades de fondo", + "prop.gridfinityUnitsY": "Unidades de alto", + "prop.gridfinityLip": "Borde para apilar", + "prop.gridfinityMagnets": "Orificios para imanes", + "prop.gridfinityHalfGrid": "Media cuadrícula (21 mm)", + "gridfinity.halfGridHint": "Las unidades de ancho y de fondo cuentan celdas de 21 mm, cada una con su propio pie; cuatro caben en un hueco de la placa base.", + "prop.gridfinityFloorHeight": "Altura del fondo", + "gridfinity.floorHeightHint": "La caja es maciza desde la base hasta esta altura: un bloque en bruto en el que recortar formas.", + "prop.gridfinityLabelBack": "Repisa para etiqueta detrás", + "prop.gridfinityLabelFront": "Repisa para etiqueta delante", + "prop.gridfinityLabelLeft": "Repisa para etiqueta a la izquierda", + "prop.gridfinityLabelRight": "Repisa para etiqueta a la derecha", + "prop.gridfinityLabelWidth": "Anchura de la repisa", + "prop.gridfinityLabelLength": "Longitud de la repisa", + "gridfinity.labelLengthHint": "Con 0, la repisa va de pared a pared.", + "prop.gridfinityLabelOffset": "Posición de la repisa", + "prop.gridfinityLabelCorner": "Esquinas de la repisa", + "gridfinity.labelRound": "Redondeo", + "gridfinity.labelChamfer": "Chaflán", + "prop.gridfinityLabelCornerSize": "Tamaño de las esquinas", + "prop.gridfinityScoopBack": "Hueco para los dedos detrás", + "prop.gridfinityScoopFront": "Hueco para los dedos delante", + "prop.gridfinityScoopLeft": "Hueco para los dedos a la izquierda", + "prop.gridfinityScoopRight": "Hueco para los dedos a la derecha", + "prop.gridfinityScoopRadius": "Radio del hueco", + "prop.gridfinityCompartmentsX": "Columnas", + "prop.gridfinityCompartmentsZ": "Filas", + "gridfinity.compartmentsHint": "Los separadores terminan a la altura de las repisas, sin tocar una caja apilada encima; cada compartimento conserva al menos 6 mm de ancho.", + "prop.gridfinityDividerThickness": "Grosor del separador", + "gridfinity.scoopsLeftOutHint": "Los compartimentos demasiado estrechos para los huecos se quedan sin ellos.", + "inspector.gridfinityCompartments": "Compartimentos", + "prop.gridfinityDividerAcross": "Entre columnas", + "prop.gridfinityDividerDeep": "Entre filas", + "prop.gridfinityDividerPosition": "Posición", + "gridfinity.dividerPositionHint": "Desde la cara interior de la pared izquierda o trasera hasta el centro del separador.", + "prop.gridfinityCompartmentRow": "Fila", + "prop.gridfinityCompartmentColumn": "Columna", + "gridfinity.fromLeft": "{number} desde la izquierda", + "gridfinity.fromBack": "{number} desde atrás", + "prop.gridfinityCompartmentLabel": "Repisa para etiqueta", + "gridfinity.labelNone": "Ninguna", + "gridfinity.labelSideBack": "Detrás", + "gridfinity.labelSideFront": "Delante", + "gridfinity.labelSideLeft": "A la izquierda", + "gridfinity.labelSideRight": "A la derecha", + "prop.gridfinityCompartmentLabelLength": "Longitud de la repisa (%)", + "gridfinity.compartmentLabelLengthHint": "Con 100, la repisa ocupa todo su lado.", + "gridfinity.compartmentLabelTooShortHint": "Esta repisa mide menos de 4 mm y se omite.", + "gridfinity.alignLeft": "Izquierda", + "gridfinity.alignMiddle": "Centro", + "gridfinity.alignRight": "Derecha", + "gridfinity.alignBack": "Detrás", + "gridfinity.alignFront": "Delante", + "prop.knurlPattern": "Patrón", + "prop.knurlCount": "Estrías", + "prop.knurlDepth": "Profundidad de las estrías", + "prop.knurlAngle": "Ángulo de las estrías", + "prop.knurlChamfer": "Chaflán en los extremos", + "knurl.straight": "Recto", + "knurl.diamond": "Cruzado", + "knurl.round": "Redondo", + "knurl.roundHint": "Estrías y crestas redondeadas en forma de onda: un agarre agradable para pomos. La profundidad no pasa de medio paso.", + "knurl.straightHint": "Estrías a lo largo del eje, como en un mando giratorio.", + "knurl.diamondHint": "Dos filas inclinadas de estrías se cruzan formando pequeños rombos, como en el mango de una herramienta. Sigue siendo una malla; la herramienta de aristas solo funciona con el moleteado recto.", + "prop.screwHoleHead": "Diámetro de la cabeza", + "prop.screwHoleShaft": "Diámetro del vástago", + "prop.screwHoleHeadDepth": "Profundidad de la cabeza", + "prop.screwHoleAngle": "Ángulo del cono", + "prop.screwHoleBothSides": "Por los dos lados", + "prop.screwHoleLength": "Longitud total", + "prop.teardropDiameter": "Diámetro (parte redonda)", + "prop.teardropLength": "Longitud del orificio", + "prop.teardropTipAngle": "Ángulo de la punta", + "prop.cornerFillet": "Redondeo de esquinas", + "prop.topBottomFillet": "Redondeo arriba/abajo", + "prop.bentTubeProfile": "Perfil", + "prop.bentTubeInnerProfile": "Perfil interior", + "prop.bentTubeSize": "Medida exterior", + "prop.bentTubeWall": "Grosor de pared", + "prop.bentTubeSegment": "Segmento", + "prop.bentTubeSegmentLength": "Longitud recta", + "prop.bentTubeBendAngle": "Ángulo de curvatura", + "prop.bentTubeBendRadius": "Radio de curvatura", + "prop.bentTubeRoll": "Ángulo de giro", + "bentTube.profileRound": "Redondo", + "bentTube.profileSquare": "Cuadrado", + "bentTube.profileHexagon": "Hexagonal", + "bentTube.profileOctagon": "Octogonal", + "bentTube.innerNone": "Ninguno (macizo)", + "bentTube.segmentNumber": "Segmento {number}", + "bentTube.addSegment": "Añadir segmento", + "bentTube.removeSegment": "Quitar segmento", + "bentTube.selfIntersects": "El tubo se cruza consigo mismo. Cambia una longitud, un ángulo o el ángulo de giro.", + "inspector.bentTubeSegments": "Segmentos", + + "panel.export": "Exportar", + "panel.import": "Importar", + "panel.close": "Cerrar {title}", + "export.formatLabel": "Formato de exportación", + "export.format": "Formato", + "export.fileName": "Nombre del archivo", + "export.fullProject": "Diseño completo", + "export.scopeSelected": "Seleccionados: {count}", + "export.selectionOnlyOne": "Solo se exporta el objeto seleccionado, no el diseño entero con {total} objetos.", + "export.selectionOnlyMany": "Solo se exportan los {count} objetos seleccionados, no el diseño entero con {total} objetos.", + "export.selectAll": "Seleccionar todo", + "export.scopeTotal": "{count} en total", + "export.holesOnlyWarning": "Los orificios no se pueden exportar solos: agrúpalos con un cuerpo sólido.", + "export.hiddenOne": "Queda fuera 1 pieza oculta. Muéstrala si quieres incluirla.", + "export.hiddenMany": "Quedan fuera {count} piezas ocultas. Muéstralas si quieres incluirlas.", + "export.estimateTitle": "Material", + "export.estimateHint": "Una estimación aproximada, con filamento de 1,75 mm.", + "export.estimateInfillLabel": "Relleno", + "export.estimateWallsLabel": "Paredes", + "export.estimateInfill": "El peso y el filamento cuentan con {walls} paredes y un {infill} % de relleno, y son solo una estimación aproximada: mandan los ajustes de tu laminador. Macizo (100 % de relleno) serían {grams} g.", + "export.estimateSolidNote": "Calculado como cuerpo macizo, como si se imprimiera con un 100 % de relleno: el límite superior.", + "export.estimateMaterial": "Filamento para estimar el peso", + "export.estimateVolume": "Volumen", + "export.estimateWeight": "Peso", + "export.estimateFilament": "Filamento", + "export.estimateBusy": "Calculando…", + "export.estimateOverlap": "Algunos cuerpos que se solapan no se han podido unir; la parte solapada cuenta dos veces.", + "export.material.pla": "PLA", + "export.material.petg": "PETG", + "export.material.abs": "ABS", + "export.material.asa": "ASA", + "export.material.tpu": "TPU", + "export.material.pa": "PA (nailon)", + "export.historyTitle": "Historial guardado", + "export.historyHint": "Elige cuántos pasos recientes del historial se guardan con el diseño", + "export.historyLabel": "Historial guardado en el LYL", + "export.unlimited": "Ilimitado", + "export.historyNone": "Ninguno", + "export.actionCount": "{count} pasos", + "export.saveToShared": "Guardar en el servidor", + "export.savingProject": "Guardando el diseño…", + "export.saveProject": "Guardar diseño de layerling", + "export.buildingStep": "Generando el STEP…", + "export.run": "Exportar {format}", + "export.stl.description": "Malla para impresión 3D", + "export.stl.note": "Lo mejor para laminadores e impresión 3D. La geometría se exporta como una malla de triángulos. En Chrome y Edge eliges la carpeta y el nombre una sola vez; las siguientes exportaciones STL del diseño se guardan en ese archivo, salvo que escribas otro nombre: entonces se te vuelve a preguntar.", + "export.stlLinkedFile": "Se guarda en {name}", + "export.stlNewFile": "Pregunta dónde guardar {name}", + "export.stlSaveAs": "Guardar como…", + "export.3mf.description": "Proyecto de laminador con colores", + "export.3mf.note": "Para PrusaSlicer, Bambu Studio, OrcaSlicer y Cura. Cada cuerpo sigue siendo una pieza aparte, con su nombre y su color.", + "export.obj.description": "Malla 3D universal", + "export.obj.note": "Un formato de malla muy compatible para modelado, renderizado e intercambio. Los colores se guardan en los vértices, y Bambu Studio y OrcaSlicer los leen.", + "export.step.description": "CAD / B-Rep", + "export.step.note": "Conserva las cajas, cilindros, esferas y conos como geometría CAD precisa, junto con todo lo que tenga aristas redondeadas o achaflanadas y los cuerpos que llegaron como STEP. Las roscas, los muelles y los engranajes también se exportan como cuerpo exacto, igual que las formas ahusadas, inclinadas y retorcidas. Las mallas importadas, por ejemplo, quedan fuera del alcance de STEP: esas van como STL.", + "export.svg.description": "Vista superior vectorial", + "export.svg.note": "Exporta una silueta limpia de la vista superior en milímetros, con los orificios y los contornos curvos.", + "export.svg.noteFootprint": "Exporta solo los contornos con los que los objetos se apoyan en el plano de trabajo, como líneas en milímetros, para corte láser y plantillas.", + "export.svg.view": "Vista", + "export.svg.viewSilhouette": "Silueta desde arriba", + "export.svg.viewFootprint": "Huella sobre el plano de trabajo", + "export.lyl.description": "El formato de diseño propio de layerling", + "export.lyl.note": "Conserva el diseño editable, el historial de deshacer y rehacer, los bocetos, los grupos, los datos CAD y los archivos originales importados. Los archivos .skf antiguos también se abren y se guardan como .lyl. En Chrome y Edge eliges tú la carpeta y el nombre, y después Ctrl+S vuelve a guardar en ese archivo; un diseño abierto desde un archivo se guarda en ese mismo archivo.", + "import.openProject": "Abrir diseño de layerling", + "import.openProjectHint": "Restaura un diseño de layerling (.lyl, o un .skf antiguo) como un diseño local nuevo", + "import.insertProject": "Insertar en este diseño", + "import.insertProjectHint": "Añade los cuerpos de un diseño de layerling (.lyl) a los que ya hay aquí; por ejemplo, piezas básicas que usas una y otra vez", + "import.divider": "o añade geometría", + "import.dropZone": "Suelta aquí archivos STL, OBJ (con su .mtl o en un ZIP), 3MF, STEP, SVG, PNG o JPG", + "import.dropZoneHint": "o haz clic para elegirlos en tu ordenador", + "import.keepSvgPage": "SVG: conservar la posición en la página", + "import.keepSvgPageHint": "Los dibujos hechos en una misma página, como las capas de un documento exportadas en archivos separados, vuelven a quedar alineados al importarlos uno tras otro. Sin esta opción, cada dibujo se centra en sí mismo.", + "import.svgWidth": "SVG e imagen: anchura en mm", + "import.svgWidthHint": "Escribe la anchura que debe tener un dibujo o una imagen al importarlo; si lo dejas vacío, conserva su tamaño. Solo vale para la próxima importación.", + "import.svgWidthPlaceholder": "tamaño original", + "status.importSvgNoPage": "{name} no indica tamaño de página, así que se ha centrado como siempre.", + + "view.cube": "Cubo de vista", + "view.top": "Vista superior", + "view.bottom": "Vista inferior", + "view.front": "Vista frontal", + "view.back": "Vista posterior", + "view.right": "Vista derecha", + "view.left": "Vista izquierda", + "view.topShort": "SUPERIOR", + "view.bottomShort": "INFERIOR", + "view.frontShort": "FRONTAL", + "view.backShort": "POSTERIOR", + "view.rightShort": "DERECHA", + "view.leftShort": "IZQUIERDA", + "camera.controls": "Controles de cámara", + "camera.show": "Mostrar los controles de cámara", + "camera.hide": "Ocultar los controles de cámara", + "camera.showShort": "Mostrar controles", + "camera.hideShort": "Ocultar controles", + "camera.home": "Vista inicial", + "camera.focusSelection": "Centrar la vista en la selección", + "camera.zoomIn": "Acercar", + "camera.zoomOut": "Alejar", + "camera.touchRotate": "Girar la vista con un dedo", + "camera.touchRotateHint": "Con dos dedos siempre se hace zoom y se mueve el plano de trabajo. Mientras esto esté activado, un dedo gira la vista en lugar de seleccionar.", + "camera.orthographic": "Vista ortográfica", + "camera.perspective": "Volver a la vista en perspectiva", + "camera.placeWorkplane": "Colocar plano de trabajo", + "camera.resetWorkplane": "Devolver el plano de trabajo a la placa base", + "camera.hideFaceWorkplane": "Ocultar el plano de trabajo de la cara", + "camera.showFaceWorkplane": "Mostrar el plano de trabajo de la cara", + "camera.hideWorkplane": "Ocultar plano de trabajo", + "camera.showWorkplane": "Mostrar plano de trabajo", + "camera.tapeTools": "Cinta métrica", + "camera.cornerRulerTool": "Colocar escuadra", + "camera.duplicateAlongRuler": "Duplicar a lo largo de la regla", + "camera.tapeActions": "Acciones de la cinta métrica", + "camera.addMeasurement": "Añadir medida", + "camera.moveMeasurement": "Mover los puntos de medida", + "camera.tapeWholeEdges": "Medir aristas enteras", + "camera.tapeWholeEdgesHint": "Medir aristas enteras: un clic en una arista la mide entera, por ejemplo la longitud de un círculo. Si está desactivado, un clic pone un punto en la arista, para el diámetro o cualquier otra distancia. Alt lo invierte para un solo clic. En un círculo, el punto opuesto se ajusta solo, así que el diámetro sale exacto.", + "camera.deleteMeasurement": "Eliminar medida", + "camera.deleteAllMeasurements": "Eliminar todas las medidas", + "camera.tapeMarkMiddle": "Marcar el punto medio como punto de referencia", + "camera.sectionView": "Vista de sección", + "camera.sectionActive": "Sección activa", + "camera.sectionInactive": "Sección inactiva", + "camera.sectionAxis": "Eje", + "camera.sectionAxisX": "X (anchura)", + "camera.sectionAxisY": "Y (profundidad)", + "camera.sectionAxisZ": "Z (altura)", + "camera.sectionFlip": "Invertir la dirección del corte", + "camera.sectionOrientation": "Ejes según", + "camera.sectionOrientationWorld": "Diseño", + "camera.sectionOrientationWorldHint": "X, Y y Z del diseño, como en los campos de posición", + "camera.sectionOrientationWorkplane": "Plano de trabajo", + "camera.sectionOrientationWorkplaneHint": "X, Y y Z del plano de trabajo: Z corta en paralelo a él; X e Y, en perpendicular. El corte se mueve con el plano de trabajo.", + "camera.sectionOrientationView": "Vista", + "camera.sectionOrientationViewHint": "De frente a la pantalla: Z se aleja de ti, así que el corte quita lo que queda delante. Vuelve a hacer clic después de girar la vista.", + "camera.sectionWorkplane": "Plano de trabajo aquí", + "camera.sectionWorkplaneHint": "Coloca el plano de trabajo sobre el corte, para que un boceto empiece justo ahí y muestre el contorno del corte", + "camera.sectionReset": "Centrar", + "camera.sectionResetHint": "Centrar el corte en el modelo", + "camera.sectionOffset": "Posición", + "camera.sectionCoarse": "Grueso", + "camera.sectionFine": "Fino", + "camera.sectionFineHint": "Control fino: ±{span} alrededor de la posición del control grueso", + "camera.sectionMeasure": "Medir", + "camera.sectionMeasureHint": "Mide grosores de pared, huecos y holguras directamente sobre el corte", + "camera.sectionMeasureHelp": "Haz clic en dos puntos del contorno. El segundo se ajusta en perpendicular a su pared; en un círculo, también se ajustan el centro y el punto opuesto al primero.", + "camera.sectionBack": "Atrás", + "camera.sectionBackHint": "Cierra primero la medición y después el panel (Esc)", + "camera.sectionConfirm": "Cerrar", + "camera.sectionConfirmHint": "Cierra el panel y conserva el corte", + "camera.sectionShowPlane": "Mostrar el plano de corte", + "panel.moveHint": "Arrastra para moverlo; haz doble clic o suéltalo en su sitio anterior para devolverlo", + "camera.sectionMoveHint": "Arrastra para moverlo; suéltalo sobre el botón de sección o haz doble clic para devolverlo", + "camera.sectionExportSvg": "Sección como SVG", + "camera.sectionExportSvgHint": "Guarda los contornos del plano de corte como SVG a escala 1:1, para un láser, un plóter o una plantilla", + "camera.sectionFileSuffix": "sección", + "camera.sectionSeenFromRight": "vista desde la derecha", + "camera.sectionSeenFromTop": "vista desde arriba", + "camera.sectionSeenFromFront": "vista desde delante", + "status.buildingSectionSvg": "Cortando la sección…", + "status.sectionSvgExported": "Sección guardada como SVG: {count} contornos, {face}, a escala 1:1.", + "status.sectionSvgOpen": "{count} de ellos están abiertos, porque ahí hay un cuerpo que no está cerrado.", + "status.sectionSvgOverlap": "Los cuerpos que se solapan no se han podido unir, así que sus contornos se superponen.", + "status.sectionSvgNothing": "No hay ningún sólido visible que cortar.", + "status.sectionSvgMissed": "El plano de corte no toca ningún sólido visible. Muévelo hacia el diseño.", + "status.sectionSvgFailed": "No se ha podido guardar la sección como SVG.", + "sketch.boxWidth": "Anchura de la selección", + "sketch.boxDepth": "Altura de la selección", + "sketch.stroke": "Trazo", + "sketch.strokeHint": "Construir el boceto como una línea con grosor en lugar de como una superficie", + "sketch.strokeTitle": "Trazo", + "sketch.strokeClose": "Cerrar los ajustes de trazo", + "sketch.strokeOn": "Construir como trazo", + "sketch.strokeWidth": "Grosor", + "sketch.strokeAlign": "Posición", + "sketch.strokeAlign.center": "Centrado", + "sketch.strokeAlign.inside": "Dentro", + "sketch.strokeAlign.outside": "Fuera", + "sketch.strokeAlign.grow": "Más ancho", + "sketch.strokeAlign.shrink": "Más estrecho", + "sketch.strokeAlignHint": "Solo para contornos cerrados; una línea abierta siempre va centrada.", + "sketch.strokeJoin": "Esquinas", + "sketch.strokeJoin.miter": "En punta", + "sketch.strokeJoin.round": "Redondeadas", + "sketch.strokeJoin.bevel": "Biseladas", + "sketch.strokeCap": "Extremos", + "sketch.strokeCap.flat": "Planos", + "sketch.strokeCap.square": "Cuadrados", + "sketch.strokeCap.round": "Redondeados", + "sketch.strokeCapHint": "Solo para líneas abiertas.", + "sketch.silhouetteHint": "Omite todos los contornos que estén dentro de otro: los orificios y lo que haya en ellos.", + "status.sketchSilhouetteOn": "El boceto se construye sin orificios", + "status.sketchSilhouetteOff": "El boceto vuelve a construirse con sus orificios", + "sketch.strokeEmpty": "El trazo no deja ninguna superficie. Dibuja una línea o elige un grosor mayor.", + "sketch.clickToEditDimension": "Haz clic para escribir la longitud", + "sketch.dimensionUpdated": "Longitud de línea cambiada", + "sketch.clickToEditAngle": "Haz clic para escribir el ángulo", + "sketch.typedLength": "Longitud", + "sketch.typedAngle": "Ángulo", + "sketch.typedLineHint": "Siguiente línea con números: longitud en milímetros; «<» o Tab pasa al ángulo (0° a la derecha, 90° arriba; si lo dejas vacío, sigue al puntero); Intro fija el punto y Esc cierra.", + "sketch.typedLineOffPlate": "La placa no llega tan lejos. Acorta la línea o cambia de dirección.", + "sketch.angleEditHint": "Ángulo en grados. Intro lo aplica, Tab cambia la línea que gira (la discontinua) y Esc cancela.", + "sketch.angleUpdated": "Ángulo cambiado", + "camera.shortcut": "{label} ({keys})", + "camera.viewSaved": "Vista guardada en {key}: pulsa {key} para volver a ella", + "camera.savedViewEmpty": "Aún no hay ninguna vista guardada en {key}: Mayús+{key} guarda la actual", + "workspace.title": "Ajustes del espacio de trabajo", + "workspace.close": "Cerrar los ajustes", + "workspace.sections": "Secciones de los ajustes del espacio de trabajo", + "workspace.appearance": "Aspecto", + "workspace.appearanceHint": "Ajusta la zona de trabajo y el comportamiento de la navegación.", + "workspace.measurement": "Medidas", + "workspace.measurementHint": "Elige unidades, precisión, escala y ajuste.", + "workspace.workplane": "Plano de trabajo", + "workspace.workplaneHint": "Define las medidas de la placa y la separación visible de la cuadrícula.", + "workspace.shapeDefaults": "Valores iniciales de las formas", + "workspace.shapeDefaultsHint": "Personaliza cómo empieza cada forma de la barra de herramientas. Los límites actuales no cambian hasta que introduzcas un límite propio.", + "workspace.history": "Historial", + "workspace.theme": "Tema", + "workspace.themeSystem": "Sistema", + "workspace.themeLight": "Claro", + "workspace.themeDark": "Oscuro", + "workspace.themeGraphite": "Grafito (oscuro neutro)", + "workspace.toolbarSize": "Tamaño de la barra de herramientas", + "workspace.toolbarSizeSmall": "Pequeño", + "workspace.toolbarSizeMedium": "Mediano", + "workspace.toolbarSizeLarge": "Grande", + "workspace.viewCubePosition": "Posición del cubo de vista", + "workspace.viewCubePositionTopLeft": "Arriba a la izquierda", + "workspace.viewCubePositionTopRight": "Arriba a la derecha", + "workspace.viewCubePositionBottomLeft": "Abajo a la izquierda", + "workspace.viewCubePositionBottomRight": "Abajo a la derecha", + "workspace.showMoveDimensions": "Mostrar medidas al mover", + "workspace.showOriginDimensions": "Mostrar distancias al origen", + "workspace.dimensionsAlwaysVisible": "Medidas siempre visibles", + "workspace.showRotationAngles": "Mostrar los ángulos de los cuerpos girados", + "workspace.startInPerspective": "Abrir el editor en vista en perspectiva", + "workspace.doubleClickOpensSketch": "El doble clic abre el boceto", + "workspace.doubleClickOpensGroup": "El doble clic abre un grupo o un conjunto", + "workspace.selectBeforeMoving": "Seleccionar antes de mover", + "workspace.frameByDirection": "Selección según la dirección del recuadro", + "workspace.frameByDirectionHint": "Un recuadro arrastrado hacia la derecha selecciona solo lo que queda dentro por completo; uno arrastrado hacia la izquierda, todo lo que toca (se dibuja discontinuo), como en SketchUp", + "workspace.objectSnap": "Ajustar a otras formas al mover", + "workspace.overhangAngle": "Marcar voladizos a partir de {angle}°", + "workspace.overhangStrict": "30° (prudente)", + "workspace.overhangLoose": "70° (buena refrigeración)", + "workspace.showShadows": "Mostrar sombras", + "workspace.cameraInertia": "Inercia de la cámara", + "workspace.cameraInertiaHint": "Al soltar, la vista sigue girando un momento y frena suavemente. Si la desactivas, se detiene al instante, como en Tinkercad y Fusion 360.", + "workspace.fastMode": "Modo rápido", + "workspace.fastModeHint": "Para ordenadores más lentos: desactiva las sombras, las líneas de aristas de todos los cuerpos y la inercia de la cámara, y dibuja la vista solo a la resolución de la pantalla. Tus ajustes se guardan para más adelante.", + "workspace.offInFastMode": "Desactivado en el modo rápido", + "workspace.showGrid": "Mostrar cuadrícula", + "workspace.resetGrid": "Restablecer cuadrícula", + "workspace.resetGridHint": "La visibilidad, los colores, la separación y el grosor de línea de la cuadrícula vuelven a los valores estándar, aquí y en los predeterminados guardados con «Guardar como predeterminado».", + "workspace.cruise": "Colocar las formas nuevas con el puntero", + "workspace.zoomSpeed": "Velocidad del zoom", + "workspace.slow": "Lenta", + "workspace.fast": "Rápida", + "workspace.units": "Unidades", + "workspace.inchFormat": "Mostrar las pulgadas como", + "workspace.inchFormatFraction": "Fracciones (1 5/8)", + "workspace.inchFormatDecimal": "Decimales (1.625)", + "workspace.scale": "Escala", + "workspace.accuracy": "Precisión", + "workspace.snapGrid": "Cuadrícula de ajuste", + "workspace.customSnapGrids": "Cuadrículas de ajuste propias", + "workspace.customSnapGridsHint": "Una medida propia, como el paso de 2,54 mm entre patillas de chips, tiras de pines y placas perforadas. El menú de ajuste la ofrece entera, a la mitad y a un cuarto; desactiva «También mitad y cuarto» para tener solo la medida en sí.", + "workspace.customSnapGridName": "Nombre", + "workspace.customSnapGridSize": "Tamaño en milímetros", + "workspace.customSnapGridAdd": "Añadir una cuadrícula de ajuste", + "workspace.customSnapGridRemove": "Quitar esta cuadrícula de ajuste", + "workspace.customSnapGridParts": "También mitad y cuarto", + "workspace.printer": "Impresora", + "workspace.printerNone": "Sin impresora: tamaño libre", + "workspace.printerHint": "Elige tu impresora para que el plano de trabajo tenga el tamaño de su cama. Se marcan los cuerpos que se salgan de ella.", + "workspace.printerInfo": "Cama de {width} × {depth} mm, altura máx. de impresión {height} mm (del perfil de OrcaSlicer).", + "status.bedOverhangOne": "«{name}» no cabe en el volumen de impresión de {printer} ({sides})", + "status.bedOverhangMany": "{count} cuerpos no caben en el volumen de impresión de {printer}", + "status.bedOverhangDismiss": "Ocultar el aviso para estos cuerpos (un cuerpo que se salga más tarde volverá a avisar)", + "bed.side.left": "{mm} mm por la izquierda", + "bed.side.right": "{mm} mm por la derecha", + "bed.side.back": "{mm} mm por detrás", + "bed.side.front": "{mm} mm por delante", + "bed.side.top": "{mm} mm demasiado alto", + "workspace.size": "Tamaño del plano de trabajo", + "workspace.width": "Anchura", + "workspace.length": "Longitud", + "workspace.gridBlockSize": "Separación de la cuadrícula", + "workspace.blockSize": "Tamaño del cuadro", + "workspace.booleanTriangleLimit": "Cortar mallas importadas de hasta", + "workspace.booleanTriangleLimitOlder": "Ordenador antiguo ({count} triángulos)", + "workspace.booleanTriangleLimitNormal": "Normal ({count} triángulos, predeterminado)", + "workspace.booleanTriangleLimitFast": "Ordenador rápido ({count} triángulos)", + "workspace.booleanTriangleLimitCustom": "Triángulos", + "workspace.booleanTriangleLimitNote": "Los cortes, fusiones e intersecciones con una malla importada se calculan en tu navegador. Las mallas con más triángulos que este límite no se procesan; simplifica antes la malla o sube el límite. Un límite más alto puede dejar el editor congelado unos segundos.", + "workspace.custom": "Personalizado", + "workspace.shape": "Forma", + "workspace.useAppDefaults": "Usar los valores predeterminados de la aplicación", + "workspace.shapeDetails": "Detalles de la forma", + "workspace.shapeDetailsHint": "Valores predeterminados adicionales que se usan al añadir esta forma.", + "workspace.customLimit": "Límite de tamaño propio", + "workspace.customLimitHint": "Déjalo vacío para mantener todos los límites actuales de esta forma, tanto en el panel como al arrastrar.", + "workspace.appLimits": "Límites de la aplicación", + "workspace.savedHistory": "Historial guardado", + "workspace.savedHistoryHint": "Elige cuántos pasos completados siguen disponibles después de guardar o volver a abrir este diseño.", + "workspace.historyActions": "Pasos guardados del historial", + "workspace.actionsToRetain": "Pasos que se conservan", + "workspace.footerHint": "Guarda los ajustes actuales para este diseño.", + "workspace.makeDefault": "Guardar como predeterminado", + "workspace.defaultSaved": "Guardado como predeterminado", + + "sketch.toolbar": "Barra de herramientas del boceto", + "sketch.group.draw": "Dibujar", + "sketch.group.shapes": "Formas", + "sketch.group.select": "Seleccionar", + "sketch.group.finish": "Terminar", + "sketch.group.create": "Crear", + "sketch.line": "Línea", + "sketch.arc": "Arco", + "sketch.bezier": "Curva de Bézier", + "sketch.smooth": "Curva suave", + "sketch.construction": "Línea de construcción", + "sketch.constructionHint": "Dibujar las líneas nuevas como líneas de construcción: discontinuas, nunca forman parte del cuerpo y los puntos se ajustan donde se cruzan", + "sketch.makeConstruction": "Construcción", + "sketch.makeConstructionHint": "Convertir esta línea en línea de construcción: discontinua y fuera del cuerpo", + "sketch.makeSolid": "Convertir en línea", + "sketch.makeSolidHint": "Volver a convertir esta línea de construcción en una línea normal, parte del contorno", + "sketch.fromMiddle": "Línea desde el centro", + "sketch.fromMiddleHint": "Dibujar líneas desde el centro: haz clic primero en el centro y luego arrastra hacia fuera; la línea se alarga lo mismo hacia los dos lados", + "status.sketchFromMiddleOn": "Línea desde el centro: haz clic en el centro y luego en el extremo; la línea se alarga lo mismo hacia el otro lado", + "status.sketchFromMiddleOff": "Línea desde el centro desactivada: las líneas vuelven a ir del primer punto al siguiente", + "status.sketchConstructionOn": "Líneas de construcción: las líneas nuevas son de construcción", + "status.sketchConstructionOff": "Líneas de construcción desactivadas: las líneas nuevas vuelven a formar parte del contorno", + "status.sketchMadeConstruction": "Línea convertida en línea de construcción", + "status.sketchMadeSolid": "Línea de construcción convertida en línea", + "sketch.addShape": "Añadir forma de boceto", + "sketch.shapesMenu": "Formas de boceto", + "sketch.shapesTitle": "Formas de boceto", + "sketch.rectangle": "Rectángulo", + "sketch.circle": "Círculo", + "sketch.ellipse": "Óvalo", + "sketch.halfCircle": "Semicírculo", + "sketch.pieSlice": "Sector circular", + "sketch.boltCircle": "Círculo de orificios", + "sketch.triangle": "Triángulo", + "sketch.hexagon": "Hexágono", + "sketch.polygon": "Polígono", + "sketch.star": "Estrella", + "sketch.polygonSides": "Lados / puntas", + "sketch.starInner": "Medida interior de la estrella", + "sketch.addPrimitiveHint": "Añadir {shape} en el origen del boceto, o arrastrar la forma al boceto", + "sketch.select": "Seleccionar", + "sketch.addImage": "Añadir imagen", + "sketch.addImageReady": "Añadir imagen", + "sketch.addImageBlocked": "Elige Seleccionar para añadir una imagen", + "sketch.refine": "Añadir o quitar puntos", + "sketch.erase": "Borrar", + "sketch.undo": "Deshacer en el boceto", + "sketch.redo": "Rehacer en el boceto", + "sketch.finishRevolve": "Terminar revolución", + "sketch.sweep": "Boceto de barrido", + "sketch.sweepHint": "Arrastrar el contorno a lo largo de una trayectoria", + "sketch.finishSweep": "Terminar barrido", + "sketch.modeBadgeSweep": "Boceto de barrido", + "sketch.modeBadgeExtrude": "Boceto de extrusión", + "sketch.operationHint": "En qué se convierte este boceto: extrusión, revolución o barrido", + "status.sketchOperationChanged": "Ahora: {operation}. Termina el boceto para construir el cuerpo", + "status.sweepStarted": "Boceto de barrido iniciado: dibuja la sección como un contorno cerrado y después la trayectoria como línea de construcción", + "status.editingSweepProfile": "Editando el boceto de barrido", + "status.sweepCreated": "Cuerpo de barrido creado", + "status.sweepUpdated": "Barrido actualizado", + "status.sketchCannotSweep": "Este boceto no se puede barrer a lo largo de su trayectoria", + "sketch.sweepNoProfile": "Dibuja la sección como al menos un contorno cerrado.", + "sketch.sweepNoPath": "Dibuja la trayectoria como línea de construcción: activa la línea de construcción y dibuja una línea o una curva junto al contorno.", + "sketch.sweepManyPaths": "Hay más de una trayectoria. Deja una sola cadena de líneas de construcción.", + "sketch.sweepFailed": "No se ha podido barrer el contorno a lo largo de esta trayectoria. Prueba con una trayectoria más suave o una sección más pequeña.", + "sketch.finishSketch": "Terminar boceto", + "sketch.cancel": "Cancelar", + "sketch.to3d": "Boceto a 3D", + "sketch.extrude": "Extruir boceto", + "sketch.extrudeHint": "Levantar el perfil hasta convertirlo en una forma 3D", + "sketch.revolve": "Revolucionar boceto", + "sketch.revolveHint": "Girar el perfil alrededor de un eje", + "sketch.editTo3d": "Editar el boceto", + "sketch.edit": "Editar", + "visibility.nothingHidden": "Nada oculto", + "visibility.showAllHidden": "Mostrar todo lo oculto ({count})", + "visibility.showOutliner": "Mostrar la lista de objetos", + "visibility.hideOutliner": "Ocultar la lista de objetos", + "outliner.collapsePanel": "Contraer la lista de objetos", + "outliner.expandPanel": "Expandir la lista de objetos", + "outliner.moveHint": "Arrastra para moverla; suéltala junto al cubo de vista o haz doble clic para volver a acoplarla", + "outliner.title": "Objetos", + "outliner.search": "Buscar objetos…", + "outliner.empty": "No hay objetos en el diseño", + "outliner.noMatches": "Ningún objeto coincide", + "outliner.clearSearch": "Borrar la búsqueda", + "outliner.collapse": "Contraer grupo", + "outliner.expand": "Expandir grupo", + "outliner.rename": "Cambiar nombre", + "outliner.children": "{count} piezas", + "outliner.lock": "Bloquear objeto", + "outliner.unlock": "Desbloquear objeto", + "outliner.hide": "Ocultar objeto", + "outliner.show": "Mostrar objeto", + "outliner.solid": "Sólido", + "outliner.hole": "Orificio", + "group.edit": "Editar grupo", + "group.editBundle": "Editar conjunto", + "group.done": "Listo", + "group.noneOpen": "No se está editando ningún grupo", + "group.busy": "El grupo se está reconstruyendo", + "group.editing": "Editando {path}: cambia sus piezas y pulsa Listo.", + "group.editingEdgeWarning": " Los redondeos y chaflanes de todo el grupo se pierden al reconstruirlo.", + "group.finishOpenFirst": "Ahora solo se pueden editar los grupos que hay dentro de «{name}»: termínalo antes con Listo", + "status.groupOpened": "Editando «{name}»", + "status.groupClosed": "«{name}» reconstruido", + "status.groupOpenCancelled": "«{name}» queda sin cambios", + "status.groupOnePartLeft": "Solo queda una pieza: se mantiene suelta", + "status.groupNoPartsLeft": "No queda ninguna pieza", + "note.placeholder": "Escribe una nota…", + "note.move": "Arrastra para moverla, haz clic para abrirla", + "note.detach": "Soltar del objeto", + "note.free": "En el plano de trabajo", + "point.title": "Punto de referencia", + "point.deleteAll": "Eliminar todos ({count})", + "point.move": "Arrastra para moverlo, haz clic para ver las coordenadas", + "point.hint": "Las formas se ajustan a él", + "visibility.overhangs": "Mostrar voladizos (desde {angle}°)", + "visibility.notes": "Mostrar notas y puntos", + "visibility.eyeAgain": "Otro clic en el ojo: la selección", + "visibility.allShortcut": ": todo", + + "units.metric": "Métrico (predeterminado)", + "units.imperial": "Imperial", + "units.bricks": "Ladrillos", + "scale.millimeters": "1:1 (milímetros)", + "scale.centimeters": "1:10 (centímetros)", + "scale.meters": "1:1000 (metros)", + "scale.inches": "1:1 (pulgadas)", + "scale.feet": "1:1 (pies)", + "scale.studs": "1:1 (espigas)", + "grid.off": "Desactivado", + "grid.brick": "Ladrillo", + + "workspace.customActive": "Ajustes personalizados activos", + "workspace.usingDefaults": "Se usan los valores predeterminados de layerling", + "workspace.customizedSuffix": " — personalizado", + "workspace.appDefault": "Aplicación: {value}", + "workspace.shapeNote": "Los valores personalizados se aplican a las formas nuevas. Un límite de tamaño propio también sustituye los topes de tamaño actuales de esta forma, hasta {max} mm.", + "prop.helixQuality": "Calidad de la hélice", + + "workspace.unlimited": "Ilimitado", + "workspace.historyNote": "El valor predeterminado es {count} pasos. Con límites más bajos se descartan para siempre los estados de deshacer más antiguos de este diseño.", + + "edge.chamferTitle": "Achaflanar aristas", + "edge.chamfilletTitle": "Chaflán redondeado en aristas", + "edge.chamfillet": "Chaflán redondeado", + "edge.chamfilletHint": "Empieza con un chaflán imprimible junto a la cama y pasa a la pared con un redondeo suave", + "edge.filletTitle": "Redondear aristas", + "edge.cancelChamfer": "Cancelar chaflán", + "edge.cancelFillet": "Cancelar redondeo", + "edge.preparing": "Preparando aristas…", + "edge.selectionStatus": "{selected} de {available} aristas vivas seleccionadas", + "edge.singleObject": "Objeto único", + "edge.groupedObjects": "{count} objetos agrupados", + "edge.existingFeatureOne": " · 1 operación de aristas existente", + "edge.existingFeatureMany": " · {count} operaciones de aristas existentes", + "edge.selectionHelp": "Haz clic en las aristas resaltadas del modelo para activarlas o desactivarlas. Mantén pulsada Mayús para añadir o quitar una sola arista.", + "edge.loading": "Preparando en el navegador los datos CAD de las aristas.", + "edge.previewBusy": "Calculando la vista previa. Sigue ajustando: solo se calcula el valor en el que te detengas.", + "edge.allSharpEdges": "Todas las aristas vivas", + "edge.clear": "Borrar selección", + "edge.featureHistory": "Deshacer una operación de aristas", + "edge.revertHint": "Un clic deshace esa operación.", + "edge.editAction": "Editar", + "edge.editHint": "Retira esta operación y vuelve a abrir la herramienta con las mismas aristas y el valor listo para cambiarlo.", + "edge.revertAction": "Deshacer", + "edge.revertFilletOne": "Redondeo ({size} mm, 1 arista)", + "edge.revertFilletMany": "Redondeo ({size} mm, {count} aristas)", + "edge.revertChamferOne": "Chaflán ({size} mm, 1 arista)", + "edge.revertChamferMany": "Chaflán ({size} mm, {count} aristas)", + "edge.revertChamfilletOne": "Chaflán redondeado ({size} mm, 1 arista)", + "edge.revertChamfilletMany": "Chaflán redondeado ({size} mm, {count} aristas)", + "edge.noStoredHistory": "Las operaciones de aristas más antiguas no tienen historial de deshacer guardado.", + "edge.alsoRemovesNewer": "Cuidado: también quita {count} más recientes", + "edge.noManifoldEdges": "Aquí no hay ninguna arista continua que se pueda tratar.", + "edge.noEdgeAtThreshold": "Ninguna arista es tan viva como el umbral actual.", + "edge.selectAtLeastOne": "Selecciona al menos una arista resaltada.", + "edge.emptyResult": "El núcleo CAD ha devuelto un tratamiento de aristas vacío.", + "edge.radius": "Radio", + "edge.variableRadius": "Radio variable", + "edge.variableRadiusHint": "El radio cambia de forma uniforme a lo largo de la arista, del principio al final. Funciona con una sola arista cada vez.", + "edge.radiusStart": "Radio al principio", + "edge.radiusEnd": "Radio al final", + "edge.swapEnds": "Intercambiar extremos", + "edge.swapEndsHint": "Pone el radio mayor en el otro extremo de la arista.", + "edge.variableOneEdge": "El radio variable funciona con una sola arista cada vez. Elige solo una arista.", + "edge.distance": "Distancia", + "edge.angle": "Ángulo", + "edge.sharpThreshold": "Umbral de arista viva", + "edge.topEdges": "Aristas superiores", + "edge.topEdgesHint": "Selecciona solo las aristas de la parte más alta del cuerpo, como el borde de un cortador de galletas", + "edge.noTopEdges": "Arriba no hay ninguna arista que se pueda tratar con este umbral.", + "edge.bottomEdges": "Aristas inferiores", + "edge.bottomEdgesHint": "Selecciona solo las aristas de la parte más baja del cuerpo, como el pie de una pieza", + "edge.noBottomEdges": "Abajo no hay ninguna arista que se pueda tratar con este umbral.", + "edge.verticalEdges": "Aristas verticales", + "edge.verticalEdgesHint": "Selecciona las aristas que están en vertical, como las esquinas de una caja", + "edge.noVerticalEdges": "Con este umbral, ninguna arista de este cuerpo está en vertical.", + "edge.horizontalEdges": "Aristas horizontales", + "edge.horizontalEdgesHint": "Selecciona las aristas que están en horizontal, como los bordes de las caras superior e inferior de una caja", + "edge.noHorizontalEdges": "Con este umbral, ninguna arista de este cuerpo está en horizontal.", + "edge.quickAddHint": "Con Mayús o Ctrl y un clic, las aristas se añaden a las ya seleccionadas", + "edge.done": "Listo", + "edge.tangentChains": "Un clic también selecciona las aristas que continúan de forma suave", + "edge.tangentChainsHint": "Solo decide lo que selecciona un clic. El núcleo CAD siempre prolonga un chaflán o un redondeo por las aristas que continúan de forma suave (tangente) desde una seleccionada.", + "edge.tangentImpliedOne": "El núcleo CAD lo prolonga por 1 arista más que continúa de forma suave.", + "edge.tangentImpliedMany": "El núcleo CAD lo prolonga por {count} aristas más que continúan de forma suave.", + "edge.keepSize": "Conservar la medida de las aristas al redimensionar", + "edge.onlyVisibleEdges": "Solo aristas visibles", + "edge.onlyVisibleEdgesHint": "Oculta las aristas que quedan detrás del cuerpo en esta vista, para que solo se vean y se puedan seleccionar las que están de cara a ti.", + "edge.previewQuality": "Calidad de la vista previa", + "edge.draft": "Borrador", + "edge.standard": "Estándar", + "edge.fine": "Fina", + "edge.apply": "Aplicar", + "edge.errorOverlappingGeometry": "El tamaño elegido es demasiado grande para esta arista y corta las caras contiguas. Elige un valor más pequeño.", + "edge.errorNoSolidBody": "El grupo seleccionado no contiene ningún cuerpo sólido que se pueda modificar.", + "edge.errorPrepareTimeout": "La preparación de las aristas ha tardado demasiado. Esta malla es demasiado detallada para procesarla de forma interactiva.", + "edge.errorPreviewTimeout": "La vista previa de las aristas ha tardado demasiado. Cancela la herramienta y vuelve a intentarlo.", + "edge.errorWorkerFailed": "El núcleo CAD no ha podido arrancar. Normalmente es porque layerling se acaba de actualizar: recarga la página y sigue. Si no se arregla, actualiza el navegador.", + "edge.errorFilletTogether": "Las aristas seleccionadas no se pueden redondear juntas con este tamaño. Reduce el tamaño o selecciona menos aristas conectadas.", + "edge.errorChamferTogether": "Las aristas seleccionadas no se pueden achaflanar juntas con este tamaño. Reduce el tamaño o selecciona menos aristas conectadas.", + "edge.errorKernelFailed": "El núcleo CAD no ha podido completar este tratamiento de aristas.", + "error.unknown": "Algo ha fallado: {detail}", + "error.storedBodyRestore": "No se ha podido restaurar el cuerpo exacto guardado. Deshaz el último tratamiento de aristas o elige un valor más pequeño.", + "error.exactBodyInvalid": "El cuerpo exacto no es válido después de colocarlo. Cambia un poco las medidas y vuelve a intentarlo.", + "error.solidNotValid": "No se ha podido construir un cuerpo válido con estas medidas. Cámbialas un poco y vuelve a intentarlo.", + "error.measuresOutOfRange": "Las medidas están fuera del rango permitido.", + "error.threadChamferAxis": "El chaflán de la rosca llega hasta su eje. Elige uno más pequeño.", + "error.gearHoleTeeth": "El orificio central del engranaje llega hasta los dientes. Elige uno más pequeño.", + "error.crescentRounding": "El redondeo de las puntas no cabe en esta media luna. Elige uno más pequeño.", + "error.glyphCurve": "Una letra usa una curva que no se puede convertir en un contorno exacto.", + "error.primitiveDimensions": "Las medidas de esta forma no son válidas.", + "error.primitiveNotSolid": "No se ha podido preparar la forma como un cuerpo CAD válido.", + "error.noMeshData": "El objeto no tiene datos de malla.", + "error.noClosedFaces": "El objeto no tiene caras cerradas.", + "error.meshOpen": "La malla está abierta o tiene aristas no válidas (non-manifold). Repárala antes de tratar las aristas.", + "error.groupRepair": "No se ha podido reparar el cuerpo agrupado para convertirlo en geometría válida.", + "error.noSolidComponents": "La selección no contiene ningún cuerpo cerrado.", + "error.edgeNotMapped": "No se ha podido asociar una arista a su cuerpo. Vuelve a abrir la herramienta de aristas.", + "error.prepareFirst": "Prepara un objeto antes de abrir la vista previa.", + "edge.errorNoSolidResult": "Con este valor no queda un cuerpo cerrado. Elige un valor más pequeño.", + "error.storedStepNoSolid": "El cuerpo STEP guardado no contiene ningún sólido.", + "error.fontsNotLoaded": "Las fuentes aún no se han cargado. Vuelve a intentarlo dentro de un momento.", + "error.revolveNoProfile": "Dibuja al menos un perfil cerrado a la izquierda del eje de revolución.", + "error.revolveNoArea": "El perfil de revolución no tiene ninguna superficie rellena.", + "error.revolveNotValid": "No se ha podido revolucionar el perfil para obtener un cuerpo válido.", + "error.sketchOpenPaths": "Todos los contornos del perfil están abiertos. Cierra al menos uno antes de terminar el boceto, o activa «Construir como trazo» para construir la propia línea abierta con un grosor.", + "error.svgEmpty": "El archivo SVG está vacío.", + "error.svgTooLarge": "El archivo SVG es demasiado grande. El máximo es {size} MB.", + "error.svgEntities": "Este archivo SVG usa entidades o un tipo de documento propio. Solo se admite un documento SVG sencillo.", + "error.svgNaN": "El archivo SVG contiene números no válidos. En Tinkercad, asegúrate de que el plano de trabajo corta el modelo antes de exportar la sección.", + "error.svgTooComplex": "El archivo SVG es demasiado complejo. Simplifica el dibujo y vuelve a intentarlo.", + "error.svgExternal": "El SVG solo apunta a un archivo externo, que layerling no puede abrir. Abre directamente esa imagen (PNG o JPG) o guarda el SVG con el dibujo dentro.", + "error.svgPicture": "Este SVG contiene una imagen junto a su dibujo, y una imagen no es un dibujo. Una imagen solo se calca cuando es lo único que contiene el SVG: sácala del SVG o abre directamente la imagen (PNG o JPG).", + "error.pictureUnreadable": "No se ha podido leer la imagen. Guárdala como PNG o JPG y vuelve a intentarlo.", + "error.pictureEmpty": "En esta parte de la imagen no hay nada que calcar. Prueba con la otra parte.", + "error.svgOpenStrokes": "El archivo SVG solo contiene trazos abiertos. Cierra los trazados o convierte los trazos en contornos rellenos antes de importarlo.", + "error.svgNoPaths": "No se ha encontrado en el archivo SVG ningún trazado relleno o cerrado que se pueda leer.", + "error.svgInvalidXml": "El archivo no es un SVG válido (error de XML).", + "error.meshBroken": "La malla está dañada: tiene triángulos incompletos o coordenadas no válidas.", + "error.meshTooComplex": "La malla es demasiado compleja. Simplifícala y vuelve a intentarlo.", + "error.meshDegenerate": "La malla contiene triángulos sin superficie. Repárala y vuelve a intentarlo.", + "error.meshNotWatertight": "La malla no es estanca (tiene aristas abiertas o non-manifold). Repárala y vuelve a intentarlo.", + "error.meshNoVolume": "La malla no encierra ningún volumen.", + "error.svgProjectionEmpty": "La proyección no contiene contornos legibles o no tiene superficie visible.", + "error.objEmpty": "El archivo OBJ no contiene geometría legible.", + "error.objBroken": "El archivo OBJ contiene geometría defectuosa (vértices, caras o índices no válidos).", + "error.stlEmpty": "El archivo STL no contiene geometría legible.", + "error.threemfUnzip": "No se ha podido descomprimir el archivo 3MF. ¿Está dañado?", + "error.threemfEmpty": "El archivo 3MF no contiene ningún modelo 3D legible.", + "error.threemfBroken": "El archivo 3MF contiene datos defectuosos.", + "error.stepRead": "No se ha podido leer el archivo STEP.", + "error.stepNoSolid": "El archivo STEP no tiene geometría sólida que importar.", + "error.stepExport": "La exportación a STEP ha fallado.", + "error.stlExportLimit": "El diseño tiene demasiados triángulos para un archivo STL binario.", + "error.threemfExportEmpty": "Para exportar a 3MF hace falta al menos un cuerpo con triángulos.", + "error.projectAssetType": "Este tipo de archivo no se admite en un diseño.", + "error.noLocalDatabase": "Este navegador no tiene base de datos local.", + "error.libraryOpen": "No se ha podido abrir la biblioteca de formas.", + "error.libraryBusy": "La biblioteca de formas está en uso en otra pestaña.", + "error.libraryWrite": "No se ha podido escribir en la biblioteca de formas.", + "error.libraryMissing": "Esta forma ya no está en la biblioteca.", + "error.serverShapeSave": "No se ha podido guardar la forma en el servidor.", + "error.projectStorage": "El almacenamiento de las formas del diseño no está disponible o no se ha podido abrir.", + "error.storeFolderCreate": "No se puede crear la carpeta compartida {folder} indicada en {setting} ({reason}). Monta una carpeta con permiso de escritura en {folder} o pon en {setting} la carpeta que hayas montado. En Docker, un ajuste cambiado se aplica con «docker compose up -d»; «restart» mantiene el anterior.", + "error.folderNameNotAllowed": "Ese nombre de carpeta no está permitido.", + "error.folderNotAllowed": "Esa carpeta no está permitida.", + "error.folderNotOnServer": "Esa carpeta no está en el servidor.", + "error.folderExists": "Ya hay una carpeta con ese nombre.", + "error.folderSameName": "La carpeta ya se llama así.", + "error.folderNotEmpty": "La carpeta no está vacía.", + "error.storeFolderRename": "No se puede cambiar el nombre de la propia carpeta de almacenamiento.", + "error.storeFolderRemove": "No se puede eliminar la propia carpeta de almacenamiento.", + "error.sharedBusy": "Otra persona está cambiando ahora este diseño del servidor. Vuelve a intentarlo dentro de un momento.", + "error.sharedNotFound": "No se ha encontrado el diseño del servidor.", + "error.sharedNameInvalid": "El nombre del diseño del servidor no es válido.", + "error.sharedNameRequired": "El diseño del servidor necesita un nombre.", + "error.sharedNameTaken": "Ya hay un diseño con ese nombre en esa carpeta.", + "error.sharedAlreadyHere": "Ese diseño ya está en esta carpeta.", + "error.sharedCopyName": "La copia necesita un nombre propio.", + "error.sharedReloadFirst": "Recarga los diseños del servidor para que se pueda comprobar la versión actual y vuelve a intentarlo.", + "error.sharedChanged": "El diseño del servidor ha cambiado desde que lo cargaste. Actualiza la lista de diseños del servidor y vuelve a intentarlo.", + "error.sharedChangedSave": "El diseño del servidor ha cambiado desde que lo abriste. Recárgalo o guárdalo con otro nombre.", + "error.sharedGone": "El diseño del servidor ya no existe. Guárdalo con otro nombre.", + "error.sharedDisabled": "El almacenamiento de diseños en el servidor está desactivado.", + "error.sharedSameOrigin": "Los diseños del servidor solo aceptan peticiones de este sitio.", + "error.sharedTooLarge": "El archivo .lyl supera el tamaño máximo del almacenamiento del servidor.", + "error.sharedUpload": "La subida está incompleta o su miniatura no es válida. Vuelve a guardar.", + "error.sharedFailRead": "No se han podido leer los diseños del servidor.", + "error.sharedFailDelete": "No se ha podido eliminar el diseño del servidor.", + "error.sharedFailSave": "No se ha podido guardar el diseño del servidor.", + "error.sharedFailDownload": "No se ha podido descargar el diseño del servidor.", + "error.thumbnailInvalid": "La miniatura o su petición no son válidas.", + "error.thumbnailTooLarge": "La imagen de la miniatura es demasiado grande.", + "error.thumbnailSameOrigin": "Solo se aceptan miniaturas de este sitio.", + "error.thumbnailSave": "No se ha podido guardar la miniatura.", + "error.historyViewOpen": "La vista del historial está abierta. Ciérrala (layerling_set_history_view con open: false) antes de cambiar el diseño.", + "error.noEarlierState": "Aún no hay ningún estado anterior que revisar.", + "error.finishBeforeHistory": "Termina la acción en curso antes de abrir la vista del historial.", + "crash.title": "layerling ha encontrado un error", + "crash.description": "No se ha podido mostrar esta vista. Esto no borra los diseños guardados en tu navegador.", + "crash.details": "Mensaje de error", + "crash.backupMissing": "Todavía no hay ningún estado guardado de este diseño en el navegador.", + "crash.projectHint": "Diseño afectado: {name}", + "crash.goToDashboard": "Volver a la página de inicio", + "crash.downloadBackup": "Descargar el último estado guardado como .lyl", + "crash.newEmptyProject": "Empezar un diseño nuevo", + "edge.errorMeshNotSolid": "La malla seleccionada no se ha podido convertir en un sólido CAD cerrado. Prueba a separar las piezas, a desagrupar o a simplificar el objeto antes de tratar las aristas.", + "edge.errorKernelMemoryFault": "El núcleo CAD ha sufrido un fallo de memoria y se ha reiniciado. Vuelve a abrir la herramienta de aristas; no hace falta recargar la página.", + "edge.errorKernelRestart": "El núcleo CAD se ha quedado sin espacio y se ha reiniciado. Espera un momento y vuelve a abrir la herramienta de aristas; no hace falta recargar la página.", + "error.kernelNeedsSimd": "El núcleo CAD necesita WebAssembly SIMD, que este navegador u ordenador no ofrece. Usa una versión actual de Chrome, Edge, Firefox o Safari.", + "error.outOfMemory": "El navegador se ha quedado sin memoria para este paso. El diseño es muy grande. Reduce los triángulos de las mallas importadas con Simplificar malla, cierra otras pestañas y vuelve a intentarlo.", + + "split.title": "Dividir", + "split.subtitle": "Coloca el plano y crea dos cuerpos", + "split.cancelAria": "Cancelar la división", + "split.targetOne": "1 objeto seleccionado", + "split.targetMany": "{count} objetos seleccionados", + "split.targetHint": "Cada objeto cortado se convertirá en dos mallas cerradas.", + "split.orientation": "Orientación del plano", + "split.workplane": "Alinear con el plano de trabajo", + "split.workplaneParallel": "Paralelo", + "split.workplaneParallelHint": "Coloca el plano sobre el plano de trabajo: por su origen si este corta las piezas; si no, por el centro de las piezas", + "split.workplaneAcrossX": "Transversal a X", + "split.workplaneAcrossXHint": "Perpendicular al plano de trabajo, transversal a su dirección X", + "split.workplaneAcrossY": "Transversal a Y", + "split.workplaneAcrossYHint": "Perpendicular al plano de trabajo, transversal a su dirección Y", + "split.rotation": "Giro sobre {axis}", + "split.rotationAria": "Giro del plano de división sobre el eje {axis}", + "split.rotationSliderAria": "Control deslizante del giro del plano de división sobre el eje {axis}", + "split.rotationValue": "{value} grados sobre el eje {axis}", + "split.degrees": "°", + "split.position": "Posición del plano", + "split.positionAria": "Posición del plano de división", + "split.positionSliderAria": "Control deslizante de la posición del plano de división", + "split.positionValue": "{value} {unit}", + "split.pickFace": "Elegir cara", + "split.pickFaceHint": "Elegir cara: haz clic en una cara para colocar el plano sobre ella", + "split.help": "El plano translúcido muestra el corte exacto. Arrastra su flecha para moverlo o usa Elegir cara para colocarlo sobre una cara. Gíralo sobre uno o los dos ejes para hacer un corte en ángulo.", + "split.apply": "Dividir modelo", + "split.applying": "Dividiendo", + "split.error.notClosed": "La malla de origen no ha podido formar un sólido cerrado ({status}).", + "split.error.overlapping": "Los componentes solapados o separados no se han podido combinar en un cuerpo válido para dividir.", + "split.error.emptyHalf": "El plano de división ha producido una mitad vacía o no válida. Mete el plano más dentro del modelo.", + "split.error.store": "La división se ha completado, pero no se ha podido guardar una de las mallas resultantes.", + "split.error.kernel": "Error del núcleo de división: {message}", + "split.error.kernelUnknown": "El núcleo de división no ha podido procesar este modelo.", + "split.error.failed": "No se ha podido dividir {name}. {detail}", + "split.error.failedDefault": "No se ha podido dividir el modelo por este plano.", + "split.error.movePlane": "Mueve el plano para que atraviese al menos un objeto seleccionado.", + "status.splitReady": "Dividir: coloca el plano y aplica", + "status.splitPick": "Haz clic en una cara para colocar sobre ella el plano de división; Esc para salir", + "status.splitCancelled": "División cancelada", + "status.splitCancelledChanged": "División cancelada porque ha cambiado la selección o el modelo", + "status.splitCancelledProcessing": "División cancelada porque el diseño, la selección o el modelo han cambiado durante el cálculo", + "status.splitSelectSolids": "Selecciona uno o más sólidos u orificios visibles y desbloqueados para dividirlos", + "status.splitNoGeometry": "La selección no tiene geometría imprimible que dividir", + "status.splitFailed": "No se ha podido dividir {name}", + "status.splitMissed": "El plano de división no atraviesa la selección", + "status.splitOne": "1 objeto dividido en {count} cuerpos", + "status.splitMany": "{count} objetos divididos en {bodies} cuerpos", + + "align.left": "izquierda", + "align.right": "derecha", + "align.center": "centro", + "align.front": "delante", + "align.back": "detrás", + "align.middle": "centro", + "align.bottom": "abajo", + "align.top": "arriba", + "align.do": "Alinear: {label}", + "align.already": "Ya alineado: {label}", + "mirror.leftRight": "izquierda-derecha", + "mirror.frontBack": "delante-detrás", + "mirror.topBottom": "arriba-abajo", + + "notice.sharedLoadFailed": "No se han podido cargar los diseños del servidor", + "notice.projectListSaveFailed": "No se ha podido guardar la lista de diseños", + "notice.projectShapesLoadFailed": "No se han podido cargar las formas del diseño", + "notice.projectShapesSaveFailed": "No se han podido guardar las formas del diseño", + "error.projectTooLarge": "Este diseño es demasiado grande para guardarlo: su historial y sus mallas ocupan demasiado. Borra el historial en la vista del historial o simplifica los cuerpos más pesados.", + "error.storageFull": "El navegador no tiene espacio para guardar este diseño. Borra el historial en la vista del historial, elimina los diseños que no necesites o haz antes una copia de seguridad de ellos.", + "notice.projectShapesSaveFailedWhy": "No se han podido guardar las formas del diseño: {reason}", + "notice.projectHistoryTrimmed": "Este diseño es grande: la copia guardada en el navegador solo conserva los últimos {kept} de {total} pasos del historial. Borra el historial para aligerarlo.", + "notice.projectShapesMigrateFailed": "No se han podido pasar las formas del diseño a un almacenamiento más grande", + "notice.projectShapesPrepareFailed": "No se ha podido preparar el almacenamiento de las formas del diseño", + "notice.projectShapesDeleteFailed": "No se han podido borrar las formas del diseño del almacenamiento local", + "notice.validatingFile": "Comprobando {name} antes de abrirlo como diseño nuevo", + "notice.opened": "{name} abierto", + "notice.openingShared": "Abriendo el diseño del servidor {name}", + "notice.openedServerProject": "Diseño del servidor {name} abierto: los cambios se guardan allí automáticamente.", + "error.newerDesign": "Este diseño se guardó con layerling {saved} y tú tienes la {current}. Contiene algo que esta versión aún no conoce. Recarga la página para obtener la versión más reciente; puede que haya que actualizar la aplicación instalada o tu propio servidor.", + "notice.newerDesignOpened": "Se guardó con layerling {saved} y tú tienes la {current}: lo más nuevo, como las fuentes propias, puede verse distinto aquí. Recarga la página para obtener la versión más reciente.", + "notice.openedLocalProject": "{name} abierto como diseño local nuevo", + "notice.savedToServer": "{name} guardado en el servidor", + "notice.sendingAllToServer": "Subiendo {done} de {count} al servidor…", + "notice.sentAllOne": "Ya hay 1 diseño en el servidor.", + "notice.sentAllMany": "Ya hay {count} diseños en el servidor.", + "notice.sentAllPartial": "{done} en el servidor; {failed} no se han podido subir y se quedan en este navegador.", + "notice.openSharedFailed": "No se ha podido abrir el diseño del servidor", + "notice.saveSharedFailed": "No se ha podido guardar el diseño en el servidor", + "notice.folderCreateFailed": "No se ha podido crear la carpeta", + "notice.renamingFolder": "Cambiando el nombre de la carpeta {name}…", + "notice.renamedFolder": "La carpeta ahora se llama {name}", + "notice.folderRenameFailed": "No se ha podido cambiar el nombre de la carpeta", + "notice.deletingFolder": "Eliminando la carpeta {name}…", + "notice.deletedFolder": "Carpeta {name} eliminada", + "notice.folderDeleteFailed": "No se ha podido eliminar la carpeta", + "notice.deletingShared": "Eliminando el diseño del servidor {name}", + "notice.deletedShared": "Diseño del servidor {name} eliminado", + "notice.deleteSharedFailed": "No se ha podido eliminar el diseño del servidor", + "notice.renameSharedFailed": "No se ha podido cambiar el nombre del archivo del diseño del servidor; conserva su nombre anterior", + "notice.movingShared": "Moviendo el diseño del servidor {name}…", + "notice.movedShared": "El diseño del servidor {name} está ahora en {folder}", + "notice.movedSharedRoot": "El diseño del servidor {name} está ahora en el nivel superior de la carpeta del servidor", + "notice.moveSharedFailed": "No se ha podido mover el diseño del servidor", + "notice.moveNameTaken": "Esa carpeta ya contiene un diseño llamado {name}", + "notice.duplicating": "Duplicando {name}…", + "notice.duplicated": "{name} creado", + "notice.duplicateFailed": "No se ha podido duplicar el diseño", + "notice.sendingToServer": "Guardando {name} en el servidor…", + "notice.serverNameTaken": "El servidor ya tiene un diseño llamado {name}", + "notice.backupEmpty": "Aún no hay diseños de los que hacer una copia de seguridad", + "notice.backingUp": "Haciendo la copia de seguridad de los diseños… {index} de {total}", + "notice.backupDone": "Copia de seguridad de {count} diseños hecha en {name}", + "notice.backupDoneWithShapes": "Copia de seguridad de {count} diseños y {shapes} formas personalizadas hecha en {name}", + "notice.backupShapesRestored": "Formas personalizadas: {count} añadidas, {skipped} ya estaban.", + "notice.backupFailed": "La copia de seguridad ha fallado: {reason}", + "notice.backupNotReadable": "{name} no es un archivo ZIP legible", + "notice.backupNoDesigns": "{name} no contiene ningún diseño de layerling", + "notice.restoringBackup": "Restaurando diseños… {index} de {total}", + "notice.backupRestored": "{count} diseños restaurados desde {name}", + "notice.backupRestoredPartly": "{count} diseños restaurados desde {name}; {failed} no se han podido leer", + "notice.backupAlreadyThere": "{count} ya estaban y no se han vuelto a añadir.", + "notice.backupAllThere": "Los {count} diseños de {name} ya están aquí; no se ha añadido nada.", + "notice.oneBackupAtATime": "Abre una copia de seguridad sola, sin otros archivos", + "notice.oneLylAtATime": "Abre un solo archivo de diseño cada vez; la geometría STL, OBJ, STEP y SVG se importa aparte", + "notice.importedDesignName": "Diseño importado ({count} archivos)", + "notice.folderDeleted": "Carpeta {name} eliminada; lo que contenía ha subido un nivel.", + "notice.movedToFolder": "{name} se ha movido a la carpeta {folder}.", + "notice.movedToRoot": "{name} se ha movido al nivel superior.", + "notice.importing": "Importando {index} de {total}: {name}", + "notice.importProjectFailed": "No se ha podido crear un diseño para los archivos importados", +}; diff --git a/docs/guide/es/01-getting-started.md b/docs/guide/es/01-getting-started.md new file mode 100644 index 000000000..b5f8569b5 --- /dev/null +++ b/docs/guide/es/01-getting-started.md @@ -0,0 +1,114 @@ +--- +title: Primeros pasos +summary: De la hoja en blanco a tu primera pieza para la impresora 3D en cinco minutos, sin crear ninguna cuenta y sin instalar nada. +--- + +layerling es un programa de diseño para impresión 3D que funciona directamente en el navegador. Construyes una pieza con formas sencillas, le haces orificios, redondeas sus aristas y la envías a tu laminador (*slicer*). No hay que instalar nada ni registrarse. Lo que construyes se queda en tu ordenador. + +![La página de inicio de layerling: arriba, «Crear nuevo diseño 3D»; debajo, tus diseños y la guía rápida.](shot:start-page) + +## Crear un diseño + +Abre [layerling.com](https://layerling.com/). En la página de inicio, haz clic en {{ui:dashboard.createDesign}}. Se abre el editor con un plano de trabajo vacío: la cuadrícula sobre la que va tomando forma todo. + +Si ya tienes un archivo con el que quieres seguir trabajando, usa {{ui:dashboard.importGeometry}}. Sirve tanto para diseños de layerling (`.lyl`) como para archivos STL, OBJ, 3MF, STEP o SVG. + +Todos tus diseños aparecen después en la página de inicio, con una imagen de vista previa. Se guardan en el almacenamiento de tu navegador, automáticamente después de cada cambio, así que no hay botón de guardar. **layerling no se hace responsable de los diseños guardados en el navegador.** Un navegador puede fallar, o una actualización suya puede dar problemas, así que de vez en cuando haz una copia de seguridad de tus diseños con {{ui:dashboard.backupAll}}, en la página de inicio, o guárdalos como archivos. Una copia de seguridad se recupera con {{ui:dashboard.restoreBackup}}. Cómo meter diseños en un archivo y pasárselos a otras personas lo explica [Archivos y guardado](chapter:files-and-saving). + +## El editor de un vistazo + +![El editor con dos formas sobre el plano de trabajo. Arriba, la cinta; a la izquierda, los controles de cámara; a la derecha, los ajustes de la forma seleccionada.](shot:editor-overview) + +- **Arriba** está la cinta, ordenada por tareas: {{ui:editor.group.clipboard}}, {{ui:editor.group.history}}, {{ui:editor.group.shapes}}, {{ui:editor.group.visibility}}, {{ui:editor.group.combine}}, {{ui:editor.group.modify}}, {{ui:editor.group.arrange}}, {{ui:editor.group.manage}} y {{ui:editor.group.help}}. Pasa el ratón por encima de un icono para ver su nombre. Allí donde veas un pequeño signo de interrogación, por ejemplo en los ajustes de una forma, en la biblioteca de formas o en los paneles de herramientas, te lleva directamente al capítulo de esta guía que trata ese tema. +- **En el centro** está el plano de trabajo. Ahí colocas las formas, las ajustas a tu gusto y ves el resultado. +- **A la derecha** aparecen los ajustes de la forma seleccionada: color, medidas, posición y todo lo demás que define la forma. Escribir números es más exacto que arrastrar. +- **A la izquierda** están los controles de cámara, con el cubo de vista encima. Con ellos te mueves por la escena; tienes más detalles en [Vista y plano de trabajo](chapter:view-and-workplane). +- **Arriba del todo** cambias entre {{ui:editor.modeGeometry}} y {{ui:editor.modeSketch}}, cambias el nombre del diseño y eliges el idioma y el tema. + +## Los botones alrededor de la zona de trabajo + +Pasa el ratón por encima de un botón para ver su nombre. Si no tienes claro qué hace un botón, haz clic en {{ui:interactiveHelp.title}}, en el grupo {{ui:editor.group.help}} ([[Mayús]]+[[F1]]), y después en el botón. Estos son los que más se preguntan. + +### Pegar + +{{ui:editor.tool.paste}} ([[Ctrl]]+[[V]]) añade al diseño lo que hayas copiado con {{ui:editor.tool.copy}}. {{ui:common.duplicate}} copia y pega en un solo paso. + +### Eliminar + +{{ui:common.delete}} ([[Supr]]) quita las formas seleccionadas. {{ui:editor.tool.undo}} las recupera. + +### Desagrupar + +{{ui:editor.tool.ungroup}} ([[Ctrl]]+[[Mayús]]+[[G]]) vuelve a separar el grupo seleccionado en las formas con las que se hizo. + +### Ajustes del espacio de trabajo + +{{ui:editor.workspaceSettings}} abre los ajustes de la zona de trabajo: unidad, tamaño de la placa, impresora, cuadrícula, colores, luz y más. Tienes más detalles en [Vista y plano de trabajo](chapter:view-and-workplane). + +### Tema + +{{ui:common.theme}}, arriba del todo, elige el aspecto de layerling: como el de tu sistema, claro, oscuro o grafito. + +### Cambiar nombre del diseño + +{{ui:editor.renameProject}}: el lápiz que hay junto al nombre, arriba del todo. Escribe el nombre nuevo y pulsa [[Intro]]. + +### Nombre del diseño + +El nombre del diseño ({{ui:confirm.projectName}}) está arriba del todo. Haz clic en él, escribe y pulsa [[Intro]] para conservar el nombre. + +### Opciones de visibilidad + +{{ui:editor.visibilityOptions}}, la flecha que hay junto al icono del ojo, reúne lo que puedes mostrar u ocultar: la lista de objetos, todo lo que hayas ocultado, las notas y los voladizos de la impresión. Tienes más detalles en [Seleccionar y organizar](chapter:select-and-arrange). + +### Ocultar selección + +{{ui:editor.tool.hideSelected}} ([[Ctrl]]+[[H]]) oculta las formas seleccionadas. Siguen en el diseño y en la lista de objetos; {{ui:editor.visibilityOptions}} las vuelve a mostrar. + +### Buscar comandos + +{{ui:palette.open}}: escribe lo que buscas, ya sea una herramienta, una forma o un ajuste, y haz clic en el resultado. + +### Ocultar los controles de cámara + +{{ui:camera.hide}} recoge los controles de cámara de la izquierda y deja más sitio a la zona de trabajo; {{ui:camera.show}} los vuelve a mostrar. + +### Cuadrícula de ajuste + +{{ui:inspector.snapGrid}}, al final de las propiedades, es el paso al que se ajustan los movimientos y los cambios de tamaño. A su lado, el pequeño interruptor **mm | in** cambia la unidad. Tienes más detalles en [Vista y plano de trabajo](chapter:view-and-workplane). + +### Unidad: milímetros o pulgadas + +El interruptor **mm | in**, junto a {{ui:inspector.snapGrid}}, cambia en este diseño la unidad, la cuadrícula de la placa y el paso de ajuste. + +### El pie de página + +En la parte de abajo de la ventana: {{ui:dashboard.sponsor}} lleva a la página donde puedes apoyar el proyecto; {{ui:dashboard.userGuide}} abre esta guía; {{ui:dashboard.forum}} lleva al sitio para preguntas, ideas e informes de errores (las discusiones de GitHub; en alemán, el foro de drucktipps3d); {{ui:editor.bugReport}} genera un ZIP para un informe de error; {{ui:dashboard.projectOnGitHub}} lleva al proyecto en GitHub, y el número de versión abre las notas de la versión. Los enlaces al aviso legal y a la política de privacidad son responsabilidad de quien gestiona la copia de layerling que usas. + +## Tu primera pieza + +Como ejemplo, vamos a construir un cubo con un orificio. + +1. Haz clic en {{ui:editor.addShape}}, en la cinta, y elige {{ui:shape.box}}. La forma se queda pegada al puntero del ratón. Un clic en el plano de trabajo la deja en su sitio. +2. A la derecha, fija las medidas, por ejemplo 40 mm de largo, 40 mm de ancho y 20 mm de alto. +3. Coloca del mismo modo un {{ui:shape.cylinder}} en el centro, de 14 mm de diámetro y 30 mm de alto. Tiene que ser más alto que el cubo para atravesarlo de arriba abajo. +4. Selecciona el cilindro y haz clic en {{ui:inspector.hole}}, a la derecha. Se vuelve transparente: el sólido se ha convertido en una herramienta que quita material. +5. Selecciona las dos formas y haz clic en {{ui:editor.tool.group}}. El cubo ya tiene un orificio. + +![El cilindro es un orificio y sobresale por encima del cubo.](shot:hole-before) + +![Después de agrupar, el cubo tiene un orificio que lo atraviesa.](shot:hole-after) + +Así se hacen orificios, ranuras y huecos. El capítulo [Sólidos y orificios](chapter:solids-and-holes) lo explica con detalle. + +## Novedades desde tu última visita + +Cuando vuelves a abrir layerling después de una actualización, una tarjeta en la página de inicio muestra lo que se ha añadido desde tu última visita: cada versión publicada desde entonces, empezando por la más reciente. Si llevabas mucho tiempo sin entrar, desplázate hacia abajo dentro de la tarjeta. Debajo, {{ui:whatsNew.earlier}} añade también las versiones anteriores a tu última visita. Ciérrala con {{ui:whatsNew.dismiss}} y no volverá a aparecer hasta la próxima actualización. {{ui:whatsNew.footerLink}}, en el pie de la página de inicio, vuelve a mostrar las últimas novedades cuando quieras. El navegador recuerda la última versión que viste, y nada sobre ti sale de él. + +En una copia de layerling instalada en tu propio ordenador o servidor, el aviso «Actualización disponible» tiene un botón, {{ui:update.previewShow}}, que muestra lo que trae la actualización antes de instalarla. La lista se descarga de GitHub solo cuando pulsas el botón. + +## Del diseño a la impresión + +Cuando tu pieza esté lista, haz clic en {{ui:editor.export}}, elige STL o 3MF y descarga el archivo. Ábrelo en tu laminador, por ejemplo Bambu Studio, PrusaSlicer, OrcaSlicer o Cura. Si eliges tu impresora en los ajustes, ves mientras construyes si la pieza cabe en la cama. Tienes más detalles en [Impresión](chapter:printing). + +> **Consejo:** Si vienes de Tinkercad, te orientarás enseguida: la placa, las formas, sólidos y orificios, agrupar, alinear y reflejar funcionan casi igual. Lo nuevo es sobre todo el chaflán y el redondeo, el vaciado, las roscas y los bocetos. diff --git a/docs/guide/es/02-view-and-workplane.md b/docs/guide/es/02-view-and-workplane.md new file mode 100644 index 000000000..882d6503e --- /dev/null +++ b/docs/guide/es/02-view-and-workplane.md @@ -0,0 +1,195 @@ +--- +title: Vista y plano de trabajo +summary: Moverse por la escena, mirar de frente y colocar formas nuevas sobre la superficie que quieras. +--- + +## Moverse por la escena + +Con el ratón: + +| Qué haces | Qué pasa | +| --- | --- | +| arrastrar con el botón derecho | girar la vista | +| hacer clic con el botón derecho | sobre un cuerpo, un menú con las órdenes más usadas: duplicar, orificio o sólido, agrupar, ocultar, bloquear, eliminar y más; sobre un espacio vacío, Pegar y Seleccionar todo | +| arrastrar con el botón central | desplazar la vista | +| rueda del ratón | acercar y alejar | +| mantener pulsado [[Ctrl]] / [[Cmd]] y arrastrar con el botón izquierdo | desplazar también la vista (en el panel táctil de un MacBook: mantén pulsado [[Cmd]], pulsa y arrastra) | + +La rapidez con que hace zoom la rueda se regula con {{ui:workspace.zoomSpeed}} en los ajustes, dentro de {{ui:workspace.appearance}}: es un control deslizante de 1 a 14 que empieza en 5. Solo afecta a la rueda y al panel táctil: los botones y las teclas [[+]] y [[−]] hacen zoom siempre en los mismos pasos pequeños. Cada muesca de la rueda del ratón hace el mismo zoom en todos los navegadores; en un panel táctil, el zoom depende de cuánto deslices los dedos. + +En una tableta o un móvil, dos dedos hacen zoom (separándolos y pellizcando) y desplazan la vista (deslizándolos juntos). Un dedo sobre un espacio vacío gira la vista, y un toque ahí quita la selección; sobre una forma o un tirador, el dedo trabaja en el diseño, igual que el botón izquierdo del ratón. Si quieres girar la vista también con un dedo que empiece sobre una forma, activa {{ui:camera.touchRotate}} en la barra de cámara. Ese interruptor aparece en los dispositivos con pantalla táctil. + +Una tableta gráfica con lápiz se comporta como un ratón: la punta es el botón izquierdo y el botón lateral del lápiz, el derecho, para girar la vista y para abrir el menú. Las teclas rápidas de la tableta se pueden asignar en su controlador a los [atajos de teclado](chapter:shortcuts) de layerling. + +**En una tableta, trabaja con un lápiz si puedes.** Su punta es mucho más fina que la yema de un dedo y no tapa lo que quieres tocar, así que aciertas con exactitud los puntos pequeños, las líneas finas y los tiradores de un boceto, los puntos de medida y las aristas, y cansa menos trabajar mucho rato. layerling ya deja que un dedo alcance puntos, líneas, tiradores y aristas desde un poco más lejos que el puntero del ratón, pero el lápiz sigue siendo lo más preciso. Esto vale para un lápiz que la tableta reconoce como tal (un S Pen, un Apple Pencil y similares). Un lápiz sencillo con punta de goma cuenta para la pantalla como un dedo y no es más fino que uno. + +En una tableta no hay botón derecho: mantén un dedo quieto medio segundo sobre una forma o sobre un espacio vacío y se abre el mismo menú que abre el clic derecho, con **Seleccionar todo** si es sobre un espacio vacío. **Seleccionar varios**, en ese mismo menú, hace en la tableta las veces de la tecla Mayús: cada toque sobre un cuerpo lo añade a la selección o lo vuelve a quitar, hasta que toques un espacio vacío o pulses [[Esc]]; un dedo sobre un espacio vacío sigue girando la vista. Los tiradores que rodean una forma seleccionada se pueden coger con el dedo aunque lo pongas un poco al lado. + +### El cubo de vista + +El cubo de arriba a la izquierda muestra hacia dónde miras. Un clic en una de sus caras salta a la vista principal desde arriba, abajo, delante, detrás, la izquierda o la derecha. Un clic en una esquina del cubo mira el modelo en diagonal desde esa esquina, y un clic cerca de una arista mira desde esa arista, entre dos caras; la zona se ilumina mientras el puntero está encima. Las teclas numéricas [[1]] a [[6]] también dan las vistas principales. Si mantienes pulsado [[Mayús]] a la vez, la vista además hace zoom a la selección, como con [[Mayús]]+[[F]]. + +Si arrastras el cubo, giras la vista, igual que al arrastrar con el botón derecho del ratón. Sin nada seleccionado, las flechas del teclado también giran la vista: 15° por pulsación, 90° con [[Mayús]]. Giran el modelo hacia donde apuntan: [[→]] gira su parte delantera hacia la derecha y [[↑]] inclina su parte delantera hacia arriba. Manteniendo pulsado [[Ctrl]], las flechas desplazan en cambio la vista por la pantalla: una décima parte de la imagen por pulsación, o la mitad si además pulsas [[Mayús]]. El modelo se mueve hacia donde apuntan. Si hay algo seleccionado, las flechas mueven la selección; para girar la vista, haz antes clic en un espacio vacío. En una pantalla táctil, esto se hace con un dedo, sin activar {{ui:camera.touchRotate}}. + +### La barra de cámara + +En el borde izquierdo hay una barra estrecha. De arriba abajo: + +- {{ui:camera.home}} vuelve a encuadrar toda la escena. La tecla es [[Inicio]]; [[F]] hace lo mismo si no hay nada seleccionado. +- {{ui:camera.focusSelection}} hace zoom a la selección ([[F]] o [[Mayús]]+[[F]]). +- {{ui:camera.zoomIn}} y {{ui:camera.zoomOut}} hacen zoom paso a paso, igual que las teclas [[+]] y [[−]]. +- {{ui:camera.orthographic}} cambia a una vista plana en la que las aristas paralelas siguen siendo paralelas. Para medir y alinear aristas suele ser más cómoda que la vista en perspectiva. [[O]] alterna entre las dos, y un segundo clic vuelve a la de antes. +- {{ui:camera.hideWorkplane}} (el ojo sobre una cuadrícula) oculta la placa con su cuadrícula, para que puedas mirar desde abajo la parte inferior de un diseño. Solo cambia la vista: las formas nuevas siguen apareciendo en el plano de trabajo. Un segundo clic vuelve a mostrarla. +- {{ui:camera.placeWorkplane}}, la cinta métrica y la escuadra son herramientas aparte; se explican más abajo y en [Medidas y notas](chapter:measuring-and-notes). + +La flechita de arriba del todo de la barra la oculta si te estorba. + +Un diseño se abre tal como lo dejaste: el ángulo, el zoom y la posición de la vista se guardan con él en este navegador, así que retomas el trabajo donde te quedaste, también después de volver a Inicio o de cerrar la página. Un archivo guardado (.lyl) lleva la vista consigo, así que en otro sitio también se abre con ella. La vista no forma parte del historial de deshacer. + +Además, en cada diseño puedes guardar cuatro vistas propias. [[Mayús]]+[[7]], [[Mayús]]+[[8]], [[Mayús]]+[[9]] o [[Mayús]]+[[0]] guarda en esa tecla la vista exactamente como está —ángulo, posición, zoom y si es plana o en perspectiva—, y la tecla sola ([[7]], [[8]], [[9]] o [[0]]) la recupera. Un mensaje abajo confirma que se ha guardado; si vuelves a guardar en la misma tecla, se sustituye la vista. Igual que la vista de antes, las vistas guardadas se quedan con el diseño en este navegador y viajan en un archivo guardado (.lyl), y no forman parte del historial de deshacer. + +## Mirar por dentro: la vista de sección + +{{ui:camera.sectionView}}, el último botón de la barra (la herramienta de corte), abre la vista con un corte a lo largo de un plano para que puedas comprobar paredes, cavidades y piezas que encajan unas en otras. No se corta nada de verdad: el diseño, sus archivos y cualquier exportación quedan enteros. Donde el plano atraviesa un sólido, el corte se rellena con el color del cuerpo algo más oscuro, y un orificio dentro de él queda vacío, así que distingues lo macizo de lo hueco; la cara rellena aparece un momento después de que el plano deja de moverse. + +- Elige el eje al que el plano queda perpendicular: X (anchura), Y (profundidad) o Z (altura), como en los campos de posición. El plano empieza en el centro de tu diseño. +- {{ui:camera.sectionOrientation}} decide a qué se refieren estos ejes. {{ui:camera.sectionOrientationWorld}} toma los ejes del diseño. {{ui:camera.sectionOrientationWorkplane}} toma los del plano de trabajo: Z corta entonces en paralelo a él, X e Y en perpendicular, y la posición se cuenta desde su origen. Con el plano de trabajo sobre una cara inclinada, cortas en paralelo a esa cara, y el corte se desplaza con él cuando mueves el plano de trabajo. {{ui:camera.sectionOrientationView}} pone el plano de cara a la pantalla: quita lo que queda por delante, y el control deslizante lo empuja más adentro del diseño en la dirección en que miras, por ejemplo para llegar a una pieza tapada y hacer clic en ella. Si después giras la vista, vuelve a hacer clic en este botón y el corte sigue a la nueva vista. +- {{ui:camera.sectionCoarse}} mueve el plano por todo el diseño; {{ui:camera.sectionFine}} lo mueve solo un poco a cada lado de donde está, para afinar en décimas de milímetro. También puedes escribir la posición. +- El botón junto a los ejes muestra el otro lado del corte, {{ui:camera.sectionReset}} devuelve el plano al centro y {{ui:camera.sectionShowPlane}} oculta el plano azul. +- Puedes hacer clic en lo que deja al descubierto el corte y seleccionarlo, paredes interiores incluidas. +- {{ui:camera.sectionWorkplane}} pone el plano de trabajo sobre el corte. Queda en el plano de la sección y mira hacia fuera del cuerpo que se conserva, como la cara que deja un corte. Si después cambias al boceto, este empieza justo ahí, y el contorno tenue muestra el corte, que puedes seguir al dibujar y al que puedes ajustar. Así dibujas, por ejemplo, una tapa que encaje en la cavidad que has abierto con la sección. El botón junto a los ejes elige qué lado se conserva y, con ello, hacia dónde mira el plano de trabajo. El plano de trabajo se devuelve a la placa base como siempre. +- {{ui:camera.sectionMeasure}} mide directamente sobre el corte: el contorno se ve en azul, y dos clics sobre él dan la distancia, además de sus componentes a lo largo de los dos ejes del plano. Los dos puntos se ajustan al contorno, con preferencia por las esquinas. Cuando el segundo clic cae en cualquier punto de la pared de enfrente, se ajusta en perpendicular al primer punto, así que lees grosores de pared, huecos y holguras sin tener que apuntar con exactitud. Un tercer clic empieza la siguiente medición, y [[Esc]] termina de medir. Al mover el plano se borra la medición. En un contorno redondo, como el corte de un cilindro o de un orificio, una crucecita marca el centro, y el centro también sirve para ajustar. Haz clic en un punto de la circunferencia y acércate luego al punto opuesto: el segundo clic cae justo enfrente, pasando por el centro, y la cifra lleva Ø, el diámetro. Del centro a un punto de la circunferencia obtienes R, el radio. +- {{ui:camera.sectionExportSvg}} guarda los contornos del plano de corte como SVG a escala 1:1, para un láser, un plóter, una plantilla o una junta. Un corte en X se ve desde la derecha, uno en Y desde delante y uno en Z desde arriba. Como en la exportación, solo entran los cuerpos visibles, los orificios ya están restados y los cuerpos del mismo color se unen en un solo contorno. Cada color queda como un trazado propio sin relleno, para que el programa del láser los separe en capas. + +El panel cuelga de su botón. Si tapa algo, arrástralo por su barra de título a cualquier punto del plano de trabajo; la próxima vez también se abre ahí. Para devolverlo a su sitio, haz doble clic en la barra de título o suéltalo sobre el botón. + +La X y [[Esc]] cierran el panel; si hay una medición en curso, [[Esc]] la termina primero. El corte se mantiene hasta que lo desactivas con {{ui:camera.sectionActive}} o vuelves a la página de inicio. Mientras está activo, su botón sigue resaltado. Lo que coloques en el lado que queda cortado solo se ve cuando desactivas el corte. Una tableta no tiene [[Esc]], así que ahí el panel tiene dos botones más: {{ui:camera.sectionBack}} termina la medición si hay una en curso y, si no, cierra el panel, y {{ui:camera.sectionConfirm}} cierra el panel de una vez. En un ordenador no aparecen. + +## El plano de trabajo + +Las formas nuevas se alinean con el plano de trabajo. Al principio es la placa base con la cuadrícula, pero puedes ponerlo sobre cualquier superficie para colocar algo en un lateral o en una cara inclinada. + +1. Pulsa [[W]] o haz clic en {{ui:camera.placeWorkplane}}. +2. Pasa el ratón por encima de una cara de un cuerpo. La cara se ilumina. +3. Un clic pone ahí el plano de trabajo. Todo lo que añadas a partir de ahora se apoya en esa cara. + +Si en cambio haces clic en la placa vacía, el plano de trabajo queda horizontal en el punto donde has hecho clic, ajustado a la cuadrícula. Las formas nuevas y los bocetos terminados, también los de revolución, aparecen entonces ahí y no en el centro de la placa. Mientras el plano de trabajo esté así, tendido sobre la placa, la placa solo muestra su contorno: dos cuadrículas en el mismo plano formarían un dibujo que parpadea. + +En una cara, el origen del plano de trabajo se ajusta normalmente a la cuadrícula. Si haces clic cerca de una esquina de la cara, queda justo en esa esquina. Cerca de una arista, queda sobre la arista y la cuadrícula se alinea con ella; así eliges a propósito el ángulo de la cuadrícula. Sin una esquina ni una arista cerca, la cuadrícula de una cara horizontal va paralela al cuerpo, así que en una caja girada queda girada con ella. + +Un clic fuera de la placa o [[Esc]] devuelve el plano de trabajo a la placa base. Más rápido aún es {{ui:camera.resetWorkplane}}: el botón con la flecha hacia abajo está en la barra de cámara, debajo del ojo, mientras el plano de trabajo está sobre una cara. [[Mayús]]+[[W]] lo pone directamente sobre la cara que tengas seleccionada. Si mantienes pulsado [[Mayús]] al hacer clic, el plano mira hacia el otro lado. + +Mientras hay un plano de trabajo sobre una cara, aparece un ojo junto a {{ui:camera.placeWorkplane}}. Oculta el plano de trabajo sin quitarlo, para que veas el diseño sin estorbos: las formas nuevas siguen apareciendo en esa cara y los giros se siguen haciendo respecto a ella. Un clic en el ojo vuelve a mostrarlo, y lo mismo ocurre al colocar un plano de trabajo nuevo. + +## Cuadrícula y ajuste + +La cuadrícula muestra el tamaño de la placa. Abajo a la derecha está el **paso de ajuste**: al mover y al cambiar el tamaño, las formas avanzan a saltos de ese tamaño, por ejemplo de 1 mm. Hazlo más pequeño para el trabajo fino y más grande para colocar a grandes rasgos. {{ui:editor.tool.snapToGrid}}, en la cinta, lleva después las formas seleccionadas al cruce de la cuadrícula más cercano. Al moverlas, las formas también se ajustan a otras formas: consulta [Seleccionar y organizar](chapter:select-and-arrange). + +> **Consejo:** cuando encajes piezas con exactitud, deja de girar la vista. Con las teclas numéricas, pasa a la vista desde arriba o de frente y pulsa [[O]] para la vista plana. Así ves enseguida si dos aristas están de verdad a ras. + +### La ventana de ajustes + +La rueda dentada de la cinta ({{ui:editor.workspaceSettings}}) abre los ajustes. A la izquierda hay cinco apartados: {{ui:workspace.appearance}}, {{ui:workspace.measurement}}, {{ui:workspace.workplane}}, {{ui:workspace.shapeDefaults}} y {{ui:workspace.history}}. Los cambios se aplican al momento. {{ui:workspace.makeDefault}}, abajo, guarda los ajustes actuales como predeterminados, para que los diseños nuevos empiecen con ellos, y {{ui:workspace.close}}, arriba a la derecha, cierra la ventana. Esta parte repasa los ajustes uno por uno. + +### Aspecto: tema, barra de herramientas y cubo de vista + +{{ui:workspace.theme}} elige la combinación de colores de todo el programa: {{ui:workspace.themeSystem}} sigue la de tu ordenador, y las demás son {{ui:workspace.themeLight}}, {{ui:workspace.themeDark}} y {{ui:workspace.themeGraphite}}. También puedes cambiarla arriba a la derecha del editor. + +{{ui:workspace.toolbarSize}} hace más pequeños o más grandes los botones de la cinta de arriba, su menú de formas, los controles de cámara de la izquierda y el panel de propiedades de la derecha: {{ui:workspace.toolbarSizeSmall}}, {{ui:workspace.toolbarSizeMedium}} (como ha sido siempre) o {{ui:workspace.toolbarSizeLarge}}. El tamaño pequeño deja más sitio al plano de trabajo en un portátil; el grande es más fácil de acertar en una pantalla grande o con el dedo. Con botones grandes, los grupos de la cinta pasan a una segunda fila cuando la ventana se queda estrecha. El tamaño se guarda en este navegador y vale para todos los diseños. + +{{ui:workspace.viewCubePosition}} lleva el cubo de vista a otra esquina del plano de trabajo: {{ui:workspace.viewCubePositionTopLeft}} (como ha sido siempre), {{ui:workspace.viewCubePositionTopRight}}, {{ui:workspace.viewCubePositionBottomLeft}} o {{ui:workspace.viewCubePositionBottomRight}}. En cualquier esquina que no sea la de arriba a la izquierda, los controles de cámara suben al hueco que deja el cubo. Abajo a la derecha, el cubo queda justo encima del control {{ui:inspector.snapGrid}}. Mientras las propiedades de una forma están abiertas a la derecha, un cubo situado a la derecha se aparta a su izquierda. La esquina se guarda en este navegador y vale para todos los diseños. En una ventana estrecha, como la de un móvil, el ajuste no aparece y el cubo se queda arriba a la izquierda. + +### Aspecto: modo rápido + +{{ui:workspace.fastMode}} es para ordenadores más lentos. Desactiva las sombras, las líneas de arista en todos los cuerpos y la inercia de la cámara, y dibuja la vista solo a la resolución de la pantalla. Tus propios ajustes se guardan para más adelante, y mientras está activado, los interruptores que anula indican {{ui:workspace.offInFastMode}}. Más cosas que ayudan en un ordenador lento, en «Cuando layerling va lento», más abajo. + +### Aspecto: colores de la zona de trabajo y del boceto + +Los colores de la zona de trabajo se eligen en {{ui:workspace.appearance}}: {{ui:workspace.backgroundColor}} y {{ui:workspace.surfaceColor}} para el tema claro (los temas oscuros tienen los suyos), y el color de la cuadrícula, en {{ui:workspace.workplane}}. Cada color es un botón que muestra ese color. Un clic abre una ventanita con el selector de color, una fila de colores ya preparados, un campo para el valor hexadecimal y una flecha que devuelve el color al que traía layerling. [[Intro]] acepta un valor hexadecimal escrito, y un clic fuera de la ventana también. + +La vista de boceto tiene sus propios colores: {{ui:workspace.sketchBackground}} para la ventana alrededor de la hoja, {{ui:workspace.sketchPlateColor}} para la hoja bajo la cuadrícula y {{ui:workspace.sketchGridColor}}, todos para el tema claro. {{ui:workspace.sketchMatch}} copia de un clic los tres colores de la zona de trabajo. + +{{ui:workspace.classicLook}} deja la zona de trabajo como la muestra Tinkercad: fondo blanco, una cuadrícula milimétrica de color azul pálido con una línea más oscura cada centímetro, líneas de arista negras y luz desde arriba con sombras suaves. Después puedes seguir cambiando cada valor por separado. Todos empiezan como layerling se ha visto siempre, y lo que mejor te vaya depende de tu monitor. + +![Los ajustes de Aspecto: colores del fondo y del plano de trabajo para el tema claro, y el interruptor de las líneas de arista en todos los cuerpos.](shot:settings-appearance) + +![El editor con la combinación de colores oscura. La combinación de colores se elige arriba a la derecha: Sistema, Claro, Oscuro o Grafito.](shot:editor-dark) + +### Aspecto: flechas de los ejes y líneas de arista + +{{ui:workspace.showAxes}} (activado de forma predeterminada) dibuja tres flechas en la esquina trasera izquierda de la placa: **X** en rojo hacia la derecha, **Y** en verde hacia el fondo y **Z** en azul hacia arriba, igual que cuentan los campos de posición. Es la regla de la mano derecha, la misma que usan Tinkercad, los programas de CAD y los laminadores (*slicers*). Con el plano de trabajo sobre una cara, las flechas lo siguen. Si te estorban, desactívalas aquí. + +{{ui:workspace.edgeLines}} dibuja un contorno en cada cuerpo, del color de {{ui:workspace.edgeColor}} (negro al principio, como en Tinkercad): ayuda cuando los colores oscuros se confunden entre sí. Está desactivado de forma predeterminada, y las mallas importadas muy grandes quedan fuera. + +![Tres cuerpos oscuros con las líneas de arista activadas: los contornos los separan.](shot:edge-lines) + +{{ui:workspace.strongHoles}} dibuja los orificios en un gris más oscuro, menos transparente y con una línea oscura alrededor. Ayuda cuando cuesta encontrar un orificio entre cuerpos transparentes. A diferencia de las líneas de arista, sigue activo en el modo rápido. + +### Aspecto: luz y sombras + +{{ui:workspace.showShadows}} activa y desactiva las sombras proyectadas. Dos controles deslizantes ajustan cómo se iluminan los cuerpos. {{ui:workspace.shadowStrength}} indica lo oscuras que son las sombras proyectadas, y {{ui:workspace.shadeContrast}} pasa luz de la iluminación ambiental uniforme a la luz principal: hacia «intenso», los lados en sombra se oscurecen y las sombras se notan más; hacia «suave», todo se ve más plano. En el extremo superior, el contraste es muy fuerte, de modo que los lados en sombra y las sombras se vuelven muy oscuros. {{ui:workspace.shadowSoftness}} hace que los bordes de las sombras sean suaves en lugar de nítidos. {{ui:workspace.lightAzimuth}} gira la luz principal alrededor de la placa (0° desde delante, 90° desde la derecha), y {{ui:workspace.lightElevation}} la eleva; a 90° queda justo encima de la placa, como en Tinkercad, y las sombras caen justo debajo de los cuerpos. {{ui:workspace.lightReset}} lo devuelve todo a como estaba. + +### Aspecto: medidas en el plano de trabajo + +{{ui:workspace.showMoveDimensions}} muestra cuánto desplazas lo que arrastras, y {{ui:workspace.showOriginDimensions}}, las distancias de la selección al origen de la placa, también con varios cuerpos seleccionados. Con {{ui:workspace.dimensionsAlwaysVisible}}, estas medidas se quedan siempre a la vista, y no solo mientras arrastras. Mientras hay un cuerpo girado seleccionado, sus ángulos aparecen debajo de él en el plano de trabajo; {{ui:workspace.showRotationAngles}} lo desactiva. Más en [Medidas y notas](chapter:measuring-and-notes). + +### Aspecto: seleccionar y mover + +{{ui:workspace.selectBeforeMoving}}: con este ajuste, primero hay que seleccionar un cuerpo, y solo el siguiente arrastre lo mueve. Ayuda cuando tocan los cuerpos niños o manos con prisa, y en una pantalla táctil. + +{{ui:workspace.frameByDirection}}: un recuadro arrastrado hacia la derecha selecciona solo lo que queda completamente dentro de él, y uno arrastrado hacia la izquierda, todo lo que toca (se dibuja con línea discontinua), como en SketchUp. + +{{ui:workspace.doubleClickOpensSketch}} decide si un doble clic sobre un boceto extruido vuelve a abrir el boceto, como en Tinkercad, y {{ui:workspace.doubleClickOpensGroup}}, si un doble clic sobre un grupo o un conjunto lo abre para editarlo. + +{{ui:workspace.objectSnap}} hace que los lados y el centro de una forma se ajusten a otras formas mientras la arrastras; el menú de la cuadrícula, abajo a la derecha, tiene el mismo interruptor. {{ui:workspace.cruise}} hace que una forma nueva quede enganchada al puntero del ratón y se pose en la cara que haya debajo, como Cruise en Tinkercad; si lo desactivas, las formas nuevas aparecen en el centro de la placa. Más en [Seleccionar y organizar](chapter:select-and-arrange). + +### Aspecto: la vista + +{{ui:workspace.startInPerspective}}: el editor se abre entonces en la vista en perspectiva, no en la plana. + +{{ui:workspace.zoomSpeed}} es un control deslizante que va de lento a rápido: la rapidez con que hacen zoom la rueda y el panel táctil; los botones y las teclas de zoom mantienen sus propios pasos pequeños. {{ui:workspace.cameraInertia}}: después de soltar el ratón, la vista sigue girando un momento y frena con suavidad. Si lo desactivas, se para en seco, como en Tinkercad y Fusion 360. + +{{ui:workspace.overhangAngle}} es el ángulo a partir del cual una cara cuenta como voladizo cuando activas Mostrar voladizos en el menú de visibilidad: esas caras se rayan en rojo y blanco. 30° es prudente y 70° cuenta con una buena refrigeración de capa; 45° es lo habitual para empezar. + +{{ui:workspace.booleanTriangleLimit}} limita cuántos triángulos puede tener una malla importada cuando la cortas, la fusionas o haces una intersección con ella, porque ese cálculo se hace en tu navegador. Una malla que pasa del límite no se procesa: simplifícala antes, o sube el límite si tu ordenador lo aguanta. Un límite más alto puede dejar el editor congelado unos segundos. + +### Medidas: unidades, escala y pasos de ajuste + +En {{ui:workspace.measurement}} eliges las {{ui:workspace.units}}, la unidad en que se muestran las medidas ({{ui:workspace.scale}}: milímetros, centímetros o metros en el sistema métrico; pulgadas o pies en el imperial), cuántos decimales muestra un número ({{ui:workspace.accuracy}}), con {{ui:workspace.snapGrid}} el paso al que se ajustan los movimientos y los cambios de tamaño, y tus propios pasos de ajuste en {{ui:workspace.customSnapGrids}}. + +En {{ui:workspace.measurement}}, dentro de los ajustes, eliges las {{ui:workspace.units}}. Con {{ui:units.imperial}}, layerling muestra todas las medidas en pulgadas: en la forma, en el panel de propiedades, en la cinta métrica y en la regla. La cuadrícula de ajuste ofrece entonces pasos de 1/64 a 1 pulgada, y la cuadrícula de la placa se dibuja en pulgadas (de 1/8 a 1 pulgada; 1/4 de pulgada de forma predeterminada), con una línea más marcada en cada pulgada entera. En {{ui:workspace.inchFormat}} eliges si las pulgadas aparecen como fracciones, igual que en Tinkercad (1 5/8, redondeado a 1/64 de pulgada), o como decimales (1.625), con tantos decimales como indique {{ui:workspace.accuracy}}. Puedes escribirlas de las dos formas, «1 5/8» incluido. Para cambiar rápido entre milímetros y pulgadas está el pequeño interruptor **mm | in**, junto a {{ui:inspector.snapGrid}}, en la parte de abajo de la ventana de propiedades: cambia la unidad, la cuadrícula de la placa y el paso de ajuste igual que los ajustes, para este diseño. + +En {{ui:workspace.customSnapGrids}}, en ese mismo sitio, añades pasos de ajuste propios: un nombre y un tamaño en milímetros, por ejemplo «Paso de pines 2,54 mm» para la separación de los chips DIP, las tiras de pines y los orificios de las placas perforadas, o «MX Key Unit» con 19,05 mm para la separación de las teclas de un teclado. El menú del paso de ajuste ofrece entonces esa medida entera, a la mitad y a un cuarto (1 ×, ½ × y ¼ ×), para que puedas mover formas un paso entero, medio paso o un cuarto de paso. Si solo quieres la medida tal cual, desmarca {{ui:workspace.customSnapGridParts}}, al lado; el menú tendrá entonces solo ese paso. Los pasos propios se guardan con el diseño y se incluyen al usar {{ui:workspace.makeDefault}}. + +### Plano de trabajo: placa e impresora + +{{ui:workspace.printer}} adapta el plano de trabajo a la cama de tu impresora y señala los cuerpos que se salen de ella; consulta [Impresión](chapter:printing). {{ui:workspace.showPlateLabels}} escribe en la placa el nombre del diseño y, si has elegido una impresora, su nombre y su volumen de impresión. + +{{ui:workspace.size}} da a la placa un tamaño propio, con {{ui:workspace.width}} y {{ui:workspace.length}} en milímetros o en la unidad que hayas elegido. La cuadrícula siempre pasa por el origen, así que las líneas más marcadas caen sobre los ejes, mida lo que mida la placa. + +### Plano de trabajo: cuadrícula + +{{ui:workspace.showGrid}} muestra u oculta la cuadrícula de la placa. {{ui:workspace.gridBlockSize}} fija la separación entre sus líneas, y {{ui:workspace.gridMajorEvery}}, si la línea más oscura aparece cada 5 o cada 10 pasos de la cuadrícula; {{ui:workspace.gridMajorColor}} le da a esa línea un color propio, que también toman la cruz central y el contorno de la placa. {{ui:workspace.gridColor}} es el color de las líneas normales. + +Todas las líneas de la cuadrícula se ensanchan al acercar el zoom, como en Tinkercad, y siguen viéndose al alejarlo. Si te parece demasiado, desactiva {{ui:workspace.gridLinesGrow}} y las líneas se quedarán de un píxel de ancho con cualquier zoom, como en el boceto. + +Si la cuadrícula ha desaparecido, por ejemplo porque se le ha puesto el mismo color que la placa, {{ui:workspace.resetGrid}}, al final del apartado {{ui:workspace.workplane}}, devuelve a sus valores estándar la visibilidad, los colores, la separación y el grosor de sus líneas, aquí y en los valores predeterminados guardados con {{ui:workspace.makeDefault}}. + +### Valores iniciales de las formas + +En {{ui:workspace.shapeDefaults}} eliges una forma con {{ui:workspace.shape}} y fijas cómo empieza al añadirla: su anchura, su longitud y su altura. {{ui:workspace.useAppDefaults}} devuelve la forma a los valores con los que la crea la aplicación. Las formas con ajustes propios los muestran en {{ui:workspace.shapeDetails}}. Los valores se aplican a las formas nuevas, no a las que ya están en la placa. {{ui:workspace.customLimit}} pone un tope propio a lo grande que pueden hacer esa forma los tiradores y el panel de propiedades; si lo dejas en blanco, se mantienen los límites habituales. + +### Historial guardado + +En {{ui:workspace.history}}, el control deslizante {{ui:workspace.savedHistory}} fija cuántas acciones terminadas siguen disponibles para Deshacer después de guardar o volver a abrir un diseño. El valor predeterminado es de 100 acciones por diseño. Un límite más bajo descarta para siempre los pasos de deshacer más antiguos del diseño. + +## Cuando layerling va lento + +layerling calcula y dibuja todo en tu navegador. Por eso, en un ordenador antiguo, con una tarjeta gráfica modesta o con varias pantallas grandes, la vista puede ir lenta y pesada. Esto ayuda: + +- **{{ui:workspace.fastMode}}**, en {{ui:workspace.appearance}}, desactiva de golpe todo lo que más le cuesta a la vista: las sombras, las líneas de arista en todos los cuerpos y la inercia de la cámara. Además, dibuja la vista solo a la resolución propia de la pantalla, lo que en pantallas de alta resolución supone hasta cuatro veces menos píxeles. Tus propios ajustes se conservan y vuelven a aplicarse en cuanto lo desactivas. +- **La cámara sigue girando:** cuando sueltas el ratón después de girar, la vista sigue girando un momento y frena con suavidad. Es a propósito, no son tirones. Si vienes de Tinkercad o de Fusion 360, desactiva {{ui:workspace.cameraInertia}} en {{ui:workspace.appearance}} y la vista se parará en seco. +- **Interruptores sueltos:** sin el modo rápido, también puedes desactivar solo {{ui:workspace.showShadows}} o {{ui:workspace.edgeLines}}. +- **Usa la tarjeta gráfica:** en Chrome, abre `chrome://gpu` (en Edge, `edge://gpu`). Junto a «WebGL» debería poner «Hardware accelerated». Si pone «Software only», la aceleración por hardware está desactivada en los ajustes del navegador. En Windows también puedes elegir «Alto rendimiento» para el navegador en Configuración → Sistema → Pantalla → Gráficos, para que use la tarjeta gráfica de verdad y no la más débil que lleva integrada el procesador. +- **Simplifica las mallas importadas grandes:** un modelo de muchos cientos de miles de triángulos ralentiza cualquier vista. Cómo aligerarlo se explica en el capítulo de archivos, en «Simplificar una malla importada». +- **Cierra otras pestañas:** todas las pestañas de layerling abiertas y cualquier otra página en 3D comparten la misma tarjeta gráfica. diff --git a/docs/guide/es/03-shapes.md b/docs/guide/es/03-shapes.md new file mode 100644 index 000000000..0baa30c43 --- /dev/null +++ b/docs/guide/es/03-shapes.md @@ -0,0 +1,156 @@ +--- +title: Colocar y ajustar formas +summary: La biblioteca de formas, las medidas con números y con los tiradores, el color, el giro, el estrechamiento y la torsión. +--- + +En layerling, toda pieza empieza por una forma. Con ellas construyes todo lo demás: las formas se complementan, se recortan unas a otras o se unen en una forma nueva. + +## Añadir una forma + +Haz clic en {{ui:editor.addShape}}, en la cinta. Se abre la biblioteca de formas. + +![La biblioteca de formas. Cada miniatura se genera a partir de la geometría real de la forma.](shot:shape-menu) + +La biblioteca se cierra cada vez que eliges una forma. Puedes arrastrarla por la barra de título y llevarla a donde no tape el sitio en el que vas a colocar la forma, por ejemplo encima del panel de propiedades; un doble clic en la barra de título la devuelve a su sitio, debajo de su botón, y el navegador recuerda dónde la dejaste. La chincheta de la barra de título mantiene la biblioteca abierta mientras colocas varias formas seguidas. Tirando de sus bordes y esquinas la agrandas o la reduces, hasta tan ancha y tan alta como permita tu pantalla; el navegador también recuerda el tamaño, y un doble clic en un borde lo devuelve al original. Si la estrechas mucho, la biblioteca deja de mostrar los nombres y enseña solo las imágenes; el nombre aparece cuando pasas el ratón por encima de una forma. + +Elige una forma. Ahora va pegada al puntero del ratón y se coloca donde hagas clic. Si la pasas por encima de un cuerpo, se apoya sobre la cara que queda bajo el puntero, también sobre las inclinadas, como el Cruise de Tinkercad; sobre la placa vacía, se coloca en el plano de trabajo. [[Esc]] cancela la colocación. Las herramientas que esperan un clic, como la cinta métrica, la escuadra, una nota, {{ui:camera.placeWorkplane}}, {{ui:editor.tool.layFlat}} o las herramientas de aristas, se desactivan al elegir una forma, para que el clic coloque la forma. Y al revés: si activas una de esas herramientas, se cancela la forma que estabas colocando. Si prefieres que la forma aparezca en el centro de la placa, puedes desactivar la colocación con clic en los ajustes (apartado {{ui:workspace.appearance}}, interruptor {{ui:workspace.cruise}}). + +Lo que ofrece la biblioteca: + +- **Formas básicas:** {{ui:shape.box}}, {{ui:shape.roundedBox}}, {{ui:shape.cylinder}}, {{ui:shape.slot}}, {{ui:shape.ellipse}}, {{ui:shape.polygon}} (de tres a veinticuatro lados), {{ui:shape.sphere}}, {{ui:shape.cone}}, {{ui:shape.pyramid}} (de tres a veinticuatro lados, así que también triangular), {{ui:shape.wedge}}, {{ui:shape.roundRoof}}, {{ui:shape.halfSphere}} y {{ui:shape.torus}}. +- **Tubos:** {{ui:shape.tube}} y {{ui:shape.bentTube}}, formado por hasta doce tramos rectos con curvas entre ellos, y el {{ui:shape.loft}}, que pasa de un contorno a otro, por ejemplo de cuadrado a redondo. +- **Formas decorativas:** {{ui:shape.star}}, {{ui:shape.heart}} y {{ui:shape.crescent}}. +- **Letras:** {{ui:shape.text}}, también a lo largo de un arco de circunferencia. Más en [Texto](chapter:text). +- **Mecánica:** {{ui:shape.thread}} (varilla roscada, tornillo, tuerca y orificio roscado), {{ui:shape.spring}}, cajas y placas base de {{ui:shape.gridfinity}}, {{ui:shape.gear}} y el {{ui:shape.knurl}} para empuñaduras. Más en [Roscas y mecánica](chapter:threads-and-mechanics). +- **Para construcciones:** la {{ui:shape.hinge}} que se imprime ya articulada, la {{ui:shape.dovetail}}, el {{ui:shape.teardrop}} para orificios horizontales, el {{ui:shape.counterbore}} y el {{ui:shape.countersink}} para cabezas de tornillo, y la {{ui:shape.ruler}}, que es solo una herramienta de medida y nunca aparece en una exportación. + +Un triángulo se consigue de dos maneras: el {{ui:shape.polygon}} de tres lados es un triángulo isósceles, el «Tejado» de Tinkercad, y la {{ui:shape.wedge}} es un triángulo rectángulo. Los dos son prismas triangulares de verdad. Para un orificio triangular, copia la forma, haz la copia más pequeña, conviértela en orificio y alinéala con {{ui:editor.tool.centerOnWorkplane}} o {{ui:editor.tool.align}}. Las dos herramientas trabajan con el cuadro delimitador de la forma, la caja más pequeña que la contiene, así que un cuadrado partido por la mitad sigue contando como un cuadrado entero. La búsqueda de comandos ([[Ctrl]]+[[K]]) también encuentra las dos formas si buscas «triángulo» o «tejado». + +La {{ui:shape.slot}} puede ser más estrecha por un extremo que por el otro, por ejemplo para un protector que cubra una correa entre dos poleas. En {{ui:inspector.properties}}, ajusta {{ui:prop.slotSmallEnd}}; el extremo grande es tan ancho como la cápsula, y los lados van en línea recta de un arco al otro. {{ui:prop.slotCentreDistance}} es la distancia entre los centros de los dos arcos, es decir, la separación entre las poleas. Si cambias el extremo pequeño, la distancia entre centros se mantiene y la cápsula se alarga o se acorta. La cápsula estrechada también sigue siendo un cuerpo exacto, para redondeos y para STEP. + +## Los ajustes de la forma + +En cuanto seleccionas una forma, sus ajustes aparecen a la derecha. Arriba del todo está el nombre; con el lápiz que hay al lado ({{ui:outliner.rename}}) escribes uno nuevo. [[Intro]] lo confirma, [[Esc]] cancela y, si dejas el nombre vacío, la forma recupera su nombre predeterminado. Más a la derecha, el candado bloquea la forma para que no la muevas sin querer, y el ojo la oculta. La flecha del extremo izquierdo pliega los ajustes hasta dejar solo su barra de título. Las tarjetas de debajo se despliegan y se pliegan con un clic en su título ({{ui:inspector.properties}}, {{ui:inspector.position}}, {{ui:inspector.rotation}}, {{ui:inspector.taper}}, {{ui:inspector.twist}} y las tarjetas de las formas especiales); layerling recuerda cuáles dejaste abiertas, para la siguiente forma y para la próxima vez. + +Los ajustes están acoplados al borde derecho. Si tapan algo que quieres ver, arrástralos por su barra de título y se quedarán flotando donde los sueltes, también para la siguiente forma. Si los vuelves a soltar arriba a la derecha, o haces doble clic en la barra de título, se acoplan otra vez. Mientras flotan o están plegados, el paso de ajuste pasa de la parte de abajo de los ajustes a la esquina inferior derecha del plano de trabajo. + +![Los ajustes de un cilindro: sólido u orificio, y el diámetro y la altura como número y como control deslizante.](shot:editor-overview) + +- **{{ui:inspector.solid}} o {{ui:inspector.hole}}:** Un sólido pone material y un orificio lo quita. Un clic en {{ui:inspector.solid}} abre los colores; los colores propios que mezcles ahí te esperan después en {{ui:inspector.recentColors}}: los ocho últimos. Más en [Sólidos y orificios](chapter:solids-and-holes). La chincheta de la fila {{ui:inspector.keptColors}} guarda para siempre el color que has elegido: queda en una fila aparte, los colores más nuevos nunca lo desplazan, y la misma chincheta lo vuelve a soltar; este navegador guarda hasta 21 colores. +- **{{ui:inspector.transparent}}:** Deja ver a través del cuerpo, por ejemplo para localizar una forma que hay detrás. +- **{{ui:inspector.multicolor}}:** Solo en un grupo; [[Mayús]]+[[M]] lo activa y lo desactiva. Activado, cada pieza del grupo se ve con su propio color, también en un grupo en el que los orificios ya se han recortado y forman un solo cuerpo (las paredes que deja un orificio toman el color del cuerpo en el que se recortó). Si eliges un color para el grupo, se desactiva y todo el grupo se pinta de ese color. Los conjuntos siempre conservan los colores de sus piezas. En una exportación 3MF, cada pieza conserva su color, para que el laminador (*slicer*) pueda asignar las piezas a filamentos; OBJ lleva los colores en sus vértices, así que ahí la frontera entre dos colores queda algo más tosca. +- **{{ui:inspector.properties}}:** Las medidas y todo lo propio de esta forma. En un cilindro, el diámetro, la altura y el número de lados. En un tubo o un anillo redondos, el {{ui:prop.outerDiameter}}, el {{ui:prop.innerDiameter}} (para un casquillo sobre un eje de medida conocida) y el grosor de pared: dos cualesquiera dan el tercero, en el orden en que los escribas. El diámetro exterior conserva el hueco y cambia la pared; el interior conserva el diámetro exterior y cambia la pared, y un hueco más ancho que el tubo hace crecer el diámetro exterior en lo que mide la pared. La longitud del tubo es su altura. Un tubo que ya no es redondo, porque has tirado de uno de sus lados, tiene los lados Longitud y Anchura en lugar del diámetro exterior único; en ese caso, la pared se mantiene cuando cambias la anchura. En un engranaje, los dientes; en un muelle, las espiras. Un valor que hayas cambiado respecto al predeterminado lleva una flechita junto a su nombre: un clic devuelve solo ese valor, hagas lo que hayas hecho después, a diferencia de Deshacer. Un doble clic en un control deslizante hace lo mismo, aquí y en los controles deslizantes de los ajustes del espacio de trabajo. Si lo arrastras con el ratón, el control deslizante de una longitud va a saltos del paso de ajuste, así que una altura sale en milímetros enteros (salvo con la cuadrícula desactivada o en los controles deslizantes cortos); un valor escrito y las teclas de flecha sobre el control deslizante son exactos. {{ui:inspector.saveDefaults}}, abajo, convierte los valores actuales en los valores iniciales de este tipo de forma (lo mismo que {{ui:workspace.shapeDefaults}} en los ajustes), y {{ui:inspector.resetDefaults}} vuelve a los de la aplicación. +- **{{ui:inspector.makeEllipse}}:** Solo en un cilindro. Un cilindro siempre es redondo: tiene un único diámetro, y cada tirador cambia los dos lados a la vez. Para un óvalo, haz clic aquí y se convierte en una {{ui:shape.ellipse}}: el mismo cuerpo, pero con la longitud y la anchura por separado. Un cilindro con chaflán, redondeo o pared, o uno girado o agrupado, no se puede convertir así; en esos casos, empieza directamente con la {{ui:shape.ellipse}}. +- **{{ui:inspector.taper}}:** Medidas distintas arriba y abajo, por ejemplo para una pendiente o un embudo. +- **{{ui:inspector.twist}}:** Gira la cara superior respecto a la inferior o la desplaza hacia un lado. Así salen columnas retorcidas y torres inclinadas. + +![Un grupo formado por un bloque naranja, un tetón azul y un orificio, recortados en un solo cuerpo. Con Multicolor activado, el tetón sigue azul, el bloque naranja, y las paredes del orificio toman el color del bloque.](shot:group-multicolor) + +El estrechamiento y la torsión funcionan en casi todas las formas. Las únicas que no los tienen son el engranaje, la rosca, el muelle, Gridfinity, la bisagra, la pirámide, el tubo curvado, el orificio en lágrima, el escariado, el avellanado y la regla: tienen medidas fijas propias o, como la pirámide, ya tienen su propia parte superior. + +![Un cono al que se le han cambiado el radio superior y la altura: la flechita junto a cada valor lo devuelve al original, y los dos botones de abajo guardan o restablecen los valores predeterminados de la forma.](shot:property-reset) + +{{ui:inspector.saveDefaults}} guarda lo que has cambiado en esta forma como punto de partida de cada forma nueva de su tipo: las medidas, los ajustes de la forma y su color. Pinta un cilindro de verde, pulsa el botón, y todos los cilindros que añadas a partir de entonces serán verdes; los demás tipos conservan sus propios colores. {{ui:inspector.resetDefaults}} devuelve el tipo a los valores con los que lo trae la aplicación. Los tipos que tienen valores predeterminados propios aparecen marcados en los ajustes, en {{ui:workspace.shapeDefaults}}. Un diseño nuevo que empieces desde la página de inicio también los usa; los valores se guardan en este navegador. + +Una caja, un cilindro, una elipse, un polígono, un tubo o un anillo estrechados o inclinados conservan su forma exacta, y lo mismo pasa con la cápsula, la estrella, el corazón, la media luna, la cola de milano, una caja redondeada sin redondeo en las aristas superior e inferior y un moleteado recto o redondo (los chaflanes de sus extremos se estrechan con él): los chaflanes y los redondeos funcionan igual que en la forma sin modificar, y la exportación STEP la guarda tal cual. Lo mismo vale para una forma torcida: su sección gira de forma exacta a medida que sube, y los lados se enroscan de manera uniforme de abajo arriba. + +Escribir es más exacto que arrastrar. Todos los campos numéricos admiten milímetros, pero también porcentajes: si escribes «50 %» en una anchura de 40 mm, obtienes 20 mm. También calculan: «15*3», «120-2*4» o «(40+2)/2» dan 45, 112 y 21; en lugar de * también vale x. El campo recuerda la operación, tanto en el panel de propiedades como en los recuadros de medida que rodean el cuerpo seleccionado: si más tarde vuelves a hacer clic en él, aparece la fórmula en lugar del número, mientras el valor siga coincidiendo con ella, y la puedes cambiar ahí mismo: «(140+2)/2» pasa a ser «(40+6)/2». Si arrastras el cuerpo por un tirador o lo escalas, la fórmula deja de cuadrar y el campo vuelve a mostrar solo el número. + +### Elegir colores + +Un clic en {{ui:inspector.solid}}, en las propiedades de un cuerpo, abre la tarjeta de colores, con el título {{ui:inspector.shapeColor}}. Arriba muestra el valor hexadecimal del color que tiene ahora el cuerpo. Debajo están los colores ya preparados de la paleta; un clic en uno pinta el cuerpo y cierra la tarjeta. + +{{ui:inspector.custom}} abre el selector de color de tu navegador, para un color a tu gusto. Lo que ofrece depende del navegador: en Chrome y Edge tiene un campo de color, un control deslizante para el tono, un cuentagotas que toma un color de cualquier punto de la pantalla y el valor en HEX, RGB o HSL, entre los que cambias con las flechas de al lado. El color se aplica cuando cierras el selector o haces clic fuera de él. + +Los colores propios que mezcles ahí te esperan después en {{ui:inspector.recentColors}}: los ocho últimos. La chincheta de la fila {{ui:inspector.keptColors}} guarda para siempre el color que has elegido: queda en una fila aparte, los colores más nuevos nunca lo desplazan, y la misma chincheta lo vuelve a soltar; este navegador guarda hasta 21 colores. La chincheta es para los colores propios; los de la paleta están siempre. Con varios colores en la selección, o con un orificio, no hay un único color que guardar. + +Los colores de la zona de trabajo, en los ajustes, tienen su propio selector, más sencillo, con un campo de color, una fila de colores preparados y un campo para el valor hexadecimal; consulta [Los ajustes](chapter:view-and-workplane). + +## ¿Cómo de redondo es redondo? El número de lados + +Las formas redondas, como el cilindro, el cono, el tubo, la elipse o los taladros, tienen en sus propiedades el interruptor {{ui:prop.sidesFollowSize}} y el control deslizante {{ui:prop.sides}}. El {{ui:shape.torus}} tiene dos controles deslizantes: {{ui:prop.torusSides}}, alrededor del anillo, y {{ui:prop.torusSteps}}, alrededor del tubo. También ahí siguen al tamaño hasta que los fijas, así que un toroide grande no muestra facetas. El motivo: para la vista y para STL, 3MF y OBJ, layerling dibuja un círculo como un polígono de muchos lados pequeños. Cuantos más lados, más liso queda, y más triángulos hacen falta. + +**Dónde importa el número de lados** + +- **En la exportación para el laminador** (STL, 3MF, OBJ). Un cilindro con pocos lados llega allí como un polígono. +- **Al combinar cuerpos y orificios.** Un taladro hecho con un orificio de pocos lados queda poligonal en la pieza terminada. Eso incluye los orificios para tornillos. +- **En la vista.** Muchas formas muy finas ralentizan el editor. + +**Dónde no importa** + +- **En la exportación STEP.** Guarda la forma redonda, no el polígono. +- **En chaflanes y redondeos** ({{ui:editor.tool.chamfer}}, {{ui:editor.tool.fillet}}), mientras la forma siga siendo redonda. Lo es si no has fijado un número de lados, si el número es al menos el predeterminado de la forma o si el polígono se aparta como mucho {{value:EXACT_ROUND_TOLERANCE}} mm del círculo. El valor predeterminado es de {{value:ROUND_FROM_SIDES}} lados en el cilindro, la elipse, el tubo y el cono; {{value:ROUND_FROM_ROOF_SIDES}} en el {{ui:shape.roundRoof}}; {{value:ROUND_FROM_SPHERE_STEPS}} pasos en la {{ui:shape.sphere}}; {{value:ROUND_FROM_HALF_SPHERE_STEPS}} en la {{ui:shape.halfSphere}}; {{value:ROUND_FROM_TORUS_SIDES}} lados y {{value:ROUND_FROM_TORUS_STEPS}} pasos en el {{ui:shape.torus}}, y una {{ui:prop.quality}} de {{value:ROUND_FROM_BENT_TUBE_QUALITY}} en un {{ui:shape.bentTube}} redondo. +- **En una rosca, un muelle o un engranaje helicoidal.** La herramienta de aristas y la exportación STEP usan su cuerpo exacto; su {{ui:prop.quality}} solo decide con qué finura se dibuja. + +**Dónde vuelve a importar** + +- **En chaflanes y redondeos sobre una forma de pocos lados.** Si pones el número de lados por debajo del predeterminado, la herramienta de aristas toma la forma tal como está dibujada: un cilindro de 6 lados sigue siendo una barra hexagonal, y el redondeo recorre sus seis aristas. Así puedes construir, por ejemplo, un alojamiento para tuerca con las esquinas redondeadas. Para una forma redonda, deja activado {{ui:prop.sidesFollowSize}}. + +**Cómo usarlo** + +- **Deja activado {{ui:prop.sidesFollowSize}}.** Así layerling elige el número de lados según el diámetro, de modo que el polígono se aparte como mucho {{value:ROUND_DEVIATION_TOLERANCE}} mm del círculo real, muy por debajo de lo que resuelve una impresora. Las formas pequeñas tienen al menos {{value:MIN_AUTOMATIC_SIDES}} lados; las grandes, más. +- **Menos lados** te convienen cuando quieres un polígono a propósito (aunque para eso está el {{ui:shape.polygon}}) o cuando el editor va lento con muchísimas formas redondas. +- **Más lados** casi nunca te harán falta. Solo en piezas redondas muy grandes, cuando ves aristas en el STL. +- **En piezas que solo vas a tratar con las herramientas de aristas o a entregar como STEP,** el número de lados da igual. + +## Trabajar con los tiradores + +Además de los ajustes, la propia forma tiene tiradores: + +- Las **esquinas y aristas** agrandan o encogen la forma. Si arrastras una más allá del lado opuesto, la forma sigue creciendo por allí, al otro lado de esa arista. La flecha de arriba hace lo mismo por debajo de la base. Mantén pulsada [[Mayús]] mientras arrastras una esquina para escalar a la vez la anchura, la profundidad y la altura y conservar las proporciones; mantén pulsada [[Alt]] para escalar desde el centro en lugar de desde la esquina opuesta. Sin teclado, o si no quieres mantener pulsada una tecla, activa {{ui:inspector.keepProportions}} arriba, en las propiedades: así las esquinas siempre conservan las proporciones y, si escribes la anchura, la profundidad o la altura, las otras dos se escalan en la misma proporción. El ajuste se recuerda. +- La **flecha de arriba** cambia la altura; el tirador **del centro** sube o baja la forma. +- Las **flechas curvas** la giran. +- Los **números** junto a la forma muestran las medidas. Un clic en uno abre un campo en el que escribes el número que quieras. Con [[Intro]], la forma crece desde la arista opuesta al número, como al arrastrar; con [[Alt]]+[[Intro]] crece alrededor de su centro, así que una forma que estaba alineada con otra sigue alineada. Esto vale para la anchura y la longitud; la altura siempre crece hacia arriba desde la cara inferior. Los campos de las propiedades, a la derecha, mantienen el centro sin necesidad de tecla. [[Tab]] confirma el número y abre el siguiente (anchura, profundidad, altura); [[Mayús]]+[[Tab]] vuelve atrás. En un campo de las propiedades en el que hayas hecho clic, la rueda del ratón también cambia el valor: una unidad por cada paso de la rueda, diez veces más con [[Mayús]], una décima con [[Ctrl]] y una centésima con [[Alt]]. Un campo en el que no hayas hecho clic deja la rueda al panel, que se desplaza. +- Un **clic en una esquina** (sin arrastrar) abre a la vez la anchura y la profundidad. Escribe la primera, pulsa [[Tab]] para pasar a la segunda e [[Intro]] para aplicar las dos. [[Esc]] cancela. + +Cuando giras una forma en ángulos rectos, por ejemplo al tumbarla de lado con {{ui:editor.tool.layFlat}}, los campos de las propiedades se llaman según la dirección en la que va ahora cada medida: {{ui:prop.height}} es lo que va hacia arriba, {{ui:prop.width}} va a lo largo de X y {{ui:prop.length}}, a lo largo de Y. Por eso, si escribes la altura de una forma tumbada, cambia la medida vertical, y su cara inferior se queda sobre la placa. Una forma inclinada en cualquier otro ángulo muestra en los campos sus propias medidas, y una nota debajo lo indica. + +Sin ratón, usa el teclado: las teclas de flecha mueven la selección un paso de ajuste (0,01 mm con la cuadrícula desactivada); con [[Mayús]], cinco pasos, o diez si en los ajustes, en {{ui:workspace.appearance}}, pones {{ui:workspace.gridMajorEvery}} en {{ui:workspace.gridMajorSteps|10}}: hasta la siguiente línea más oscura, como en Tinkercad. Siguen a la vista: [[→]] la mueve hacia la derecha de la pantalla y [[↑]] la aleja de ti, aunque hayas girado la placa. Si sacas una forma de la imagen, la vista la acompaña. [[Ctrl]]+[[↑]] y [[Ctrl]]+[[↓]] la suben y la bajan. Una serie de pulsaciones de flecha cuenta como un solo paso en el historial: mientras la siguiente pulsación llegue antes de un segundo y medio, Deshacer revierte la serie entera, no pulsación a pulsación. [[R]] gira 45° y [[Mayús]]+[[R]], 22,5°. [[D]] baja la selección al plano de trabajo. + +Con los tiradores, una forma puede llegar a ser tan grande como tu placa, y como mínimo 220 mm de ancho y de fondo. Escribiendo un número en las propiedades puedes pasar de ahí, y una forma así de grande no vuelve a encogerse cuando la agarras otra vez. Un límite propio para cada forma se fija en los ajustes, en {{ui:workspace.shapeDefaults}}, con {{ui:workspace.customLimit}}. + +El paso de ajuste está abajo a la derecha del editor y puedes cambiarlo en cualquier momento. + +## Copiar y duplicar + +{{ui:editor.tool.copy}}, {{ui:editor.tool.paste}} y {{ui:editor.tool.duplicate}} están en la cinta ({{ui:editor.group.clipboard}}). [[Ctrl]]+[[D]] duplica una selección. layerling recuerda cómo moviste o giraste la última copia y vuelve a aplicar lo mismo en el siguiente duplicado. Así sale una fila de orificios o de escalones con unas pocas pulsaciones. Para disposiciones regulares también está el patrón, que se explica en [Seleccionar y organizar](chapter:select-and-arrange). + +> **Consejo:** Si una forma se niega a tomar el tamaño que quieres, a menudo es por los límites de las formas nuevas. En los ajustes, en {{ui:workspace.shapeDefaults}}, decides cómo empieza cada forma y hasta qué tamaño puede llegar. + +## Formas personalizadas + +Un soporte, una empuñadura o una placa base que necesitas una y otra vez se guarda en {{ui:myShapes.title}}. Están arriba del todo en la biblioteca de formas, encima de {{ui:myShapes.basicShapes}}, y se pliegan con su flecha. + +1. Selecciona uno o varios cuerpos; también valen orificios, grupos o un modelo importado. +2. Abre la biblioteca de formas y haz clic en {{ui:myShapes.saveSelection}}. Escribe un nombre y confirma con {{ui:common.save}}. +3. En cualquier diseño, un clic en la miniatura inserta la forma, como cualquier otra. También puedes arrastrar la miniatura al plano de trabajo; entonces cae donde la sueltes. Después, la forma va pegada al puntero, como cualquier otra: lo sigue, también por encima de las caras de otros cuerpos; un clic la coloca y [[Esc]] la descarta. + +Varios cuerpos vuelven juntos, colocados como estaban entre sí, y se pueden seguir seleccionando uno a uno. Las [notas](chapter:measuring-and-notes) fijadas a los cuerpos guardados viajan con ellos y vuelven cerradas, fijadas a los cuerpos insertados; las notas sueltas y los puntos de referencia se quedan en el diseño. El lápiz de una miniatura le cambia el nombre, y la papelera la elimina tras pedir confirmación. Las formas ya insertadas en diseños se quedan como están. + +Las {{ui:myShapes.title}} se guardan en este navegador, aparte de los diseños, y vuelven a estar ahí la próxima vez que abras el programa. {{ui:dashboard.backupAll}}, en la página de inicio, las incluye en la copia de seguridad junto con los diseños, y al abrir la copia vuelven las dos cosas. Para llevar solo las formas a otro navegador, {{ui:myShapes.backup}} (la flecha hacia abajo) las guarda en un archivo ZIP y {{ui:myShapes.load}} (la flecha hacia arriba) las recupera allí. {{ui:myShapes.load}} también admite diseños `.lyl` sueltos; cada uno se convierte en una forma. Las formas que ya están no se añaden dos veces. + +### Carpetas + +Si tienes muchas formas personalizadas, se ordenan mejor en carpetas. {{ui:myShapes.newFolder}} (la carpeta con el signo más, junto a {{ui:myShapes.saveSelection}}) pide un nombre y crea una carpeta en el nivel superior; la carpeta con el signo más que tiene cada carpeta, {{ui:myShapes.newSubfolder}}, crea otra dentro de ella. Las carpetas llegan hasta tres niveles: una carpeta del tercer nivel admite formas, pero no más carpetas. Las carpetas aparecen encima de las formas que no están en ninguna, por orden alfabético, y se abren y se cierran con su flecha; el número de una carpeta cuenta las formas que contiene y las de las carpetas que tiene dentro. Al guardar, elige la carpeta en la lista que hay junto al nombre; con {{ui:myShapes.noFolder}}, la forma se queda en el nivel superior. + +La carpeta con la flecha de una miniatura mueve esa forma a otra carpeta, o la saca con {{ui:myShapes.noFolder}}. El lápiz de una carpeta le cambia el nombre, y la papelera la elimina tras pedir confirmación, junto con las carpetas y las formas que contiene. Una carpeta en sí no se puede mover: crea la nueva donde corresponda y pasa a ella las formas. Una copia de seguridad conserva las carpetas, y al cargarla las formas vuelven al mismo sitio. + +### Formas personalizadas en el servidor + +Con el [almacenamiento compartido en el servidor](chapter:files-and-saving) activado, el apartado muestra dos grupos: {{ui:myShapes.onServer}} y {{ui:myShapes.inBrowser}}. Al guardar, eliges dónde va la forma; de entrada está elegido el servidor. Allí se guarda en la carpeta `Custom shapes`, como un archivo `.lyl` propio con una imagen, disponible en cualquier dispositivo que tenga acceso al servidor; sus carpetas son carpetas dentro de `Custom shapes`. Cada lado tiene sus propias carpetas, y una forma se mueve entre las carpetas de su lado. La nube de una miniatura del navegador pasa esa forma al servidor; a partir de ahí ya no se guarda por duplicado. + +La carpeta `Custom shapes` también aparece en la página de inicio. Abre ahí una forma como si fuera un diseño, cámbiala, y se guardará automáticamente como cualquier diseño del servidor; la próxima vez que la insertes, entrará la versión nueva. Como el almacenamiento del servidor no tiene inicio de sesión, todo el que tenga acceso al servidor ve las mismas formas. + +## Envolver alrededor de un cilindro + +¿Quieres poner un dibujo, un logotipo o un rótulo en una taza, una lata o un tubo? Primero colócalo plano sobre la placa, por ejemplo como SVG importado o como texto, tal como debe verse desde arriba. Después, envuélvelo alrededor de un cilindro en los ajustes de la forma, en {{ui:inspector.wrapCylinder}}: + +1. Abre {{ui:inspector.wrapCylinder}} y escribe el {{ui:inspector.wrapDiameter}} de la pared del cilindro, por ejemplo el diámetro exterior de tu taza. También valen décimas de milímetro, como 63,5. +2. Haz clic en {{ui:inspector.wrapApply}}. Lo que iba de izquierda a derecha ahora rodea el cilindro, el lado de atrás pasa a quedar arriba y el grosor sobresale de la pared. +3. Selecciona la forma envuelta y el cilindro, y céntralos los dos de izquierda a derecha y de delante atrás. El centro de la forma envuelta es el eje del cilindro, así que entonces queda justo sobre su pared. + +Para un grabado, activa {{ui:inspector.wrapInward}}: el grosor se mete entonces en la pared. Convierte la forma en orificio, céntrala y agrúpala con el cilindro. + +Una forma ya envuelta es una malla del resultado y no se puede volver a envolver: deshaz el envoltorio o vuelve a envolver el original plano con otro diámetro. + +El resultado es una malla, como un modelo importado. Deshacer vuelve a dejar la forma plana; para otro diámetro, primero deshaz y luego vuelve a envolver. No puede dar más de una vuelta al cilindro; en ese caso, layerling te indica el diámetro más pequeño que cabe. diff --git a/docs/guide/es/04-select-and-arrange.md b/docs/guide/es/04-select-and-arrange.md new file mode 100644 index 000000000..3d5477db1 --- /dev/null +++ b/docs/guide/es/04-select-and-arrange.md @@ -0,0 +1,164 @@ +--- +title: Seleccionar y organizar +summary: Seleccionar formas, encontrarlas en la lista de objetos, alinearlas, reflejarlas, girarlas, apoyarlas sobre una cara y multiplicarlas con patrones. +--- + +## Seleccionar + +Un clic en una forma la selecciona. Con [[Mayús]] añades más o las vuelves a quitar. Mientras mantienes pulsado [[Mayús]] y hay dos o más formas seleccionadas, un numerito debajo del puntero del ratón las va contando. Un clic en un espacio vacío quita la selección, y [[Esc]] también. Arrastra un recuadro en el plano de trabajo vacío para seleccionar todo lo que toque; con [[Mayús]] pulsado, el recuadro añade lo que no estaba seleccionado y quita lo que sí lo estaba. Si prefieres sacar una sola pieza de un montón, activa {{ui:workspace.frameByDirection}} en los ajustes (apartado {{ui:workspace.appearance}}): entonces, un recuadro arrastrado hacia la derecha solo coge lo que queda completamente dentro, uno arrastrado hacia la izquierda sigue cogiendo todo lo que toca, y su línea es discontinua. Mantén pulsado [[Alt]] mientras arrastras para invertir el recuadro solo durante ese arrastre, por ejemplo para coger cuerpos enteros desde el lado en que la dirección no lo permitiría. Y [[Ctrl]]+[[A]] selecciona todos los cuerpos visibles. Mientras arrastras un cuerpo o un tirador del recuadro, [[Esc]] lo cancela si aún tienes pulsado el botón del ratón: todo vuelve a como estaba y no se añade nada al historial. + +Lo que te estorbe, ocúltalo ({{ui:editor.tool.hideSelected}}, [[Ctrl]]+[[H]]). Las formas ocultas siguen en el diseño; simplemente no se ven y se quedan fuera de la exportación, y la ventana de exportación te avisa antes de cuántas hay. [[Ctrl]]+[[Mayús]]+[[H]] las vuelve a mostrar todas. Lo que deba quedarse quieto, bloquéalo con el candado de la parte de arriba del panel de propiedades o con [[Ctrl]]+[[L]]. Una forma bloqueada no se puede mover, cambiar de tamaño, girar, cambiar de color ni eliminar: sus tiradores se vuelven grises, aparece un candado junto a la flecha de arriba y las herramientas que la cambiarían se ven en gris. Si pasas el ratón por encima de un tirador, sigues viendo sus medidas, y una tecla que la cambiaría avisa con «Objeto bloqueado». Mientras haya una forma bloqueada en la selección, tampoco cambia nada en las demás. Ocultar, cambiar el nombre, copiar y duplicar siguen funcionando. + +Un número en el botón del grupo {{ui:editor.group.visibility}} indica cuántas formas están ocultas, y un clic en él las vuelve a mostrar todas. Cuando abres un diseño con formas ocultas, se te avisa una vez, con un botón para mostrarlas. + +## La lista de objetos + +Con muchas piezas, es fácil perderse en la vista. La lista de objetos ({{ui:editor.tool.showOutliner}} o [[Ctrl]]+[[Mayús]]+[[O]]) presenta todas las formas en una lista. Se queda abierta o cerrada tal como la dejaste, en todos los diseños, hasta que la cierres; la elección se guarda en el navegador. + +![La lista de objetos: el grupo «Grupo» con dos piezas y una esfera al lado. Un icono de carpeta abre el grupo.](shot:object-list) + +- Un clic en una entrada selecciona la forma, también las piezas que están dentro de un grupo. Con [[Mayús]] pulsado, añades más entradas o las vuelves a quitar, igual que en la vista. Las flechas despliegan y pliegan los grupos. +- La etiqueta indica si una pieza es {{ui:outliner.solid}} u {{ui:outliner.hole}}. +- El candado y el ojo bloquean y ocultan piezas sueltas. +- {{ui:outliner.rename}} le da a una pieza un nombre propio; el lápiz junto al nombre, en la parte de arriba del panel de propiedades, hace lo mismo con la forma seleccionada. En los diseños grandes, unos nombres con sentido ayudan muchísimo. +- El campo de búsqueda encuentra formas por su nombre y por su tipo, así que también puedes buscar «cilindro» u «orificio». Busca también dentro de los grupos, por muy anidados que estén: un grupo que contiene una coincidencia se queda en la lista y se despliega para mostrar las piezas que coinciden y los grupos que llevan hasta ellas. Un grupo encontrado por su propio nombre muestra todas sus piezas cuando lo abres. +- La flecha del extremo izquierdo de la barra de título pliega la lista hasta dejar solo la barra de título, y la vuelve a desplegar. + +La lista está acoplada justo a la derecha del cubo de vista. Arrástrala por su barra de título para ponerla en cualquier punto del plano de trabajo; pasa por debajo del cubo de vista y de la barra de cámara. Si la sueltas otra vez junto al cubo de vista, o haces doble clic en la barra de título, se vuelve a acoplar. Este navegador recuerda dónde estaba y si estaba plegada. + +## Escribir una posición + +La tarjeta {{ui:inspector.position}} del panel de propiedades muestra dónde está el cuerpo seleccionado, y puedes escribir ahí la posición: {{ui:prop.positionX}} e {{ui:prop.positionY}} son el centro de su cuadro delimitador sobre la placa, con los mismos signos que las distancias que aparecen en el plano de trabajo, y {{ui:prop.positionZ}} es la altura de su base. X cuenta hacia la derecha, Y hacia el fondo y Z hacia arriba, según la regla de la mano derecha, como en Tinkercad y en los programas de CAD; las flechas de los ejes de la placa muestran las direcciones. Los valores van en la unidad que hayas elegido, y los controles deslizantes llegan tan lejos como al arrastrar. + +## Aparcar piezas junto a la placa + +Puedes arrastrar una forma más allá del borde de la placa y dejarla ahí, hasta más o menos el ancho de una placa por cada lado, para guardarla para luego. Con las flechas del teclado la llevas tan lejos como quieras. Una pieza aparcada sigue siendo parte del diseño y entra en la exportación con todo lo demás. Para dejarla fuera, ocúltala o exporta solo la selección. Si has elegido una impresora, layerling te avisa al exportar cuando algo queda fuera de su cama. + +## Ajuste al mover + +Cuando arrastras una forma por el plano de trabajo, se ajusta a otras formas: su lado izquierdo, derecho, delantero o trasero, o su centro, cae exactamente sobre un lado o el centro de otra forma. Una línea guía rosa muestra a qué se está ajustando. Así dejas dos piezas a ras una junto a otra, o centradas una detrás de otra, sin escribir números. También funciona con la cuadrícula desactivada. + +Mantén pulsado [[Mayús]] mientras arrastras para que el movimiento siga un solo eje: la forma sigue la dirección, X o Y, en la que más hayas arrastrado y no se mueve en la otra. Lo mejor es pulsar [[Mayús]] cuando ya estás arrastrando; sobre una forma que aún no está seleccionada, un clic con [[Mayús]] solo la añade a la selección. + +Si ya tienes pulsado [[Alt]] al empezar a arrastrar, arrastras una copia, como en Tinkercad: la forma se queda donde está y la copia cae donde sueltes. Si pulsas [[Alt]] cuando ya vas arrastrando, el ajuste se detiene y la forma solo sigue la cuadrícula. Con una copia pasa lo mismo: solo se ajusta cuando sueltas [[Alt]] durante el arrastre. Para desactivar el ajuste del todo, usa el menú de la cuadrícula de abajo a la derecha ({{ui:inspector.objectSnap}}) o la ventana de ajustes. De momento solo se ajusta el movimiento sobre el plano de trabajo normal, no al elevar ni al cambiar el tamaño. + +## Alinear + +Dos o más formas seleccionadas se alinean con {{ui:editor.tool.align}}: alrededor de la selección aparecen puntos para izquierda, centro y derecha; delante, centro y detrás; y arriba, centro y abajo. Un clic en un punto lleva ahí todas las formas. Si antes haces clic en una de las formas seleccionadas, esa se queda en su sitio y las demás se alinean con ella. Si en la selección hay una forma bloqueada, esa es automáticamente la que se queda fija. Izquierda, derecha, delante, detrás, arriba y abajo se rigen por el cuadro delimitador de cada forma; el centro de un triángulo, un pentágono o una estrella es su propio centro, así que un orificio centrado en una de esas formas queda en el centro de la forma y no en el de su cuadro. + +Una forma girada en ángulo, por ejemplo 45°, se alinea por el cuadro que la rodea, no por sus propias aristas. Para alinear por las aristas, pon antes un plano de trabajo sobre una cara de esa forma ({{ui:camera.placeWorkplane}} y luego clic en la cara): los puntos se colocan entonces sobre los ejes de ese plano, y las formas se miden y se mueven según ellos, como en Tinkercad. Para volver a alinear según la placa, devuelve el plano de trabajo a su sitio. + +![Alinear muestra los destinos posibles como puntos alrededor de la selección.](shot:align) + +La tecla es [[L]]. [[Esc]] cancela. + +## Reflejar + +{{ui:editor.tool.mirror}} ([[M]], o haz clic derecho en la selección y elígelo) refleja la selección respecto a un plano: {{ui:mirror.leftRight}}, {{ui:mirror.frontBack}} o {{ui:mirror.topBottom}}. Haz clic en la flecha del eje correspondiente. Es muy práctico para piezas simétricas: construye una mitad, cópiala y refleja la copia. + +## Girar y fijar el punto de giro + +Para girar, usa las flechas curvas de la forma, los números del panel de propiedades o [[R]], que gira en pasos de 45°. Cuando arrastras sobre el círculo de giro, el giro se ajusta a cada marca, es decir, cada 22,5°; mantén pulsado [[Mayús]] para pasos más finos, y aparecen marcas adicionales cada 11,25°. Arrastra fuera del círculo para girar libremente en pasos de 1°, o de 45° con [[Mayús]]. Normalmente, la selección gira alrededor de su centro. A veces no interesa, por ejemplo cuando quieres seguir girando un tubo inclinado por su extremo. Para eso está {{ui:editor.tool.rotationPivot}}: después, haz clic en una cara. Una cara plana aporta su centro, por ejemplo el eje del extremo de un tubo. A partir de ahí, la selección gira alrededor de ese punto. Un segundo clic en la herramienta lo vuelve a quitar. + +Los ángulos se quedan con el cuerpo. En su panel de propiedades, {{ui:inspector.rotation}} los muestra como {{ui:prop.rotateX}}, {{ui:prop.rotateY}} y {{ui:prop.rotateZ}}, con los mismos nombres que la posición: Y cruza la placa y Z va hacia arriba. Escribe ahí un ángulo y el cuerpo gira hasta él, alrededor de su centro o de su propio punto de giro si lo tiene. Mientras hay un cuerpo girado seleccionado, sus ángulos también aparecen debajo de él en el plano de trabajo; {{ui:workspace.showRotationAngles}}, en los ajustes, lo desactiva. + +![Un cuerpo girado respecto a dos ejes: sus ángulos aparecen debajo, y la tarjeta Rotación de su panel de propiedades los recoge como números.](shot:rotation-card) + +Con **un solo cuerpo** seleccionado, el punto de giro pertenece a ese cuerpo: selecciona otras piezas, vuelve a él y el punto de giro sigue ahí. Se mueve, gira y escala con el cuerpo, se guarda en el proyecto y vuelve con Deshacer. En {{ui:inspector.position}}, el punto de giro tiene sus propias X, Y y Z, que puedes escribir o retocar, y {{ui:inspector.pivotRemove}} lo elimina. También puedes arrastrar con el ratón la marca roja del punto de giro: se desliza por la superficie de los cuerpos y se ajusta a esquinas, puntos medios de aristas y aristas, así que el pasador de una bisagra cae justo en una esquina. Con varios cuerpos seleccionados, el punto de giro solo vale para esa selección, y una selección nueva lo elimina. + +## Apoyar sobre una cara + +¿Quieres que una pieza se apoye en su mejor lado para imprimirla? Selecciónala, haz clic en {{ui:editor.tool.layFlat}} y luego en la cara que debe quedar abajo. Mientras pasas el puntero por encima de la pieza, la cara que hay debajo se ilumina, así que ves cuál vas a elegir; gira la vista para comprobar los otros lados. La pieza gira hasta que esa cara descansa sobre el plano de trabajo. + +¿Quieres que dos piezas queden cara contra cara, o alineadas a ras? Selecciona la pieza que se va a mover, haz clic en {{ui:editor.tool.mateFaces}}, luego en su cara y, después, en la cara de la otra pieza. En el panel, {{ui:mate.mode.against}} pone las caras una contra otra (espalda con espalda, tocándose) y {{ui:mate.mode.flush}} las deja en un mismo plano, una al lado de la otra; {{ui:mate.gap}} deja espacio entre ellas, por ejemplo como holgura. {{ui:mate.apply}} mueve la pieza: gira por el camino más corto hasta que las caras son paralelas —nada, si ya lo son— y luego solo se desliza hacia la otra cara, de modo que conserva su posición lateral. La otra pieza se queda donde está, y un solo Deshacer lo revierte todo. + +![El panel Alinear caras: la pieza que se mueve ya está elegida; luego viene una cara de la otra pieza, después cara contra cara o a ras, y una separación opcional.](shot:mate-faces) + +**Un ángulo exacto entre dos caras:** {{ui:editor.tool.mateFaces}} deja las caras paralelas; no hay una herramienta propia para dejar un ángulo entre ellas, pero así lo consigues. Primero junta las caras con {{ui:editor.tool.mateFaces}}, para que queden paralelas. Luego fija el punto de giro en la arista donde se encuentran ({{ui:editor.tool.rotationPivot}} y clic en la arista o en una esquina) y escribe el ángulo, por ejemplo 15 o 30, en la tarjeta {{ui:inspector.rotation}} de la pieza. La pieza gira alrededor de ese punto. Los ejes de la tarjeta son los de la placa, así que esto funciona cuando la arista va a lo largo de X, Y o Z. + +Igual de sencillos son {{ui:editor.tool.dropToWorkplane}} ([[D]]), que baja la selección hasta el plano de trabajo, y {{ui:editor.tool.centerOnWorkplane}}. + +[[C]] coge la selección, como Cruise en Tinkercad: la selección sigue al puntero del ratón y se posa sobre la cara del cuerpo que tengas debajo, también si es inclinada. Un clic la deja ahí, y [[Esc]] la deja donde estaba. Su base queda entonces apoyada en la cara, alineada con las aristas de la cara como lo estaría una forma nueva, y conserva su propio giro respecto a su eje vertical. Varias piezas viajan juntas y mantienen su separación. Sobre la placa vacía, [[C]] vuelve a poner de pie sobre el plano de trabajo una pieza inclinada. Sin teclado, el menú de la pulsación larga tiene {{ui:contextMenu.carry}} para lo mismo. + +## Patrones: fila y círculo + +Para rejillas y círculos de orificios, o para coronas de dientes, está el {{ui:editor.tool.array}}. Selecciona las formas que quieras multiplicar y haz clic en él, en la cinta. + +![El patrón en modo «Círculo»: las copias aparecen primero como vista previa.](shot:pattern-tool) + +- **{{ui:array.mode.row}}:** la selección se repite a distancias iguales. La fila avanza por los tres ejes a la vez, con {{ui:array.spacingX}}, {{ui:array.spacingY}} y {{ui:array.spacingZ}}: con uno de ellos sale una fila recta, y con dos o tres, una fila en diagonal o una escalera. Una separación negativa coloca la fila hacia el otro lado. +- **{{ui:array.mode.circle}}:** la selección se reparte alrededor de un centro. Cuántas copias hay lo eliges en {{ui:array.count}}, y {{ui:array.angle}} es de 360° para un círculo completo. Elige si las copias giran también. {{ui:array.rise}} eleva cada copia un poco más que la anterior (un tornillo o una espiral ascendente), y {{ui:array.radiusChange}} la aleja del centro o la acerca a él (una espiral plana); las dos juntas dan una espiral cónica. Una espiral da como mucho una vuelta: un ángulo de más de 360° cuenta como un círculo completo, y hay como máximo 100 copias. + +Consejo: fija antes el punto de giro en una cara con {{ui:editor.tool.rotationPivot}}; así el centro del círculo queda justo ahí. + +![El patrón en modo «Círculo» con subida y cambio de radio por copia: las copias suben y se abren como una espiral.](shot:pattern-spiral) + +Las copias aparecen primero como vista previa. Solo {{ui:array.apply}} las crea. Si las copias son orificios, agrúpalas después con el cuerpo en el que deben cortar. + +## Patrón de orificios en una cara + +Para rejillas de ventilación, rejillas de altavoz, cestas y cajas de electrónica, el {{ui:holePattern.title}} reparte orificios por igual sobre una cara plana. Ya no tienes que hacer un orificio, repetirlo y colocarlo en la pared. Selecciona exactamente un cuerpo y haz clic en {{ui:holePattern.title}}, en el grupo {{ui:editor.group.modify}} de la barra de herramientas, junto al patrón. También puedes hacer clic derecho en el cuerpo o buscarlo con [[Ctrl]]+[[K]]. + +1. Haz clic en una cara plana del cuerpo. Cuenta toda la cara plana alrededor de tu clic, no solo el triángulo que hay bajo el puntero. Una cara curva no sirve: te sale un aviso y haces clic en una plana. +2. En la ventana, elige cómo son los orificios y cómo se colocan: + - **{{ui:holePattern.form}}:** {{ui:holePattern.form.round}}, {{ui:holePattern.form.square}}, {{ui:holePattern.form.rectangle}}, {{ui:holePattern.form.hexagon}} o {{ui:holePattern.form.slot}}. + - **Tamaño:** para un orificio redondo, {{ui:holePattern.size.diameter}}; para uno cuadrado, {{ui:holePattern.size.side}}; para un rectángulo y una ranura, {{ui:holePattern.size.width}} y {{ui:holePattern.size.height}}. En el hexágono, el tamaño es {{ui:holePattern.size.corners}}. + - **{{ui:holePattern.spacing}}:** la distancia del centro de un orificio al del siguiente. Si es menor de lo que permiten los orificios, layerling la sube al valor más pequeño posible para que quede una pared entre ellos. + - **{{ui:holePattern.wall}}:** la misma distancia, dicha de otra manera: la pared que queda entre dos orificios vecinos, que es el grosor de pared en la pieza impresa. Si la fijas, la separación entre centros se adapta, y al revés. En hexágonos, rectángulos y ranuras, layerling mide la distancia mínima entre sus bordes. + - **{{ui:holePattern.arrangement}}:** {{ui:holePattern.arrangement.grid}} coloca los orificios en filas y columnas. {{ui:holePattern.arrangement.staggered}} desplaza una fila de cada dos media separación y acerca las filas, de modo que cada orificio tiene sus vecinos a la misma distancia; con hexágonos sale un panal. + - **{{ui:holePattern.margin}}:** la distancia libre entre los orificios y el borde de la cara. Solo se hacen los orificios que caen por completo dentro de la cara descontando este margen; lo que se saldría queda fuera. El margen también se respeta alrededor de las aberturas de la cara. + - **{{ui:holePattern.depth}}:** {{ui:holePattern.depth.through}} (la opción predeterminada) corta toda la pared. Con {{ui:holePattern.depth.custom}} indicas la profundidad en milímetros, por ejemplo para hacer rebajes. +3. Los orificios aparecen al momento como vista previa sobre la cara y siguen cada valor. La ventana indica cuántos orificios caben. {{ui:holePattern.repick}} elige otra cara, [[Esc]] cierra la herramienta y, como las demás ventanas de herramientas, se mueve arrastrando su barra de título. +4. Solo {{ui:holePattern.apply}} hace los orificios. + +Los orificios son orificios normales agrupados con el cuerpo, igual que después de {{ui:editor.tool.group}}: no queda nada fundido para siempre. {{ui:editor.tool.ungroup}} deshace el grupo y libera cada orificio, que entonces puedes mover, cambiar o eliminar uno a uno. Todo ello es un solo paso para {{ui:editor.tool.undo}}. La herramienta no hace más de 400 orificios a la vez; en ese caso, haz los orificios más grandes o aumenta la separación. + +Una IA puede hacer lo mismo a través del puente MCP con `layerling_perforate_face` (consulta el capítulo [IA con MCP](chapter:ai-with-mcp)). + +## Empujar una cara hacia fuera o hacia dentro + +Para engrosar una pared, poner un resalte sobre una cara o abrir un hueco en ella, la herramienta {{ui:faceTool.title}} trabaja sobre una cara plana. También funciona con un STL importado, donde no hay ningún boceto que cambiar. Selecciona exactamente un cuerpo y haz clic en {{ui:faceTool.title}}, en el grupo {{ui:editor.group.modify}} de la barra de herramientas, junto al patrón de orificios. También puedes hacer clic derecho en el cuerpo o buscarla con [[Ctrl]]+[[K]]. + +1. Haz clic en una cara plana del cuerpo. Igual que con el patrón de orificios, cuenta toda la cara plana alrededor de tu clic; una cara curva no sirve. +2. En la ventana: + - **{{ui:faceTool.direction}}:** elige {{ui:faceTool.direction.out}} para añadir material que sobresalga de la cara o {{ui:faceTool.direction.in}} para abrir un hueco en ella. Un hueco no llega más hondo que el cuerpo que hay detrás de la cara; en un cuerpo vaciado, aun así, puede llegar a la cavidad. + - **{{ui:faceTool.inset}}:** cuánto queda el contorno nuevo hacia dentro del borde de la cara. Hacia fuera, con 0 se toma toda la cara, y así se engrosa una pared. Las aberturas de la cara crecen en la misma medida. + - **{{ui:faceTool.radius}}:** redondea todas las esquinas del contorno, también las interiores, de modo que una punta afilada acaba en un arco. Una muesca más estrecha que el doble del radio se cierra, y una parte de la cara más estrecha que el doble del margen y el radio juntos queda fuera. + - **{{ui:faceTool.depth}}:** cuánto sobresale de la cara la parte nueva, o lo hondo que llega el hueco. +3. El resultado aparece al momento como vista previa y sigue cada valor. {{ui:faceTool.repick}} elige otra cara, y [[Esc]] cierra la herramienta. +4. Solo {{ui:faceTool.apply}} lo crea. + +Lo que añade la herramienta es un cuerpo de boceto normal agrupado con el cuerpo: no queda nada fundido para siempre. {{ui:group.edit}} abre el grupo, y {{ui:inspector.editSketch}} en la pieza nueva muestra el contorno que sigue. En la cara superior o inferior de un cuerpo de boceto sencillo —una sola superficie; sin agrupar, reflejar, estrechar, retorcer ni inclinar, y sin trazo, orificio para llavero, redondeo ni chaflán—, ese contorno es el del propio cuerpo, desfasado hacia dentro al construirlo, así que sus líneas y arcos siguen siendo exactos siempre que el núcleo CAD pueda desfasarlos, para las herramientas de aristas y la exportación a STEP. Si después le cambias el tamaño, la pieza conserva su margen. En cualquier otra cara, y en todas las caras de una malla importada, el contorno sigue los triángulos de la cara, y una curva se compone de tramos rectos cortos. Todo ello es un solo paso para {{ui:editor.tool.undo}}. Para cambiar más tarde el margen o el radio, deshaz y vuelve a usar la herramienta. Para redondear después la arista superior, usa {{ui:editor.tool.fillet}} con {{ui:edge.topEdges}} sobre el grupo como último paso: como cualquier tratamiento de aristas sobre un grupo, une el grupo en un solo cuerpo. + +Una IA puede hacer lo mismo a través del puente MCP con `layerling_push_face` (consulta el capítulo [IA con MCP](chapter:ai-with-mcp)). + +## Cambiar varias piezas a la vez + +Con varias piezas seleccionadas, el panel de propiedades de la derecha muestra cuántas son y ofrece lo que se aplica a todas a la vez: {{ui:inspector.solid}} u {{ui:inspector.hole}}, un mismo color para todas (un clic en {{ui:inspector.solid}} abre los colores) y el candado. Si la selección es mixta, un clic las convierte todas en sólidos o todas en orificios. Si alguna de las piezas está bloqueada, solo se puede usar el candado. Los tamaños se cambian con los tiradores, con {{ui:scalePercent.title}} o escribiendo un número en una etiqueta de medida. Con varias piezas, el número es el tamaño de toda la selección: todas las piezas crecen con él, y también los espacios entre ellas, como cuando arrastras un tirador. Sólido y orificio también funcionan con el clic derecho o con las teclas [[S]] y [[H]]. + +## Escalar en porcentaje + +Para hacer una o varias piezas más grandes o más pequeñas en la misma proporción, por ejemplo todas las piezas de un archivo de impresión un 20 %, usa {{ui:scalePercent.title}}. Selecciona las piezas, haz clic derecho sobre ellas y elige {{ui:scalePercent.title}}, o búscalo con [[Ctrl]]+[[K]]. + +En {{ui:scalePercent.percent}} escribes el tamaño nuevo como porcentaje del actual: 120 % es una quinta parte más grande y 50 %, la mitad. La anchura, la profundidad y la altura cambian igual, así que se mantienen las proporciones. La base se queda donde está, así que nada se hunde en la placa. + +Con varias piezas, eliges cómo crecen: + +- **{{ui:scalePercent.mode.together}}:** las piezas crecen alrededor de su centro común, y los espacios entre ellas crecen también. Todo se agranda como si fuera una sola pieza. +- **{{ui:scalePercent.mode.each}}:** cada pieza crece donde está, y los espacios entre ellas no cambian. + +Solo {{ui:scalePercent.apply}} cambia el diseño, y un paso atrás lo deshace. Si hay una pieza bloqueada en la selección, no se abre. + +## Deshacer + +{{ui:editor.tool.undo}} ([[Ctrl]]+[[Z]]) y {{ui:editor.tool.redo}} ([[Ctrl]]+[[Mayús]]+[[Z]] o [[Ctrl]]+[[Y]]) recorren tu historial paso a paso. Cuántos pasos viajan con el diseño guardado lo eliges en los ajustes, en {{ui:workspace.history}}. + +## Mirar atrás: la vista del historial + +{{ui:editor.tool.history}}, junto a deshacer y rehacer, abre una vista de tu historial sin cambiar nada. La zona de trabajo muestra el diseño tal como era, y un control deslizante abajo recorre cada paso de deshacer: a la derecha del todo está el estado actual, cada paso hacia la izquierda es un deshacer más atrás, y los estados que has deshecho quedan a la derecha del actual. Las flechas del teclado recorren los estados, y [[Esc]] vuelve al estado actual. La rueda del ratón sobre el control deslizante hace lo mismo, un estado por cada paso de la rueda; hacia arriba, a uno anterior. [[Re Pág]] y [[Av Pág]] saltan diez estados, [[Inicio]] va al estado más antiguo y [[Fin]] vuelve al actual. Mientras tanto puedes girar la vista, hacer zoom y hacer clic en objetos para recuperarlos (se explica más abajo), pero no se puede mover nada; el diseño en sí se queda exactamente como está. Si la barra tapa algo, apártala arrastrando su barra de título; un doble clic en ella la devuelve a su sitio. + +De un estado anterior puedes llevarte dos cosas. {{ui:historyView.createProject}} pone ese estado en un diseño nuevo en la página de inicio, con el nombre de este y la hora de ese estado entre paréntesis —un diseño guardado antes de que layerling registrara horas lleva «copia» en su lugar—, y con el historial hasta ese punto, para que deshacer siga funcionando allí. {{ui:historyView.export}} abre la exportación de siempre con ese estado como diseño, para que puedas guardarlo como STL, 3MF, STEP, imagen o archivo LYL con el historial hasta ese estado. + +También puedes recuperar objetos sueltos en el diseño. Haz clic en un objeto del estado que se muestra —[[Mayús]]+clic añade más o vuelve a quitar uno, y un clic en un espacio vacío no elige nada— y elige {{ui:historyView.bringBack}}. La vista se cierra y una copia de cada objeto aparece en el diseño actual exactamente como era en ese estado y en el sitio que ocupaba entonces, seleccionada, junto a todo lo que tenga ahora el diseño; no cambia nada más. Es un solo paso, así que deshacer lo revierte. Sirve para recuperar una versión de una pieza que has cambiado desde entonces, o una que has eliminado. Un grupo vuelve entero; las notas y los puntos de referencia de un objeto se quedan atrás. Su nombre lleva la hora de ese estado, como «Caja (12:32)», para distinguirlo fácilmente de la versión que tiene ahora el diseño. Para recuperar una pieza que está dentro de un grupo, selecciona el grupo y elige {{ui:historyView.openGroup}} o pulsa [[E]], como en el diseño: sus piezas se colocan donde las pondría la edición del grupo, listas para elegirlas, y la barra indica en qué grupo estás. {{ui:historyView.backOut}} lo vuelve a cerrar. Esto es solo para mirar: el grupo, el diseño y el historial se quedan como están. + +{{ui:historyView.delete}} está aparte, abajo a la izquierda de la barra. Tras pedirte confirmación, elimina para siempre todos los pasos anteriores: el diseño conserva el estado que tiene ahora (no el que se muestra), Deshacer ya no tiene adónde volver y un archivo guardado después no lleva historial. Úsalo para compartir un diseño sin su pasado o para empezar de cero los pasos de deshacer. No se puede deshacer; para compartir un archivo sin tocar tu propio diseño, elige mejor {{ui:export.historyNone}} al exportar. diff --git a/docs/guide/es/05-solids-and-holes.md b/docs/guide/es/05-solids-and-holes.md new file mode 100644 index 000000000..1178a5b9b --- /dev/null +++ b/docs/guide/es/05-solids-and-holes.md @@ -0,0 +1,86 @@ +--- +title: Sólidos y orificios +summary: Cómo las formas sencillas se convierten en taladros, ranuras y huecos, y cómo cambiar un grupo más adelante. +--- + +Esta es la idea más importante de layerling, y se aprende enseguida: **toda forma es un sólido o un orificio.** Un sólido se queda tal cual. Un orificio es una herramienta que quita material. + +## Sólido u orificio + +Selecciona una forma y, en sus ajustes, haz clic en {{ui:inspector.solid}} o en {{ui:inspector.hole}}. Con el teclado es más rápido: [[H]] convierte la selección en orificio y [[S]] la vuelve a convertir en sólido. Las dos opciones están también en el menú que se abre al hacer clic derecho sobre el cuerpo. Un orificio se muestra transparente para que veas dónde está. [[T]] vuelve transparente un cuerpo, por ejemplo para mirar dentro de una carcasa; si la pulsas otra vez, vuelve a ser opaco. Actúa sobre toda la selección: si algún cuerpo ya es transparente, todos se vuelven opacos; si no, todos se vuelven transparentes. + +Mientras no agrupes, el orificio no hace nada. Solo está ahí y marca dónde va a desaparecer algo más adelante. + +![El cilindro es un orificio. Sobresale por encima del cubo para atravesarlo por completo.](shot:hole-before) + +## Agrupar + +Selecciona los sólidos y el orificio (o los orificios) y haz clic en {{ui:editor.tool.group}} ([[Ctrl]]+[[G]]). Ahora los orificios quitan el material de los sólidos que tocan. Lo que queda es una única forma nueva. + +![El resultado: un cubo con un taladro.](shot:hole-after) + +Así se consiguen: + +- **Taladros:** un cilindro convertido en orificio que atraviesa un cuerpo. +- **Ranuras:** una caja alargada convertida en orificio en una arista. +- **Huecos:** un orificio que no llega a atravesar la pieza. +- **Roscas dentro de una pieza:** un orificio roscado convertido en orificio; consulta [Roscas y mecánica](chapter:threads-and-mechanics). + +Si en el grupo hay varios sólidos, se unen. Dos sólidos que se tocan pasan a ser una sola pieza. + +Un grupo se maneja como cualquier forma: puedes moverlo, girarlo, darle color o volver a agruparlo. {{ui:editor.tool.ungroup}} ([[Ctrl]]+[[Mayús]]+[[G]]) lo deshace y vuelves a tener las piezas sueltas. + +### Convertir un grupo en orificio + +Un grupo entero también puede ser un sólido o un orificio. Para eso hay una regla sencilla: + +- Si el grupo solo tiene sólidos (o solo orificios), lo cambias entero y sus piezas cambian con él. +- Si tiene de las dos cosas, como un cubo con un taladro, cada pieza conserva su propio estado. El grupo entero pasa a ser una herramienta, pero el taladro sigue siendo un taladro. + +## Crear conjuntos + +A veces las piezas solo tienen que ir juntas sin convertirse en una sola: por ejemplo, un logotipo blanco sobre una placa negra para una impresión multicolor. Para eso está {{ui:editor.tool.bundle}} ([[Ctrl]]+[[B]]), como en Tinkercad. Un conjunto se mueve, gira y cambia de tamaño como una forma, pero no se fusiona nada: + +- Cada pieza conserva su color y sigue siendo un sólido o un orificio. +- Los orificios no cortan nada. Cuando agrupas el conjunto con otras piezas, sus orificios cortan esas piezas, pero siguen sin cortar los sólidos del propio conjunto, como en Tinkercad. Así, por ejemplo, una espiga con su orificio al lado se puede usar una y otra vez como conjunto. +- Al exportar a STL, 3MF u OBJ, cada pieza es un cuerpo independiente; en 3MF y OBJ, con su color. + +{{ui:editor.tool.ungroup}} ([[Ctrl]]+[[Mayús]]+[[G]]) vuelve a separar un conjunto, y [[E]] lo abre para editarlo como un grupo. Los chaflanes, los redondeos y el vaciado no funcionan en un conjunto, porque no es un único cuerpo: agrúpalo para eso o trabaja sus piezas una a una. Si quieres que un orificio del conjunto corte también los sólidos del propio conjunto, separa el conjunto y agrupa sus piezas ([[Ctrl]]+[[G]]). + +## Intersección + +{{ui:editor.tool.intersect}} conserva solo lo que dos o más cuerpos tienen en común. Coloca dos formas de modo que se solapen, selecciona las dos y haz clic en el botón. Así, de un cilindro y una caja sale una pieza con un lado redondo y otro recto. Un grupo cuenta tal como se ve, con sus orificios incluidos. Si también hay un orificio seleccionado, queda lo que todos los sólidos comparten con todos los orificios. Si las formas no tienen nada en común, no cambia nada y un mensaje te lo indica. Al lado, {{ui:editor.tool.intersectPreview}} muestra la parte común antes de aplicarla: las formas seleccionadas se vuelven transparentes y lo que comparten se dibuja en verde. Selecciona y mueve cada forma por separado y la parte verde la sigue; {{ui:editor.tool.intersect}} la aplica y [[Esc]] cierra la vista previa. + +## Editar un grupo + +Si un taladro te ha quedado demasiado pequeño, no hace falta deshacer el grupo y volver a construirlo. Selecciona el grupo y haz clic en {{ui:group.edit}} en sus ajustes o en el icono de carpeta de la lista de objetos, o pulsa [[E]]. Un doble clic sobre el grupo hace lo mismo, como en Tinkercad, también en un conjunto; si no te gusta, desactiva {{ui:workspace.doubleClickOpensGroup}} en los ajustes. Por cierto, una pieza solo empieza a moverse cuando el puntero se ha arrastrado unos cuantos píxeles, así que un clic o un doble clic con el pulso tembloroso no la desplaza. Ahora las piezas están sueltas y las cambias con cualquier herramienta: agrandar un orificio, mover un cuerpo, añadir un orificio. + +![El grupo en edición: abajo está la barra con Cancelar y Listo, y la lista de objetos muestra las piezas.](shot:open-group) + +En la parte inferior de la vista aparece una barra. {{ui:group.done}} vuelve a construir el grupo, con su nombre, su color y su estado de sólido u orificio. {{ui:common.cancel}} lo deja tal como estaba. + +Si una de las piezas es a su vez un grupo, puedes editarla del mismo modo, y así sucesivamente hasta donde llegue tu diseño. La barra muestra dónde estás, por ejemplo «Soporte › Torreta del tornillo». {{ui:group.done}} y {{ui:common.cancel}} cierran siempre el grupo más interior y te devuelven un nivel hacia fuera. Mientras estás dentro de un grupo, solo puedes editar los grupos que haya entre sus piezas; para editar otro, termina primero. + +A diferencia de {{ui:editor.tool.ungroup}}, que deshace un grupo para siempre, al editarlo el grupo se conserva: su nombre y sus ajustes se mantienen, y siempre puedes volver atrás con {{ui:common.cancel}}. + +Un aviso: los redondeos y chaflanes que hubieras aplicado al grupo **entero** se pierden al reconstruirlo. La barra te lo advierte. + +## Dividir + +{{ui:editor.tool.split}}, en el grupo {{ui:editor.group.modify}}, corta la selección en dos con un plano: por ejemplo, una pieza demasiado grande para la cama de impresión o una cuyo interior quieres ver. Selecciona uno o varios sólidos u orificios y haz clic en el botón. Un plano translúcido muestra exactamente por dónde irá el corte, y una línea blanca lo marca sobre los propios cuerpos, allí donde el plano se cruza con ellos; no cambia nada hasta que lo aplicas. + +- {{ui:split.orientation}}: **X** hace un corte vertical entre izquierda y derecha, **Y** entre delante y detrás, y **Z** un corte horizontal entre arriba y abajo. Los ejes se llaman como en la tarjeta de posición, con Z hacia arriba. El plano empieza paralelo al plano de trabajo; sobre la placa base, por tanto, con Z. +- {{ui:split.workplane}}: {{ui:split.workplaneParallel}} coloca el plano paralelo al plano de trabajo; {{ui:split.workplaneAcrossX}} y {{ui:split.workplaneAcrossY}} lo ponen perpendicular a él, atravesando su dirección X o Y. Si el origen del plano de trabajo cae dentro de la selección, el plano pasa por él; si no, por el centro. Así puedes poner el plano de trabajo sobre una cara inclinada con [[W]] y cortar justo ahí, sin tocar los controles deslizantes de giro. +- {{ui:split.position}}: por dónde pasa el plano, con el control deslizante o escribiendo el valor. Empieza en el centro. También puedes arrastrar la punta de la flecha que hay sobre el plano; el plano se desplaza entonces a lo largo de la flecha en pasos de 0,1 mm. +- {{ui:split.pickFace}}, el botón que hay junto a la posición, coloca el plano sobre una cara: haz clic en él y luego en la cara. La orientación, los dos giros y la posición se ajustan a ella. Mientras eliges, un plano azul bajo el puntero muestra qué cara va a tomar. También sirve la cara de un cuerpo no seleccionado, para alinear el corte con ella, pero el plano no sale de la selección. [[Esc]] deja de elegir y deja el plano donde estaba. +- Los dos controles deslizantes de giro que hay debajo giran el plano alrededor de los otros dos ejes, hasta 180° en cada sentido, para hacer un corte inclinado. Se pueden combinar. + +{{ui:split.apply}} o [[Intro]] hace el corte, y [[Esc]] lo cancela (mientras eliges una cara, el primer [[Esc]] solo deja de elegir). Cada objeto que atraviesa el plano se convierte en dos cuerpos cerrados, que llevan el nombre de su lado, por ejemplo «Caja (Z+)» y «Caja (Z-)»; los objetos que el plano no toca se quedan como están. Un orificio se convierte en dos orificios, y un cuerpo vaciado conserva su cavidad. Las dos mitades se quedan donde estaban: para imprimirlas, apoya cada una sobre su cara de corte con {{ui:editor.tool.layFlat}}. + +Las mitades son simples mallas: ajustes como los lados de un cilindro o las letras de un texto se pierden, así que ajústalos antes. [[Ctrl]]+[[Z]] recupera el original en un solo paso. Los objetos bloqueados u ocultos no se pueden dividir. + +## Separar piezas + +Si una forma está hecha de varios trozos sueltos, como un texto formado por letras independientes, {{ui:inspector.separateParts}} la divide en formas independientes. La opción también está en el menú que aparece al hacer clic derecho sobre la forma. + +> **Consejo:** Haz siempre los orificios un poco más largos que la pieza que tienen que atravesar. Si el orificio termina justo a ras de la cara, a veces queda una piel finísima. Con un milímetro de más vas sobre seguro. diff --git a/docs/guide/es/06-edges-and-hollowing.md b/docs/guide/es/06-edges-and-hollowing.md new file mode 100644 index 000000000..0f0e28b0c --- /dev/null +++ b/docs/guide/es/06-edges-and-hollowing.md @@ -0,0 +1,98 @@ +--- +title: Romper aristas y vaciar cuerpos +summary: Chaflanes y redondeos en las aristas que elijas, y paredes de grosor uniforme para cajas, vasos y carcasas. +--- + +## Achaflanar y redondear aristas + +Las aristas vivas rara vez quedan bien en una pieza impresa, y tampoco son especialmente resistentes. Un **chaflán** corta la arista en ángulo; un **redondeo** la redondea. Los dos actúan sobre las aristas en las que hagas clic. + +1. Selecciona el cuerpo (o el grupo). +2. Haz clic en {{ui:editor.tool.fillet}} o {{ui:editor.tool.chamfer}} en la cinta, pulsa [[B]] para el redondeo o [[Shift+B]] para el chaflán, o haz clic derecho en el cuerpo y elige la opción en el menú. +3. Las aristas del cuerpo se resaltan. Haz clic en las que quieras modificar. Otro clic vuelve a quitar una arista. Con [[Mayús]] añades o quitas una sola arista. +4. Ajusta el tamaño y confirma con {{ui:edge.apply}} o [[Intro]]. Después, la ventana sigue abierta sobre el cuerpo nuevo con el mismo tamaño, para que puedas hacer enseguida el siguiente redondeo o chaflán; {{ui:edge.done}}, [[Esc]] o la cruz la cierran. Si mantienes pulsada [[Mayús]] o [[Ctrl]], un clic en {{ui:edge.topEdges}}, {{ui:edge.bottomEdges}}, {{ui:edge.verticalEdges}} o {{ui:edge.horizontalEdges}} añade esas aristas a las que ya habías elegido en lugar de sustituirlas. + +![La herramienta «Redondear aristas»: todas las aristas vivas están seleccionadas y la imagen muestra la vista previa con un radio de 4 mm.](shot:fillet-preview) + +El panel está arriba a la derecha. Si tapa aristas en las que quieres hacer clic, arrástralo por su barra de título; la próxima vez se abrirá también ahí, y lo mismo pasa con {{ui:editor.tool.hollow}} y {{ui:editor.tool.array}}. Un doble clic en la barra de título lo devuelve a su sitio. + +Si eliges una forma de la lista de formas con el panel abierto, este se cierra sin aplicar nada y se olvidan las aristas en las que habías hecho clic. Entonces el clic coloca la forma nueva en lugar de elegir aristas. + +En el panel encontrarás: + +- {{ui:edge.allSharpEdges}} selecciona todas las aristas a la vez, y {{ui:edge.clear}} vacía la selección. +- **{{ui:edge.radius}}**, para el redondeo. Para el chaflán ajustas {{ui:edge.distance}} o {{ui:edge.angle}}. +- {{ui:edge.variableRadius}} (solo en el redondeo) hace que el radio cambie a lo largo de una arista: pequeño en un extremo, mayor en el otro y uniforme entre ambos, como donde una pared recta se encuentra con una inclinada. Haz clic en una sola arista y ajusta {{ui:edge.radiusStart}} y {{ui:edge.radiusEnd}}. Qué extremo cuenta como el principio depende de cómo se construyó la arista; si el radio mayor sale en el extremo equivocado, {{ui:edge.swapEnds}} le da la vuelta. Funciona con una arista cada vez, así que redondea varias aristas una tras otra. {{ui:edge.editAction}} recupera los dos valores. +- {{ui:edge.sharpThreshold}} decide qué aristas cuentan como vivas. Con un valor de 25°, solo los quiebros claros se tratan como aristas y las transiciones suaves se dejan como están. +- {{ui:edge.verticalEdges}} elige las aristas que van en vertical, como las esquinas de una caja: así, un solo redondeo redondea a la vez todas las esquinas verticales. +- {{ui:edge.topEdges}} elige solo las aristas de la parte más alta del cuerpo. Es la forma rápida de hacer un cortador de galletas: crea el contorno en un boceto como trazo y luego achaflana las aristas superiores. {{ui:edge.angle}} fija la inclinación del chaflán; no puede ir más allá del grosor de la pared. +- {{ui:edge.bottomEdges}} elige solo las aristas de la parte más baja del cuerpo, el reflejo de {{ui:edge.topEdges}}. Es la forma rápida de redondear o achaflanar solo el pie de una pieza. +- {{ui:edge.chamfillet}}, que se elige arriba en la ventana de chaflán, junto a {{ui:editor.tool.chamfer}}, hace el pie imprimible de una pieza: un chaflán junto a la placa que se funde tangencialmente con un redondeo hacia la pared, para que las primeras capas no necesiten soportes y la arista termine suave de todos modos. {{ui:edge.distance}} es la altura que ocupa el pie, y {{ui:edge.angle}} (de 15° a 75°), la inclinación del chaflán junto a la placa. Elige las aristas con {{ui:edge.bottomEdges}}. +- {{ui:edge.onlyVisibleEdges}} oculta las aristas que quedan detrás del cuerpo desde donde miras. De forma predeterminada, todas las aristas se ven a través del cuerpo, lo que resulta confuso en una pieza complicada; con el interruptor activado solo ves las aristas que dan hacia ti, y solo puedes hacer clic en ellas. Gira la vista para llegar a las demás. Una arista dibujada en rojo (ver más abajo) se ve siempre. +- {{ui:edge.tangentChains}}: un clic elige también las aristas que se continúan suavemente unas en otras, por ejemplo todas las aristas alrededor de una cara con esquinas redondeadas. El interruptor solo decide qué elige un clic: el núcleo CAD siempre prolonga un chaflán o un redondeo por esas aristas que continúan suavemente. El panel te dice por cuántas aristas más pasa. +- {{ui:edge.keepSize}} mantiene el chaflán o el redondeo con el tamaño que tiene, aunque luego escales el cuerpo. +- {{ui:edge.previewQuality}} ({{ui:edge.draft}}, {{ui:edge.standard}} o {{ui:edge.fine}}) decide con qué detalle se calcula la vista previa. Para piezas difíciles, {{ui:edge.draft}} es más rápido. + +Mientras ajustas el tamaño, layerling recalcula la vista previa. Puede tardar un momento. Puedes seguir ajustando: lo que se calcula es el último valor que hayas elegido. + +Si el tamaño es demasiado grande para la arista, layerling te lo dice y te propone un valor menor. A menudo basta con uno o dos milímetros menos. En ángulos agudos, un redondeo necesita más espacio del que hace pensar su radio. En una pantalla pequeña, el panel se desplaza solo hacia abajo para que el mensaje quede a la vista. + +Si una selección que funcionaba falla al hacer clic en una arista más, esa arista se pone roja y se dibuja más gruesa: es la que no se puede tratar junto con las demás con ese tamaño. Vuelve a hacer clic en ella para quitarla, o reduce el tamaño. Si haces clic en más aristas mientras el mensaje sigue ahí, la primera sigue en rojo. Cuando no hay una selección anterior que funcionara (en el primerísimo clic, o con un tamaño que acabas de aumentar), se ponen en rojo las aristas que fallan incluso por sí solas, o todas, si lo que falla es solo su combinación. + +La arista que hay bajo el puntero también se dibuja más gruesa, para que veas cuál va a elegir el clic. + +### Deshacer una operación de aristas + +Un cuerpo con chaflanes, redondeos o vaciado siempre se puede volver a modificar. Selecciónalo de nuevo y abre la herramienta (Redondeo, Chaflán o Vaciar; todas muestran la lista): en {{ui:edge.featureHistory}} ves lo que ya tiene aplicado. {{ui:edge.revertAction}} deshace una sola operación. Atención: si hay operaciones más recientes encima, se van con ella, y el panel te dice cuántas. + +Junto a un chaflán, un redondeo o un vaciado aparece también {{ui:edge.editAction}}. Deshace la operación del mismo modo, pero vuelve a abrir enseguida la herramienta con las mismas aristas y el valor anterior. Cambias el valor y lo vuelves a aplicar: un redondeo de 3 mm pasa a ser de 5 mm sin tener que volver a hacer clic en las aristas. Si hay operaciones más recientes encima, aquí también se van con ella. Esto vale para las operaciones de aristas que hagas a partir de ahora; las más antiguas solo ofrecen deshacerlas, y lo mismo ocurre con las piezas sueltas de un grupo. + +En un grupo, por ejemplo un cilindro con un orificio, la arista tratada pertenece al cuerpo terminado, no a una de sus piezas. Por eso el grupo pasa a ser un único cuerpo. {{ui:editor.tool.ungroup}} sigue funcionando con él: primero retira las operaciones de aristas y después desagrupa, todo en un solo paso que puedes deshacer con [[Ctrl]]+[[Z]]. Si deshaces la operación como se explica más arriba, el grupo vuelve con todas sus piezas. Lo más sencillo es tratar las aristas al final. Eso vale también para las roscas: la herramienta de aristas toma una rosca como su cuerpo exacto, así que a un bloque con un orificio roscado se le redondean las aristas con la rosca en su sitio. Calcular las aristas de una rosca lleva más tiempo que en una forma sencilla: unos segundos para una M6 y cerca de medio minuto para una rosca de tubo G1/2. + +> **Conviene saber:** Para los redondeos y chaflanes, layerling trabaja con geometría CAD real, no solo con una malla de triángulos. Por eso una arista redondeada sigue siendo una arista redondeada en la exportación STEP. + +Una pieza importada en STEP también conserva su geometría CAD: los chaflanes, los redondeos y el vaciado trabajan sobre el cuerpo del archivo, por muy detallada que se dibuje la pieza en pantalla. STL, OBJ y 3MF solo traen triángulos, y una pieza dibujada con mucho detalle puede ser demasiado densa para la herramienta de aristas. Si una pieza también está disponible en STEP, importa esa. + +## Vaciar cuerpos + +Cajas, vasos, carcasas y tapas tienen algo en común: están huecos por dentro, con paredes de grosor uniforme. Eso es justo lo que hace {{ui:editor.tool.hollow}}. + +1. Selecciona el cuerpo y haz clic en {{ui:editor.tool.hollow}}, o haz clic derecho en el cuerpo y elige la opción en el menú. +2. Ajusta el {{ui:shell.wall}}. +3. En {{ui:shell.openings}}, activa los lados que se quedan abiertos: {{ui:shell.side.top}}, {{ui:shell.side.bottom}}, {{ui:shell.side.front}}, {{ui:shell.side.back}}, {{ui:shell.side.left}} o {{ui:shell.side.right}}, tantos como quieras. Solo con {{ui:shell.side.front}} sale el hueco para un cajón; con {{ui:shell.side.left}} y {{ui:shell.side.right}}, un túnel. Si no activas ningún lado, el cuerpo queda cerrado por todas partes, con una cavidad en el centro. {{ui:shell.side.closed}} desactiva todos los lados con un solo clic. {{ui:shell.side.top}} ya está activado al abrir el panel; un clic sobre él vuelve a cerrar la parte de arriba. Un cuerpo cerrado por todas partes se ve igual desde fuera: la vista de sección muestra la cavidad. +4. En {{ui:shell.edges}}, elige {{ui:shell.edges.round}} o {{ui:shell.edges.sharp}}. +5. Haz clic en {{ui:shell.apply}}. + +![El panel de vaciado con el grosor de pared, un interruptor para cada lado que queda abierto y las aristas interiores.](shot:hollow-panel) + +Las paredes crecen hacia dentro. El exterior se queda como está. + +Lo que elijas en {{ui:shell.edges}} solo importa donde las paredes interiores se separan: en un escalón del cuerpo o alrededor de una abertura. Las esquinas de la cavidad de una caja sencilla son siempre vivas, con cualquiera de los dos ajustes. Para un interior redondeado, redondea primero las aristas exteriores del cuerpo (ver más arriba) y luego vacíalo: el interior sigue la forma con el radio menos el grosor de pared. Si no se puede construir el interior redondeado, algo que puede pasar con un contorno hecho de muchísimos tramos rectos cortos, como un dibujo vectorizado, layerling construye en su lugar el mismo cuerpo hueco con esquinas interiores vivas. + +![El resultado: un cuerpo hueco con una pared de 3 mm, abierto por arriba.](shot:hollow-result) + +![La misma caja con solo el lado delantero abierto: el hueco para un cajón.](shot:hollow-sides) + +Para cada lado abierto, el cuerpo necesita una cara plana en su extremo de ese lado. Por eso las esferas y las formas libres no se pueden vaciar así. Si la pared es demasiado gruesa para el cuerpo, layerling te avisa y te pide una más fina. Una caja redondeada con las aristas superiores e inferiores también redondeadas es uno de esos casos: su pared tiene que ser claramente más fina que ese redondeo, o pon antes el redondeo a 0. + +Un cuerpo con un hueco (un bloque con un orificio que no llega a atravesarlo, hecho agrupando una caja con un orificio elevado) también se puede vaciar, con la parte de arriba abierta: las paredes alrededor del hueco también se vacían, de modo que entre la pared exterior y el hueco queda un anillo de cavidad abierto por arriba, y bajo el fondo del hueco queda una cavidad fina. + +**Los cuerpos que terminan en punta,** como un cono o un triángulo convertido en cuerpo de revolución, no tienen arriba una cara plana que pueda quedar abierta. Tampoco funciona una cavidad totalmente cerrada, porque una punta no se puede desfasar hacia dentro: incluso con una pared de 1 mm aparece el mensaje de que las paredes no pueden ser tan gruesas. En su lugar, dibuja la pared en el perfil antes de la revolución: duplica el contorno, reduce la copia de forma uniforme, colócala en el centro del contorno grande y corta el grande con ella; después aplica la revolución al resultado (capítulo Bocetos, apartado Revolución). La distancia entre los dos contornos es el grosor de la pared. + +Si más adelante cambias el tamaño de un cuerpo vaciado, layerling lo vuelve a vaciar al momento con el tamaño nuevo. La pared mantiene el grosor que elegiste, también en los cuerpos redondos. Un cilindro que estires más en una dirección que en la otra se convierte en una elipse. + +> **Consejo:** Con una boquilla de 0,4 mm, una pared de 1,2 a 2 mm es un buen punto de partida: lo bastante fina para ahorrar material y lo bastante gruesa para que la pieza sea resistente. + +## Eliminar caras + +Un redondeo que estorba, un orificio en el sitio equivocado, un saliente que ya no necesitas: {{ui:editor.tool.deleteFace}} lo quita del cuerpo sin tener que volver a construirlo. + +1. Selecciona el cuerpo y haz clic en {{ui:editor.tool.deleteFace}}, o haz clic derecho en el cuerpo y elige la opción en el menú. +2. Haz clic en todas las caras de lo que quieras quitar: las caras de una arista redondeada, la pared de un orificio, el lateral y la parte superior de un saliente. Una cara elegida se resalta; otro clic la vuelve a quitar. El panel cuenta las caras. +3. Haz clic en {{ui:deleteFace.apply}} o pulsa [[Supr]]. [[Esc]] cierra la herramienta sin cambiar nada. + +Las caras que rodean a las eliminadas crecen hasta cerrar el hueco. Una caja con las aristas superiores redondeadas recupera sus aristas vivas, un orificio se rellena, un saliente desaparece. El cuerpo sigue siendo exacto, así que se puede volver a redondear y achaflanar, y la exportación STEP conserva sus caras reales. [[Ctrl]]+[[Z]] deshace la eliminación en un solo paso. También aparece en {{ui:edge.featureHistory}} junto con los redondeos y chaflanes, donde {{ui:edge.revertAction}} la deshace; para ella no hay {{ui:edge.editAction}}. En un grupo, el resultado es un único cuerpo, como con una operación de aristas. + +Elige todas las caras de lo que quieras quitar, y solo esas. Si las caras de alrededor no pueden cerrar el hueco, layerling te lo dice y no cambia nada: una cara principal de una caja, por ejemplo, no tiene ninguna vecina que pueda ocupar su lugar. Si eliminas solo el fondo de un hueco, se convierte en un orificio pasante, porque las paredes del hueco continúan hasta el otro lado. + +{{ui:editor.tool.deleteFace}} necesita caras exactas: funciona en piezas importadas en STEP y en las formas de layerling. Lo que layerling guarda como malla no las tiene: un STL, OBJ o 3MF importado, un cuerpo dividido, envuelto o simplificado, o una forma muy detallada, como un texto largo. Si puedes, importa la pieza en STEP. En una pieza importada muy detallada, unas pocas caras pueden ser demasiado para el núcleo CAD: a los 45 segundos se detiene la eliminación y no cambia nada. Un cuerpo al que se ha cambiado el tamaño después de una operación de aristas, manteniendo el tamaño de las aristas, no tiene caras exactas con su nuevo tamaño hasta que se deshace ese cambio de tamaño. diff --git a/docs/guide/es/07-sketches.md b/docs/guide/es/07-sketches.md new file mode 100644 index 000000000..a62501b02 --- /dev/null +++ b/docs/guide/es/07-sketches.md @@ -0,0 +1,173 @@ +--- +title: "Bocetos: del contorno al cuerpo" +summary: Dibujar un contorno plano, redondear o achaflanar sus esquinas y convertirlo en un cuerpo estirándolo o haciéndolo girar. +--- + +No todo se puede montar con formas básicas. Para piezas con un contorno propio, como un soporte, el perfil de un diente o un jarrón, primero dibujas el **contorno** y luego haces un cuerpo a partir de él. Para eso está el modo de boceto. + +## Empezar un boceto + +Arriba, cambia de {{ui:editor.modeGeometry}} a {{ui:editor.modeSketch}}. En el grupo {{ui:sketch.group.create}} de la cinta hay tres botones, uno al lado del otro, según lo que quieras que salga del contorno: + +- **{{ui:sketch.extrude}}:** El contorno se estira hacia arriba, como un cortador de galletas. +- **{{ui:sketch.revolve}}:** El contorno gira alrededor de un eje, como en un torno. Así salen jarrones, vasos, conos y todo lo que sea redondo. +- **{{ui:sketch.sweep}}:** El contorno avanza a lo largo de una trayectoria: una canaleta para cables que dobla una esquina, un conducto, un anillo alrededor de una forma. Lo tienes más abajo, en «Barrer a lo largo de una trayectoria». + +El editor muestra entonces una hoja con cuadrícula. Esa es tu superficie de dibujo. + +## Dibujar + +En el modo de boceto, la cinta está dividida en zonas: + +- **Dibujar:** {{ui:sketch.line}} traza tramos rectos: haz clic en un punto tras otro; si mantienes pulsada [[Mayús]], la nueva línea se ajusta en pasos de 15°, horizontal y vertical incluidas. Junto al puntero aparecen la longitud y el ángulo de la nueva línea. También puedes escribir cuánto debe medir: lo explica [Líneas a medida](#lineas-a-medida). {{ui:sketch.arc}} dibuja un arco de circunferencia de verdad que pasa por tres puntos: primero haz clic en sus dos extremos y luego en un tercer punto por el que pase el arco; hasta ese tercer clic, una vista previa sigue al puntero y el mensaje indica el radio. Si colocas un extremo sobre un punto que ya existe, se une a él, así que un arco puede cerrar un contorno. [[Esc]] descarta los puntos marcados hasta ese momento y vuelve a {{ui:sketch.select}}. Después, el arco es geometría normal, hecha de puntos y curvas: lo mueves, lo cortas o lo borras como cualquier otra línea. La {{ui:sketch.bezier}} se moldea con sus tiradores: haz clic en un punto y arrastra en la dirección en la que debe continuar la línea, como con la pluma de Illustrator o Inkscape. Cuanto más arrastras, más se curva; el tramo hasta el nuevo punto se va curvando mientras arrastras, así que ves lo que vas a obtener. Arrastrar al colocar un punto curva la línea; si vienes de Tinkercad y solo quieres hacer clic en puntos, usa la {{ui:sketch.smooth}}. La {{ui:sketch.smooth}} traza un recorrido fluido por los puntos en los que haces clic. Para cerrar el contorno, al final vuelve a hacer clic en el primer punto. Para terminar la cadena de líneas sin cerrar el contorno, haz clic derecho sin mover el puntero o doble clic en el último punto. +- **Formas:** {{ui:sketch.addShape}} ofrece contornos ya hechos: {{ui:sketch.rectangle}}, {{ui:sketch.circle}}, {{ui:sketch.ellipse}}, {{ui:sketch.halfCircle}}, {{ui:sketch.pieSlice}}, {{ui:sketch.boltCircle}} (un disco con orificios), {{ui:sketch.triangle}}, {{ui:sketch.hexagon}}, un {{ui:sketch.polygon}} y una {{ui:sketch.star}}. Haz clic en una para colocarla en el origen del boceto, o arrástrala desde el menú hasta donde la quieras. Al final del menú, {{ui:sketch.polygonSides}} fija el número de lados del polígono y de puntas de la estrella, y {{ui:sketch.starInner}}, cuánto se adentran los valles de la estrella hacia el centro (del 10 al 90 % del radio exterior); los dos valores se aplican a la siguiente forma que añadas. Como cualquier forma de boceto, después son simples puntos de esquina, así que puedes moverlos, redondearlos o achaflanarlos uno a uno. +- **Superponer:** Si pones dos contornos cerrados uno encima del otro, siguen siendo dos cuerpos, que se fusionan en el Editor 3D; la zona en común no es un orificio. Un orificio solo sale de un contorno que queda entero dentro de otro. Al mover, las líneas no se unen donde se cruzan, así que puedes volver a separar las formas. En cambio, si dibujas una línea que cruza otras, layerling pone un punto en cada cruce. +- **Selección:** {{ui:sketch.select}} mueve puntos y líneas. Un clic dentro de un contorno cerrado selecciona el contorno entero, para que puedas arrastrarlo o cambiar su tamaño enseguida; dentro de un orificio, selecciona el orificio. El marco que rodea la selección tiene ocho tiradores: los de las esquinas cambian la anchura y la altura a la vez, y conservan las proporciones mientras mantienes pulsada [[Mayús]]. Los de los lados solo cambian una dirección. {{ui:sketch.keepProportions}}, en la barra que aparece, conserva las proporciones sin [[Mayús]]: las esquinas y los lados estiran entonces por igual en las dos direcciones, y si escribes una anchura o una altura, la otra cambia también. layerling recuerda esta opción. A su lado, {{ui:sketch.lockOutline}} bloquea el contorno seleccionado, como un cuerpo bloqueado en el Editor 3D ([[L]] hace lo mismo): ya no se puede mover, redimensionar, girar ni modificar, sus líneas se vuelven más pálidas y el marco pierde los tiradores. Aun así, pueden salir líneas de sus esquinas. {{ui:sketch.unlockOutline}}, o volver a pulsar [[L]], lo libera. El tirador redondo de encima del marco gira toda la selección alrededor de su centro: la cifra que aparece encima indica el ángulo, y con [[Mayús]] pulsada gira en pasos de 15°. [[R]] gira 45° un contorno cerrado entero con cada pulsación. Haz clic en la etiqueta de la anchura o de la altura para escribir un tamaño nuevo, también como suma («60+12,5») o en porcentaje («150%»). Con [[Mayús]] pulsada, un clic en un punto o en una línea lo añade a la selección o lo vuelve a quitar, así que puedes elegir varios y moverlos juntos. Arrastra un recuadro sobre una zona vacía para seleccionar todo lo que quede dentro. También se puede arrastrar una línea (se mueve por sus dos extremos o, si forma parte de una selección, se mueve la selección entera). Las teclas de flecha mueven la selección un paso de cuadrícula, y con [[Mayús]], uno mayor; y si mantienes pulsada [[Mayús]] mientras arrastras, el movimiento se limita a un eje. {{ui:sketch.refine}}: un clic en un tramo añade un punto y un clic en un punto lo quita. Además están {{ui:sketch.erase}} (un clic en un punto o en una línea lo quita, una ventana arrastrada sobre varios quita todo lo que hay dentro y, si hay algo seleccionado, el botón borra la selección) y la inserción de una imagen de plantilla ({{ui:sketch.addImage}}). Cuando quitas un punto, layerling une sus dos vecinos para que el contorno siga cerrado. En un cruce, como donde una línea corta un círculo, se unen los tramos que continúan en la misma dirección: arco con arco, línea con línea, y el círculo sigue siendo redondo. Para quitar solo un trozo de un círculo, por ejemplo para una esquina redondeada, haz clic con el borrador justo en ese trozo de arco entre dos puntos; el resto se queda. +- **Portapapeles:** {{ui:editor.tool.copy}}, {{ui:editor.tool.paste}}, {{ui:editor.tool.duplicate}} y {{ui:editor.tool.delete}} actúan sobre los puntos, las líneas y las imágenes seleccionados, igual que en el Editor 3D; [[Ctrl]]+[[X]] corta. Lo que pegas o duplicas aparece junto al original, a 10 mm de distancia, en un hueco libre donde no toca ninguna línea existente, de modo que nunca se une a lo que ya hay. Se queda seleccionado, para que puedas arrastrarlo directamente a su sitio. +- **Historial:** {{ui:sketch.undo}} y {{ui:sketch.redo}}. +- **Vista:** La desplazas con el botón central del ratón, o con [[Mayús]] o [[Ctrl]] y el botón derecho, como en el Editor 3D. [[Inicio]] encuadra el boceto entero, [[F]] hace zoom sobre la selección (sin selección, sobre todo el boceto), y [[+]] y [[−]] acercan y alejan, como en el Editor 3D. La {{ui:camera.tapeTools}} de la barra lateral mide la distancia entre dos puntos. Además, el boceto muestra medidas en cuanto haces clic en algo: la longitud de una línea o, en un punto, las longitudes de las líneas que se juntan en él. El botón {{ui:sketch.showMeasurements}} de la barra lateral oculta y muestra estas medidas cuando estorban, por ejemplo mientras das forma a curvas; la cinta métrica sigue funcionando. En una línea recta puedes hacer clic en la etiqueta de la medida y escribir la longitud en milímetros; [[Intro]] la aplica y [[Esc]] cancela. La línea mantiene su dirección, su punto inicial se queda donde está y las líneas del otro extremo la siguen. Si tienes seleccionado un extremo, se mueve ese. [[Alt]]+[[Intro]] alarga la línea por los dos lados a partir de su centro. En las curvas, la etiqueta solo muestra la longitud. + +Un cuerpo solo sale de un contorno **cerrado**. + +![Un contorno en forma de L. En el punto de esquina seleccionado, arriba a la izquierda, aparecen las longitudes de las dos líneas en milímetros y el ángulo entre ellas en grados.](shot:sketch-outline) + +Las teclas del [[1]] al [[4]] eligen las herramientas de dibujo, en el orden de la barra: {{ui:sketch.line}}, {{ui:sketch.bezier}}, {{ui:sketch.smooth}} y {{ui:sketch.refine}}. Funcionan mientras no estés dibujando una línea; si lo estás, las cifras son su longitud (lo verás a continuación). + +## Líneas a medida + +Una vez colocado el primer punto con {{ui:sketch.line}} o {{ui:sketch.smooth}}, basta con escribir un número: junto a la línea se abren dos campos, {{ui:sketch.typedLength}} en milímetros y {{ui:sketch.typedAngle}} en grados. [[<]] o [[Tab]] pasa al ángulo, así que «50<30» da una línea de 50 mm a 30°, como en AutoCAD. [[Intro]] fija el punto y puedes escribir la siguiente línea enseguida; [[Esc]] cierra los campos sin terminar la cadena de líneas. + +El ángulo se cuenta desde la derecha en sentido antihorario: 0° hacia la derecha, 90° hacia arriba, 180° hacia la izquierda y 270° hacia abajo. Si lo dejas vacío, la línea sigue al puntero: das solo la longitud y marcas la dirección con el ratón. En los dos campos funcionan sumas como «40+12,5». Si el punto fuera a quedar fuera de la hoja, el campo te lo dice y espera otro valor. + +## Curvar un lado recto + +Selecciona una línea recta y haz clic en {{ui:sketch.curveLine}} en la barra que aparece: el lado se arquea y se convierte en una curva, como en Tinkercad, y muestra sus dos tiradores. Arrástralos para dar forma a la curva; cuanto más se aleja un tirador, más se curva. {{ui:sketch.straightenLine}} vuelve a dejar recto el lado. Un punto seleccionado se puede redondear con {{ui:sketch.smooth}}: recibe sus propios tiradores y las líneas contiguas se convierten en curvas. Haz clic en un tirador y se ilumina: las teclas de flecha lo mueven entonces un paso de cuadrícula, y con [[Mayús]], un paso mayor, así que puedes ajustar una curva con precisión. + +![El lado inferior del contorno en forma de L, curvado, con sus dos tiradores en los extremos.](shot:sketch-curve) + +## Leer y escribir ángulos + +Haz clic en un punto de esquina donde se juntan **dos líneas rectas**: junto a las longitudes, layerling muestra en grados el **ángulo** que forman, con un pequeño arco. En un contorno cerrado es el ángulo interior de la forma, así que en un entrante pasa de 180°. Haz clic en el valor y escribe un ángulo nuevo. Una de las dos líneas gira entonces alrededor de la esquina y conserva su longitud, y la otra se queda donde está. La línea que gira se dibuja discontinua; [[Tab]] cambia a la otra, [[Intro]] aplica y [[Esc]] cancela. Lo que cuelga del otro extremo de la línea girada se mueve con ella. + +Al mover un punto cambian tres ángulos: el del propio punto y los de las dos esquinas vecinas, en el otro extremo de sus líneas. Por eso layerling muestra también esos dos, y en cada uno puedes hacer clic y escribir. Así puedes poner, por ejemplo, la esquina inferior izquierda a 75,5° mientras tienes seleccionado el punto superior izquierdo, que es el que se mueve para conseguirlo. Aquí también puedes hacer cálculos, como «90-14,5». + +Una esquina no muestra ningún ángulo si llega a ella una curva o si se juntan en ella más de dos líneas. El botón {{ui:sketch.showMeasurements}} de la barra lateral oculta el ángulo junto con las longitudes. + +## Redondear o achaflanar esquinas + +Haz clic en un punto de esquina y elige {{ui:sketch.filletCorner}} o {{ui:sketch.chamferCorner}}. Aparece un pequeño campo para el {{ui:sketch.filletRadius}} o la {{ui:sketch.chamferDistance}}. Escribe la medida y confírmala con la marca de verificación. Funciona en esquinas entre dos líneas rectas. + +También puedes hacer varias esquinas a la vez: selecciónalas con [[Mayús]] y un clic en cada una, o arrastra un marco a su alrededor, y elige {{ui:sketch.filletCorner}} o {{ui:sketch.chamferCorner}} en la barra que aparece. Todas reciben el mismo radio o la misma distancia. Cuando dos esquinas seleccionadas comparten un lado, cada una ocupa como mucho el 45 % de él, así que un rectángulo redondeado por completo queda igual en todas sus esquinas. Los puntos que no son una esquina entre dos líneas rectas se dejan fuera, y el mensaje dice cuántos son. Un marco alrededor de una forma entera, o un clic dentro de ella, selecciona a la vez sus esquinas y sus líneas, y la barra ofrece entonces, además de las herramientas de esquinas, {{ui:sketch.curveLine}} y {{ui:sketch.straightenLine}} para todas las líneas seleccionadas. + +![La esquina superior izquierda se redondea con un radio de 12 mm.](shot:sketch-fillet) + +## Reflejar + +Selecciona puntos y líneas (con un clic, con [[Mayús]] y clic, o arrastrando un marco a su alrededor) y haz clic en {{ui:sketch.mirror}} en la barra. Después elige el eje: {{ui:sketch.mirrorLeftRight}} refleja respecto al eje vertical que pasa por el centro de la hoja; {{ui:sketch.mirrorTopBottom}}, respecto al horizontal, y {{ui:sketch.mirrorAcrossLine}}, respecto a una línea recta del boceto en la que haces clic a continuación. La copia se añade al otro lado y el original se queda; no hay ningún vínculo, así que puedes cambiar cada uno por separado. Los puntos que están sobre el eje se comparten, de modo que medio contorno con los extremos sobre el eje se convierte en un único contorno cerrado: dibuja la mitad de un soporte, selecciónala, refléjala y haz el cuerpo. Una línea de construcción sirve muy bien de eje. [[Esc]] cancela. + +## Líneas de construcción + +Una línea de construcción te ayuda a colocar puntos sin formar parte del cuerpo. Se dibuja discontinua y nunca cuenta como contorno: puedes alargarla todo lo que quieras más allá de la forma sin que el cuerpo crezca. + +- Activa {{ui:sketch.construction}} en el grupo {{ui:sketch.group.draw}}. Las líneas nuevas, también las que escribes a medida, son entonces líneas de construcción. El mismo botón te devuelve a las líneas normales. +- Una línea ya dibujada se convierte en auxiliar si haces clic en ella y eliges {{ui:sketch.makeConstruction}}. {{ui:sketch.makeSolid}} la vuelve a convertir en una línea normal. +- Los puntos nuevos se ajustan a los cruces de una línea de construcción con otra línea (lo indica un anillo azul) y a los extremos de la línea de construcción. Así pones una esquina en un punto medio, a una distancia fija de un lado o en un cruce, sin hacer cálculos. +- Los puntos nuevos también se ajustan al punto medio de cada línea recta del boceto, al centro de cada círculo y de cada esquina redondeada, y a los puntos medios de los lados de un cuerpo que se vea debajo (#624). Un punto que estás arrastrando no tiene en cuenta el punto medio de sus propias líneas. +- {{ui:sketch.fromMiddle}}, en el grupo {{ui:sketch.group.draw}}, dibuja una línea a partir de su centro: haz clic primero en el centro y luego en el extremo, y la línea se prolonga lo mismo hacia el otro lado. El centro pasa a ser un punto más. Vuelve a hacer clic en el botón para dibujar líneas normales. +- Una línea de construcción no corta el contorno donde lo cruza. En una revolución también puede quedar a la derecha del eje. + +## Convertirlo en un cuerpo + +Haz clic en {{ui:sketch.finishSketch}}. El contorno queda como un cuerpo sobre el plano de trabajo. En sus ajustes cambias la altura, el color y todo lo demás, como en cualquier otra forma. Si cambias su tamaño, layerling lo reconstruye a partir del boceto un momento después, y el boceto crece con él. Así sigue siendo un cuerpo exacto que admite chaflanes y redondeos, y la próxima vez que lo edites, el boceto tendrá el tamaño que tiene el cuerpo. + +Si el plano de trabajo está sobre un lateral de un cuerpo, dibujas tal como ves ese lateral: lo que está arriba en el boceto también queda arriba en el cuerpo terminado. El contorno tenue del cuerpo en la vista del boceto muestra dónde está. Si el plano de trabajo atraviesa un cuerpo, la vista del boceto muestra en su lugar el contorno de ese corte, de modo que un cuerpo vaciado aparece como un anillo y puedes alinear el boceto con sus paredes. Un punto que colocas o arrastras cerca de una esquina de estos contornos se ajusta exactamente a ella; lo indica un pequeño anillo azul. Así llevas al boceto aristas de otros cuerpos, aunque el plano de trabajo no esté justo sobre ellas. Para calcar sobre lo que ya tienes hecho, activa {{ui:sketch.showPartEdges}} (el botón de las capas, entre los botones de vista de la izquierda): todas las aristas de los cuerpos se dibujan entonces sobre el plano del boceto, finas y tenues, como si miraras a través de ellos, estén a la altura que estén. Un plano vertical, colocado por ejemplo sobre una cara frontal, muestra así la vista de frente. La elección se guarda en el navegador. + +![El contorno se ha convertido en un cuerpo. La esquina está redondeada.](shot:sketch-result) + +Con {{ui:inspector.editSketch}} puedes volver al boceto en cualquier momento para cambiarlo. Un doble clic en el cuerpo hace lo mismo, como en Tinkercad (un cuerpo bloqueado no se abre); la opción {{ui:workspace.doubleClickOpensSketch}}, en los ajustes, lo desactiva. Eso sí, los chaflanes y redondeos que ya hubieras hecho en el cuerpo se pierden, porque las aristas se crean de nuevo. + +Un boceto con varios contornos da un solo cuerpo, y los contornos que se superponen se fusionan en él. Para que cada contorno vaya por su cuenta, selecciona el cuerpo y haz clic en {{ui:inspector.separateParts}}: cada contorno exterior pasa a ser un cuerpo independiente, con los orificios que tiene dentro, y conserva la altura, el color y la posición del cuerpo. Cada pieza tiene su propio boceto para editar, con las líneas de construcción, así que puedes subir o bajar las piezas una a una y después unirlas o restarlas. Los chaflanes y redondeos lo impiden, igual que haber estirado el cuerpo después: en ese caso se separa como malla. + +**Otro tipo de cuerpo a partir del mismo boceto:** el indicador de la parte de arriba del boceto dice en qué se va a convertir: {{ui:sketch.modeBadgeExtrude}}, {{ui:sketch.modeBadgeRevolve}} o {{ui:sketch.modeBadgeSweep}}. Haz clic en él y elige otro, también mientras editas un cuerpo existente: un SVG importado, que llega extruido, se convierte en un jarrón o en un pomo si lo cambias a {{ui:sketch.modeBadgeRevolve}}. Un contorno que cruza el eje se desplaza a la izquierda hasta que su extremo derecho queda sobre el eje, así que la media sección de un SVG gira alrededor de su lado recto; [[Ctrl]]+[[Z]] deshace el desplazamiento. Al terminar, el cuerpo nuevo ocupa el lugar del anterior, con su nombre y su color, y con la base a la misma altura. Los chaflanes y redondeos se pierden, como en cualquier edición de un boceto. + +### Revolución + +En una revolución, dibujas media sección **a la izquierda del eje** que aparece en el boceto. Al lado ves una vista previa en 3D de la revolución, que muestra al instante cómo será el cuerpo. El contorno tiene que estar cerrado; si no, construye la línea abierta como trazo (lo verás más abajo). Al final, haz clic en {{ui:sketch.finishRevolve}}. Los demás cuerpos del diseño se ven de frente, en la misma vista que el perfil, con el eje en el centro: dibuja el perfil al lado o encima de ellos. El cuerpo queda donde lo dibujaste, y la línea horizontal que pasa por el centro del boceto es el suelo: un perfil dibujado por encima de ella da un cuerpo que queda más alto, y su punto más bajo es la base del cuerpo. + +Un cuerpo de revolución es un cuerpo exacto, igual que uno extruido: admite chaflanes y redondeos, y puedes vaciarlo para hacer un vaso o un jarrón. Un cuerpo de revolución hecho con una versión antigua de layerling es una malla; abre {{ui:inspector.editSketch}} y vuelve a terminarlo para que sea exacto. Un perfil que cruza el eje no se puede construir de forma exacta y se convierte en una malla, como antes. + +**Una hebra continua: {{ui:prop.pitch}}.** Una revolución convierte su contorno en anillos cerrados. Selecciona el cuerpo de revolución y, en el panel de propiedades, dale a {{ui:prop.pitch}} un valor mayor que 0, que es lo que sube en cada vuelta: el contorno se enrolla entonces en hélice, como una hebra continua, igual que el filamento en una bobina o una espiral. El ajuste {{ui:prop.sweep}} pasa a ser {{ui:prop.turns}}, hasta 200; un número negativo enrolla a izquierdas. Si las vueltas están más juntas de lo que mide de alto el contorno, se funden en un solo cuerpo, así que también funciona un núcleo macizo con un paso fino. Una hélice se construye como malla, así que no admite redondeos, chaflanes ni vaciado; con muchas vueltas, mantén bajo el valor de {{ui:prop.sides}}. Un paso de 0 vuelve a dar anillos. + +## Barrer a lo largo de una trayectoria + +{{ui:sketch.sweep}} hace avanzar un contorno a lo largo de una trayectoria: una canaleta para cables que dobla una esquina, un conducto, un protector alrededor de una correa, un anillo alrededor de un hexágono. Está junto a {{ui:sketch.extrude}} y {{ui:sketch.revolve}}, en el grupo {{ui:sketch.group.create}}. + +Dibujas dos cosas en la misma hoja: + +- **La sección**, como un contorno cerrado, igual que siempre. Dibújala tal como la verías si miraras a lo largo de la trayectoria desde su inicio: lo que va de lado a lado de la trayectoria es la izquierda y la derecha del boceto, y arriba es arriba en el cuerpo terminado. Una sección hueca, la de una canaleta o la de un tubo, es un contorno con otro dentro. La sección se centra en la trayectoria, y el cuerpo se apoya en el plano del boceto por el punto más bajo de la sección. + +- **La trayectoria**, como una {{ui:sketch.construction}}: actívala y dibuja líneas o curvas, en una sola cadena, abierta o cerrada (una cadena cerrada da un anillo). La trayectoria queda plana en el plano del boceto. + +Dibuja la sección cerca del extremo de la trayectoria por el que debe empezar; la trayectoria empieza en el extremo que le queda más cerca. Después haz clic en {{ui:sketch.finishSweep}}. Una esquina formada por tramos rectos se convierte en un inglete, una curva sigue siendo suave, y la sección se mantiene vertical durante todo el recorrido. El cuerpo es exacto, como uno extruido: admite redondeos, chaflanes y la exportación a STEP. Si falta un contorno cerrado o una trayectoria, o si hay varias trayectorias separadas, layerling te lo dice. Con {{ui:inspector.editSketch}} puedes volver al boceto y cambiar la sección o la trayectoria. + +## Construir como trazo + +Normalmente, el cuerpo es la superficie que hay dentro de un contorno cerrado. Con {{ui:sketch.stroke}}, en la sección {{ui:sketch.group.finish}}, construyes en cambio la propia línea, con la anchura que elijas. Marca {{ui:sketch.strokeOn}} en el panel; el boceto muestra enseguida lo que va a salir. + +- Un **contorno cerrado** se convierte en un marco. {{ui:sketch.strokeAlign}} indica dónde queda la pared: {{ui:sketch.strokeAlign.center}}, sobre la línea dibujada; {{ui:sketch.strokeAlign.inside}}, por dentro, o {{ui:sketch.strokeAlign.outside}}, por fuera. Por fuera viene bien para una tolerancia: dibuja el contorno de un orificio, por ejemplo una cola de milano, y dale un trazo exterior de 0,2 mm para conseguir la holgura que necesita la pieza impresa. +- Una **línea abierta** se convierte en una franja centrada en la línea. {{ui:sketch.strokeCap}} fija cómo son sus extremos: {{ui:sketch.strokeCap.flat}}, {{ui:sketch.strokeCap.square}} (más larga en media anchura) o {{ui:sketch.strokeCap.round}}. +- {{ui:sketch.strokeJoin}} vale para los dos casos: {{ui:sketch.strokeJoin.miter}}, {{ui:sketch.strokeJoin.round}} o {{ui:sketch.strokeJoin.bevel}}. + +El boceto conserva la línea dibujada. Si lo vuelves a abrir, sigues cambiando la línea y el trazo; si desmarcas la casilla, se vuelve a construir la superficie. Para ello, las curvas se dividen en tramos rectos cortos. + +En una revolución, el trazo es una pared fina: dibuja la pared de un jarrón o de un vaso como **una sola línea abierta** a la izquierda del eje, activa {{ui:sketch.stroke}} y fija la anchura, y la revolución hace girar esa banda. Lo que cruza el eje se recorta en él. + +## Relleno y silueta + +También puedes fijar el trazo sin abrir el boceto: en las propiedades de un cuerpo de boceto, elige {{ui:prop.sketchFill.area}}, {{ui:prop.sketchFill.outside}}, {{ui:prop.sketchFill.inside}} o {{ui:prop.sketchFill.center}} en {{ui:prop.sketchFill}}, junto con {{ui:prop.sketchLineWidth}} y {{ui:sketch.strokeJoin}}. El cuerpo se vuelve a construir al momento, donde está. Equivalen a los modos de relleno de la importación de SVG de Tinkercad: predeterminado, línea exterior y línea interior. {{ui:prop.sketchFill.grow}} mantiene la superficie rellena y la agranda por todo el contorno en la anchura de la línea, con esquinas vivas, redondeadas o biseladas: es la capa base bajo un logotipo para una impresión multicolor, que con el trazo exterior por sí solo saldría como un anillo. {{ui:prop.sketchFill.shrink}} hace lo contrario: la superficie sigue rellena y su borde se desplaza hacia dentro en la anchura de la línea por todo el contorno, orificios incluidos (que crecen). Usa las dos opciones en copias de un mismo boceto para que algo encaje: el orificio a su tamaño dibujado y la pieza que pasa por él, con {{ui:prop.sketchFill.shrink}} de 0,5 mm, o una pared dentro de una forma recortada con el mismo contorno. Una anchura mayor de la que admite el contorno no deja nada. En el panel de trazo del boceto, estas dos mismas opciones están en {{ui:sketch.strokeAlign}}. + +{{ui:prop.sketchSilhouette}} deja fuera todos los contornos que quedan dentro de otro: los orificios y lo que haya dentro de ellos. Solo queda el contorno exterior. Junto con {{ui:prop.sketchFill.outside}} sirve para hacer un cortador de galletas: importa un SVG dos veces, una con la silueta como superficie para la base y otra con la silueta y entre 1 y 2 mm de trazo exterior para la pared. Esta opción también está en el panel {{ui:sketch.stroke}} del modo de boceto. + +Los redondeos y chaflanes de las aristas se pierden cuando el cuerpo se vuelve a construir, igual que al editar el boceto. + +## Paredes inclinadas, para sellos + +Un boceto extruido tiene las paredes verticales. Un sello, una matriz para estampar en relieve o un punzón las necesitan inclinadas, por fuera y por dentro, con el mismo grosor de pared en todo el recorrido. layerling no tiene ángulo de desmoldeo para la extrusión, pero con contornos sencillos lo consigues con {{ui:inspector.taper}}. Un método que funciona: + +1. Dibuja el contorno con el orificio que necesita y haz un cuerpo con él. Duplica el cuerpo ([[Ctrl]]+[[D]]). +2. En el primer cuerpo, activa {{ui:prop.sketchSilhouette}}, para que el orificio quede relleno, y con {{ui:inspector.taper}} dale una base más ancha que la parte de arriba. +3. En la copia, vuelve a abrir su boceto y elimina el contorno exterior, de modo que solo quede el contorno del orificio. Termina el boceto, cambia el cuerpo a {{ui:inspector.hole}} y con {{ui:inspector.taper}} dale una base más estrecha que la parte de arriba. +4. Mete el orificio en el primer cuerpo, donde estaba el orificio, y agrupa los dos. + +Ahora las paredes están inclinadas por fuera y por dentro. Esta opción escala el contorno entero, así que el resultado es exacto en formas sencillas, en las que puedes elegir las medidas para que las paredes queden paralelas, y solo aproximado en detalles finos como las letras. + +## Una imagen como plantilla + +Con {{ui:sketch.addImage}} pones una foto o un dibujo debajo del boceto y lo calcas. Puedes ajustar su tamaño, su opacidad y su posición. Cuando la imagen esté bien colocada, bloquéala con [[L]] para no moverla sin querer mientras dibujas. Una imagen bloqueada no estorba: los clics la atraviesan, así que puedes elegir líneas y puntos que estén encima y arrastrar un marco sobre ellos. Para volver a seleccionarla, por ejemplo para desbloquearla, haz [[Alt]]+clic sobre ella. Si sus ajustes, en el borde derecho, tapan la imagen, apártalos arrastrándolos por la barra de título; con un doble clic en ella vuelven a acoplarse. + +En {{ui:sketch.imageAlign}} enderezas una foto que salió torcida: + +- **{{ui:sketch.imageRotation}}:** Gira la imagen alrededor de su centro, con el tirador redondo de encima del marco o escribiendo los grados. Con [[Mayús]], el tirador se ajusta en pasos de 15°. +- **{{ui:sketch.centreImageX}}** y **{{ui:sketch.centreImageY}}:** colocan el centro de la imagen en X = 0 o en Y = 0. En una revolución, X = 0 es el eje, así que la imagen queda simétrica respecto a él. +- **{{ui:sketch.calibrateImage}}:** Haz clic en dos puntos de la imagen cuya distancia conozcas, como los extremos de una regla o un diámetro conocido, y escribe la distancia real. La imagen se escala por igual para que esa distancia sea correcta; el primer punto se queda donde estaba. +- **{{ui:sketch.cropImage}}:** Los tiradores del marco recortan ahora la imagen en lugar de escalarla; lo recortado se guarda y vuelve con {{ui:sketch.uncropImage}} o al volver a estirar un tirador hacia fuera. + +Las cuatro actúan solo sobre la imagen de plantilla, nunca sobre el boceto. + +## Teclas en el modo de boceto + +| Tecla | Efecto | +| --- | --- | +| [[Esc]] | soltar la herramienta (volver a {{ui:sketch.select}}) y, después, quitar la selección | +| [[Supr]] | eliminar el elemento seleccionado | +| [[Ctrl]]+[[C]] | copiar la selección | +| [[Ctrl]]+[[X]] | cortar la selección | +| [[Ctrl]]+[[V]] | pegar | +| [[Ctrl]]+[[D]] | duplicar la selección | +| [[Ctrl]]+[[Z]] | deshacer | +| [[Mayús]] | al dibujar: ajustar la línea en pasos de 15°; al arrastrar: limitar el movimiento a un eje | +| cifra, [[<]], [[Tab]], [[Intro]] | al dibujar: escribir y fijar la longitud y el ángulo de la línea siguiente | +| [[R]] | girar 45° el boceto cerrado | +| [[L]] | bloquear o desbloquear el contorno seleccionado o la imagen de plantilla | + +> **Consejo:** Dibuja solo los puntos que hagan falta. Un contorno con pocos puntos bien colocados da un cuerpo más suave que una maraña de muchos. diff --git a/docs/guide/es/08-text.md b/docs/guide/es/08-text.md new file mode 100644 index 000000000..e81fc0658 --- /dev/null +++ b/docs/guide/es/08-text.md @@ -0,0 +1,165 @@ +--- +title: Texto y letras en arco +summary: Letras en relieve o grabadas, con ocho tipos de letra o uno tuyo y, si quieres, siguiendo un arco de circunferencia, como en una moneda, una tapa o un anillo. +--- + +## Añadir texto + +Elige {{ui:shape.text}} en la biblioteca de formas y colócalo. En el campo {{ui:prop.text}} de la derecha, escribe lo que debe poner. Debajo tienes los ajustes: + +- **{{ui:prop.font}}:** Hay ocho tipos de letra: Multilanguage, Sans, Serif, Script, Monospace, Rounded, Stencil (letras hechas de líneas rectas) y Japanese (Zen Maru Gothic). El texto nuevo empieza en Sans. Las letras con tilde o diéresis, como ä, ö, ü o é, y el signo € están en todos los tipos de letra, igual que los kana, los kanji habituales y muchos de los poco frecuentes que aparecen en nombres, como 澤, 槇 y 檜: un nombre japonés funciona con cualquier tipo de letra y en una placa con nombre. Las letras japonesas se descargan la primera vez que un texto las necesita (los kanji poco frecuentes, en un segundo archivo y solo cuando un texto lleva alguno), así que ese texto muestra signos de interrogación durante un momento. Después se quedan en el ordenador, de modo que a partir de entonces el japonés también funciona sin conexión. Además puedes añadir tus propias fuentes: lo explica [Tus propias fuentes](#tus-fuentes), más abajo. +- **{{ui:nameTag.letterSize}}:** El tamaño de las letras vistas desde arriba; {{ui:prop.height}} fija su grosor. +- **{{ui:prop.height}}:** Cuánto sobresalen las letras de la superficie. +- **{{ui:prop.bevel}}:** Redondea las aristas de las letras para que se vean más suaves. Con {{ui:prop.segments}} decides en cuántos pasos. +- **{{ui:nameTag.letterEdge}}:** redondea o achaflana la arista superior de las letras, como en una placa con nombre: {{ui:nameTag.edge.none}}, {{ui:nameTag.edge.round}} o {{ui:nameTag.edge.chamfer}}, con el {{ui:nameTag.letterEdgeSize}} (0,4 mm para empezar, como mucho la altura del texto). Llega más lejos que el {{ui:prop.bevel}}, pero solo hasta donde lo permite la anchura de los trazos: donde un trazo es más fino que el doble de ese tamaño, la arista termina en una cara superior más estrecha. La parte de abajo queda plana, así que después se pueden pegar letras sueltas. Mientras haya una arista elegida, sustituye al {{ui:prop.bevel}}. +- **Tamaño:** La longitud y la anchura de la línea de texto se ajustan como en cualquier forma. Arrastra los tiradores o escribe las medidas. +- **{{ui:prop.textSpacing}}:** El espacio entre letras que se suma al que ya trae la fuente, en porcentaje del tamaño de letra: 0 lo deja como lo hizo la fuente; por encima, las letras quedan más separadas, y por debajo (hasta -50), más juntas, algo que una fuente propia necesita a menudo. Las letras conservan su tamaño y el recuadro se adapta a la línea, tanto en texto recto como curvado. El espaciado no se aplica al árabe ni al hebreo, cuyas letras van unidas. +- **{{ui:prop.textStretch}}:** Al principio está desactivado: las letras conservan sus proporciones y se colocan en el centro del marco, así que un marco estirado más ancho o más profundo de lo que necesita la palabra sigue siendo más grande que las letras. Si lo activas, las letras se estiran hasta llenar todo el marco en las dos direcciones: una mayúscula puede quedar más baja o más estrecha, como en Tinkercad. Es para texto recto; el texto curvado tiene su propio tamaño de letra. + +Al principio, un texto es un solo cuerpo. Si quieres trabajar con las letras por separado, haz clic en {{ui:inspector.separateParts}}. Entonces cada letra pasa a ser una forma independiente. + +Las aristas del texto también se pueden achaflanar o redondear, tanto si es recto como si es curvado: consulta [Romper aristas y vaciar cuerpos](chapter:edges-and-hollowing). Usa medidas pequeñas, de 0,2 a 0,5 mm, porque los trazos de las letras son estrechos. + +## Tus fuentes + +Además de las ocho fuentes incluidas, puedes usar cualquier fuente propia: un archivo de fuente de tu ordenador o, en Chrome y Edge, una fuente instalada en tu ordenador. Elige {{ui:font.manage}} al final de la lista {{ui:prop.font}}. Se abre la ventana {{ui:font.title}}. + +- **{{ui:font.addFile}}** admite un archivo TrueType (`.ttf`), OpenType (`.otf`) o WOFF (`.woff`). También puedes arrastrar el archivo a la ventana sin más. +- **En Windows**, las fuentes instaladas están en la carpeta Fuentes (`C:\Windows\Fonts`), que el cuadro de diálogo de archivos del navegador oculta. Ábrela en el Explorador y arrastra la fuente desde allí a la ventana {{ui:font.title}}. Las fuentes instaladas solo para tu usuario están en `%LOCALAPPDATA%\Microsoft\Windows\Fonts`, una carpeta que el cuadro de diálogo sí muestra. En un Mac, las fuentes están en `/Library/Fonts` y `~/Library/Fonts`. +- **{{ui:font.fromSystem}}** muestra las fuentes instaladas en tu ordenador. La primera vez, el navegador pregunta si layerling puede leerlas. Con el campo de búsqueda encuentras una fuente enseguida, y un clic la elige. + +Si hay un texto seleccionado, recibe la nueva fuente al instante. Si no, la fuente aparece en {{ui:prop.font}}, en el grupo {{ui:font.customGroup}}, y {{ui:font.use}}, en la ventana, la aplica a los textos seleccionados. Las fuentes propias se comportan como las incluidas: el texto en arco, los chaflanes y redondeos de las aristas y la exportación a STEP funcionan igual. Las letras que le faltan a una fuente se toman de Sans. + +### Árabe y hebreo + +El árabe, el persa, el urdu y el hebreo se escriben de derecha a izquierda: la primera letra queda a la derecha y, en un texto mixto como «Nombre عربي», solo la palabra árabe va al revés; las cifras se quedan como siempre. Las letras árabes se unen a sus vecinas como pide la escritura, y lam-alif se convierte en una ligadura. Para ello hace falta una fuente que tenga esas letras; las incluidas no las tienen. Añade una propia, como Arial, Tahoma o Segoe UI en Windows, o una gratuita como Noto Naskh Arabic, Noto Sans Arabic o Amiri. Los signos vocálicos se colocan sobre la letra a la que pertenecen. El texto en arco, el contorno, la silueta, las capas y las placas con nombre funcionan con estas escrituras igual que con cualquier otro texto. + +### Qué funciona en cada navegador + +| Navegador | Elegir un archivo de fuente | Fuente del ordenador | +| --- | --- | --- | +| Chrome y Edge en un ordenador, también la aplicación de layerling instalada | sí | sí, después de que el navegador pregunte | +| Firefox | sí | no | +| Safari en un Mac | sí | no | +| Tableta y móvil | sí, desde los archivos del dispositivo | no | + +Las páginas web no pueden leer sin más las fuentes instaladas. Solo Chrome y Edge tienen un permiso para ello, y solo en páginas seguras, por `https`, como en layerling.com. Cuando layerling funciona por `http`, por ejemplo en tu propio servidor o como instalación de Docker en la red de tu casa, no aparece {{ui:font.fromSystem}}; en ese caso, arrastra la fuente desde el Explorador. En los demás navegadores eliges el archivo de fuente en la carpeta de fuentes, con el mismo resultado. Si rechazaste la pregunta en Chrome o Edge, vuelve a dar el permiso en la configuración del sitio, en el candado que hay a la izquierda de la dirección. + +layerling no puede leer archivos WOFF2 (casi siempre hay una versión TTF u OTF), colecciones de fuentes (`.ttc`, varias fuentes en un mismo archivo) ni fuentes de emojis en color. De las fuentes muy grandes, como las chinas, layerling toma los primeros 8000 caracteres. Una fuente variable se lee con su ajuste predeterminado, normalmente el peso normal. + +Algunas fuentes, sobre todo las caligráficas y las variables, dibujan una letra con trazos que se superponen. layerling los fusiona en un único contorno limpio al leer la fuente, para que el cuerpo se pueda imprimir. Esas letras quedan formadas por tramos rectos muy cortos en lugar de curvas, pero no se nota. + +### Dónde se guardan las fuentes + +Una fuente propia se queda **en este navegador de este ordenador**. Otro navegador u otro ordenador no la conocen hasta que la añadas también allí. Si borras los datos de sitios del navegador, se borran también las fuentes. En la ventana {{ui:font.title}}, la papelera quita una fuente del navegador. Tus diseños no pierden nada por ello, como explica el apartado siguiente. + +### Compartir diseños con una fuente propia + +Un diseño **no guarda el archivo de la fuente**, sino solo los contornos de las letras que usan sus textos, incluidas las de pasos anteriores del historial. Si un texto dice «Hola», solo viajan con él la H, la o, la l y la a. Esto vale para todas las formas de guardar un diseño: en el navegador, en tu propio servidor, como archivo `.lyl` y en {{ui:myShapes.title}}. + +Por tanto: + +- **El diseño se abre bien en cualquier parte**, también en un ordenador que no tenga la fuente. Los textos se ven igual y se pueden mover, girar, escalar y redondear. +- **Las letras nuevas necesitan la fuente.** Si alguien que no tiene la fuente escribe una letra que el diseño no traía, layerling la dibuja con Sans. En {{ui:prop.font}}, la fuente aparece entonces marcada como {{ui:font.fromDesign}}. Al añadir el archivo de la fuente vuelven todas las letras. +- **Las exportaciones solo contienen geometría.** STL, 3MF, OBJ, STEP y SVG contienen cuerpos y contornos, no la fuente. +- **Las versiones antiguas de layerling** todavía no admiten fuentes propias y dibujan esos textos en Multilanguage. + +**Licencias:** Las fuentes están protegidas por derechos de autor, y su licencia dice qué puedes hacer con ellas. Los contornos de letras incrustados son lo mismo que los archivos PDF se llevan de una fuente, y la mayoría de las licencias lo permiten. Sin embargo, algunas fuentes comerciales prohíben distribuir incluso letras sueltas. Antes de compartir o publicar un diseño con una fuente propia, comprueba la licencia de la fuente. Las fuentes libres, como las de Google Fonts (casi siempre con la SIL Open Font License), se pueden compartir sin problema. Para una pieza impresa o un STL exportado da igual: ya no contienen ninguna fuente, solo geometría. + +## En relieve o grabado + +- **En relieve:** Coloca el texto sobre la superficie y agrúpalo con el cuerpo. Sobresale como un relieve. +- **Grabado:** Cambia el texto a {{ui:inspector.hole}}, haz que se meta un poco en la superficie y agrúpalo con el cuerpo. Las letras quedan grabadas. + +Para rotular una cara lateral, coloca antes el plano de trabajo sobre esa cara: consulta [Vista y plano de trabajo](chapter:view-and-workplane). + +## Contorno, silueta y más ancho + +Un texto no tiene por qué construirse con letras rellenas. {{ui:prop.textFill}}, en las propiedades, ofrece las mismas opciones que Tinkercad: + +- **{{ui:prop.textFill.filled}}:** las letras tal cual. +- **{{ui:prop.textFill.outline}}:** una línea que sigue el contorno de las letras, mitad por dentro y mitad por fuera. +- **{{ui:prop.textFill.outer}}:** una línea que rodea las letras por fuera. +- **{{ui:prop.textFill.inner}}:** una línea por el interior de las letras. + +Si eliges una línea, aparecen dos ajustes justo debajo de la lista: {{ui:prop.sketchLineWidth}} fija el grosor de la línea, y {{ui:sketch.strokeJoin}}, cómo dobla las esquinas ({{ui:sketch.strokeJoin.round}}, {{ui:sketch.strokeJoin.bevel}} o {{ui:sketch.strokeJoin.miter}}). Los ajustes menos habituales están en {{ui:inspector.more}}: {{ui:prop.sketchSilhouette}} deja fuera los huecos de la O, la A o la e, y {{ui:prop.textWider}} mantiene las letras rellenas y las engorda por todo el contorno en la anchura de la línea; las letras que se tocan se unen en una sola pieza. + +Con una línea exterior, una línea centrada o «Más ancho», el recuadro del texto crece, pero las letras conservan su tamaño. {{ui:prop.bevel}} y {{ui:prop.segments}} solo existen para las letras rellenas. + +## Capas y placas con nombre + +Una placa con nombre para impresión multicolor es un texto en capas: arriba, las letras; debajo, el mismo texto un poco más ancho en un segundo color, y abajo del todo, una placa sin huecos en un tercero. layerling la hace con un clic: + +- **Una placa con nombre nueva:** Elige {{ui:shape.nameTag}} en la biblioteca de formas y colócala. Pone «Nombre» en letras blancas sobre un borde rojo y una placa oscura. +- **A partir de un texto:** Selecciona el texto y haz clic en {{ui:nameTag.makeLayers}}, en la parte de arriba de sus ajustes. + +Todos los ajustes de la placa están en la tarjeta {{ui:nameTag.title}}, en la parte de arriba de los ajustes: + +- **{{ui:prop.text}}** y **{{ui:prop.font}}**, también con fuentes propias. La placa crece con las palabras. +- **{{ui:nameTag.letterSize}}:** la altura de las mayúsculas, en mm. Todas las capas la siguen y se mantienen alineadas. +- **{{ui:nameTag.layers}}:** una fila por capa, de arriba abajo. Cada fila tiene el color (haz clic en el cuadrado de color), cuánto más ancha es la capa que las letras, su altura y {{ui:nameTag.noHoles}}, que rellena los huecos de letras como la O y la A. {{ui:nameTag.corners}} fija cómo rodea una capa más ancha las esquinas de las letras: {{ui:nameTag.corner.round}}, {{ui:nameTag.corner.bevel}} o {{ui:nameTag.corner.miter}}. La fila de arriba son las propias letras. **+** añade una capa abajo y **–** quita la capa de abajo. Una placa tiene de dos a seis capas. +- **{{ui:nameTag.keyring}}:** da a la capa inferior una lengüeta recta con el extremo redondeado y un orificio para la anilla de un llavero; la lengüeta crece con el orificio. Un orificio de 3 mm, el predeterminado, da una lengüeta de 6,5 mm de ancho que sobresale 6,75 mm, con el borde del orificio a 2 mm del borde de la capa inferior. Elige el {{ui:nameTag.keyringDiameter}} y el {{ui:nameTag.keyringSide}}: {{ui:nameTag.side.left}}, {{ui:nameTag.side.right}} o {{ui:nameTag.side.top}}. {{ui:nameTag.side.free}} quita el orificio de la placa y pone a su lado una {{ui:nameTag.keyringTab}} propia, del color y la altura de la capa inferior: una forma normal que mueves y giras con sus tiradores hasta donde la placa la necesite. Cuando esté en su sitio, {{ui:nameTag.keyringTabFix}}, en su panel, la convierte en parte de la placa más cercana, justo donde está: el orificio atraviesa todas las capas a las que llega, la lengüeta se une a la capa inferior y las dos se mantienen en esa esquina de las letras aunque cambien las palabras o el tamaño. {{ui:nameTag.side.free}} vuelve a sacar la lengüeta donde estaba, para moverla otra vez. El orificio atraviesa todas las capas que toca, y la lengüeta se desplaza con ellas cuando cambias las palabras, el tamaño de letra o la fuente. {{ui:nameTag.keyringAlong}} mueve la lengüeta hacia arriba o hacia abajo a lo largo de su lado (en el lado de arriba, a izquierda o derecha), hasta donde se saldría del lado; 0 es el centro. Úsalo cuando el centro del lado cae en un hueco, como junto a una J, y lleva la lengüeta a la parte de la letra que sobresale. +- **{{ui:nameTag.letterEdge}}:** redondea o achaflana la arista superior de las letras de la capa de arriba, que es como se remata una placa impresa: {{ui:nameTag.edge.none}}, {{ui:nameTag.edge.round}} o {{ui:nameTag.edge.chamfer}}, con el {{ui:nameTag.letterEdgeSize}} (0,4 mm para empezar, como mucho la altura de la capa). Funciona con cualquier fuente y cualquier palabra. La arista forma parte de la malla de las letras, así que la herramienta de aristas trata ese texto como una malla, lo que con un texto tan fino resulta pesado; mejor elige aquí la arista. + +Cada cambio se ve al instante. La placa es un conjunto: se mueve como una sola pieza, y cada capa sigue siendo un cuerpo independiente con su propio color, tal como los necesita un laminador (*slicer*) para una impresión multicolor. Para redondear o biselar las aristas de una capa, haz clic en {{ui:group.editBundle}} y elige la capa: consulta [Romper aristas y vaciar cuerpos](chapter:edges-and-hollowing). + +### Muchas placas con nombre a la vez + +Escribe los nombres en {{ui:textLayers.names}}, uno por línea, hasta cien. El botón de debajo dice cuántas placas va a crear, por ejemplo «Crear 12 placas con nombre». Todas las placas reciben las mismas capas, el mismo tamaño de letra y el mismo orificio para el llavero, y cada una es un objeto independiente; se colocan en filas debajo de la primera, a 5 mm unas de otras. Un texto normal también tiene la lista de nombres, más abajo en sus ajustes. + +## Placas con icono + +Una placa con icono es la misma placa, pero con un icono SVG en lugar de letras: un corazón, una nube, el logotipo de un club. Arriba, el icono; debajo, el mismo contorno un poco más ancho en un segundo color, y abajo del todo, una placa sin huecos. + +- **Una placa con icono nueva:** Elige {{ui:shape.iconTag}} en la biblioteca de formas. Se abre una ventana pequeña: haz clic en {{ui:iconTag.browse}}, elige un archivo SVG, PNG o JPG, comprueba la imagen, escribe la {{ui:iconTag.width}} del icono y haz clic en {{ui:iconTag.ok}}. La placa aparece en el centro de la placa base, con las mismas capas que una placa con nombre nueva. +- **A partir de un cuerpo de boceto:** Un SVG importado, o un boceto que hayas dibujado, tiene {{ui:nameTag.makeLayers}} en la parte de arriba de sus ajustes. + +La tarjeta {{ui:iconTag.title}}, en la parte de arriba de los ajustes, contiene: + +- **{{ui:iconTag.replace}}:** pone en la placa el icono de otro archivo (SVG, PNG o JPG); las capas y la anchura no cambian. +- **{{ui:iconTag.iconWidth}}:** la anchura del icono de arriba, en mm. Todas las capas la siguen y se mantienen alineadas. +- **{{ui:nameTag.layers}}:** las filas, igual que en una placa con nombre: color, cuánto más ancha, {{ui:nameTag.corners}}, altura y {{ui:nameTag.noHoles}}, **+** y **–**, de dos a seis capas. La fila de arriba es el propio icono. +- **{{ui:nameTag.keyring}}:** como en una placa con nombre: un orificio para el llavero que atraviesa todas las capas, con una lengüeta de extremo redondeado en la capa inferior, fuera del icono. {{ui:nameTag.keyringDiameter}} y {{ui:nameTag.keyringSide}} eligen su tamaño y su posición; {{ui:nameTag.side.free}} da una lengüeta propia, como en una placa con nombre. La lengüeta se adapta al contorno del icono, así que, con un icono muy irregular, comprueba por dónde se une a la placa. {{ui:nameTag.keyringAlong}} desplaza la lengüeta a lo largo de su lado, como en la placa con nombre. +- **{{ui:iconTag.count}}:** cuántas placas quieres, de 1 a 100. {{ui:iconTag.fill}} lo calcula a partir de la cama de la impresora elegida en los ajustes: con logotipos pequeños, una cama llena. El botón de debajo las crea, a 5 mm unas de otras, repartidas en el centro de la placa base; la primera es la propia placa. + +El SVG necesita contornos cerrados; un dibujo hecho solo de líneas abiertas no puede convertirse en una placa. Un cuerpo de boceto cuyo relleno es una línea la conserva: la superficie de esa línea es el icono. + +**Una imagen (PNG o JPG)** se calca para convertirla en un contorno, y la vista previa muestra ese contorno. En {{ui:iconTag.part}} eliges si el icono sale de {{ui:iconTag.part.dark}} o de {{ui:iconTag.part.light}}; al principio es la parte que no es el fondo. Los píxeles transparentes nunca forman parte del icono. Un SVG que solo contiene una imagen, como los que guarda Inkscape al importar un mapa de bits, se calca de la misma forma. El contorno sigue los píxeles, así que una imagen pequeña da un borde irregular: funcionan mejor las imágenes de unos cientos de píxeles o más. {{ui:iconTag.replace}} toma la parte de una imagen que no es el fondo. + +## Códigos QR + +Un código QR convierte un texto o una dirección web en un patrón que lee la cámara de un móvil: un enlace a tu tienda en un letrero, el nombre de la wifi en un posavasos, un número de teléfono en un llavero. + +Elige {{ui:shape.qrCode}} en la biblioteca de formas. Se abre una ventana; el cursor ya está en el campo de texto: + +- **{{ui:qrCode.text}}:** lo que dice el código. Intro crea el código y Mayús+Intro empieza una línea nueva. Debajo del campo ves cuánto espacio está ocupado; las vocales con tilde y otros caracteres especiales ocupan dos bytes. Si el texto es demasiado largo, el campo te lo dice. +- **{{ui:qrCode.errorCorrection}}:** L, M, Q o H. Un nivel más alto se sigue leyendo aunque parte del código esté sucia o rayada (L, en torno al 7 %; M, el 15 %; Q, el 25 %; H, el 30 %), pero necesita más módulos para el mismo texto, así que cada módulo queda más pequeño. Al principio está elegido M. +- **{{ui:qrCode.style}}:** {{ui:qrCode.style.code}} crea solo el código, de 4 mm de alto. {{ui:qrCode.style.raised}} lo pone, con 1 mm de alto, sobre una placa blanca de 3 mm de grosor, como un conjunto de dos colores, para que una impresión multicolor imprima el código oscuro y la placa clara. {{ui:qrCode.style.engraved}} graba el código 1 mm de profundidad en la placa. +- **{{ui:qrCode.sizeBy}}:** escribe la {{ui:qrCode.sizeBy.width}} del código entero (40 mm al principio) o el tamaño de un módulo; el otro valor aparece debajo. Los módulos de menos de 0,8 mm reciben un aviso. Es una regla práctica para una boquilla de 0,4 mm, no una garantía: la impresora, el material, los colores y el móvil influyen. +- **{{ui:qrCode.quietZone}}:** los lectores necesitan alrededor del código un margen vacío de cuatro módulos de ancho. En una placa, el margen forma parte de la placa; desactívalo solo si la placa va sobre una superficie clara más grande. El código solo no tiene margen propio: deja libre el espacio a su alrededor. +- **Alturas:** la altura del código o, en una placa, la altura del código o la profundidad del grabado, y el grosor de la placa. + +La vista previa muestra el código tal como se va a construir. {{ui:qrCode.ok}} lo coloca en el centro de la placa base. + +El código es un cuerpo como cualquier otro: muévelo, gíralo, escálalo (mantén iguales la anchura y la profundidad, o el código se deforma), agrúpalo, o conviértelo en orificio y agrúpalo con una pieza tuya para grabarlo en ella. Al escalarlo se escala el código entero; cada módulo sigue siendo cuadrado. + +La tarjeta {{ui:qrCode.title}}, en la parte de arriba de sus ajustes, contiene el texto. Cámbialo y haz clic en {{ui:qrCode.regenerate}}: el código se vuelve a construir donde está y con la anchura que tiene ahora. La corrección de errores, la zona de silencio y la forma de construirlo se quedan como se eligieron; para otras opciones, crea un código nuevo desde la biblioteca. + +Escanea el código con el móvil antes de imprimirlo, y otra vez después. Oscuro sobre claro se lee mejor; un código claro sobre una placa oscura no lo leen todos los móviles. + +## Texto en un arco de circunferencia + +¿Quieres que las letras no vayan rectas, sino que sigan el borde de una moneda, una tapa o un anillo? Para eso está el ajuste {{ui:prop.textCurved}}. + +![Un texto que sigue un círculo. Todas las letras se apoyan en una misma línea.](shot:curved-text) + +En cuanto lo activas, el texto recorre el círculo. Todas las letras se apoyan en la misma línea base, tan regulares como en un texto normal. Hay cuatro ajustes: + +- **{{ui:prop.textRadius}}** (de 5 a 500 mm): El radio del círculo por el que va la línea base de las letras. +- **{{ui:nameTag.letterSize}}:** La altura de las letras. Ya no depende de la anchura de la forma. +- **{{ui:prop.textInward}}:** Lleva el texto de la parte de arriba del círculo a la de abajo. Las letras apuntan entonces con la cabeza hacia el centro. +- **{{ui:prop.textFlipped}}:** Da la vuelta solo a las letras, para que puedas leerlas desde el otro lado. El texto se queda en su sitio en el círculo. + +**El centro del círculo es el centro de la forma.** Por eso alinear funciona como siempre: si centras el texto con un cilindro o un anillo, queda exactamente concéntrico con él. Al arrastrar un tirador, el radio y el tamaño de letra crecen a la vez, así que las letras no se deforman. + +> **Consejo:** En la parte de arriba del círculo, las letras quedan por fuera de la línea base; con {{ui:prop.textInward}} quedan por dentro, con la cabeza hacia el centro. Para que las letras quepan en un disco, el radio más el tamaño de letra debe ser menor que el radio del disco. diff --git a/docs/guide/es/09-threads-and-mechanics.md b/docs/guide/es/09-threads-and-mechanics.md new file mode 100644 index 000000000..8d667ccb5 --- /dev/null +++ b/docs/guide/es/09-threads-and-mechanics.md @@ -0,0 +1,171 @@ +--- +title: Roscas, engranajes y otras piezas +summary: Tornillos, tuercas y orificios roscados que encajan entre sí, y además engranaje, muelle, tubo curvado, cola de milano, orificio en lágrima, escariado y avellanado. +--- + +Además de las formas básicas, la biblioteca incluye algunas piezas que sería muy laborioso montar a mano. Todas se pueden cambiar después en sus ajustes. + +## Roscas + +Elige {{ui:shape.thread}} en la biblioteca de formas. En {{ui:inspector.threadRole}} decides qué va a ser: + +- **{{ui:thread.rod}}:** un cilindro roscado, por ejemplo un tornillo sin cabeza. +- **{{ui:thread.screw}}:** con cabeza. En {{ui:inspector.threadHead}} eliges entre {{ui:thread.headCylinder}}, {{ui:thread.headCountersunk}} y {{ui:thread.headHex}}. +- **{{ui:thread.nut}}:** la tuerca correspondiente. +- **{{ui:thread.bore}}:** un orificio roscado. Es un orificio: arrástralo dentro de una pieza, agrupa las dos y la pieza tendrá una rosca interior. + +![Un tornillo de cabeza cilíndrica. A la derecha, el tipo y la forma de la cabeza; más abajo, el tamaño, el paso y el perfil.](shot:thread-screw) + +El tamaño se elige de una lista en {{ui:prop.threadSize}}: métricas de M2 a M24, las medidas en pulgadas UNC y UNF del n.º 4 a 1 pulgada, y las roscas de tubo de G1/16 a G4. Si eliges {{ui:thread.customSize}}, fijas tú el {{ui:prop.diameter}} y el {{ui:prop.pitch}}. En una medida en pulgadas o en una G, el campo pide {{ui:prop.threadsPerInch}} en lugar del paso en milímetros. + +La lista agrupa los tamaños por series, y una línea bajo el campo indica la serie del tamaño elegido, con ejemplos que conoces del día a día: + +- **M, métrica de paso grueso:** la rosca métrica ISO de paso grueso según ISO 261, la de los tornillos y tuercas normalizados. +- **UNC, pulgada estadounidense de paso grueso:** el tornillo de las cámaras y los trípodes es de 1/4"-20 UNC (ISO 1222); las rótulas de trípode más grandes usan 3/8"-16 UNC. +- **UNF, pulgada estadounidense de paso fino:** los mismos diámetros que UNC, con un paso más fino (ASME B1.1). +- **G, rosca de tubo:** el flexo de la ducha se conecta con G1/2, y la manguera de toma de agua de la lavadora, con G3/4. Un grifo de jardín termina en G3/4, y los grifos más pequeños, en G1/2; ahí se enrosca el adaptador para grifo de un sistema de conexión rápida de mangueras. + +Las medidas G son las roscas de tubo Whitworth cilíndricas según ISO 228-1, las de los racores de agua, gas, hidráulica y neumática. La medida da nombre al tubo, no a la rosca: una G1 mide 33,249 mm de diámetro exterior de rosca. Al elegir una medida G, el perfil pasa a {{ui:thread.profileWhitworth}}, y al elegir una métrica o una en pulgadas vuelve a {{ui:thread.profileV}}. Si has elegido tú un perfil {{ui:thread.profileTrapezoidal}} o {{ui:thread.profileRound}}, se mantiene. La norma solo define la rosca, así que la cabeza de un tornillo y una tuerca con medida G tienen las mismas proporciones que con un diámetro que fijes tú. Las roscas de tubo cónicas R, Rc y Rp no están incluidas. + +Más ajustes: + +- **{{ui:prop.threadHand}}:** {{ui:thread.right}} o {{ui:thread.left}}. +- **{{ui:prop.threadProfile}}:** {{ui:thread.profileV}} es el perfil normalizado de las roscas métricas y en pulgadas, y {{ui:thread.profileWhitworth}}, el de las roscas de tubo G: 55° con crestas y fondos redondeados. {{ui:thread.profileTrapezoidal}} y {{ui:thread.profileRound}} tienen crestas y fondos planos. Eso suele imprimirse con más fiabilidad, porque no quedan puntas finas. +- **{{ui:thread.profileCustom}}:** Un trapecio al que das forma tú, con la cresta y el fondo planos y de la misma anchura. {{ui:prop.threadFlankAngle}} es el ángulo entre los dos flancos de un diente: 60° es la rosca en V aguda, 30° la rosca trapecial, y con 90° o menos ningún flanco queda más tendido que 45°, así que la rosca se imprime sin soportes. {{ui:prop.threadDepth}} y {{ui:prop.threadCoreDiameter}} son la misma medida dicha de dos maneras: el diámetro del núcleo es el diámetro menos dos veces la profundidad, y si cambias uno cambia el otro. Un perfil propio nuevo empieza con la profundidad de la rosca en V a 60°. La profundidad tiene límites que dependen del ángulo y del paso: no menos de una décima parte del paso, no más del 40 % del diámetro, y no tanta que los dos flancos ocupen más de nueve décimas partes del paso. Si cambias el paso, la profundidad cambia en proporción, y lo mismo si escalas la rosca. La holgura y los chaflanes funcionan como en los demás perfiles. A través del puente MCP, el perfil es `custom`, con `threadFlankAngle` y `threadDepth`. +- **{{ui:prop.clearance}}:** En tuercas y orificios roscados, el espacio que asegura que una pareja impresa gire de verdad. Cuanto menos precisa sea tu impresora, más holgura necesita la pareja. Es el espacio extra en todo el diámetro, y la separación entre los flancos de una rosca en V es solo más o menos la mitad, así que una pareja impresa necesita más de lo que cabría esperar: las tuercas nuevas empiezan con 0,4 mm; 0,3 queda justo y 0,5, holgado. Imprime antes una pareja de prueba. Las varillas y los tornillos tienen aquí una holgura propia, que adelgaza el perno en ese mismo valor de diámetro. De entrada está a 0. Qué lado se lleva el espacio depende de lo que emparejes: + - **Tornillo impreso y tuerca impresa:** deja el tornillo a 0 y dale el espacio a la tuerca (los 0,4 mm con los que empieza). + - **Tornillo comercial en una tuerca o un orificio roscado impresos:** el lado impreso se lo lleva todo, así que la tuerca mantiene sus 0,4 mm. Si el tornillo baila, merece la pena probar unos 0,3 mm, más justos. + - **Tornillo impreso en una tuerca comercial:** la tuerca comercial no tiene juego, así que el tornillo tiene que ser más fino: aquí, de 0,3 a 0,4 mm, lo mismo que tendría una tuerca impresa. +- **{{ui:prop.axialClearance}}:** En tuercas y orificios roscados, el juego a lo largo del eje, además de la {{ui:prop.clearance}}. Cada diente de la tuerca se adelgaza en esa medida; el diámetro se queda como está. El motivo: la {{ui:prop.clearance}} solo actúa sobre el diámetro y abre los flancos de una rosca en V solo unas 0,58 veces su valor. Quien quiera aire entre los flancos tiene que abrir mucho el diámetro, y a cambio la rosca baila de lado. El juego a lo largo del eje separa las dos cosas. De entrada está a 0, para que una rosca guardada no cambie, y llega como mucho a una quinta parte del paso, porque por encima no quedaría nada de los dientes de la tuerca. El campo solo existe en tuercas y orificios roscados; las varillas y los tornillos conservan su propia holgura. Hay más información abajo, en «Roscas para impresión 3D». +- **{{ui:prop.threadChamferTop}}, {{ui:prop.threadChamferBottom}}, {{ui:prop.headChamfer}} y {{ui:prop.rimChamfer}}:** Chaflanes en los extremos, para que la rosca empiece limpia y la cabeza no tenga una arista viva. Cada extremo de una varilla, una tuerca o un orificio roscado tiene su propio chaflán, así que arriba puede ser largo y abajo corto, o no haber ninguno. Un tornillo solo tiene uno, en la punta, con el nombre {{ui:prop.chamfer}}. En una tuerca o un orificio roscado, el chaflán es lo que la boca se abre más allá del diámetro exterior; el cono sigue a 45 grados hasta el núcleo de la rosca, así que no queda ningún escalón en el diámetro exterior. + +Al cambiar una rosca entre {{ui:thread.rod}} y {{ui:thread.bore}}, se conserva su longitud. Una tuerca y un tornillo empiezan con sus medidas normalizadas. +- **{{ui:prop.quality}}:** La finura con la que se calcula la rosca. Cuanto más alta, más exacta, pero también más lenta. + +Las roscas impresas son un mundo aparte. Antes de imprimir una pieza grande, haz primero de prueba una pareja de tornillo y tuerca y ajusta la holgura a tu impresora. + +## Roscas para impresión 3D + +Una rosca impresa necesita aire en dos sitios, y cada uno actúa de manera distinta: + +- **Holgura en el diámetro ({{ui:prop.clearance}}):** ensancha la tuerca. El tornillo tiene entonces la mitad del valor como aire a cada lado: 0,2 mm con 0,4 mm. La rosca gira con facilidad, pero el tornillo puede bailar de lado. +- **Juego a lo largo del eje ({{ui:prop.axialClearance}}):** adelgaza los dientes de la tuerca. El tornillo puede moverse entonces adelante y atrás a lo largo del eje en ese valor cuando no está apretado. Con esto no aparece aire extra de lado. + +Entre las dos dan la separación entre los flancos: unas 0,58 veces la holgura en el diámetro más el juego a lo largo del eje. Un ejemplo para una separación de 0,3 mm: antes hacían falta 0,5 mm en el diámetro, es decir, 0,25 mm de aire a cada lado. Ahora bastan 0,2 mm en el diámetro (0,1 mm a cada lado) y 0,2 mm a lo largo del eje, y la separación es de 0,32 mm. + +**Consecuencias que debes conocer** + +- **El tornillo tiene juego a lo largo del eje.** Sin carga, puede moverse adelante y atrás en ese valor. En fijaciones, tapas y carcasas da igual; en un husillo que tiene que posicionar con precisión, no, así que ahí mantenlo pequeño o a 0. +- **Los dientes de la tuerca se adelgazan.** Con 0,3 mm y un paso de 1,75 mm, cada diente es casi un tercio más fino en su parte central y, por tanto, bastante menos resistente. Para piezas muy cargadas, mejor una rosca de paso más grueso. +- **Más cálculo.** La forma del diente recibe puntos adicionales, así que la rosca tiene más triángulos y tarda un poco más en calcularse. +- **Sin arcos reales en la exportación STEP con el perfil Whitworth.** Una rosca {{ui:thread.profileWhitworth}} con juego a lo largo del eje llega a la herramienta de aristas y a la exportación STEP como una forma de diente hecha de tramos rectos, no con los arcos de circunferencia reales. Con 0, todo sigue como antes. + +**Consejos** + +1. **Primero, una pareja de prueba.** Un tornillo y una tuerca de solo 4 a 6 mm de alto cada uno se imprimen en pocos minutos. Imprime tres parejas con distinto juego, una al lado de otra, y quédate con la que gire con facilidad sin bailar. +2. **Empieza con valores que suelen funcionar.** Holgura en el diámetro de 0,2 a 0,3 mm y juego a lo largo del eje de 0,2 mm. Si el tornillo baila de lado, baja la holgura en el diámetro; si se atasca, sube el juego a lo largo del eje. Si prefieres prescindir del juego a lo largo del eje, usa 0,4 mm en el diámetro, como antes. +3. **El juego a lo largo del eje debería ser de al menos una altura de capa.** Lo que quede por debajo de una capa, la impresora no lo resuelve. Con una altura de capa de 0,2 mm, 0,2 mm es un buen punto de partida; con 0,1 mm, basta con menos. +4. **Imprime el tornillo y la tuerca de pie.** El eje apunta hacia arriba, así que cada vuelta queda en capas enteras y los flancos salen limpios. Tumbados, los flancos se descuelgan. +5. **Los pasos finos son difíciles.** Por debajo de aproximadamente 1 mm de paso, las vueltas suelen fundirse entre sí. Una rosca más gruesa, o un perfil {{ui:thread.profileTrapezoidal}} con crestas planas, se imprime con más fiabilidad que una rosca en V fina. +6. **Evita las puntas finas.** La rosca en V tiene una punta estrecha que la impresora apenas consigue reproducir con el ancho de su boquilla. Los perfiles {{ui:thread.profileTrapezoidal}} y {{ui:thread.profileRound}} tienen dientes más planos. +7. **Desbarba y dale rodaje.** Las primeras vueltas suelen ir duras porque en los flancos quedan pequeños restos de la impresión. Gira el tornillo adelante y atrás unas cuantas veces y irá más suave. El chaflán de la entrada ayuda a enroscarlo. +8. **Otra impresora u otro filamento.** El juego depende de la impresora, del material y de la boquilla. Vuelve a imprimir la pareja de prueba cuando cambies cualquiera de ellos. + +La herramienta de aristas trata una rosca como un cuerpo exacto. Puedes achaflanar o redondear la pieza que la lleva con la rosca ya puesta, o las aristas de la cabeza de un tornillo; consulta [Romper aristas y vaciar cuerpos](chapter:edges-and-hollowing). Calcular las aristas de una rosca lleva un rato: unos segundos en una M6 y cerca de medio minuto en una rosca de tubo G1/2. Aun así, la forma más rápida de romper la arista de la cabeza de un tornillo sigue siendo el chaflán de cabeza de las propiedades. + +## Engranajes + +{{ui:shape.gear}} está disponible como {{ui:gear.spur}}, {{ui:gear.helical}}, {{ui:gear.herringbone}} y {{ui:gear.bevel}}, y también como {{ui:gear.internal}} y {{ui:gear.rack}} (más abajo). Los engranajes nuevos tienen {{ui:gear.profileInvolute}} en {{ui:prop.gearProfile}}: dientes con flancos de evolvente, como los que usan los generadores de engranajes y la ingeniería mecánica. Estos dientes ruedan limpiamente unos sobre otros. Tú fijas el número de {{ui:prop.teeth}} (de 6 a 150) y el {{ui:prop.gearModule}}, y el tamaño sale solo: el diámetro exterior es módulo × (dientes + 2), y el diámetro primitivo, módulo × dientes. Los engranajes nuevos empiezan con módulo 2. Dos engranajes encajan cuando tienen el mismo módulo y el mismo {{ui:prop.gearPressureAngle}} (normalmente 20°) y sus centros están a (dientes + dientes) × módulo / 2 de distancia. Si seleccionas los dos engranajes, el panel de propiedades indica esa distancia entre centros y a qué distancia están ahora los centros. Si los engranajes deben quedarse donde están, también indica el módulo con el que encajarían en esa posición, y {{ui:inspector.gearPairFitApply}} da ese módulo a los dos engranajes de una vez; cada uno conserva sus dientes, su altura y su orificio central. Si entonces un diente coincide con otro diente en lugar de con un hueco, gira uno de los engranajes medio diente, es decir, 180° divididos entre su número de dientes. {{ui:prop.gearBacklash}} rebaja un poco los dientes para que una pareja impresa no se agarrote. El valor es para la pareja, y cada engranaje se lleva la mitad; 0,2 mm es un buen punto de partida, y 0 da el engranaje exacto. Por debajo de la circunferencia base, el flanco baja recto hasta el pie del diente y no presenta la socavación que dejaría una herramienta de tallado. Eso conviene para imprimir, pero un piñón muy pequeño, de menos de unos 17 dientes, puede rozar un poco en el pie. + +Un engranaje helicoidal añade el {{ui:prop.helixAngle}}. Con dientes de evolvente, es el ángulo de hélice real sobre la circunferencia primitiva: dos engranajes helicoidales encajan cuando tienen el mismo módulo y el mismo ángulo, uno positivo y el otro negativo. El {{ui:gear.herringbone}} son dos mitades helicoidales de sentido contrario: los dientes van en un sentido hasta la mitad de la altura y vuelven después, como una punta de flecha. Para la impresión 3D tiene dos ventajas: el engranaje se centra solo sobre su eje y no tiene empuje axial, porque las fuerzas de las dos mitades se anulan. Un engranaje helicoidal, en cambio, empuja de lado a lo largo de su eje. El {{ui:prop.helixAngle}} y la {{ui:prop.helixQuality}} se ajustan como en el engranaje helicoidal; el ángulo vale para cada mitad. Dos engranajes en espiga encajan cuando tienen el mismo módulo y el mismo ángulo con signos opuestos, uno positivo y el otro negativo. No hay ranura en el centro, como en los engranajes en espiga fresados: las dos mitades se unen sin escalón. La herramienta de aristas y la exportación STEP tratan el engranaje en espiga como una malla de triángulos, no como un cuerpo exacto. + +El engranaje cónico toma los dientes de evolvente y los hace más pequeños hacia su parte superior. Es una aproximación, no una pareja cónica calculada con exactitud. + +Con {{ui:gear.profileRound}}, los dientes son redondos, hechos de arcos, como en el Useful gear de Tinkercad: la cabeza del diente y el hueco se unen sin esquina. Así, los engranajes pequeños perdonan más al imprimirse y giran con más facilidad, y en un pomo los dientes dan un agarre agradable. Los dientes redondos también se ajustan con {{ui:prop.teeth}}, {{ui:prop.gearModule}} y {{ui:prop.gearBacklash}}; no tienen ángulo de presión. Son más bajos que los de evolvente, así que el diámetro exterior es módulo × (dientes + 1,2). Los engranajes redondos con el mismo módulo encajan entre sí, a la misma distancia entre centros que los de evolvente; con un engranaje de evolvente no encajan. + +Con {{ui:gear.profileSimple}} tienes los dientes rectos que tenían hasta ahora todos los engranajes. Ahí ajustas a mano {{ui:prop.toothSize}} y {{ui:prop.toothWidth}}. Los diseños antiguos los conservan hasta que cambies la forma del diente. Las tres formas de diente tienen la opción {{ui:prop.centerHole}}. + +{{ui:gear.internal}} es un engranaje con los dientes hacia dentro: un aro dentro del cual gira un engranaje más pequeño, como la rueda exterior de un tren planetario. Se ajusta como un engranaje de evolvente o de dientes redondos, con {{ui:prop.teeth}}, {{ui:prop.gearModule}} y {{ui:prop.gearBacklash}}, y además con {{ui:prop.gearRim}}, el aro que rodea los dientes por fuera. Su diámetro exterior es módulo × (dientes + 2,5) más dos veces el aro; con dientes redondos, módulo × (dientes + 1,7). Un engranaje del mismo módulo gira dentro cuando su centro está a (dientes de la corona − sus dientes) × módulo / 2 del centro de la corona; si seleccionas los dos, el panel de propiedades indica esa distancia. En un tren planetario, dientes de la corona = dientes del piñón central (sol) + 2 × dientes de un satélite, por ejemplo 30 = 12 + 2 × 9. Una corona no tiene orificio central: ella misma es el aro. Entre 26 y 33 dientes, las puntas de sus dientes son hasta un cuarto de módulo más cortas, porque si no se formaría una arista diminuta en la circunferencia base; el engrane no se ve afectado. + +La {{ui:gear.rack}} es el engranaje de radio infinito: una barra con dientes a lo largo de un lado, cuyos flancos, con dientes de evolvente, son líneas rectas inclinadas según el ángulo de presión. Su anchura (a lo largo de X) es dientes × paso, con un paso de π × módulo, así que las cremalleras de un mismo módulo se pueden poner una a continuación de otra, porque cada extremo cae en un hueco. Su longitud (a lo largo de Y) es el grosor de la barra, y es libre mientras quepan los dientes y medio milímetro de barra. Los dientes miran hacia delante, hacia ti en la vista inicial; gira la cremallera como la necesites. Un engranaje del mismo módulo rueda sobre ella cuando su centro está a sus dientes × módulo / 2 por delante de la línea primitiva; la línea primitiva está un módulo por detrás de las puntas de los dientes, o 0,6 módulos con dientes redondos. La corona y la cremallera existen con dientes de evolvente y con dientes redondos, no con simples; al cambiar el tipo de engranaje se conserva el módulo. + +La herramienta de aristas y la exportación STEP tratan cada engranaje como un cuerpo exacto, con los flancos de evolvente como curvas suaves. Un engranaje helicoidal con base ovalada sigue siendo una malla de triángulos, igual que un engranaje helicoidal con dientes de evolvente a partir de unos 31 dientes. Los dientes pequeños limitan cuánto se pueden redondear las aristas: en un engranaje de dientes simples de 30 mm de diámetro y 12 dientes, la parte plana entre dos dientes, en el pie, mide solo unos 0,65 mm de ancho, así que redondear todas las aristas funciona hasta unos 0,5 mm, y en un engranaje cónico, cuya parte superior es más pequeña, hasta unos 0,4 mm. Los dientes de un engranaje helicoidal van inclinados, y eso estrecha todavía más esa parte plana en sentido transversal a sus aristas oblicuas: cuanto mayor sea el ángulo de hélice en relación con la altura del engranaje, menor será el redondeo que cabe. Las aristas de sus dos caras planas se pueden redondear, pero achaflanar solo esas aristas falla en el núcleo CAD; redondéalas, o achaflana todas las aristas juntas con una medida menor, por ejemplo 0,2 mm. + +## Muelles + +El {{ui:shape.spring}} tiene los ajustes {{ui:prop.turns}} y {{ui:prop.wire}}. Junto con la altura, deciden lo blando que es el muelle. {{ui:prop.springHand}} fija en qué sentido va el alambre: {{ui:spring.right}}, como un muelle de compresión normal, o {{ui:spring.left}}. + +La herramienta de aristas y la exportación STEP tratan un muelle como un cuerpo exacto: un alambre redondo a lo largo de una hélice, cortado en recto por los dos extremos. Puedes, por ejemplo, redondear o achaflanar esos dos extremos del alambre. + +## Tubos curvados + +Un {{ui:shape.bentTube}} consta de hasta doce tramos: un trozo recto seguido de una curva. En cada uno ajustas {{ui:prop.bentTubeSegmentLength}}, {{ui:prop.bentTubeBendAngle}}, {{ui:prop.bentTubeBendRadius}} y {{ui:prop.bentTubeRoll}}. El tramo que estás editando se ilumina en naranja sobre el tubo, para que puedas seguir el orden. Con un ángulo de giro de 0°, la curva queda en el plano de trabajo; con 90°, el tubo se curva hacia arriba. El perfil puede ser redondo, cuadrado, hexagonal u octogonal, y el interior también, o ser completamente macizo. Si el tubo se cruza consigo mismo, layerling te avisa. + +## Recubrimiento + +El {{ui:shape.loft}} une un contorno de abajo con otro de arriba, como la solevación de Fusion: un adaptador de manguera de un diámetro a otro, un ventilador cuadrado sobre un conducto redondo, un pie que se va volviendo redondo hacia arriba. Para cada extremo eliges {{ui:prop.loftBottomOutline}} y {{ui:prop.loftTopOutline}}: {{ui:loft.round}}, {{ui:loft.rectangle}} con {{ui:prop.loftBottomCorner}}, o {{ui:loft.polygon}} con su número de vértices, además de la anchura y la longitud de cada extremo y la altura. {{ui:prop.loftOffsetX}} y {{ui:prop.loftOffsetZ}} desplazan de lado el extremo superior para una transición oblicua; el extremo inferior se queda donde está. + +{{ui:prop.loftWall}} convierte el cuerpo macizo en un tubo abierto por arriba y por abajo. En los dos extremos, la abertura es más pequeña que el contorno en lo que mide la pared, medido en horizontal; donde la pared está inclinada, queda algo más fina. Si agrandas el marco, los dos extremos crecen con él, mientras que el radio de las esquinas y la pared conservan su tamaño. + +{{ui:prop.loftSmooth}} suaviza la transición. Con 0, los lados van rectos de abajo arriba, como en un cono. Con 100, salen de los dos extremos en vertical y entre medias cambian de tamaño siguiendo una curva en S: un adaptador de manguera que se ensancha suavemente de un tubo estrecho a uno ancho, en lugar de ir como un embudo. Entre esos valores, el control deslizante mezcla las dos cosas. Una transición suave se puede combinar con {{ui:prop.loftWall}}, con torsión, con inclinación y con un desplazamiento lateral; un tubo con pared sigue abierto por los dos extremos. Es un cuerpo exacto, como el recto, así que sus aristas se pueden achaflanar y redondear, pero se construye a partir de varias secciones y tarda un poco más en calcularse. + +{{ui:prop.loftTwist}} gira la sección de manera uniforme alrededor de la vertical a medida que sube, hasta 360° en cualquier sentido; los lados se enroscan entonces. {{ui:prop.loftTiltX}} y {{ui:prop.loftTiltZ}} inclinan el extremo superior, hasta 45°: un valor positivo levanta su arista delantera o su lado derecho, respectivamente. Las secciones intermedias se inclinan en la parte que les toca, así que la pared pasa con suavidad a la inclinación. El punto más alto se queda a la altura fijada. Si más tarde la altura se reduce tanto que el extremo inclinado llegaría por debajo de la placa, la inclinación cede hasta que cabe. Una curva a lo largo de una trayectoria, como un codo de tubería, no es algo que haga el recubrimiento. + +El recubrimiento es un cuerpo exacto, también torcido e inclinado: sus aristas se pueden achaflanar y redondear, y la exportación STEP lo conserva. Añade una brida con orificios para tornillos como de costumbre y agrupa las piezas. + +## Gridfinity + +La forma {{ui:shape.gridfinity}} crea piezas para el sistema de almacenaje abierto de Zack Freedman: cajas sobre una cuadrícula de 42 mm que se colocan en una placa base y se apilan unas sobre otras. Las medidas siguen la especificación publicada de Gridfinity, así que una caja de layerling encaja en una placa base hecha con otro generador, y al revés. En {{ui:prop.gridfinityType}} eliges: + +- **{{ui:gridfinity.bin}}:** una caja con un pie bajo cada unidad de cuadrícula. {{ui:prop.gridfinityUnitsX}} y {{ui:prop.gridfinityUnitsZ}} cuentan unidades de cuadrícula de 42 mm (una caja es 0,5 mm más pequeña: 41,5 mm para una unidad); {{ui:prop.gridfinityUnitsY}} cuenta unidades de altura de 7 mm, hasta 20. El {{ui:prop.gridfinityLip}}, encima de la pared, recibe los pies de la caja siguiente y hace la caja 4,4 mm más alta: una caja de 3 unidades con reborde mide 25,4 mm de alto. Con {{ui:prop.gridfinityMagnets}}, cada pie lleva en cada esquina un orificio para un imán de 6 × 2 mm. +- **{{ui:gridfinity.baseplate}}:** la placa en la que se colocan las cajas, de 5 mm de alto, con un alojamiento para cada unidad de cuadrícula. Es un marco abierto, sin fondo y sin orificios para imanes. + +El tamaño es siempre de unidades de cuadrícula enteras (o de celdas de 21 mm con la cuadrícula de media unidad que se explica más abajo), hasta 6 × 6 (252 mm, que caben en una cama de 256 mm); al arrastrar un tirador, el tamaño salta a la unidad más cercana. La pared (0,95 mm), el fondo (1,2 mm) y la profundidad de los orificios para imanes (2,4 mm) no están en la especificación; la pared y la profundidad de los orificios son fijas, y el fondo se puede elevar (ver más abajo). Los orificios para tornillos M3 de la especificación no se crean. La parte superior del reborde es una arista viva, tal como la dibuja la especificación; si tu impresora la deja irregular, redondéala o achaflánala con la herramienta de aristas. La caja y la placa base son cuerpos exactos, así que el redondeo, el chaflán y la exportación STEP funcionan con ellas. Para dividir una caja, agrupa con ella tabiques hechos con formas de caja finas: apóyalos en el fondo, a 5,95 mm de altura (o sobre el fondo elevado), y, en una caja con reborde, deja su parte superior al menos 0,5 mm por debajo de 7 mm por unidad de altura, medidos desde la cara inferior de la caja (20,5 mm para 3 unidades), porque los pies de la caja siguiente bajan 0,35 mm dentro de la caja. Imprime las cajas y las placas base sin soportes, apoyadas tal como están sobre la cama. + +Una caja también se puede hacer con una cuadrícula de media unidad: activa {{ui:prop.gridfinityHalfGrid}} y entonces {{ui:prop.gridfinityUnitsX}} y {{ui:prop.gridfinityUnitsZ}} cuentan celdas de 21 mm, hasta 12 (los mismos 251,5 mm que 6 unidades). Cada celda tiene su propio pie, de 20,5 mm de lado en la parte de arriba y con los escalones de la especificación, y cuatro de ellos caben en un alojamiento de una placa base normal, así que una caja de 1½ o 2½ unidades cabe al lado de otras de unidades enteras. Al activar {{ui:prop.gridfinityHalfGrid}}, la caja conserva su contorno (2 unidades pasan a ser 4 celdas); al desactivar la opción, un número impar de celdas se redondea hacia arriba a unidades enteras. El reborde sigue el contorno de la caja, como antes. Con {{ui:prop.gridfinityMagnets}}, cada pie lleva un orificio, a 2,5 mm de su centro en ambas direcciones, hacia la esquina de su celda que cae sobre la cuadrícula de 42 mm, contando desde la esquina trasera izquierda de la caja: los orificios coinciden con los de una placa base con imanes hecha con otro generador cuando esa esquina está sobre una esquina de la cuadrícula; una caja con un número impar de celdas también se puede girar 180°, de modo que esa esquina quede sobre una esquina de la cuadrícula en la parte delantera derecha. La placa base sigue en la cuadrícula de 42 mm. La cuadrícula de media unidad no forma parte de la especificación. + +Una caja de 3 unidades de altura o más puede llevar repisas para etiquetas a lo largo de sus paredes interiores: activa {{ui:prop.gridfinityLabelBack}}, {{ui:prop.gridfinityLabelFront}}, {{ui:prop.gridfinityLabelLeft}} o {{ui:prop.gridfinityLabelRight}}, en cualquier combinación. Cada repisa activada tiene sus propios valores de {{ui:prop.gridfinityLabelWidth}}, {{ui:prop.gridfinityLabelLength}} y, si es más corta, {{ui:prop.gridfinityLabelOffset}}; los ajustes de las esquinas, debajo, valen para todas. Una repisa es plana por arriba, para pegar una etiqueta, con una franja vertical de 1,2 mm en el frente y una cara inferior que sube a 36 grados. Su parte superior queda 0,85 mm por debajo de 7 mm por unidad de altura, medidos desde la cara inferior de la caja (20,15 mm para 3 unidades), así que los pies de una caja apilada sobre el reborde quedan a 0,5 mm de ella. Si haces la caja más baja de 3 unidades, no muestra repisas; vuelven a aparecer a partir de 3 unidades. Las repisas para etiquetas no forman parte de la especificación. + +{{ui:prop.gridfinityLabelWidth}} es lo que la repisa se mete dentro de la caja: 14 mm, como mucho 17,2 mm en una caja de 3 unidades (menos con el fondo elevado), y 16,8 mm para dos repisas enfrentadas en una caja de 1 unidad de profundidad con esquinas de 2 mm. Con {{ui:prop.gridfinityLabelLength}} a 0, la repisa va de pared a pared. Si es más corta, de al menos 10 mm, aparece {{ui:prop.gridfinityLabelOffset}}, que la desplaza desde el centro de su pared: hacia la derecha en las paredes trasera y delantera, tal como las muestra la vista frontal, y hacia delante en las paredes laterales. Un extremo que se acerque a menos de 1 mm de una pared (1,8 mm con el reborde de apilado, cuyo apoyo se mete hacia dentro ahí), o que termine sobre la repisa de esa pared, se prolonga hasta ella, y dos repisas que se encuentran en una esquina se unen en una sola. Donde una repisa se encuentra con una pared o con otra repisa y hay sitio, la esquina se redondea o se achaflana: elige {{ui:gridfinity.labelRound}} o {{ui:gridfinity.labelChamfer}} en {{ui:prop.gridfinityLabelCorner}}, y el tamaño con {{ui:prop.gridfinityLabelCornerSize}} (2 mm; con 0 queda viva). Con {{ui:gridfinity.labelRound}}, los extremos libres de una repisa más corta también tienen redondeadas sus esquinas delanteras, con el mismo tamaño pero como mucho la mitad de la anchura de la repisa. + +Una caja también puede llevar un rebaje para los dedos a lo largo de cualquiera de sus paredes interiores, para que las piezas pequeñas se puedan sacar empujándolas curva arriba en lugar de tener que pescarlas en el rincón entre el fondo y la pared: activa {{ui:prop.gridfinityScoopBack}}, {{ui:prop.gridfinityScoopFront}}, {{ui:prop.gridfinityScoopLeft}} o {{ui:prop.gridfinityScoopRight}}, en cualquier combinación. El fondo sube en un cuarto de circunferencia hasta la pared, de pared a pared, y dos rebajes en paredes contiguas se juntan en su esquina. Una caja con rebaje tiene además todas las aristas del fondo redondeadas con un radio de 2,8 mm, el de sus esquinas interiores, y el rebaje es ese mismo redondeo, más grande, en su pared. En cuanto activas un rebaje, aparece {{ui:prop.gridfinityScoopRadius}} debajo de los interruptores, y vale para todos: mientras no lo cambies, es la mitad de la altura que hay desde el fondo hasta donde el apoyo del reborde se separa de la pared, 1,65 mm por debajo de 7 mm por unidad de altura, medidos desde la cara inferior de la caja, o, en una caja sin reborde, hasta su borde superior (6,7 mm en una caja de 3 unidades con reborde, menos con el fondo elevado). Mide al menos 3,5 mm y siempre queda al menos 0,5 mm por debajo de esa altura, y a lo ancho de la caja deja al menos 2 mm de fondo plano, entre dos rebajes enfrentados o entre un rebaje y la pared de enfrente. Una caja de 1 unidad de altura no tiene sitio para un rebaje y no muestra sus interruptores; vuelven a aparecer a partir de 2 unidades. Los rebajes para los dedos tampoco forman parte de la especificación. + +Una caja también puede tener el fondo elevado, como caja en bruto en la que recortar formas: {{ui:prop.gridfinityFloorHeight}} fija la altura del fondo, medida desde la cara inferior de la caja (5,95 mm, es decir, el fondo de 1,2 mm sobre los pies, mientras no la cambies), y la caja es maciza hasta ahí. Con reborde, sube como mucho hasta donde el apoyo del reborde se separa de la pared, 1,65 mm por debajo de 7 mm por unidad de altura (19,35 mm para 3 unidades), así que el reborde queda entero y los pies de una caja apilada encima quedan a 1,3 mm; sin reborde, sube hasta arriba del todo, y la caja se convierte en un bloque macizo. Agrupa con ella orificios con la forma de tus herramientas, tan profundos como necesites. Los rebajes para los dedos empiezan en el fondo elevado, y las repisas para etiquetas se meten menos en la caja para que su cara inferior siga terminando por encima del fondo; cuando el fondo ya no les deja sitio, sus interruptores desaparecen (los rebajes por encima de 15,35 mm y las repisas por encima de 15,54 mm, en una caja de 3 unidades con reborde) y vuelven cuando lo bajas. Una caja de 1 unidad de altura con reborde no tiene sitio para elevar el fondo y no muestra el campo. El fondo elevado tampoco forma parte de la especificación. + +Una caja también se puede dividir en compartimentos sin agrupar paredes con ella: en {{ui:inspector.gridfinityCompartments}}, justo debajo de {{ui:inspector.properties}}, {{ui:prop.gridfinityCompartmentsX}} y {{ui:prop.gridfinityCompartmentsZ}} fijan cuántos hay, hasta 4 por unidad de cuadrícula en cada dirección (2 por celda con la cuadrícula de media unidad) y 40 en total. Los separadores ocupan toda la altura, desde el fondo (o el fondo elevado) hasta 0,85 mm por debajo de 7 mm por unidad de altura, donde también terminan las repisas para etiquetas, así que una caja apilada sobre el reborde asienta como antes. Los separadores necesitan una caja de 2 unidades de altura o más, con el fondo al menos 3 mm por debajo de su parte superior; si hay menos sitio, la caja se construye sin ellos, y vuelven en cuanto vuelve a haber sitio. {{ui:prop.gridfinityDividerThickness}} es de 1,2 mm mientras no lo cambies, y va de 0,8 a 3 mm. Al principio, los separadores están repartidos de manera uniforme. Para mover uno, elígelo en {{ui:prop.gridfinityDividerAcross}} o {{ui:prop.gridfinityDividerDeep}}, contando desde la izquierda o desde atrás, y ajusta su {{ui:prop.gridfinityDividerPosition}}, medida desde la cara interior de la pared izquierda o trasera hasta el centro del separador; cada compartimento conserva al menos 6 mm de ancho. En cuanto has movido un separador, los separadores de esa dirección conservan su posición en milímetros cuando cambias el tamaño de la caja; si cambias el número de compartimentos, los separadores de esa dirección vuelven a repartirse de manera uniforme. Cada compartimento tiene las esquinas interiores de la caja, redondeadas con un radio de 2,8 mm, y las aristas de su fondo también están redondeadas con 2,8 mm, con o sin rebaje para los dedos. Los rebajes para los dedos se repiten en cada compartimento: con un rebaje en la pared trasera, cada compartimento tiene uno en su lado trasero, contra la pared o contra un separador. En un compartimento estrecho, el radio se reduce para que queden 2 mm de fondo plano, y un compartimento demasiado estrecho incluso para 3,5 mm pierde los rebajes de esa dirección; una nota bajo {{ui:prop.gridfinityScoopRadius}} lo indica. Los separadores tampoco forman parte de la especificación. + +Una caja con separadores puede llevar una repisa para etiqueta en cada compartimento en lugar de las repisas a lo largo de sus paredes: esas son para cajas sin compartimentos, y sus interruptores vuelven en cuanto la caja vuelve a tener un solo compartimento. En una caja de 3 unidades de altura o más, elige un compartimento con {{ui:prop.gridfinityCompartmentRow}} y {{ui:prop.gridfinityCompartmentColumn}} (cada campo aparece solo cuando hay más de una fila o de una columna) y, en {{ui:prop.gridfinityCompartmentLabel}}, el lado contra el que va su repisa: la pared de la caja o un separador; un lado solo se ofrece mientras una repisa en él siga dejando abierto el compartimento. {{ui:prop.gridfinityCompartmentLabelLength}} va de 10 a 100; una repisa que fuera a quedar más corta de 4 mm se omite, y una nota debajo lo indica. Si la repisa es más corta, aparece {{ui:prop.gridfinityLabelOffset}}: {{ui:gridfinity.alignLeft}}, {{ui:gridfinity.alignMiddle}} o {{ui:gridfinity.alignRight}} en un lado trasero o delantero, o {{ui:gridfinity.alignBack}}, {{ui:gridfinity.alignMiddle}} o {{ui:gridfinity.alignFront}} en un lado izquierdo o derecho. {{ui:prop.gridfinityLabelWidth}} es de 14 mm mientras no la cambies, menos en un compartimento estrecho, y una repisa nunca llega tan lejos como para cerrar su compartimento: delante de ella quedan siempre al menos 6 mm libres. Las repisas tienen el perfil de las de las paredes, y {{ui:prop.gridfinityLabelCorner}} y {{ui:prop.gridfinityLabelCornerSize}}, en {{ui:inspector.properties}}, también se les aplican. + +## Bisagra + +La {{ui:shape.hinge}} se imprime de una pieza y después se mueve (*print-in-place*): dos palas abiertas y planas sobre la placa, con nudos alternos sobre un mismo eje entre ellas. El pasador pertenece a la pala trasera y pasa con holgura por los nudos de la delantera. Ajustas {{ui:prop.hingeLength}}, {{ui:prop.hingeOpenWidth}} y {{ui:prop.hingeKnuckleDiameter}}, además del número de {{ui:prop.hingeKnuckles}} (impar, para que el pasador quede sujeto por los dos extremos), {{ui:prop.hingePinDiameter}} y {{ui:prop.hingeLeafThickness}}. + +{{ui:prop.hingeClearance}} es la separación entre las partes móviles: alrededor del pasador, entre los nudos y delante de las palas. Con 0,4 mm, en una impresora bien ajustada la bisagra suele soltarse con un pequeño giro; si las piezas se sueldan, súbela, y si baila demasiado, bájala. Imprime la bisagra tumbada, tal como aparece en la placa, sin soportes. Si prefieres usar un pasador propio, como un trozo de filamento o de alambre, que en una bisagra pequeña gira más suave que uno impreso, activa {{ui:prop.hingePinless}}: el pasador impreso desaparece y el taladro, del diámetro del pasador más la holgura, atraviesa todos los nudos, también los de los extremos. Puedes añadir orificios a las palas o agruparlas en una pieza más grande, como una tapa. + +## Moleteado + +El {{ui:shape.knurl}} es una empuñadura redonda con estrías alrededor, para pomos, ruedecillas y mangos de herramientas. En {{ui:prop.knurlPattern}} eliges {{ui:knurl.straight}}, con estrías a lo largo del eje como en el mando de un aparato; {{ui:knurl.diamond}}, en el que dos filas de estrías oblicuas se cruzan formando pequeños rombos, o {{ui:knurl.round}}, con estrías y crestas a lo largo del eje que forman una onda suave de arcos, un agarre agradable sin crestas vivas. Las estrías redondas se quedan menos profundas que medio paso, porque si no las crestas se abombarían en su base; si pones una profundidad excesiva, se reduce sola. Ajustas {{ui:prop.diameter}} y {{ui:prop.height}}, el número de {{ui:prop.knurlCount}} y {{ui:prop.knurlDepth}}; en el moleteado cruzado, también {{ui:prop.knurlAngle}} respecto al eje. {{ui:prop.knurlChamfer}} achaflana los dos extremos a 45 grados, como en un pomo torneado; con 0 quedan vivos. + +El moleteado recto y el redondo son cuerpos exactos, así que sus aristas se pueden achaflanar y redondear. El cruzado sigue siendo una malla, porque como cuerpo exacto tardaría casi un minuto en calcularse con 30 estrías. Para un pomo sobre un eje, agrupa el moleteado con un orificio, por ejemplo una {{ui:shape.thread}} configurada como orificio roscado. Casi ninguna impresora imprime limpias las estrías de menos de 0,4 mm de profundidad, y layerling no las pone a menos de 0,8 mm unas de otras alrededor de la empuñadura: una empuñadura fina lleva menos. + +## Cola de milano + +La {{ui:shape.dovetail}} es la unión en la que dos piezas quedan trabadas entre sí y solo se pueden encajar deslizándolas de lado. Ajustas la anchura en el extremo ancho, {{ui:prop.dovetailNeckWidth}} y la longitud de la cola. Copia la cola para la otra pieza y convierte la copia en orificio: {{ui:prop.dovetailClearance}} da entonces un poco de juego para que la unión no se atasque después de imprimir. + +> **Consejo:** Al agrupar, un orificio roscado corta la pieza con la que se solapa. Así que mételo un poco dentro del material en lugar de dejarlo solo tocando la superficie. + +## Orificio en lágrima + +Cuando se imprime un orificio tumbado, su parte superior es un puente, y ese puente se descuelga. Por eso el {{ui:shape.teardrop}} tiene una punta arriba: cada capa se apoya en la de debajo, y el orificio sale lo bastante redondo sin soportes. Pon {{ui:prop.teardropDiameter}} a la medida del orificio, unos 3,4 mm para un tornillo M3, y {{ui:prop.teardropLength}} lo bastante larga para que atraviese la pieza. {{ui:prop.teardropTipAngle}} es de 90°, así que los flancos se juntan a 45°. La mayoría de las impresoras lo resuelven limpiamente; una punta más plana necesita más altura, y una más aguda la ahorra. + +Convierte la lágrima en orificio y agrúpala con la pieza. Su longitud va en el sentido de la profundidad y la punta mira hacia arriba. Para un orificio en la otra dirección, gírala 90° alrededor del eje vertical. + +Un **orificio roscado** tumbado se descuelga por arriba de la misma manera. Dale su propia lágrima: añade, como orificio, un {{ui:shape.teardrop}} cuyo {{ui:prop.teardropDiameter}} sea el del núcleo de la rosca, el diámetro que dejan libre sus dientes (unos 8,4 mm para M10), con la misma longitud que el orificio roscado, y selecciona los dos. Haz clic en {{ui:editor.tool.align}} y alinéalos por el centro (el centro de la lágrima es el de su parte redonda, no el de su caja con la punta, así que los dos círculos quedan uno sobre otro) y agrupa los dos con la pieza. La rosca se corta como siempre y la punta abre la parte superior del orificio, así que se imprime sin soportes. + +## Escariado y avellanado + +A menudo, la cabeza de un tornillo no debe sobresalir. El {{ui:shape.counterbore}} recorta un alojamiento redondo para un tornillo de cabeza cilíndrica (DIN 912), y el {{ui:shape.countersink}}, un cono para un tornillo de cabeza avellanada (DIN 7991). Los dos se colocan con el lado de la cabeza hacia arriba: {{ui:prop.screwHoleHead}} es el diámetro del alojamiento o del cono; {{ui:prop.screwHoleShaft}}, el del taladro de debajo, y {{ui:prop.screwHoleLength}}, la longitud completa. En el escariado ajustas {{ui:prop.screwHoleHeadDepth}}, y en el avellanado, {{ui:prop.screwHoleAngle}} (90° va bien para tornillos de cabeza avellanada). Los valores predeterminados sirven para un tornillo M3. + +El {{ui:shape.doubleCountersink}} es un orificio achaflanado por las dos caras, para una placa que tiene que quedar bien por delante y por detrás. No tiene entrada propia en la biblioteca de formas: toma el {{ui:shape.countersink}} y activa {{ui:prop.screwHoleBothSides}} en sus propiedades (los cuerpos que ya son un doble avellanado muestran el interruptor activado): en cada extremo, un cono se abre hasta el {{ui:prop.screwHoleHead}}, con el {{ui:prop.screwHoleShaft}} entre los dos. {{ui:prop.screwHoleAngle}} y {{ui:prop.screwHoleLength}} se ajustan como antes. Si el orificio es demasiado corto para dos conos completos, se encuentran en el centro con ese ángulo y la caña queda más ancha de lo que fijaste: con una cabeza de 10 mm, una caña de 6 mm, 90° y una longitud de 2 mm, salen dos conos que van de 10 a 8 mm. Como orificio, se hace pasar a través de una pieza igual que los demás. + +Convierte la forma en orificio y agrúpala con la pieza. Haz que su parte superior termine un poco por encima de la superficie en la que debe asentar la cabeza, para que el alojamiento quede bien abierto. Para el alojamiento de una tuerca hexagonal, usa como orificio un {{ui:shape.polygon}} de seis lados. diff --git a/docs/guide/es/10-measuring-and-notes.md b/docs/guide/es/10-measuring-and-notes.md new file mode 100644 index 000000000..22f141bc9 --- /dev/null +++ b/docs/guide/es/10-measuring-and-notes.md @@ -0,0 +1,79 @@ +--- +title: Medidas y notas +summary: Cinta métrica, regla y escuadra, distancias al origen, notas que se quedan unidas a una pieza y puntos de referencia a los que se ajustan las cosas. +--- + +Para construir una pieza con exactitud hay que medir. layerling tiene varias herramientas para ello, y ninguna acaba en una exportación. El grosor de las paredes y las holguras dentro de una pieza se miden mejor en la [vista de sección](chapter:view-and-workplane) con {{ui:camera.sectionMeasure}}. + +## La cinta métrica + +La cinta métrica está en el extremo inferior de la barra de cámara, en el borde izquierdo ({{ui:camera.tapeTools}}). Mide distancias entre vértices, aristas y caras. Al hacer clic en ella se abren cinco botones. Si tapan lo que quieres medir, arrástralos por el asa de la izquierda a cualquier punto de la zona de trabajo; un doble clic en el asa los devuelve a su sitio: + +![La cinta métrica con sus botones: añadir medida, mover los puntos de medida, quitar medida, aristas enteras y eliminar todas las medidas.](shot:tape-menu) + +1. **{{ui:camera.addMeasurement}}:** Haz clic en un punto, arrastra hasta el siguiente y haz clic en él. La distancia aparece rotulada. En una arista o una cara opuesta, el segundo punto se ajusta en ángulo recto con el primero cuando el puntero se acerca, o en cualquier punto de esa arista o cara mientras mantienes pulsada [[Mayús]]. Sobre la misma cara o sobre la zona de trabajo, [[Mayús]] mantiene la medida recta a lo largo del eje principal. +2. **{{ui:camera.moveMeasurement}}:** Agarra los puntos y muévelos; el número se actualiza solo. +3. **{{ui:camera.deleteMeasurement}}:** Después, haz clic en una medida para quitarla. Mientras **{{ui:camera.addMeasurement}}** está activo, si mantienes pulsada [[Mayús]] o [[Ctrl]] ([[Cmd]] en el Mac) y haces clic en un punto o una línea de medida, se elimina al momento sin cambiar de modo. +4. **{{ui:camera.tapeWholeEdges}}:** Un clic en una arista la mide entera; por ejemplo, la longitud de una circunferencia. Con esta opción desactivada, el clic pone un punto en la arista y el segundo punto puede ir en cualquier sitio, así que puedes medir el diámetro o cualquier otra distancia. [[Alt]] invierte la opción durante un clic. En un círculo, el punto opuesto al primero se ajusta cuando el puntero se acerca, y los puntos quedan sobre el círculo real, así que el diámetro sale exacto. +5. **{{ui:camera.deleteAllMeasurements}}:** Quita todas las medidas a la vez. Como no se puede deshacer, layerling te lo pregunta antes; si no hay medidas, no hay nada que hacer. +6. **{{ui:camera.tapeMarkMiddle}}:** Bajo el número de cada medida hay un pequeño botón con un punto de mira. Pone un [punto de referencia](#puntos-de-referencia) en el centro de la medida: si has hecho clic en una arista redonda, como el contorno de un orificio, en el centro de ese círculo (también en una malla importada, donde nada más marca el centro de un orificio); en un diámetro o en cualquier medida recta, en su punto medio. Una forma que arrastres se ajusta entonces a ese punto con su centro. Si el punto ya existe, no se crea dos veces. La cinta métrica se ajusta a un punto de referencia igual que a un vértice, así que puedes medir desde el centro de un círculo o desde el punto medio de una línea: márcalo y luego haz clic en el punto. + +[[Esc]] sale del modo de medición. + +## La regla + +La {{ui:shape.ruler}} la sacas de la biblioteca de formas. Es solo una herramienta de medida: no aparece en ninguna exportación y no se puede agrupar ni cortar. Para cada cuerpo que toque la regla o se solape con ella, muestra su extensión como un número flotante, directamente en la vista. Puedes cambiar ese número ahí mismo y el cuerpo se adapta. El símbolo más flotante crea una copia de la forma medida. Su escala impresa está en milímetros; si cambias la unidad a pulgadas (el interruptor de abajo a la derecha), pasa a pulgadas, con una raya cada dieciseisavo de pulgada y las pulgadas enteras numeradas. + +## La escuadra + +A veces se mide mejor en ángulo recto. Haz clic en {{ui:camera.cornerRulerTool}} en la barra de cámara y luego en la zona de trabajo. Ahí se coloca una escuadra con dos brazos en ángulo recto y marcas de graduación, como una escuadra de carpintero. Tampoco tiene cuerpo propio. Si haces clic cerca de la esquina de un cuerpo, su esquina se ajusta justo ahí. + +La escuadra se apoya en el plano de trabajo. Si este está sobre el lateral de un cuerpo, la escuadra también queda sobre ese lateral; consulta [Vista y plano de trabajo](chapter:view-and-workplane). Así se acota en una pared vertical: coloca el plano de trabajo sobre la pared, pon la escuadra en su esquina superior izquierda y haz clic en el tirador hasta que los brazos apunten a la derecha y hacia abajo. + +- **Arrastrar el tirador** la mueve. +- **Un clic corto en el tirador** la gira 90°. +- **La ×** que hay al lado la quita. +- **El botoncito a la izquierda del tirador** cambia desde dónde se mide: desde el exterior de un cuerpo (extremo, un icono con líneas) o desde su centro (punto medio, un punto de mira). Junto a cada número verde hay un pequeño interruptor del mismo tipo que solo cambia ese número: en un cilindro de pie, el centro en los dos brazos y la base en la altura; en uno tumbado, el centro a lo ancho y un extremo a lo largo. Cuando los tres vuelven a coincidir, el botón del tirador muestra el modo común. + +Si hay cuerpos junto a uno de los brazos, la escuadra muestra sus medidas automáticamente. Esto solo funciona en la placa base, no en el lateral de un cuerpo. + +Cuando seleccionas un cuerpo, la escuadra muestra en verde a qué distancia está de la esquina, a lo largo de los dos brazos y en altura. Haz clic en un número verde para escribir una distancia, y el cuerpo se desplaza exactamente ahí. Con varios cuerpos seleccionados, cuentan como uno solo: se mide su contorno común, y un valor escrito los mueve todos juntos sin cambiar su posición relativa. + +Las líneas guía de los números verdes van por el suelo, el plano en el que está la escuadra, hasta el punto que queda debajo o al lado del cuerpo; la altura tiene su propia flecha. El interruptor de cada número está en el marco del número. Los brazos y las marcas son líneas en el espacio: un cuerpo situado delante las tapa, igual que taparía una escuadra de verdad. El ojito que hay debajo del tirador cambia esto: con el ojo tachado, los cuerpos tapan la escuadra (así empieza); con el ojo abierto, la escuadra se ve siempre por encima de todo. Los números de los brazos se atenúan donde hay un cuerpo delante. + +Con el punto medio, los números verdes cuentan hasta el centro del cuerpo, también en altura. Así colocas una esfera con su centro exactamente a 15 mm de una arista sin tener que restar el radio. En una pared, colocas así un orificio a 40 mm de la izquierda y a 190 mm de arriba: selecciona el orificio, cambia a punto medio y escribe 40 y 190. Ahí la altura se cuenta desde la pared hacia fuera. + +Tanto la cinta métrica como la escuadra se quedan donde están mientras dibujas un boceto y vuelves a la vista 3D. No se guardan con el diseño ni en el historial, y desaparecen al recargar la página. + +## Distancias al origen y al mover + +En los ajustes, en {{ui:workspace.appearance}}, hay dos interruptores para ver medidas en directo: + +- {{ui:workspace.showMoveDimensions}} muestra cuánto te desplazas mientras arrastras. +- {{ui:workspace.showOriginDimensions}} muestra las distancias de la selección al origen de la placa, también con varios cuerpos seleccionados. + +Con {{ui:workspace.dimensionsAlwaysVisible}}, las medidas se ven siempre. + +## Notas + +Una nota recoge lo que la geometría no dice: «Este tornillo va 0,3 mm demasiado justo», «falta imprimir la tapa», «medida de Pedro». Coloca una con {{ui:editor.tool.note}} o con la tecla [[N]]. + +- Si colocas la nota **sobre un cuerpo**, se desplaza con él. +- Si la colocas **al lado**, se queda en el plano de trabajo ({{ui:note.free}}). +- {{ui:note.detach}} suelta del cuerpo una nota unida a él. +- {{ui:editor.tool.group}} incluye en el grupo una nota unida; {{ui:editor.tool.ungroup}} se la pasa a la pieza visible que tenga debajo, aunque sea un grupo interior. Mientras un grupo está abierto con {{ui:group.edit}}, sus notas se mueven con la pieza que tienen debajo y vuelven al grupo con {{ui:group.done}}; si cancelas, vuelven a quedar como estaban. +- Si se elimina su cuerpo, o ya no queda ningún cuerpo visible debajo, la nota se queda donde estaba, sobre el plano de trabajo. +- Arrastrar la chincheta mueve la nota. Un clic en la chincheta pliega la tarjeta y solo queda el número pequeño; otro clic la vuelve a abrir. Un clic en el texto lo edita. +- Mientras escribes, [[Intro]] guarda el texto y [[Esc]] lo deja como estaba antes de empezar; [[Mayús]]+[[Intro]] empieza una línea nueva. + +Las notas se guardan en el diseño, no aparecen en ninguna exportación y se pueden mostrar u ocultar con {{ui:visibility.notes}} (en {{ui:editor.visibilityOptions}}, la flecha junto al icono del ojo). + +## Puntos de referencia + +Un punto de referencia es una simple marca en el espacio, como una raya de lápiz o un punto de trazado en un taller: no pertenece a ningún cuerpo, nunca se imprime y otras cosas se ajustan a él. Haz clic derecho en un cuerpo y elige {{ui:contextMenu.markCenter}}, {{ui:contextMenu.markCorners}} o {{ui:contextMenu.markMidpoints}}: los puntos aparecen en la cara superior del cuerpo (de toda la selección, si has seleccionado varios). + +- Arrastra un punto para moverlo, o haz clic en él para ver sus coordenadas y escribir otras; están en la unidad que tengas configurada. Si una tarjeta tapa algo, puedes apartarla arrastrándola por su título, y cada una por separado: las demás se quedan donde están, y un doble clic en el título la devuelve a su sitio. La última tarjeta que has tocado queda delante de las demás. **Eliminar todo** en una tarjeta, o **Eliminar todos los puntos de referencia** en el menú del clic derecho (de un cuerpo o de una zona vacía de la vista 3D), elimina todos los puntos a la vez. {{ui:common.delete}} quita ese punto. +- La cinta métrica también puede marcar un punto: {{ui:camera.tapeMarkMiddle}}, el botón con el punto de mira que hay bajo una medida, pone uno en su centro, por ejemplo en el centro de un orificio redondo. Y mide desde un punto: la cinta se ajusta a los puntos de referencia igual que a los vértices. +- Cuando arrastras una forma, sus aristas y su centro se ajustan a un punto igual que se ajustan a otras formas ({{ui:workspace.objectSnap}}). La escuadra también se ajusta a los puntos. +- Los puntos se guardan en el diseño, no aparecen en ninguna exportación y se muestran u ocultan junto con las notas mediante {{ui:visibility.notes}}. +- Una IA puede marcarlos, listarlos y quitarlos con `layerling_add_reference_points`, `layerling_list_reference_points` y `layerling_remove_reference_points`. diff --git a/docs/guide/es/11-printing.md b/docs/guide/es/11-printing.md new file mode 100644 index 000000000..d64327215 --- /dev/null +++ b/docs/guide/es/11-printing.md @@ -0,0 +1,57 @@ +--- +title: Preparar la impresión 3D +summary: Elegir tu impresora, recibir un aviso cuando algo no cabe y colocar bien la pieza. +--- + +## Elegir tu impresora + +Abre los ajustes (la rueda dentada de la cinta, {{ui:editor.workspaceSettings}}) y pasa al apartado {{ui:workspace.workplane}}. En {{ui:workspace.printer}} eliges tu impresora en una lista de más de 220 modelos habituales, entre ellos de Bambu Lab, Prusa, Creality, Anycubic, Elegoo y muchas marcas más. + +![Los ajustes del plano de trabajo con una impresora elegida. La cama y la altura máxima de impresión salen del perfil del laminador.](shot:settings-workplane) + +Pasan tres cosas: + +- El plano de trabajo toma el tamaño de la cama. +- En la esquina del plano de trabajo aparecen el nombre de la impresora y su volumen de impresión. Si el texto te estorba, desactívalo con {{ui:workspace.showPlateLabels}}, en {{ui:workspace.workplane}}; eso vale también para el nombre del diseño, delante a la izquierda. +- layerling te **avisa** cuando algo no cabe. + +Los perfiles de impresora vienen de OrcaSlicer, así que son los mismos que conoce tu laminador (*slicer*). Si prefieres trabajar sin impresora, elige {{ui:workspace.printerNone}}. También puedes fijar a mano el tamaño del plano de trabajo. + +## Cuando algo no cabe + +Un cuerpo que se sale por el borde de la cama queda marcado. Un mensaje te dice por qué lados sobresale y cuánto. Lo mismo pasa si la pieza es **demasiado alta**: la altura se cuenta desde el cuerpo más bajo, igual que el laminador apoya el modelo en la cama. + +![La caja es más ancha que la cama de la Bambu Lab A1 mini. El mensaje de abajo dice cuánto.](shot:printer-overhang) + +El aviso no te impide seguir trabajando. Es una pista para que no descubras ya en el laminador que la pieza es demasiado grande. Una pieza demasiado grande a menudo se puede partir: córtala en dos con {{ui:editor.tool.split}} e imprime las dos mitades por separado. + +Si dejas piezas aparcadas fuera de la cama a propósito, haz clic en la crucecita del mensaje. El aviso desaparece entonces para esos cuerpos en concreto. Si uno de ellos vuelve a caber y más tarde lo vuelves a sacar, o si otro cuerpo se sale, el mensaje reaparece. Los cuerpos ocultos nunca cuentan, así que ocultar las piezas aparcadas también funciona. + +## Colocar bien la pieza + +Cómo se apoya una pieza en la cama decide su resistencia y su aspecto. Te ayudan dos herramientas del grupo {{ui:editor.group.arrange}}: + +- {{ui:editor.tool.layFlat}}: haz clic en una cara y la pieza queda apoyada sobre ese lado. La mejor orientación de impresión con un solo clic. +- {{ui:editor.tool.dropToWorkplane}} ([[D]]): pone la pieza sobre el plano de trabajo cuando se ha quedado flotando en el aire. + +Unas cuantas reglas prácticas para la orientación: + +- Las caras grandes y planas, abajo. Son las que mejor se adhieren. +- Coloca las piezas largas que van a soportar esfuerzos de modo que las capas no queden perpendiculares a la carga. Las capas son la dirección más débil. +- Evita los voladizos de más de 45°, o ponles soportes en el laminador. + +## Encontrar voladizos + +En el menú que hay junto al ojo ({{ui:editor.group.visibility}}), **Mostrar voladizos** marca los voladizos. Toda cara que mire hacia abajo con una inclinación de más de 45° aparece entonces rayada en rojo y blanco: ahí la impresora necesitaría soportes. Lo que se apoya en la cama queda sin marcar. Así ves ya mientras diseñas si una esfera, un arco o un orificio horizontal se imprime sin soportes; el [orificio en lágrima](chapter:threads-and-mechanics) está pensado justo para eso. Gira la pieza o apóyala sobre otra cara con {{ui:editor.tool.layFlat}}, y el rayado se actualiza al momento. + +La inclinación que aguanta tu impresora se fija en los ajustes, en {{ui:workspace.appearance}}: de 30° (prudente) a 70° (para impresoras con buena refrigeración de capa). Una cara que se apoya sobre otro cuerpo se marca igualmente: layerling solo mira la propia cara. + +## Grosor de pared, holgura y chaflanes + +- Las paredes deberían tener como mínimo dos líneas de extrusión de ancho, es decir, 0,8 mm con una boquilla de 0,4 mm. Las piezas resistentes necesitan de 1,2 a 2 mm. +- Donde dos piezas encajan una en otra, necesitas holgura: normalmente de 0,2 a 0,4 mm, según la impresora. Haz una pequeña pareja de prueba antes de imprimir la pieza grande. +- Mucha gente achaflana ligeramente la arista inferior que se apoya en la cama. Así se evita que la primera capa se ensanche («pata de elefante»). + +## Cuando lo tengas listo + +Elige {{ui:editor.export}} y luego **STL** o **3MF**. STL es el formato más sencillo. 3MF conserva los nombres y los colores de cada cuerpo, así que es práctico cuando imprimes en varios colores. La ventana de exportación también muestra cuántos gramos y metros de filamento necesitaría la pieza impresa maciza. Más en [Archivos y guardado](chapter:files-and-saving). diff --git a/docs/guide/es/12-files-and-saving.md b/docs/guide/es/12-files-and-saving.md new file mode 100644 index 000000000..4e878965d --- /dev/null +++ b/docs/guide/es/12-files-and-saving.md @@ -0,0 +1,106 @@ +--- +title: "Archivos: guardar y compartir" +summary: Dónde se guardan tus diseños, cómo hacer copias de seguridad, qué formatos importa y exporta layerling y qué se puede hacer en un servidor compartido. +--- + +## Dónde se guardan tus diseños + +layerling lo guarda todo en el navegador de tu ordenador. No hay cuenta y no se sube nada. Cada cambio se guarda solo. La imagen de vista previa de la página de inicio muestra la vista que tenías delante la última vez que volviste con {{ui:editor.homeDashboard}}. Si abres layerling en el mismo navegador días después, todo sigue ahí. + +Si vuelves a la página de inicio desde un diseño vacío, layerling te pregunta si quieres conservarlo. {{ui:confirm.yes}} o [[Intro]] lo conserva y {{ui:confirm.no}} lo quita, para que no se acumulen diseños vacíos. Si el diseño está en una carpeta compartida de un servidor, {{ui:confirm.no}} borra el archivo del servidor para todos los que lo usan. + +Esto tiene un inconveniente: si borras los datos del navegador o te cambias a otro ordenador, pierdes los diseños. **Así que haz copias de seguridad de tus trabajos importantes en un archivo.** + +## Carpetas para tus diseños + +Cuando tienes decenas de diseños, una sola lista no basta. En la página de inicio, {{ui:shared.newFolder}} crea una carpeta para los diseños de este navegador; al hacer clic en la carpeta, se abre. Las carpetas pueden contener otras carpetas. + +- **Meter en una carpeta:** arrastra un diseño hasta la carpeta, o elige {{ui:shared.moveTo}} en el menú del diseño, que muestra todas las carpetas. Si tienes una carpeta abierta, los diseños nuevos y los archivos que abras o importes van a parar a ella. +- **Sacar de una carpeta:** la primera tarjeta de cada carpeta, `..`, y la línea que hay bajo {{ui:dashboard.projects}} te llevan de vuelta; también puedes soltar un diseño sobre ellas. Una carpeta que arrastres sobre otra queda dentro de ella. +- **Cambiar el nombre y eliminar** están en el menú de la carpeta. Al eliminar una carpeta no se elimina ningún diseño: lo que contenía sube un nivel. +- **La búsqueda** mira en todas las carpetas; cada diseño encontrado muestra su carpeta, y al hacer clic en ella se abre. + +{{ui:dashboard.backupAll}} conserva las carpetas: en el archivo de copia de seguridad, los diseños van dentro de sus carpetas, y al restaurar la copia vuelven a ellas. Las carpetas de este navegador son independientes de las carpetas de un servidor. Las imágenes de las tarjetas también van en el archivo, así que reaparecen en cuanto restauras la copia. + +## Hacer copias de seguridad y compartir + +En la página de inicio, cada diseño tiene un menú con las opciones de cambiar el nombre, duplicar y eliminar. Con {{ui:dashboard.backupAll}} metes todos los diseños en un único archivo. {{ui:dashboard.restoreBackup}}, al lado, en el aviso sobre los diseños guardados en el navegador (que también aparece en un ordenador nuevo sin diseños), los recupera, también en otro navegador o en otro ordenador; {{ui:dashboard.importGeometry}} admite ese mismo archivo. Las {{ui:myShapes.title}} de este navegador viajan en el mismo archivo, en la carpeta `Custom shapes`; consulta [Formas](chapter:shapes). Si restauras una copia de seguridad en un navegador que ya tiene algunos de esos diseños, no se añaden por segunda vez; el aviso te dice cuántos había ya. + +Para hacer una copia de un solo diseño, ve al editor: haz clic en {{ui:editor.export}}, elige el formato **LYL** y haz clic en {{ui:export.saveProject}}. El archivo LYL es el formato de diseño propio de layerling y lo contiene todo: formas, grupos, bocetos, datos CAD, archivos de origen importados y el historial, es decir, los pasos que se pueden deshacer. En {{ui:export.historyTitle}} eliges cuántos de los últimos pasos se incluyen; de entrada, los que conservan los ajustes (la rueda dentada de la cinta) en {{ui:workspace.history}}. La última posición, {{ui:export.historyNone}}, guarda el diseño solo con su estado actual: así compartes un archivo sin sus pasos de deshacer. Lo exportado es una copia con el {{ui:export.fileName}} que le pongas; el diseño de tu navegador conserva su historial. Los archivos `.skf` de versiones anteriores se siguen pudiendo abrir; al guardarlos, se guardan como `.lyl`. + +**Guardar en tu propia carpeta (Chrome y Edge).** En estos navegadores, el botón abre el cuadro de diálogo de guardar de tu sistema, así que eliges tú la carpeta y el nombre, y puedes sustituir un archivo que ya exista. Después, [[Ctrl]]+[[S]] vuelve a guardar el diseño en ese mismo archivo, sin cuadro de diálogo. Un diseño abierto desde un archivo `.lyl` con {{ui:dashboard.importGeometry}} o con el botón de abrir de la ventana de exportación también se guarda en ese archivo. Puede que el navegador te pida una vez permiso para modificar el archivo. Al recargar la página, el diseño olvida su archivo y el siguiente [[Ctrl]]+[[S]] te lo vuelve a preguntar; el cuadro de diálogo se abre en la última carpeta que usaste. Firefox y Safari no permiten que una página escriba así en los archivos. En ellos, el archivo se descarga en la carpeta Descargas, como siempre, y [[Ctrl]]+[[S]] lo vuelve a descargar; en Firefox puedes hacer que pregunte la carpeta cada vez, en Ajustes, General, Descargas. + +## Exportar + +Haz clic en {{ui:editor.export}} o pulsa [[Ctrl]]+[[E]]. + +![La ventana de exportación con los formatos STL, 3MF, OBJ, STEP, SVG, PNG, LYL y 2D.](shot:export-panel) + +Arriba está el nombre del archivo y, debajo, eliges el formato. Si hay algo seleccionado, solo se exporta la selección; si no, el diseño entero. Si la selección deja fuera piezas visibles, una nota de la ventana te lo dice claramente, y {{ui:export.selectAll}} selecciona todo lo visible con un clic. En cuanto el archivo está escrito, la ventana se cierra sola; si la exportación falla, sigue abierta con el mensaje. + +| Formato | Para | Lo que debes saber | +| --- | --- | --- | +| **STL** | laminador (*slicer*) e impresión 3D | Una malla de triángulos. El formato más sencillo y extendido. Un STL no tiene piezas: los cuerpos que se solapan se unen en una sola malla. Para mantenerlos como piezas separadas, exporta en 3MF. En Chrome y Edge, la primera exportación STL pregunta dónde guardar, y las siguientes exportaciones STL del diseño escriben en ese archivo, hasta que escribas otro nombre en el campo del nombre del archivo o pulses {{ui:export.stlSaveAs}}. | +| **3MF** | laminador con colores | Cada cuerpo sigue siendo una pieza propia, con su nombre y su color. Los cuerpos que se solapan solo se unen si comparten color; cuando una forma está dentro de otra de otro color, como un logotipo en una placa, la que se creó primero deja sitio a la posterior. Sirve para PrusaSlicer, Bambu Studio, OrcaSlicer y Cura. Al abrirlo, Bambu Studio y OrcaSlicer preguntan cómo asignar los colores a tus filamentos y dicen que el archivo «no es de Bambu»: el mensaje es inofensivo. | +| **OBJ** | modelado e intercambio | Un formato de malla muy compatible. Los colores se guardan como colores de vértice en el mismo archivo, sin un `.mtl` aparte. Bambu Studio y OrcaSlicer los leen y preguntan, como con el 3MF, cómo asignarlos a tus filamentos; otros programas solo ven la forma. Igual que en 3MF, los cuerpos que se solapan solo se unen si comparten color. | +| **STEP** | un programa de CAD completo | Conserva cajas, cilindros, esferas y conos como geometría exacta, y también las formas hechas a partir de un contorno (estrella, corazón, elipse, tubo, semiesfera, tejado redondo, caja redondeada, cola de milano, los taladros y más), el tubo curvado, las roscas, los muelles y los engranajes, además de los redondeos y chaflanes. La primera exportación STEP de cada sesión carga una vez el núcleo CAD (unos 22 MB). | +| **SVG** | cortadora láser y plóter | Una vista superior limpia en milímetros, con orificios y contornos curvos. En {{ui:export.svg.view}}, {{ui:export.svg.viewFootprint}} escribe solo los contornos con los que los objetos se apoyan en el plano de trabajo. | +| **PNG** | mensajes en foros, webs de impresión 3D, consultas | Una imagen de la vista tal como está, al doble de resolución y sin tiradores, marcos de selección ni medidas. {{ui:export.png.plate}} y {{ui:export.png.transparent}} se eligen en la ventana. Antes, gira y acerca la vista hasta que la imagen quede bien; aquí la selección no importa. | +| **LYL** | el propio layerling | El diseño editable con todo lo que le pertenece. | +| **2D** | taller, torno y fresadora, documentación | Un plano a escala 1:1 en PDF o SVG: vistas frontal, superior y lateral derecha en una hoja ISO. Más información abajo. | + +**STL en tu propia carpeta (Chrome y Edge).** En estos navegadores, la primera exportación STL de un diseño abre el cuadro de diálogo de guardar de tu sistema, así que eliges tú la carpeta y el nombre, y puedes sustituir un archivo que ya exista. A partir de ahí, cada exportación STL del diseño escribe en ese mismo archivo sin cuadro de diálogo; la ventana de exportación muestra en qué archivo, y **Guardar como…**, junto al botón de exportar, elige otro. El cuadro de diálogo recuerda su propia carpeta, distinta de la de los diseños, así que los archivos para el laminador pueden quedarse junto al laminador. Al recargar la página, el diseño olvida su archivo STL y la siguiente exportación vuelve a preguntar. Firefox y Safari descargan el archivo como siempre. + +Al exportar, un orificio que no hayas agrupado se resta de todos los cuerpos a los que llega, tal como lo muestra la vista. Así que no hace falta agrupar antes de cada exportación. Con una selección, solo cuentan los orificios seleccionados. Un orificio no se puede exportar solo; layerling te lo indica. + +STEP solo admite cuerpos CAD exactos. Lo que no se puede escribir de forma exacta, como una malla importada en STL, se queda fuera. El mensaje que aparece tras exportar nombra esos cuerpos y explica por qué. Para la impresora, usa STL o 3MF, que lo llevan todo. + +### Un plano para el taller + +Elige el formato **2D** (si pasas el ratón por encima, pone «Plano») y, debajo del nombre del archivo, PDF o SVG. Si hay algo seleccionado, solo se dibuja la selección; si no, todo el diseño visible; los orificios que no hayas agrupado siguen cortando las piezas a las que llegan. + +layerling dibuja las vistas frontal, superior y lateral derecha en disposición de primer diedro (la lateral derecha, a la izquierda de la frontal, y la superior, debajo) en la hoja ISO más pequeña en la que quepan, de A4 a A0, o en una mayor si la pieza lo necesita. Siempre es a escala 1:1. Cada vista lleva su anchura y su altura totales, y las aristas que no se ven van en línea discontinua. Los taladros redondos paralelos a una dirección de vista llevan una cruz de centro y una etiqueta (F1, T1, R1), y una tabla al pie indica su diámetro y su posición, medida desde la esquina inferior izquierda de la vista. El cuadro de rotulación de la esquina inferior derecha contiene el nombre, la escala, las unidades, la fecha y el número de hoja. Los textos de la hoja siguen el idioma de la interfaz. + +Imprime al 100 % o a «tamaño real», o las longitudes no coincidirán. Lo que el plano no hace: no acota roscas, profundidades, tolerancias ni taladros inclinados, y las medidas salen del modelo como malla, así que son nominales. Una pieza muy detallada (más de 100 000 triángulos) o más de 200 taladros se rechazan con un mensaje; en ese caso, elige menos objetos. + +La proyección se basa en el trabajo de planos de Cadverix-3D, de WC3D. + +### ¿Cuánto filamento hace falta? + +En STL, 3MF, OBJ y STEP, el recuadro {{ui:export.estimateTitle}} muestra el volumen, el peso y la longitud de filamento de 1,75 mm de lo que se exporta. Cuenta igual que el archivo: solo los cuerpos visibles, con los orificios restados y los solapamientos una sola vez. A la derecha eliges el filamento: PLA, PETG, ABS, ASA, TPU o PA (nailon); el peso se ajusta a su densidad. El volumen es el del propio cuerpo. El peso y el filamento son una estimación aproximada para una impresión con paredes y relleno: bajo el título ajustas {{ui:export.estimateInfillLabel}} (15 % para empezar) y {{ui:export.estimateWallsLabel}} (2), y el recuadro te dice qué ha contado y cuánto pesaría la misma pieza maciza. Los ajustes de tu laminador deciden la cifra real, así que tómala como orientación: sirve para comparar diseños y para saber si te llegará la bobina. Con un relleno del 100 %, el recuadro cuenta la pieza como maciza, el límite superior. + +## Importar + +Con {{ui:editor.import}} o [[Ctrl]]+[[I]] traes archivos externos al diseño. + +![La ventana de importación: abrir o insertar diseños y soltar geometría.](shot:import-panel) + +- **{{ui:import.openProject}}:** Un diseño de layerling (`.lyl`, o un `.skf` antiguo) se abre como diseño nuevo. +- **{{ui:import.insertProject}}:** Los cuerpos de un diseño de layerling se añaden al que tienes abierto. Muy práctico para formas básicas que necesitas una y otra vez: créalas una vez, guárdalas y tráelas cada vez que te hagan falta. +- **Añadir geometría:** Suelta archivos STL, OBJ, 3MF, STEP, SVG, PNG o JPG en la ventana, o haz clic para elegir un archivo. Las mallas importadas se pueden girar, mover, cortar con orificios y usar como base para seguir construyendo. Un SVG entra como cuerpo de boceto, también el que sale de un vectorizador como picsvg.com o la función «Vectorizar mapa de bits» de Inkscape: sus contornos se convierten en las líneas y curvas de un boceto, de 4 mm de altura y que, vistas desde arriba, se leen igual que en el dibujo. En las propiedades ajustas su {{ui:prop.sketchFill}}, como superficie o como trazo por fuera, por dentro o centrado, y {{ui:prop.sketchSilhouette}} deja fuera los orificios; consulta [Bocetos](chapter:sketches), «Relleno y silueta». Los propios puntos se cambian en el modo de boceto. Si quieres que entre con un tamaño concreto, escribe antes la anchura en la ventana de importación, en **SVG e imagen: anchura en mm**, como en Tinkercad: el dibujo se escala a esa anchura, y la altura y la profundidad con ella, y el campo vuelve a quedar vacío después de esa importación; si lo dejas vacío, un SVG entra con su propio tamaño y una imagen, con 50 mm de anchura. Solo un SVG muy complicado, con más de 2500 líneas y curvas, entra como malla fija. Una imagen PNG o JPG se vectoriza en un contorno y entra del mismo modo, como cuerpo de boceto de 50 mm de anchura que puedes redimensionar después: se toma la parte de la imagen que no es fondo, y el fondo es la parte que ocupa más del borde de la imagen. Un SVG que no contiene más que una imagen se vectoriza igual. Una forma que no se puede convertir en sólido, como un contorno que se cruza consigo mismo o que se toca en un punto, se deja fuera, y tras la importación layerling te dice cuántas había. En ese caso, conviene unir en el programa de dibujo las piezas que se solapan, cerrar los contornos y volver a guardar el archivo. Los dibujos hechos en una misma página, como las capas de un documento exportadas como archivos separados, vuelven a quedar alineados si activas {{ui:import.keepSvgPage}} en la ventana de importación antes de importarlos: cada uno conserva su sitio en la página, mientras que, si no, cada uno se centra en sí mismo. Un OBJ o 3MF con colores entra como un cuerpo por color, cada uno en su sitio. En un OBJ, los colores están en el propio archivo, como en un OBJ de layerling, o en un `.mtl` que lo acompaña. Selecciona también ese archivo, o importa el ZIP completo, tal como Tinkercad entrega sus OBJ. Un 3MF lleva sus colores dentro, y en un proyecto de Bambu Studio, OrcaSlicer o PrusaSlicer cada pieza toma el color de su filamento. Un 3MF con varios objetos, como un proyecto con un objeto por placa, entra como un cuerpo por objeto; los modificadores, los volúmenes negativos y los bloqueadores de soportes del laminador se dejan fuera. El color pintado sobre las caras en el laminador no se lee. + +Un diseño guardado con una **versión más reciente de layerling** puede contener cosas que tu versión aún no conoce, como una forma nueva, un ajuste nuevo o fuentes propias. Si layerling no puede abrirlo por ese motivo, el mensaje indica las dos versiones. Si se abre, el aviso te dice que lo más reciente puede verse distinto aquí. En ambos casos, ayuda recargar la página: layerling.com sirve siempre la versión más reciente. La aplicación instalada la recoge la próxima vez que se inicia; en tu propio servidor, la actualización la instalas tú. + +Las imágenes de plantilla se añaden en el modo de boceto; consulta [Bocetos](chapter:sketches). + +## Simplificar una malla importada + +Una malla escaneada o esculpida suele tener muchos más triángulos de los que necesita su forma, y todos ellos se arrastran cada vez que mueves, cortas y guardas. {{ui:simplify.title}}, en el grupo Modificar (o en el menú del clic derecho del cuerpo), muestra la malla tal como es junto a lo que quedaría de ella con la proporción de triángulos que elijas; las dos vistas giran y se acercan a la vez con los mismos botones del ratón que la zona de trabajo. Indica cuánto quieres conservar, en porcentaje o en número de triángulos, y {{ui:simplify.apply}} se queda con la malla más ligera. El resultado es una malla simple: si era el resultado de un corte o una fusión, se pierden {{ui:group.edit}} y sus piezas originales. + +Cortar, fusionar e intersecar una malla importada se calcula en tu navegador, así que los ajustes del espacio de trabajo limitan cuántos triángulos puede tener una malla así ({{ui:workspace.booleanTriangleLimit}}). Una malla que supere el límite no se procesa, y el mensaje indica su número de triángulos; simplifica antes la malla, o sube el límite si tu ordenador lo aguanta. + +## Informar de un error + +Si layerling hace algo inesperado, guarda un {{ui:editor.bugReport}}: el enlace está abajo, en el pie de página, junto al foro. Es un archivo ZIP, porque GitHub y muchos foros rechazan un .lyl suelto: dentro van tu diseño como .lyl y un breve archivo de texto con la versión, el navegador, el tamaño de pantalla, los últimos mensajes y los errores que haya habido. La página de inicio abre el ZIP como una copia de seguridad, o puedes descomprimirlo y abrir el .lyl. No contiene nada personal. Adjunta el archivo a tu mensaje en el foro o en GitHub, para que se pueda reproducir el problema exactamente con tu diseño. + +Si layerling se detiene por un error, en lugar de una página en blanco aparece una ventana con el mensaje de error. Desde ella puedes guardar como archivo .lyl el último estado del diseño guardado en el navegador, volver a la vista general o empezar un diseño nuevo. El mensaje de error de la ventana y el archivo guardado te ayudarán cuando informes del fallo. + +## Diseños compartidos en un servidor + +Cuando layerling funciona en tu propio ordenador o servidor web, puede ofrecer una carpeta compartida en la que todos los usuarios guardan diseños. En la página de inicio aparece entonces como {{ui:dashboard.sharedProjects}}. Ahí puedes crear carpetas, mover diseños arrastrándolos y buscar en toda la carpeta. Un diseño que está ahí se guarda solo en ella. Un diseño de este navegador pasa al servidor si arrastras su tarjeta hasta la tarjeta del servidor, o con {{ui:dashboard.sendToServer}} en el menú de la tarjeta. Una copia de seguridad que abras va primero a este navegador, como cualquier diseño que abras; desde ahí, pasa los diseños al servidor. La página de inicio muestra cada diseño con su nombre de archivo, así que al cambiar el nombre de un diseño, en su tarjeta o arriba en el editor, también cambia el nombre del archivo en el servidor. Al eliminar un diseño o una carpeta, desaparece para siempre, junto con su copia de trabajo en este navegador. Las formas personalizadas guardadas en el servidor están en su carpeta `Custom shapes`; consulta [Formas](chapter:shapes). + +Dos cosas lo agilizan: {{ui:dashboard.sendAllToServer}}, en la página de inicio, pasa al servidor de una vez todos los diseños de este navegador, y si marcas {{ui:dashboard.newOnServer}}, cada diseño nuevo empieza en la carpeta del servidor, así que se guarda ahí desde el primer cambio. Esa marca se recuerda en este navegador. Un diseño que no se puede pasar (porque su nombre ya existe en el servidor, por ejemplo) se queda en el navegador, y el mensaje te dice cuántos son. + +Esto no es edición simultánea: quien abre un archivo trabaja en su propia copia. Si otra persona ha cambiado el archivo mientras tanto, layerling se niega a sobrescribirlo. + +En layerling.com esta función no está activada. Cómo configurarla en tu propio servidor se explica en el [README de GitHub](https://github.com/henmedia/layerling/blob/main/README.md). diff --git a/docs/guide/es/13-shortcuts.md b/docs/guide/es/13-shortcuts.md new file mode 100644 index 000000000..36fe6b54a --- /dev/null +++ b/docs/guide/es/13-shortcuts.md @@ -0,0 +1,38 @@ +--- +title: Atajos de teclado +summary: Todas las teclas de un vistazo, sacadas directamente del programa para que la lista esté siempre al día. +--- + +Los atajos funcionan mientras la zona de trabajo tiene el foco. Cuando escribes en un campo, no interfieren. En el Mac, [[Cmd]] sirve en todos los sitios donde aquí pone [[Ctrl]]. + +En el editor, {{ui:editor.keyboardShortcuts}}, en el grupo {{ui:editor.group.help}}, abre esta misma lista en una ventana. El botón de la impresora de la ventana ({{ui:shortcuts.print}}) imprime solo la lista, en negro sobre blanco y entera en una cara de una hoja A4 o carta, a tres columnas, para tenerla a mano como referencia rápida; el cuadro de diálogo de impresión del navegador también te ofrece guardarla como PDF. + +![La ventana de los atajos de teclado en el editor.](shot:shortcuts) + +## Búsqueda de comandos + +¿No encuentras una herramienta? Pulsa [[Ctrl]]+[[K]] o haz clic en la lupa del grupo {{ui:editor.group.help}} y escribe lo que buscas: una herramienta («redondeo», «reflejar»), una forma («cilindro») o un comando («exportar», «deshacer»). Muévete con las flechas y pulsa [[Intro]], o haz clic en la entrada. + +- La búsqueda entiende igual la palabra en castellano que en inglés o en alemán, y no distingue mayúsculas, tildes ni diéresis: «aushoehlen» encuentra {{ui:editor.tool.hollow}}. +- Cada entrada muestra las teclas que hacen lo mismo y el grupo de la barra de herramientas en el que está, para que aprendas dónde se encuentra. +- Las entradas en gris no se pueden ejecutar en ese momento, casi siempre porque no hay nada seleccionado. Siguen en la lista para que la búsqueda te diga igualmente dónde está la herramienta. + +La guía que estás leyendo también tiene un cuadro de búsqueda, arriba en cada página: escribe una o dos palabras y te mostrará las secciones que las contienen todas, con las coincidencias resaltadas. Haz clic en una, o pulsa [[Intro]] para ir a la primera, y llegarás directamente. +- El nombre de una forma añade esa forma a la zona de trabajo, igual que si hicieras clic en ella en el menú de formas. +- Con el campo vacío, la búsqueda muestra arriba los últimos comandos que has usado. +- El nombre de un cuerpo de tu diseño encuentra ese cuerpo y lo selecciona, algo muy útil en un diseño con muchas piezas. Los cuerpos solo aparecen cuando empiezas a escribir. +- También funciona en el modo de boceto, con las herramientas de boceto. + +## Ayuda interactiva + +¿No encuentras dónde se explica un botón o un campo? Deja que el programa te lleve. Haz clic en el signo de interrogación del grupo {{ui:editor.group.help}} o pulsa [[Mayús]]+[[F1]]. El puntero se convierte en un signo de interrogación, y lo que tenga debajo se marca con un contorno. + +- Haz clic en un botón, un campo, un interruptor, un tirador, un grupo de la cinta o la barra de título de una ventana. **No** hará lo que hace normalmente. En su lugar se abre una ventanita con el nombre del elemento, un breve resumen de la parte de esta guía que trata de él, hasta otros dos sitios donde se menciona y {{ui:interactiveHelp.open}}. +- La ayuda trata del elemento que has señalado, no de toda la ventana que lo rodea. Un elemento sin nombre propio toma el del elemento más cercano que lo contiene; dentro de una ventana, recurre al signo de interrogación de esa ventana. +- {{ui:interactiveHelp.open}} abre la guía por esa sección en una pestaña nueva. Allí la sección aparece enmarcada en color, desde su título hasta su final, para que veas dónde empieza y dónde termina. +- Si la guía no dice nada del elemento, la ventana te lo indica y te ofrece {{ui:interactiveHelp.search}}. +- [[Esc]], o volver a hacer clic en el signo de interrogación, sale de este modo. En una pantalla táctil no se puede pasar el ratón por encima: al tocar un elemento, la ventana se abre directamente. + +La ventana se mueve desde su barra de título, como las demás. El programa encuentra la sección por el nombre del elemento (el texto de un botón, el nombre de un campo), porque esta guía escribe cada botón tal como se llama en el programa. Lo busca con el mismo buscador que el cuadro de la parte superior de cada página de la guía, en el idioma que estés usando, y todo funciona dentro de tu navegador. + +{{shortcuts}} diff --git a/docs/guide/es/14-ai-with-mcp.md b/docs/guide/es/14-ai-with-mcp.md new file mode 100644 index 000000000..68ccfa308 --- /dev/null +++ b/docs/guide/es/14-ai-with-mcp.md @@ -0,0 +1,118 @@ +--- +title: Construir con una IA (MCP) +summary: Cómo un asistente de IA como Gemini, Claude o Codex crea y cambia formas, las agrupa y hace capturas de la vista en tu editor abierto. +--- + +layerling incluye un servidor MCP. MCP es un estándar con el que un asistente de IA puede usar herramientas de otros programas. Gracias a él, un cliente de IA como Gemini, Claude o Codex ve una pestaña abierta del editor y trabaja en ella: crea formas, cambia medidas, agrupa, corta, redondea aristas, lee la escena y hace capturas de la vista. Tú describes la pieza y la IA la construye; tú lo ves todo y puedes intervenir en cualquier momento. + +El puente entre el cliente de IA y el editor funciona **en local, en tu ordenador**. Pero ten en cuenta que lo que lee la IA, es decir, la escena y las capturas de la vista, va al proveedor de tu cliente de IA, como cualquier otra cosa que le escribas. + +> **Importante:** El puente MCP existe en el servidor de desarrollo que arrancas tú mismo en tu ordenador. En layerling.com y en las instalaciones con alojamiento estático está desactivado. Una copia que alojes tú, como la imagen de Docker en un NAS, puede activarlo con un token de acceso; consulta «Una copia en un NAS o un servidor», más abajo. + +## Configuración + +1. Descarga layerling de [GitHub](https://github.com/henmedia/layerling) y arráncalo en la carpeta del proyecto con `npm run dev`. Necesitas tener instalado Node.js. En Windows, de eso se encarga la línea de inicio rápido del README. +2. Abre una pestaña del editor, por ejemplo `http://127.0.0.1:3000/?editor=1`. También puedes dejárselo a la IA: si no hay ningún editor abierto, la primera herramienta que lo necesite abre tu navegador con un editor y espera a que se conecte. Esto funciona con un layerling en tu propio ordenador; con una copia en un NAS o un servidor, el editor lo tienes que abrir tú. Para desactivarlo, pon `LAYERLING_MCP_OPEN_EDITOR=0` en el servidor MCP. +3. Conecta tu cliente de IA al servidor MCP. El propio cliente lo arranca con `node scripts/layerling-mcp-server.mjs`. + +### Claude Code + +No hay que instalar nada: el proyecto trae un `.mcp.json` que registra el servidor, y la skill en `.claude/skills/layerling-mcp-skill`. Abre la carpeta de layerling en Claude Code y pídele, por ejemplo: «Usa las herramientas MCP de layerling para listar mis editores abiertos e inspeccionar la escena». + +### Claude Desktop + +Claude Desktop no lee los archivos del proyecto. Añade el servidor en su propia configuración. Como plantilla, usa `docs/mcp/claude-desktop-config.example.json` del proyecto y sustituye la ruta del script por la ruta absoluta en tu ordenador. Después, reinicia Claude Desktop. + +### Codex + +Copia la skill de `docs/skills/layerling-mcp-skill` en tu carpeta de skills de Codex, añade el servidor a tu configuración de Codex a partir de `docs/mcp/codex-config.example.toml` y reinicia Codex. + +### Gemini y Antigravity + +Antigravity detecta por sí solo la skill del espacio de trabajo en `.agents/skills/layerling-mcp-skill`. Para Gemini CLI, copia la skill de `docs/skills/layerling-mcp-skill` en tu carpeta global de skills (`~/.gemini/skills/`), añade el servidor a tus ajustes a partir de `docs/mcp/gemini-config.example.json` y reinicia el cliente. + +Las instrucciones detalladas para cada cliente están en el [README de GitHub](https://github.com/henmedia/layerling/blob/main/README.md#layerling-mcp-skill). + +## Una copia en un NAS o un servidor + +Una copia que alojes tú puede dejar que un cliente de IA maneje sus editores abiertos a través de la red. Está desactivado de forma predeterminada, porque quien pueda manejar el puente puede leer y cambiar los diseños abiertos. En el servidor, pon `LAYERLING_MCP_REMOTE` a `true` y `LAYERLING_MCP_TOKEN` a un secreto de al menos 16 caracteres (en la imagen de Docker, en `environment:` del archivo compose; no hace falta reconstruirla). Abre una pestaña del editor de esa copia y déjala abierta, y dale al cliente MCP la dirección y el mismo token: `LAYERLING_URL=http://nas:3000` y `LAYERLING_MCP_TOKEN=`. + +Solo un cliente con el token puede listar o manejar los editores. Las páginas del editor no lo necesitan, pero solo cuentan si usan una dirección o un nombre que únicamente pueda usar tu propia red (una dirección IP, un nombre sin punto o uno que termine en `.local` o `.lan`); un dominio real detrás de un proxy inverso va en `LAYERLING_MCP_ALLOWED_HOSTS`. Úsalo en una red de confianza, y con HTTPS fuera de ella. El README tiene los detalles. + +## Lo que puede hacer la IA + +La IA trabaja con las mismas funciones que tú, por el mismo camino que sigues cuando manejas el editor. Las funciones nuevas de layerling reciben enseguida su acción MCP. Las herramientas: + +| Herramienta | Qué hace | +| --- | --- | +| `layerling_list_editors` | lista las pestañas abiertas del editor | +| `layerling_open_editor` | abre una pestaña nueva del editor en tu navegador predeterminado y espera a que se conecte (solo en tu propio ordenador) | +| `layerling_read_scene` | lee la escena, la selección, las unidades y las medidas exactas de todos los objetos | +| `layerling_list_objects` | lista todos los objetos con sus medidas, posición, giro e id | +| `layerling_select_objects` | selecciona objetos | +| `layerling_delete_objects` | elimina objetos | +| `layerling_create_shape` | crea una forma: caja, cilindro, texto (también curvado), rosca, engranaje, cuerpo de boceto y todas las demás | +| `layerling_import_file` | importa un archivo igual que la ventana de importación: un OBJ o 3MF con colores, como un cuerpo por color; un 3MF con varios objetos, como un cuerpo por objeto | +| `layerling_add_font` | añade una fuente propia para textos desde un archivo TrueType, OpenType o WOFF; se queda en el navegador, y un diseño solo guarda las letras que usa | +| `layerling_list_fonts` | lista las fuentes integradas y las propias, con id y nombre | +| `layerling_import_mesh` | trae una malla de triángulos al diseño | +| `layerling_update_object` | cambia las medidas, la posición, el color, el nombre, si es sólido u orificio y todo lo demás que define la forma, incluido el canto de las letras de un texto | +| `layerling_align_objects` | alinea objetos entre sí | +| `layerling_scale_objects` | escala objetos en un porcentaje, juntos o cada uno en su sitio | +| `layerling_lay_flat` | apoya un objeto sobre la placa por una de sus caras | +| `layerling_place_on_face` | posa objetos sobre una cara de otro, aunque esté inclinada, como la tecla C | +| `layerling_perforate_face` | corta un patrón de orificios en una cara plana; los orificios se quedan como orificios agrupados con el cuerpo | +| `layerling_sweep_sketch` | hace un barrido de una sección rectangular o redonda a lo largo de una trayectoria de puntos, como un único cuerpo exacto; una trayectoria cerrada da un anillo | +| `layerling_push_face` | empuja hacia fuera una cara plana o abre un hueco en ella, con un desfase hacia dentro desde la arista y un radio de esquina; la parte nueva es un cuerpo de boceto agrupado con el cuerpo | +| `layerling_mate_faces` | lleva una cara de un objeto contra una cara de otro, cara contra cara o a ras | +| `layerling_open_group` | abre un grupo para poder cambiar sus piezas una a una, también un grupo dentro de otro abierto | +| `layerling_close_group` | lo vuelve a cerrar («Listo») o cancela | +| `layerling_group_objects` | agrupa objetos | +| `layerling_ungroup_objects` | desagrupa grupos | +| `layerling_boolean_cut` | corta sólidos con orificios | +| `layerling_intersect_objects` | conserva solo lo que los objetos tienen en común (Intersección) | +| `layerling_separate_parts` | separa una forma en sus piezas sueltas, y un cuerpo de boceto en un cuerpo por contorno | +| `layerling_split_objects` | corta sólidos u orificios en dos con un plano | +| `layerling_list_edges` | lista las aristas CAD reales de un objeto | +| `layerling_apply_edge_treatment` | achaflana o redondea las aristas elegidas | +| `layerling_hollow_object` | vacía un cuerpo con una pared uniforme | +| `layerling_list_faces` | lista las caras de un cuerpo exacto | +| `layerling_delete_faces` | elimina caras y cierra el hueco | +| `layerling_array_objects` | multiplica en una fila o en un círculo | +| `layerling_bundle_objects` | crea un conjunto con objetos, como Ctrl+B: se mueven juntos, conservan su color y su tipo, y en una exportación salen por separado | +| `layerling_layer_text` | convierte un texto en una pila de capas para una impresión multicolor (letras, contornos más anchos, una placa sin orificios) o vuelve a construir una pila, con orificio para llavero, las esquinas de cada capa y un canto de letra redondeado o achaflanado; con una lista de nombres, hace una placa por nombre | +| `layerling_layer_icon` | convierte un icono SVG (el texto del archivo o un cuerpo de boceto extruido) en una placa con icono por capas para una impresión multicolor (el icono, contornos más anchos, una placa sin orificios) o vuelve a construir una con otra anchura u otras capas; con un número, llena la placa de copias | +| `layerling_create_qr_code` | crea un código QR a partir de un texto o una dirección web, como {{ui:shape.qrCode}} en la biblioteca de formas: el código solo, en relieve sobre una placa o grabado, con corrección de errores, anchura, altura, zona de silencio y, si se pide, como orificio; avisa cuando un módulo baja de 0,8 mm | +| `layerling_measure_section` | mide en un plano de corte entre dos puntos que se ajustan al contorno: grosores de pared, holguras, ajustes | +| `layerling_show_overhangs` | activa o desactiva el rayado de voladizos, fija el ángulo e indica para cada cuerpo la superficie que necesitaría soportes | +| `layerling_estimate_print` | calcula el volumen, el peso y el filamento de la selección o del diseño entero: para un cuerpo macizo y, como estimación aproximada, con paredes y relleno, igual que la ventana de exportación | +| `layerling_add_reference_points` | marca puntos de referencia (en el centro, las esquinas o los puntos medios de las aristas de los objetos, o en posiciones exactas) a los que se ajustan las formas | +| `layerling_list_reference_points` | lista los puntos de referencia con sus id y posiciones | +| `layerling_remove_reference_points` | elimina puntos de referencia por id, o todos | +| `layerling_inspect_errors` | muestra el último mensaje y el último error, además de los mensajes y errores de la sesión | +| `layerling_wrap_around_cylinder` | envuelve un cuerpo plano, como un SVG o un texto, alrededor de un cilindro, hacia fuera o hacia dentro como grabado | +| `layerling_simplify_mesh` | reduce el número de triángulos de una malla importada, a un porcentaje o a un número de triángulos | +| `layerling_save_custom_shape` | guarda cuerpos como forma personalizada, en el servidor o en el navegador, para insertarlos en otros diseños | +| `layerling_list_custom_shapes` | lista las formas personalizadas del servidor y del navegador | +| `layerling_insert_custom_shape` | inserta una forma personalizada en el diseño abierto, en un punto x/z si quieres | +| `layerling_delete_custom_shape` | elimina una forma personalizada; los cuerpos ya insertados se quedan | +| `layerling_show_workplane` | oculta y muestra la placa con su cuadrícula, por ejemplo para una captura de la parte de abajo (solo la vista) | +| `layerling_set_section_view` | abre la vista en corte por un plano para mirar dentro (solo la vista: no se corta nada) | +| `layerling_saved_view` | guarda la vista actual en la tecla 7, 8, 9 o 0 y vuelve a ella, como Mayús+tecla y la tecla (solo la vista) | +| `layerling_clear_history` | elimina para siempre todos los pasos de deshacer, como el botón «Eliminar historial» de la vista del historial; necesita `confirm: true` | +| `layerling_set_history_view` | consulta un estado anterior del proyecto, como la vista del historial (el diseño real no se toca; las herramientas que cambian algo esperan a que se cierre) | +| `layerling_restore_from_history` | trae al diseño, como copias, objetos de un estado anterior (también piezas dentro de grupos), igual que «Traer al diseño» en la vista del historial; es un solo paso, que deshacer revierte | +| `layerling_export_section_svg` | devuelve los contornos en un plano de corte como SVG a escala 1:1, a partir de los mismos cuerpos que la exportación | +| `layerling_export_drawing` | hace el plano para el taller de la exportación «2D»: tres vistas a escala 1:1 en una hoja ISO, con las medidas totales y una tabla de los taladros redondos, como texto SVG o como PDF | +| `layerling_export_mesh` | escribe el archivo de la ventana de exportación en STL, 3MF, OBJ o SVG (vista superior o huella), a partir de los mismos cuerpos; en una ruta de este ordenador o en base64 | +| `layerling_save_project` | guarda el diseño editable completo como archivo .lyl en una ruta del ordenador donde funciona el servidor MCP, sin cuadro de diálogo; un archivo existente solo se sustituye con `overwrite`, se escribe a través de un archivo temporal y el destino de Ctrl+S en el editor no cambia | +| `layerling_set_workplane` | coloca el plano de trabajo en un lateral de un cuerpo o lo devuelve a la placa base, y lo oculta o lo muestra | +| `layerling_capture_image` | hace una captura de la vista: de frente, desde arriba, de lado, en diagonal desde una esquina y más | + +Así la IA puede comprobar su propio trabajo: crea algo, hace una captura, la mira y lo mejora. + +## Un ejemplo + +Le dices: «Hazme una caja redonda de 60 mm de diámetro y 40 mm de altura con una pared de 2,5 mm, abierta por arriba, y una tapa plana con “Té” escrito en arco». La IA crea los cilindros, vacía uno, pone el texto curvado sobre la tapa y, al final, hace capturas para ver si todo encaja. + +> **Consejo:** Dale a la IA medidas concretas y dile para qué es la pieza («soporte para una varilla de 12 mm, que quepa en una Bambu Lab A1»). Así toma decisiones más sensatas. Y mírala mientras construye: puedes intervenir tú en cualquier momento, porque es el mismo editor. diff --git a/docs/guide/es/15-offline-and-install.md b/docs/guide/es/15-offline-and-install.md new file mode 100644 index 000000000..24694cf2a --- /dev/null +++ b/docs/guide/es/15-offline-and-install.md @@ -0,0 +1,50 @@ +--- +title: Instalar como aplicación, trabajar sin conexión y alojarlo tú mismo +summary: Abrir layerling como un programa normal, incluso sin red, y cómo hacerlo funcionar en tu propio ordenador. +--- + +## Instalar como aplicación + +layerling se puede instalar como un programa normal. Así tiene su propio icono y su propia ventana, sin barra de direcciones. Después de la primera visita, se abre incluso **sin internet**. Tus diseños se quedan en tu ordenador. Merece la pena instalarlo: la aplicación arranca más rápido, porque no tiene que volver a cargarse cada vez, funciona sin internet y le ahorra trabajo al servidor. No pierdes nada, porque layerling te sigue avisando cuando sale una versión nueva. + +Si tu navegador lo permite, en la página de inicio aparece un aviso con {{ui:installHint.install}}. Si no: + +- **Chrome y Edge:** Haz clic en el icono de instalar que hay a la derecha de la barra de direcciones, o elige «Instalar como aplicación» en el menú del navegador. +- **Safari en el Mac:** Menú «Archivo» y luego «Añadir al Dock». +- **Safari en iPhone y iPad:** Icono de compartir y luego «Añadir a pantalla de inicio». +- **Firefox:** no puede instalar aplicaciones. Aun así, layerling se abre en él sin conexión, en una pestaña. + +Puedes cerrar el aviso de la página de inicio con {{ui:installHint.dismiss}}. Si abres por segunda vez la aplicación instalada en Chrome o Edge, trae al frente la ventana que ya está abierta en lugar de abrir otra. + +En un ordenador, un layerling instalado con Chrome o Edge se registra además como programa para los archivos `.lyl`: un doble clic en un diseño, en el explorador de archivos, lo abre en layerling, y [[Ctrl]]+[[S]] guarda en ese mismo archivo. En Android no funciona, porque allí el navegador no permite asociar tipos de archivo a las aplicaciones web instaladas; abre el diseño con {{ui:dashboard.importGeometry}} en la página de inicio. + +## Actualizaciones + +Cuando hay una versión más reciente, layerling lo indica en la página de inicio. En {{ui:dashboard.updateBannerLink}} puedes leer qué ha cambiado. El número de versión está abajo a la derecha. En cuanto recargas la página, tienes la versión nueva. + +En layerling.com y en otros servidores web, una página abierta se da cuenta sola de que hay una actualización. Pregunta al servidor por su versión de vez en cuando, cuando vuelves a la pestaña y, en el acto, si ha desaparecido algún archivo del programa que necesita. Si entretanto se ha instalado algo nuevo, una tarjeta abajo a la derecha te lo dice y enumera las novedades. {{ui:newVersion.reload}} guarda primero en el navegador el diseño que tienes abierto y luego vuelve a cargar la página; el diseño vuelve tal como lo dejaste. {{ui:newVersion.later}} aparta la tarjeta durante 15 minutos. No tardes mucho en recargar: una página que se queda en la versión antigua puede cargar partes de la nueva que no encajan con ella. La misma tarjeta aparece cuando eso ya ha pasado: los procesos de CAD en segundo plano, que solo se cargan la primera vez que los necesitas, indican de qué compilación son y, si no es la de la página (después de una actualización o con una copia guardada de una versión antigua), la tarjeta te pide que recargues antes de que las dos partes dejen de entenderse. + +Cuando layerling está abierto en varias pestañas, se vigilan unas a otras: si otra pestaña ya tiene una versión más reciente, un aviso en la parte de abajo de la pestaña antigua te pide que la recargues. Y si el mismo diseño está abierto en dos pestañas, las dos te avisan, porque guardan automáticamente y se sobrescribirían la una a la otra. Si abres layerling en otra pestaña cuando ya hay una abierta, la nueva te propone seguir en la antigua y se ofrece a cerrarse. Si quieres dos pestañas a propósito, por ejemplo para tener dos diseños uno al lado del otro, haz clic en {{ui:tabs.keepHere}} en esa pestaña nueva. Esta guía también se abre en una pestaña propia: mientras layerling está abierto al lado, su botón de arriba a la derecha dice «Volver al editor» y cierra la guía en lugar de abrir el editor por segunda vez. + +## Idioma y aspecto + +El idioma se elige arriba a la derecha, en la lista de idiomas. El tema, a su lado, ofrece {{ui:theme.short.system}} (sigue al sistema operativo), {{ui:theme.short.light}}, {{ui:theme.short.dark}} y {{ui:theme.short.graphite}}, un gris oscuro neutro. + +## Alojarlo tú mismo + +layerling es software libre (AGPL-3.0) y puedes hacerlo funcionar en tu propio ordenador o servidor, por ejemplo en un taller, una asociación o un colegio. Hay varias formas, que se describen en el [README de GitHub](https://github.com/henmedia/layerling/blob/main/README.md#getting-started): + +- **Inicio rápido en Windows:** Una sola línea en PowerShell lo instala todo y crea un acceso directo en el escritorio. Si layerling ya está en marcha, otro doble clic no arranca un segundo servidor: solo abre la página. +- **Docker:** Para NAS y servidores domésticos, sin necesidad de instalar Node.js. Cada versión se publica como imagen lista para usar, `henmedia/layerling`, en Docker Hub (y también como `ghcr.io/henmedia/layerling`), para amd64 y arm64; `docker run -d -p 3000:3000 -v layerling-thumbnails:/app/.codex/project-thumbnails henmedia/layerling:latest` la pone en marcha, y en un NAS la buscas en el registro del gestor de contenedores. El volumen `layerling-thumbnails` conserva las imágenes de vista previa de la página de inicio al actualizar; sin él, desaparecen cada vez que se vuelve a crear el contenedor, hasta que abres el diseño. +- **Exportación estática:** El resultado son archivos normales que cualquier servidor web puede servir. Tienen que ir en la raíz de una dirección (`https://layerling.example.com/` o `http://192.168.0.5:8080/`), no en una subcarpeta ni abiertos desde el disco; el README explica los pasos. Con una carpeta `store` con permiso de escritura junto a `index.html` y PHP en el servidor, se convierte además en el almacenamiento compartido de los diseños. + +El puente MCP para asistentes de IA solo existe en el servidor de desarrollo: consulta [Construir con una IA](chapter:ai-with-mcp). + +## Ayuda y comentarios + +- En el editor, el grupo {{ui:editor.group.help}} contiene la {{ui:editor.guide}}, con los pasos más importantes, y el resumen de los [atajos de teclado](chapter:shortcuts). Cada apartado de la guía rápida tiene un signo de interrogación que lleva al capítulo correspondiente de esta guía. + +![La guía rápida en el editor. Arriba aparecen vídeos hechos por otras personas, y cada apartado tiene un signo de interrogación.](shot:quick-guide) + +- Las preguntas, las sugerencias y los informes de errores son bienvenidos en el [foro](https://forum.drucktipps3d.de/forum/board/127-layerling/) y en [GitHub](https://github.com/henmedia/layerling/discussions). +- Lo que ha cambiado en cada versión está en las notas de la versión, que encontrarás en la parte de abajo de la página de inicio y del editor. diff --git a/docs/guide/es/16-videos.md b/docs/guide/es/16-videos.md new file mode 100644 index 000000000..ea04dcf1a --- /dev/null +++ b/docs/guide/es/16-videos.md @@ -0,0 +1,20 @@ +--- +title: Vídeos sobre layerling +summary: Vídeos que otras personas han hecho sobre layerling. +--- + +## Hechos por otros + +Estos vídeos no son de este proyecto. Los enlaces abren YouTube en una pestaña nueva; no se carga nada de allí hasta que haces clic. + +- [I'm 100% In on Layerling - The Next Big Free CAD](https://youtu.be/IO7S-7bxS5o) – Printology (inglés). Una primera prueba de un usuario de Tinkercad: qué hace layerling mejor que Tinkercad, qué hay que mejorar todavía y si merece la pena cambiarse ya. +- [10 Things Layerling Can Do That Tinkercad Can't!](https://youtu.be/cx0OVHgUsJM) – Print N Repeat (inglés). Un segundo vídeo de este canal: diez cosas que layerling sabe hacer y Tinkercad no. +- [Layerling la nueva herramienta gratuita de modelado 3D, más completo que Tinkercad](https://youtu.be/-EEt0RSINoY) – Fulcro 1900 (español). Un vídeo sobre layerling como nueva herramienta gratuita de modelado 3D, más completa que Tinkercad. +- [Layerling - Tussen Tinkercad en Fusion 360 in, en Helemaal Gratis!](https://youtu.be/X-UuvsfDI-s) – Werkplaats Marc (neerlandés). Un primer vistazo a layerling para usuarios de Tinkercad: vaciado, redondeos, el patrón de orificios, roscas con holgura, fuentes propias y perfiles de impresora, con un tornillo impreso con holgura y sin ella para mostrar la diferencia. +- [Layerling](https://www.youtube.com/playlist?list=PLYqVFeqYBrPE) – TECHNOBENTO (inglés). Una lista de reproducción sobre layerling, por ahora con «A new way to sketch in Layerling». +- [The PERFECT FREE CAD Program Between Tinkercad and Fusion 360!](https://youtu.be/GIoG-IHPXyg) – Print N Repeat (inglés). Un vídeo sobre layerling como programa de CAD gratuito a medio camino entre Tinkercad y Fusion 360. +- [Layerling Tutorials](https://www.youtube.com/playlist?list=PLZ-ZWS0D1JIk) – HL ModTech (inglés). Una lista de reproducción de un usuario de Tinkercad, por ahora con una presentación de layerling de unos 23 minutos (un CAD gratuito en el navegador que amplía Tinkercad), un repaso más a fondo de sus funciones y una breve actualización sobre roscas impresas. +- [Layerling – Playlist](https://www.youtube.com/playlist?list=PLCsBmX2kOGWs) – Making Layers (inglés). Una serie sobre layerling, por ahora con «Tinkercad alternative / upgrade? Introducing Layerling!», una presentación para quien viene de Tinkercad, y «Layerling Sketch Tools!», sobre las herramientas de boceto. +- [Tinkercad Too Basic? Fusion 360 Too Much? Meet Layerling for 3D Printing](https://youtu.be/kzV7fQ3rXhw) – 3D Jesus | 3D Printing & Design (inglés). Una primera prueba de layerling sin ningún manual: redondeos y chaflanes, vaciado, roscas, bocetos, cuerpos de revolución, patrones, importación y perfiles de impresora. + +¿Conoces otro vídeo o has hecho tú uno? Cuéntanoslo en las [discusiones](https://github.com/henmedia/layerling/discussions) y lo añadiremos aquí. diff --git a/docs/guide/es/17-tablet-and-touch.md b/docs/guide/es/17-tablet-and-touch.md new file mode 100644 index 000000000..c89e28b35 --- /dev/null +++ b/docs/guide/es/17-tablet-and-touch.md @@ -0,0 +1,50 @@ +--- +title: Tableta y pantalla táctil +summary: Trabajar con los dedos o con un lápiz: seleccionar varios cuerpos, girar la vista y hacer zoom, el menú de la pulsación larga y lo que conviene saber en un iPad. +--- + +## Dedos y lápiz + +layerling funciona en el navegador de una tableta, y también como aplicación desde su pantalla de inicio. Un dedo hace lo mismo que el botón izquierdo del ratón. Para tres cosas que una tableta no tiene —un botón derecho, una tecla Mayús y una rueda— hay una forma propia de hacerlo: + +| Quieres… | En una tableta | +| --- | --- | +| Seleccionar un cuerpo | Tócalo. | +| Seleccionar varios cuerpos | Mantén un dedo quieto medio segundo, elige {{ui:contextMenu.selectMultiple}} y toca un cuerpo tras otro. Un toque en un cuerpo ya seleccionado lo vuelve a quitar. | +| Seleccionar todos los cuerpos | Mantén un dedo quieto medio segundo sobre un espacio vacío y elige {{ui:contextMenu.selectAll}}. | +| Abrir el menú del clic derecho | Mantén un dedo quieto medio segundo sobre un cuerpo o sobre un espacio vacío. | +| Mover un cuerpo | Arrástralo. | +| Cambiar el tamaño de un cuerpo, girarlo o elevarlo | Arrastra sus tiradores, los cuadraditos y las flechas que lo rodean. Un dedo los coge aunque lo pongas un poco al lado. | +| Girar la vista | Pasa un dedo por un espacio vacío, o arrastra el cubo de vista. | +| Hacer zoom | Dos dedos: sepáralos para acercarte y pellizca para alejarte. | +| Desplazar la vista | Desliza dos dedos juntos. | +| Quitar la selección | Toca un espacio vacío. No funciona mientras {{ui:camera.touchRotate}} está activado, porque entonces un dedo gira la vista; y en el modo {{ui:contextMenu.selectMultiple}}, el primer toque en un espacio vacío solo termina el modo y deja la selección como está, y el siguiente la quita. | + +## Seleccionar varios cuerpos + +Sin tecla Mayús, {{ui:contextMenu.selectMultiple}}, en el menú de la pulsación larga, hace lo mismo que Mayús+clic en un ordenador. Mientras está activo, un mensaje lo indica, y cada toque sobre un cuerpo lo añade a la selección o lo vuelve a quitar. Un toque en un espacio vacío, o [[Esc]] si tienes teclado, lo termina y deja la selección como está. Mientras tanto, un dedo sobre un espacio vacío sigue girando la vista. Después, {{ui:editor.tool.group}}, {{ui:editor.tool.align}} o un movimiento actúan sobre todos los cuerpos que hayas elegido. + +El mismo menú tiene {{ui:contextMenu.carry}}, que hace en la pantalla táctil lo que la tecla [[C]]. La selección sigue entonces al dedo por las caras de otros cuerpos; un toque la deja sobre la cara que tocas, aunque sea inclinada, y basta con el primer toque. La entrada del menú también aparece si buscas «posar» o «cruise» en la búsqueda de comandos ([[Ctrl]]+[[K]] con teclado). + +## Girar la vista y hacer zoom + +Un dedo sobre un espacio vacío gira la vista; dos dedos hacen zoom y la desplazan. Un dedo que empieza sobre un cuerpo trabaja en el cuerpo, no en la vista. Si prefieres que gire la vista, activa {{ui:camera.touchRotate}} en la barra de cámara: entonces un dedo gira la vista en lugar de seleccionar, empiece donde empiece. Ese interruptor solo aparece en dispositivos con pantalla táctil. + +El cubo de vista de arriba a la izquierda gira la vista cuando lo arrastras, y un toque en una de sus caras, esquinas o aristas salta a esa vista. Consulta [Vista y plano de trabajo](chapter:view-and-workplane). + +## Tiradores, puntos pequeños y lápiz + +La yema del dedo tapa aquello a lo que apunta. layerling deja que un dedo alcance tiradores, puntos, líneas y aristas desde un poco más lejos que el puntero del ratón, pero un lápiz es más fino. Esto vale para un lápiz que la tableta reconoce como tal, como un Apple Pencil o un S Pen. Un lápiz sencillo con punta de goma cuenta para la pantalla como un dedo y no es más fino que uno, así que trabaja con él como con el dedo. En un iPad, un Apple Pencil que se mantiene sobre la pantalla sin tocarla también muestra al cabo de un momento el nombre de un control en una pequeña burbuja, igual que el puntero del ratón muestra una etiqueta emergente. + +Si los cuerpos se desplazan sin querer cuando los tocan niños o manos con prisa, activa {{ui:workspace.selectBeforeMoving}} en los ajustes: con este ajuste, primero hay que seleccionar un cuerpo, y solo el siguiente arrastre lo mueve. + +## En un iPad o un iPhone + +- **Instálalo como aplicación.** En Safari, toca el icono de Compartir y elige «Añadir a pantalla de inicio». La aplicación se abre en una ventana propia sin barra de direcciones y funciona sin conexión; consulta [Sin conexión e instalación](chapter:offline-and-install). +- **Tus diseños viven en el navegador.** No hay cuenta y no se sube nada. Safari tiene una norma propia contra el rastreo: borra lo que una web ha guardado después de siete días en los que no la hayas visitado en Safari. Una aplicación web añadida a la pantalla de inicio está exenta de esa norma, según la documentación de WebKit. Es un motivo más para usar la aplicación desde la pantalla de inicio y para hacer copias de seguridad de lo importante: {{ui:dashboard.backupAll}}, en la página de inicio, mete todos los diseños en un solo archivo. +- **Archivos.** Safari solo deja que una página escriba en un archivo mediante una descarga, así que {{ui:editor.export}} pone el archivo en Descargas, en la aplicación Archivos, y [[Ctrl]]+[[S]] con teclado lo vuelve a descargar; consulta [Archivos y guardado](chapter:files-and-saving). +- **No hace falta teclado.** Cada herramienta tiene un botón en la cinta, y un campo numérico abre el teclado en pantalla. Con un teclado conectado al iPad tienes además los [atajos de teclado](chapter:shortcuts). + +## Talleres con niños + +Aquí los dedos y los lápices con punta de goma funcionan igual. Dos ajustes facilitan una clase: {{ui:workspace.selectBeforeMoving}}, para que un toque no mueva un cuerpo sin querer, y {{ui:camera.touchRotate}}, para que un dedo siempre gire la vista. El botón del signo de interrogación, en el grupo Ayuda de la cinta, activa la {{ui:interactiveHelp.title}}: a partir de ahí, un toque en cualquier botón, campo o tirador lo explica, y el mismo botón, o [[Esc]], la desactiva. diff --git a/tests/unit/guideAllLanguages.test.ts b/tests/unit/guideAllLanguages.test.ts index a67aea8f8..32a094766 100644 --- a/tests/unit/guideAllLanguages.test.ts +++ b/tests/unit/guideAllLanguages.test.ts @@ -19,8 +19,8 @@ const LANGUAGES = readdirSync(guideRoot).filter((name) => name !== "images" && s type Chapter = { file: string; number: string; body: string }; describe("the guide in every language", () => { - it("covers the eleven guide languages", () => { - expect(LANGUAGES.sort()).toEqual(["ar", "cs", "da", "de", "en", "fr", "hu", "nl", "pl", "ru", "sl"]); + it("covers the twelve guide languages", () => { + expect(LANGUAGES.sort()).toEqual(["ar", "cs", "da", "de", "en", "es", "fr", "hu", "nl", "pl", "ru", "sl"]); }); it("writes headings with a plain space, so they render as headings", async () => { diff --git a/tests/unit/i18n.test.ts b/tests/unit/i18n.test.ts index 20c2a6c23..40e1ec788 100644 --- a/tests/unit/i18n.test.ts +++ b/tests/unit/i18n.test.ts @@ -107,7 +107,7 @@ describe("language detection", () => { expect(languageFromTag("en-GB")).toBe("en"); expect(languageFromTag("fr-FR")).toBe("fr"); expect(languageFromTag("ru-RU")).toBe("ru"); - expect(languageFromTag("es-ES")).toBe(null); + expect(languageFromTag("sv-SE")).toBe(null); expect(languageFromTag(undefined)).toBe(null); }); @@ -119,6 +119,12 @@ describe("language detection", () => { expect(languageFromTag("pt-PT")).toBe(null); }); + it("serves Spanish for the Spanish of Spain and of Latin America", () => { + expect(languageFromTag("es-ES")).toBe("es"); + expect(languageFromTag("es-MX")).toBe("es"); + expect(languageFromTag("es-419")).toBe("es"); + }); + it("recognises only the languages it can serve", () => { expect(isLanguage("de")).toBe(true); expect(isLanguage("nl")).toBe(true); @@ -127,7 +133,8 @@ describe("language detection", () => { expect(isLanguage("ru")).toBe(true); expect(isLanguage("it")).toBe(true); expect(isLanguage("ar")).toBe(true); - expect(isLanguage("es")).toBe(false); + expect(isLanguage("es")).toBe(true); + expect(isLanguage("sv")).toBe(false); expect(isLanguage(null)).toBe(false); }); @@ -158,10 +165,10 @@ describe("language detection", () => { expect(withBrowser(["de-AT", "de"])).toBe("de"); expect(withBrowser(["de"])).toBe("de"); // A language we do not serve falls back to English rather than to nothing. - expect(withBrowser(["es-ES", "ko"])).toBe("en"); + expect(withBrowser(["sv-SE", "ko"])).toBe("en"); expect(withBrowser(["ja-JP", "ja"])).toBe("ja"); // The first tag we can serve wins, even behind one we cannot. - expect(withBrowser(["es-ES", "de-DE"])).toBe("de"); + expect(withBrowser(["sv-SE", "de-DE"])).toBe("de"); // A stored choice outranks the browser in both directions. expect(withBrowser(["de-DE"], "en")).toBe("en"); expect(withBrowser(["en-US"], "de")).toBe("de"); diff --git a/tests/unit/noBrowserTranslation.test.ts b/tests/unit/noBrowserTranslation.test.ts index bd565a65a..1be734061 100644 --- a/tests/unit/noBrowserTranslation.test.ts +++ b/tests/unit/noBrowserTranslation.test.ts @@ -29,7 +29,8 @@ describe("the browser's translator and the page language", () => { expect(bootLanguage(null, ["de-AT", "en"])).toBe("de"); expect(bootLanguage(null, ["pt-BR"])).toBe("pt-BR"); expect(bootLanguage("en", ["de-DE"])).toBe("en"); - expect(bootLanguage(null, ["es-ES", "es"])).toBe("en"); - expect(bootLanguage("xx", ["es"])).toBe("en"); + expect(bootLanguage(null, ["es-MX", "es"])).toBe("es-ES"); + expect(bootLanguage(null, ["sv-SE", "sv"])).toBe("en"); + expect(bootLanguage("xx", ["sv"])).toBe("en"); }); });