You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A bundle of text wrapped round a cylinder is no longer stretched (#667): A body wrapped round a cylinder covers only an arc, but its box for aligning and centring is the whole cylinder (#106). Grouping or bundling took that box as the size of the group, so the group came out larger than the parts it held, and the view stretched them to fill it: four parts of a medal, one of them wrapped text 122 mm wide that covers 33 mm, made a bundle of 127 x 122 mm over parts that fill 100 x 110 mm, and the medal showed 27 % wider and oval until Undo. The group is now sized by the real vertices of its parts (boundsForShapesOfVertices, used by groupedShape), so it fits them and sits in their middle. Unit test in bundleOfWrappedParts.test.ts. Sizes changing after grouping and ungrouping, reported by @kokobandit; the bundle that showed it, with video and file, by @MiniCoop8.
Text: changing the words keeps the letter size (#871): Typing another text into the Text field only set the box's width (at least 46 mm), and the depth stayed, so the letters were stretched to fill the old depth: a single "a" grew until it was 2 mm tall and the letter size jumped (2 to 2.52 mm), and the measure showed the width of the old box. The text field now uses textLetterSizePatch, as the Letter size field does, so the letter size stays and the box follows the letters; a text that would be wider than the allowed width is still fitted into it. Not changed: the letters sit on the bottom of their box instead of on the baseline, so a "p" does not reach below the line. Reported by @MethylBromide.
Alt and the lift arrow makes a copy (#865): Dragging the black lift arrow above a shape with Alt held from the start now leaves the shape where it is and makes a copy where you let go, so copies can be stacked straight up, as Alt and dragging the shape already did sideways. While you drag, the shape shows the copy and a stand-in holds its place (duplicate in TransformDragState, beginLiftDuplicate and finishTransform in WorkplaneViewport.tsx; the copy is made by the same onDuplicateShapesMoved). The height handle has no copy. The guide (Shapes, every language that has the section) had the two handles the wrong way round and now says: the arrow above lifts, the white handle on the top face changes the height. Asked for by @raradek.
Attachments: read a file without downloading it (#820): A .md or .txt attached to a design could only be downloaded and opened elsewhere. Its row in the Attachments panel now has an eye (only for the types that can be shown: a view column in ATTACHMENT_TYPES), which opens the file in the quick guide's window, moved by its title bar and remembered where it stood (AttachmentViewer.tsx). Markdown is shown formatted (headings, lists with tick boxes, quotes, code, tables with their alignment, links), a text file exactly as written; Escape, the cross or a click beside the window closes it, it closes by itself when the file is removed or another design opens, and it works in the History view, as Download does. Safe by default, since a file can come from anywhere: Markdown is read by a small parser of its own (markdownView.ts, no new dependency) that makes a tree and never HTML, and MarkdownView.tsx draws that tree as React elements, so nothing is ever set as HTML; raw HTML in a file stays text, only http:, https: and mailto: links work (in a new tab, with noopener noreferrer), a picture is never loaded (its description and address stand in its place, so opening a file tells no server about it), nesting stops at 12 levels, and a file made to be slow is still read in linear time (a 2 MB file of unclosed markers takes well under a second). Texts in English, German, Czech, Danish, Dutch, French, Russian and Slovenian; the guide (Files and saving, the same languages) describes it. Unit tests in markdownView.test.ts (raw HTML, refused link targets, pictures, depth, hostile files, every block and inline form); tried in the editor: Markdown and text files open and close by each way, in light and dark theme, with no request for the picture. Contributed by @jbuggie.
Hull: shapes wrapped in one convex body (#863): Combine has a new tool, Hull: it wraps the selected shapes in their convex hull, the smallest body without dents round all of them, as if shrink-wrapped. A half sphere on a cylinder becomes a dome with no step, four corner posts a box with round corners, two spheres a capsule. Holes in the selection are cut out of the hull afterwards. It is a group of its own kind (groupOperation: "hull", buildHullShapeFromSelection in editorBooleans.ts, through Manifold.hull): the parts stay in it, Edit group opens it and Done builds the hull anew, and Ungroup gives the parts back. The hull is a mesh, so round shapes show facets. A hull or an intersection inside a group with a box hole is no longer opened into its parts by the quick box cut, and a hull shows in one colour. layerling_hull_objects does the same over MCP. The toolbar thresholds moved for the new button (2180, 1850 and 1698 px, measured). Texts in every language; the guide (Solids and holes, German and English) describes it, and the AI chapter lists the tool in every language. E2e test in hull.e2e.ts; tried in the editor: the button on a half sphere and a cylinder, Edit group with the dome moved aside, and the MCP action on two spheres. Asked for by @MethylBromide, and earlier by @rondlh.
Curve through points: With three or more points of an outline selected, the sketch's selection bar now has Curve through points (other programs call it "Fit curve" or "Fit point spline"): it lays one flowing curve from the first selected point to the last, through every point in between (selected or not), with the same handles the Smooth Curve tool gives (a sixth of the way between each point's neighbours). The sides beyond the two ends stay as they are, and so do the ends' other handles; on a closed outline the curve takes the short way round the selected points, and with every point selected the whole outline turns round. Pressing 3 still makes each selected point smooth on its own. The new code sits in sketchCurveThroughPoints.ts; the point-mode helper moved out of LayerlingEditor.tsx into sketchSmoothHandles.ts. Texts in every language; the guide (Sketches, English, German, Arabic, Czech, Danish, Spanish, French, Hungarian, Italian, Dutch, Polish, Russian, Slovenian and both Chinese) describes it. Unit tests in sketchCurveThroughPoints.test.ts. Contributed by @gogades.
Guide: soft light and the light height (#812): With the light set low a bright reflection can still show on a body even with Soft light on; the guide (View and workplane, German and English) now says that lifting Light height to 90° removes it and looks like Tinkercad. Noticed by @VZ-studios.
On a Mac, Control and drag turns the view again (#860): Control-click is the Mac's right click, and a right drag turns the view, so on a MacBook Control with a trackpad press and drag turned it. Since #654 (1.95.0) Ctrl or Cmd with the left button moves the view, and on a Mac that took the turn away: only the view cube was left. On a Mac, Control alone now turns the view again (leftButtonCameraAction asks OrbitControls for PAN there, which its modifier swap turns into a rotation; isMacPointer), in the editor, the second view and the Simplify comparison. Cmd and drag still moves the view on a Mac, and Ctrl and drag elsewhere. The mouse table of the guide (View and workplane, German and English) says so. Unit test in cameraMouseButtons.test.ts; tried in the editor with a Mac browser: Control and drag turns the view, Cmd and drag and, on Windows, Ctrl and drag move it. Reported by @jerryjaksha.
New designs on the server: every way in goes there: With LAYERLING_NEW_DESIGNS_ON_SERVER (or the tick New designs on the server) only the Create new 3D design tile started a design in the server folder. Opening a file, importing, restoring a backup, duplicating a browser design and taking a state from the history still made it in the browser, where Safari clears it after seven days without a visit, and New folder on the start page made a browser folder that stayed empty. Each of them now places the design in the server folder that is open (placeNewDesign in page.tsx: stored here first, then uploaded and bound; a name taken in that folder becomes a copy's name, and if the server refuses or cannot be reached the design stays in the browser and the message says why). A backup goes there with its folders, made below the open one, and New folder makes a server folder ("Folder … made on the server"; its button says so). A design made in the first moments waits for the server's answer (its defaults and the first look at its folder, at most 8 seconds) before it decides, so a click right after a container start no longer lands in the browser. With no designs left in this browser, the storage notice says "Your designs are kept on the server" in green instead of asking for a browser backup, and keeps Restore backup. Texts in every language; the guide (Files and saving, German and English) and the README say so. Tried in the editor with a server folder and always: the tile clicked at once, an STL import, New folder and a backup with two folder levels and an empty folder all landed on the server; without the folder everything stays in the browser as before. Docker guide:docs/docker holds a complete guide in English and German for running the image with the server folder as the only storage, with its own compose file and an update script that checks the configuration against the new image, backs up the folder and rolls back a failed update; the README links it. Reported and written by Jürgen Keller.
Gridfinity sides opened partly (#455): A side switched open lost its whole wall and lip, while a bin often needs only a slot to reach into or a lower front. Under the four open switches, now laid out as a cross seen from above, each open side has its own rows, named for the front here: Depth at the front, the opening's depth from the lip's top (from the bin's top without the lip), at least 2 mm; Width at the front, at least 5 mm; Position at the front, at one end or in the middle; and, at an end, Distance at the front from it. The whole side down to the floor, as it starts, is the open side as before, and so is anything within 0.5 mm of it or a side whose straight part is too short for the narrowest opening. Anything less keeps the side's wall, rounded corners and lip and cuts a notch with a flat bottom and square ends out of them: down to the floor a slot, with no ridge of the floor's rounding left across it, and across the whole side a lower wall. The notch stays on the straight part of the wall between the corners, or runs out to the edge beside a side open in full, where the wall has no rounded corner. The floor, the dividers and the lip beside the notch stay, so a bin stacked on it still sits on the lip; the side's shelf, scoop and compartment label shelves stay off as on any open side, and the wall thickness row stays. On a bin built solid by its wall, a side switched open is open in full. Opening corners and Opening corner size round or chamfer a notch's two top and two bottom corners seen from outside the wall, from 0 to 10 mm, the slider in steps of 0.5 and the size kept to 0.01 mm, square to begin with: each corner takes at most what the notch and the wall beside it leave, the top ones first, and under 0.5 mm it stays square; a notch across the whole side has no top corners, and one run out to the edge beside a side open in full has none at that end. The view, the exports and the exact body agree. layerling_create_shape, layerling_update_object and layerling_read_scene take and report gridfinityOpenings, gridfinityOpeningCorner and gridfinityOpeningCornerSize. A bin switched open on all four sides is never built solid; a side whose wall leaves no room for its opening is open in full. Asked for by @RudiVader in #455. Contributed by @mlugo-apx.