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
Ask before closing the tab (a setting): In the settings, under the same group as "Save STL as a download", "Ask before closing the tab" makes the browser bring up its own question "Leave site?" when a tab with an open design is closed or reloaded (beforeunload; the wording is the browser's and cannot be changed, and there is no "Save" in it). Off by default: a design is saved after every change anyway, so the question is only a reminder, as with Ctrl+W by mistake. A reload layerling starts itself, such as "Save and reload" for a new version, skips it (leaveGuard.ts). Texts in nine languages and a sentence in the first chapter of the guide in all of them. Asked for by a user in a mail.
Open DXF files (#774): The import window, the start page and the AI bridge's layerling_import_file read DXF, the counterpart of the DXF export: a part outline from a laser cutting shop or a supplier comes in as parts to work on: every solid outline a sketch body 4 mm high (its points editable, its fill changeable), every hole in it a loose hole of its own beside it - a whole circle as a cylinder hole of its diameter, any other outline as a sketch hole - so a hole is moved and sized in the 3D editor like any other and not only in the sketch; loose holes cut the body as they always do (#203), in the view and in every export. A hole with an outline lying inside it (a part in a cut-out) stays in its body's sketch, as a loose hole would cut that part too. Such a hole is as high as its plate, so the ray meets both at once: a press there now picks the hole even with the plate selected (viewportPicking.ts; until now the selected body won such a tie, #484, and a flush hole could not be picked to move it). dxfImport.ts reads ASCII DXF of any version: LINE, ARC, CIRCLE, ELLIPSE, LWPOLYLINE and POLYLINE with their bulges, SPLINE (each knot span as a cubic piece through its ends with their tangents, exact for a non-rational spline of degree 3 or less, a rational one in four pieces per span; fit points alone as a smooth curve through them) and INSERT (blocks nested, moved, scaled, turned, mirrored and in arrays), in model space and on layers that are on and thawed; an entity drawn with its extrusion down (a mirrored arc) is turned the right way, one standing off the drawing is left out. Arcs become cubic pieces of a quarter at most, as the SVG import makes them, so the sketch builds them back into true arcs (sketchCircularArc.ts). Loose pieces are joined end to end within 0.01 mm, a piece drawn twice counts once, and what does not close is left out; text, dimensions, hatches and the like are left out too, and the message counts both. $INSUNITS gives the unit (inches, feet, cm, m ... converted to mm); a file without one, such as any R12, is read as millimetres and the message says so. A binary DXF is refused with a word on saving it as ASCII. The outline is centred, the drawing's y running to the back, so the DXF export's file comes back as it went out (tested). Texts in twelve languages, the guide's import list (also in Danish, Arabic and both Chinese guides), the AI chapter and the three SKILL.md. Unit tests on files written by ezdxf (loose lines and arcs in R12, a polyline with bulges and an ellipse, inches, blocks in arrays with a layer switched off, a mirrored arc and a spline) and on one from layerling's DXF export (dxfImport.test.ts, also how a drawing is taken apart into bodies, sketch holes and cylinders, and a hole with a part inside it kept in its sketch); all of them imported in the editor through the AI bridge. Asked by @plazmabokor on GitHub.
A design file dropped on the import window is inserted (#683): The drop zone in the import window took a single .lyl file as a new design and refused several at once. Since a large Tinkercad import now comes as several .lyl files, a .lyl or .skf file (or several) dropped on the zone is inserted into the open design, as "Insert into this design" does, one after the other. Opening one as a new design stays with its own button above the zone; a drop that has other files among the .lyl ones goes the old way. Asked for by @HopGabor62.
DXF export finds circles and arcs on wobbly outlines (#774): A sketch body's outline - a DXF read back in, a drawn curve - has corners a few thousandths of a millimetre off the curve and unevenly spaced, and the arc check gave up on them: a hole came out as many small arcs instead of one circle. dxfExport.ts now checks the direction round the fitted centre and lets steps back within 0.01 mm pass, looks past a short run that fails (three corners a few thousandths off give a poor circle where a longer run holds), and keeps a run whose corners lie on a straight line within 0.01 mm a line rather than an arc of a circle metres wide. A unit test with a wobbly circle and a wobbly rounded rectangle (dxfExport.test.ts). The guide's DXF row is now also in Danish, Arabic and both Chinese guides; the Brazilian Portuguese guide has no files chapter yet. Asked by @plazmabokor on GitHub.
Preview pictures show all bodies, however far you have zoomed: The preview of a design in the overview, in the shared copy and on the server was a shrunken copy of the editor's screen, so it depended on the zoom the work was done in: a close-up showed a cut-off detail, zooming far out left tiny bodies in the corner of the plate. For the picture the view is now fitted to all bodies for a moment, from the side the view looks from, and put back at once; the screen does not change. A design without bodies keeps the screen as it is. Suggested by Jürgen Keller.
Cutting and splitting large meshes no longer freezes the editor: Grouping with holes, merging imported meshes and Split now run in a worker (workers/geometry.worker.ts, lib/geometryWorker.ts); the shapes cross as transferred Float64Arrays (lib/geometryTransfer.ts), so the result is the same to the bit. The longest freeze while cutting a cylinder out of a 200,000-triangle sphere went from 1.9 s to about 0.4 s, splitting a 300,000-triangle sphere from 3.9 s to about 0.4 s; meanwhile the status line says "Calculating… you can keep working". If the worker cannot start (an old offline copy, another build, no worker support) or fails, the work runs on the page as before; text stays on the page. Measured with scripts/measure-main-thread.mjs, see docs/PERFORMANCE_MAIN_THREAD.md.
Less waiting after a cut: The edge lines of a body are worked out with numbers instead of a text key per corner (lib/fastEdgesGeometry.ts, the same lines as three.js's EdgesGeometry, about five times quicker), the parts behind "Separate parts" are counted the same way (lib/meshPartCount.ts), and Split asks the worker whether the plane crosses an object. Splitting four imported 100,000-triangle spheres froze the editor for 1.2 s after step 1, now for 0.75 s.
The new mesh of a cut is drawn without a pause: The geometry worker also builds what the view draws of the meshes it makes - the geometry and its raycasting index (lib/importedMeshDisplay.ts), the same as the viewport builds them - and the viewport takes them over; the normals of a mesh without stored normals are worked out once instead of twice. The longest freeze after splitting a 300,000-triangle sphere went from 0.46 s to 0.11 s, after cutting a cylinder out of a 200,000-triangle sphere from 0.39 s to 0.21 s.
Import, 3MF export and the print estimate block the editor less: STL and OBJ files are read in the geometry worker (also a stored STL when a .lyl opens), the 3MF export is packed by fflate's workers (the same bytes), and the print estimate welds the mesh with numbers instead of a text key per corner (the same result). For 300,000 triangles the editor waits 0.8 instead of 1.1 s for the estimate and 1.1 instead of 2.3 s for the 3MF export; importing an OBJ through the file chooser blocks the main thread 3.7 instead of 5.7 s in all. What is left there is the new design the import starts: compiling the view's shaders and its preview picture. 3MF files are still read on the page (they need DOMParser).
Print estimate and Simplify no longer freeze the editor: Both run in the geometry worker (text stays on the page), and Simplify calls off a value the slider has already left. The print estimate of a 300,000-triangle import kept a click waiting 0.78 s, now 0.04 s; simplifying it 0.42 s, now 0.08 s. The section view welds its mesh with numbers instead of a text key per corner (lib/gridWeld.ts, shared with the estimate and the part count, the same result): switching it on keeps a click waiting 0.47 instead of 0.73 s.