Bumps the version to 0.40.0-rc.2 and folds the pending format changes into format 50. A published pre-release no longer reaches the Flatpak feed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Web app: a page that hands designs saved at the old address to app.solidcraft.io
The stable web app moved from docs.solidcraft.io/app/ to app.solidcraft.io, and a browser keeps
storage per address, so designs saved at the old one don't appear at the new one. The docs site
gets app-transfer.html: framed by the move page at app.solidcraft.io it answers that page's
requests, and opened on its own it offers each design as a file. It only reads.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Web app: name the browsers the one-step move was checked in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
solidcraft-smlib held one process-wide kernel lock for the whole of every
solidcore call, so a long call in one design (a modeled thread, a fillet)
held up every kernel call in every other design, even after its tab was
closed, and a call that never returned held them until restart.
Each call now takes a kernel from a pool and the lock is only held to take
or put one back. Calls one after another get the same kernel as before; one
that starts while another runs gets its own. Each kernel has its own range
of procedural blend serials, since a body keeps the serials of the kernel
that made it.
History commands and delete checks now belong to their design: they wait
with its tab, go when it closes, and can't land in another design. An
agent's command for a design that left the window is refused at once
instead of holding up the requests behind it.
Closes#11681
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Sketch dimension: typing replaces the proposed value (#11204)
* Sketch dimensions: typing replaces the proposed value until you move the caret (#11204)
The value box selected the proposed value only on its first frame. A frame
in which the field misses the keyboard collapses egui's selection to its
caret, so typing 400 over a proposed 40 mm could give 40040 mm (seen in a
WebView2 host). Now every frame starts with the whole value selected, before
the field reads its state, until the person takes the value over: typing, a
completion or reference, a key in the box, or a press into the box after it
stayed in place. The click that placed or pinned the value does not count.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Preferences: one heavier, evenly detailed icon set for the page tabs
* Build: import traced body records from their new owner
* Build: read exported kernel records from their new crate
document.units gets input and output schemas: `units` (mm, cm, m, in or
ft, with the handler's messages for a missing or unknown unit) and its
reply, `units` and `kept`, which the handler now builds from the reply
type. Its line leaves unconverted.txt.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Threads: a 12 mm hole takes M12, and a modelled thread narrows a bore that is too wide (#11609)
Automatic sizing of a hole now takes the size whose nominal diameter the hole has (a 12 mm hole
is M12, not M14, the size whose tap drill is 12 mm); a hole near no nominal diameter is still
matched by tap drill. A modelled internal thread in a hole as wide as the thread or wider no
longer refuses with "too wide": the bore is filled in to the thread's minor diameter over the
threaded length and the groove cut there, and the feature's warning says so. A size that does
not fit the hole names the size that does.
A saved thread with no designation keeps the old rule through a pending format step, so an
existing design rebuilds with the size it had.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Threads: keep an old automatic size through edits; kernel-rig cases expect the narrowed bore (#11609)
Editing a saved automatic thread keeps `old_auto_size`, so it does not change size. The five
kernel-rig cases that expected a modelled thread in a hole as wide as the thread to be refused
now expect the narrowed bore, with the volume worked out analytically in each case. The thread
dialog's reopen pattern names the new field.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Thread dialog test: a 5 mm hole is suggested M5, its nominal size (#11609)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Typed schemas for Appearance, Appearance Library and List Appearances (part of #2829)
appearance.assign, appearance.library and appearance.list get contracts
that read what their handlers read, with the handlers' messages, and
reply types the handlers build their replies from. Their lines leave
unconverted.txt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Appearance library: the opacity is already a number
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Every point on a spline surface returned its basis tables by value, up to
272 bytes several times over. Filling them in place takes about a quarter off
meshing a round extrude's wall, with the same numbers.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #6257
* Align: move bodies by frames that follow sketch and model geometry (#6257)
solid.align takes from_frame and to_frame: a joint origin on the model
(a face's or round end's centre, an edge's middle, a corner, found again
by name) or a sketch point or a sketch circle's, arc's or ellipse's
centre. Both are resolved on every evaluation, so the bodies follow
their target when it changes. An optional angle turns the bodies about
the target's direction after the move.
The Align dialog takes sketch points and curves as From and To, offers
the Joint Origin snap and an Angle row.
* Align frames: box the joint origin (clippy large_enum_variant)
* Align frames: every moved body on the frame's component, placed once
* Align frames: a sketch id's length in characters
* Align frames: the dialog test's sketch curve hit carries its point
* Align frames: the dialog test takes Vec2 from solidcore-record
---------
Co-authored-by: MateuszSychXpl <151755914+MateuszSychXpl@users.noreply.github.com>
* New kernel cases go to solidcore's corpus; tests/kernel-cases/ only shrinks
tests/kernel-cases/CASES lists every rig and ladder case there is today. `cargo xtask lists`
fails on a case directory it does not list, saying where a kernel case goes instead
(solidcore's crates/solidcore/tests/kernel_cases/, exported with `cargo xtask kernel-cases
--export` or written by hand), and on a listed case that is gone. AGENTS.md, CONTRIBUTING.md,
the tests skill, the rig README and EXEMPT say the same; a new command gets an EXEMPT line
naming where it is tested.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* CONTRIBUTING: the kernel-cases paragraph ends before the naming corpus one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
---------
Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Each path test opens its own device and compiles the path pipeline. On a
cold driver cache that takes minutes and gigabytes per compile, and libtest
ran one per CPU thread side by side: on NVIDIA the solidcraft-gpu tests ran
for hours and committed ~80 GB. Executor::new now holds a process-wide lock
while it compiles; the first compile fills the driver's cache and the
waiting ones get the pipeline from there.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The CLI's kernel_cases_export.rs still imported Brep from solidcraft_geom::brep after the layer split moved it to solidcore_record::brep. Changes this one import.
The second half of #11626: apps/solidcraft-cli/src/kernel_cases_export.rs (#11568) imported
solidcraft_engine::geom::brep::Brep, which #11496 moved to solidcore_record::brep::Brep.
cargo clippy --workspace --all-targets -D warnings is clean with it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
#11568's trace (crates/smlib/src/trace.rs) named the record as solidcraft_geom::brep::Brep,
and #11496 moved that type to solidcore_record::brep. Each merged green on its own; together
main does not compile (error[E0425]: cannot find type Brep in module b).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel: the B-rep record and the native body file come from solidcore-record
SolidCraft's portable B-rep record (`solidcraft_geom::brep`: brep.rs, topology, history,
envelope, part, curve2) and the native body file (`solidcraft_kernel::native`: the tagged binary
codec and the container) move to solidcore's `solidcore-record` crate: geometry as data, with
structural validation and no maths (solidcore's docs/layers.md, stage 1). Every caller uses
`solidcore_record::brep` and `solidcore_record::native`; the old copies are deleted.
What computes from coordinates stays with the kernel, in geom's `brep`:
- `brep::check`: the record's geometric checks (orthonormal frames, non-degenerate planes,
unit revolution axes, non-singular placements). `check::validate` and
`check::validate_built` are the record's validation and these together, and every caller of
`Brep::validate` uses them, so what is accepted is unchanged;
- `brep::label`: a surface's natural ranges (a cone's apex), `curve_interval`,
`edge_curve_interval` and `form_turns`;
- `brep::pcurve::eval`: a pcurve's point;
- `geometry::check`, `placement::moved` and `split_edges` become functions on the record.
The kernel's native module keeps the conversion between a body and its saved record
(metadata.rs) and checks the decoded record's geometry. `native/analytic.rs`, which no module
declared, is deleted.
solidcore-record is pinned to its rev on solidcore's `layer-record` branch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKMbMFSQU8tzRtoJhtT
* Geometry: Vec2, Vec3, Plane and the profile types come from solidcore-record
The plain data of vectors and points, sketch planes and planar profiles (`Seg2`, `Loop2`,
`Region2`) moves to `solidcore-record`, with its constants and component-wise operators only
(owner decision, solidcore layer split). Their geometry stays in geom as traits:
`Vec2Geom`, `Vec3Geom`, `PlaneGeom`, `Seg2Geom`, `Loop2Geom`, `Region2Geom`, `Seg2ArcFit`,
`Loop2ArcFit` and `Region2ArcFit`, in scope with `use solidcraft_geom::prelude::*`. Every caller
names the types from `solidcore_record`; geom no longer defines or re-exports them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKMbMFSQU8tzRtoJhtT
* Kernel: pin solidcore-record to solidcore main f5e8e9a29
solidcore-record is merged on solidcore main (tangency-labs/solidcore#2519); its crate there is
identical to the rev pinned before but for its clippy configuration. The lock is regenerated
against the merged rev.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKMbMFSQU8tzRtoJhtT
---------
Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
It fails with status 1001 since #11360 moved SolidCraft onto solidcore alone, as the
kernel test variable_radius_on_a_box_edge already listed in tests/KNOWN_FAILING_TESTS.
The oracle keeps its own list, so main's Reference tests have been red since.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The web app is now offered at /app/ (latest release), /app-rc/ (newest release candidate) and /app-edge/ (current main), each with its own browser storage. /app/ is built from the latest release's web zip instead of main.
- Picks run on a copy of the operand: a pick builds query caches on the body it
reads, so the traced body stays as an untraced run leaves it.
- An untrim and an extension record their picks with the pickers they run
(`face_at`, `nearest_edge`).
- A final body matches the newest export of its record that an operation made.
- A stopped run is the kernel's when the last failed operation is followed by
copies only.
- A re-export removes each case's old entry first; fixes.json is written whole.
- The manifest names no commit for a copy without git, never an empty one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
An entry keeps what each operand body is and names <case>.bodies.json.gz, which
holds the records (gzip with no timestamp, so the same records give the same
bytes); the entry itself is pretty JSON. The corpus of 1202 cases is 33 MB.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
An entry's operation is expressible when the kernel accounts for its result; the
values only SolidCraft grades (continuity, meshes, files, command answers, merged
counts, SolidCraft's wording of a refusal) are listed under `ungraded` instead of
making the whole case inexpressible.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
`cargo xtask kernel-cases [--ladder] --export DIR` runs the rig with the kernel's
operations traced (`smlib::trace`) and writes one entry per case: the operation, or
chain of operations, that made the bodies the case ends with; each operand that came
in as a record, as that record; the parameters, with every pick by points also given
as the topology index it picked; the fix set; the case's expected values and the
rig's result. A case no kernel operation alone accounts for is written too, marked
not expressible with its reasons. DIR/manifest.json counts them per area.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The packaging action can't read a hyphenated version from the tarball's name, so the job gives it a name without the hyphen and renames the package back. A hyphenated version no longer fails the build if its Arch job fails; a plain version still does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bumps the version to 0.40.0-rc.1 and folds the pending format changes into format 49. The default-layout header test now expects the room the version really takes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
06-threads/018-external-m10-both-hands makes 606 edges and 404 vertices (486 and 324 before),
with the same 204 faces, area and volume (to 1e-11), in two runs on the box; every other ladder
case is as the golden records it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
Five tests fail at the new pin and are listed with their causes: the variable round along a box
edge (status 1001, twice), the shell of a fully rounded box past its rounds' radius
(SM_ERR_INVALID_INPUT), the chamfer that would grow the part (no face instead of the
too-large refusal) and the box-edge round's wire record. The tabbed plate's outer loop with a
partial selection passes and leaves the list; issue2422's vertical edge now fails as a smooth
edge.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
851-fillet-arc-then-top-front and 851-fillet-top-front-then-upright build (9524.3437, 10 faces,
solidcore#2431); 5158-fillet-round-just-past-a-10mm-face, the curvature pipe on a plate's
order-2 section, the concave-arc and front-top rounds (r5, r7 and default) and the peg's front
and concave rounds and chamfers build and pass their checks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The rim alone was pinned to 7.958674274526857, the marched end rib's value; its closed form,
the spandrel (1 - pi/4) r^2 revolved about the disc's axis outside |x| < 4, is
7.958672911836132, which the rim's End (fillet_blend_corner) builds to 5e-8. With the corner
arc's Pappus volume the two take off 8.117808752; solidcore 8ddce9016 removes 8.117808800.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
At solidcore 8ddce9016 (pinned) the r2, r2, r3 corner at (20, 0, 20) is one patch: 10 faces,
7928.743041456134 mm³, the r3 round and the patch the second fillet's. The test is pinned to
that and leaves the known-failing list. The fork's setback corner (15 faces, 7928.142563938)
waits for solidcore#2310; solidcore#2382, not merged, moves the case to 7927.724282512234.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
smlib's run() catches a solidcore panic and replaces the kernel (kept: the app does not die
natively), returning Error::Internal; the kernel turned it into KernelError::Failed and the
engine into Other, so hostile_params_never_panic and the fuzzer no longer saw kernel panics.
Now the kernel's wrapper errors go through KernelError::smlib, which keeps Internal; a body the
wrapper could not take because of a panic is Internal too. A feature whose evaluation hit it
records the result as internal (not cached: the kernel was replaced), and the command that
made it, or any command whose kernel call returns it, fails with EngineError::Internal under
its own id. Crash reports mark a panic inside a solidcore call recovered (kernel::guarded), and
the crash test's kernel mode panics inside a solidcore call.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The kernel crash test's command must fail with EngineError::Internal naming
diagnostics.crash_test, as a panic in the command itself does: the panic detectors
(hostile_params_never_panic, the fuzzer) look for Internal. Today it is EngineError::Other.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
solidcore's algorithms recurse (subdivision, intersection, filleting) and its README asks for
8 MiB, a native main thread's stack; Rust starts other threads with 2 MiB, and only the web
build set more. kernel::KERNEL_STACK is 8 MiB and kernel::kernel_thread a thread builder with it.
The kernel's parallel map runs on a pool of its own with that stack (on a worker of a pool
already, as in map_with_local_pools, it stays on that pool as before), the one-thread mesh pools
and map_on_threads' helpers have it, and so do the engine's interference worker and the
evaluator's plan-mesh thread. A test recurses 5 MiB deep on each.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
While a dump folder was set, every call serialised each input body before it ran, so the rig's
timings (taken with a folder set) measured the serialiser as much as the kernel. The callers now
hand run_on the bodies the call reads; they keep them until its result is known, and only a
failing call serialises them, into the folder as before. A test counts the serialisations: an
answered volume and union none, a failing call one per input.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The check had become one-sided after the C++ kernel's removal: a case that started passing,
or a change in the count, went unnoticed. As on main, a case that now passes fails the test
until it is added to the list, one that no longer passes is a regression, and the count is 111.
At solidcore 8ddce9016 solidcore passes exactly the 111.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The workflow triggers on the root Cargo.toml and Cargo.lock, and the plan gets their diff
(--pin-diff): a changed line that names solidcore's repository (Cargo.toml's git rev, Cargo.lock's
source) selects every area and the ladder. A path filter cannot tell a pin from another
dependency's change, so the plan reads the lines; another dependency's change runs no area.
The fillet rig is not triggered: the kernel rig's fillets shard runs the same cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
A solidcore bump changes only the root Cargo.toml and Cargo.lock, which neither PATHS-ALL nor
the workflow's trigger paths list, so it ran no rig. The tests want a change to the solidcore
lines of those files to run everything, another dependency's change in them to run nothing, and
the workflow to trigger on both files.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
A shell, offset or thicken solidcore's one construction refuses because a face's offset folds
(SolidError::ShellRefused, ShellRefusal::Fold) is Error::WallFolds with the largest wall it
names; the kernel says "the wall is thicker than a face curves, so the face's offset would
fold; the largest wall that works is 10 mm". A blend too large carries solidcore's NoRoomReason
as Error::TooLarge's RoomReason, worded in its message before the largest size that fits:
a collapsed offset (solidcore#2431) says the ball is as wide as the face it rolls on.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
A thicken of solidcore#2350's parabolic sheet past its apex's radius of curvature is refused
by solidcore's one construction (ShellRefused, Fold, naming 10); the wrapper passed it on as
"solidcore: ..." with no words of its own. A round at the radius of the round it rolls on
beside the 851 part's arc wall is refused as a collapsed offset (NoRoomReason::OffsetCollapses,
solidcore#2431); the message named the size but not why. Both fail until the reasons are
carried through.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
At solidcore 8ddce9016 three equal convex rounds at a vertex of three planes are the blend
corner's Ball (fillet_blend_corner). The wrapper set a setback on the corner after the corners
were made, so a set-back vertex was already a Ball (NByTwo) and its setback was refused
(CornerRefused): a_setback_corner_left_open_returns_its_hole (both) and setback_corner's
closed form. solidcore's AddSetBackVertex, called before the corners are made as the fork's capi
round_edges does, keeps a set-back vertex out of the Ball, and its corner is set back.
The corner a setback is set on may also be a blend corner whose event is the Setback, as the
capi takes it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
At solidcore 8ddce9016 a Ball corner is a BallPatch (fillet_blend_corner) and a round between
NURBS faces a ProceduralBlend (fillet_round_as_definition). The arrays' B-spline part of a face
had neither, so their export fell to the approximation and failed ("an approximated face surface
that is not a B-spline"): the rounded cube, the variable and curvature rounds and the
all-edges box in the smlib tests, and the Ball-corner and round cases of the rig.
Both are their nets, exactly. A ball patch also goes out as SURFACE_BALL_PATCH, its sphere's
centre and radius in FACE_DEFINITION_REALS, as the record's BallPatch reads it, and comes back
as solidcore's BallPatch on that net: the rounded cube's eight corners stay on their spheres
through the record and back.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
solidcore main at 8ddce9016 adds cone_unbounded_parameterized_as_nurb,
ellipse_open_arc_keeps_end_angle (solidcore#2422), fillet_round_as_definition,
fillet_round_on_round_as_definition, fillet_overflow_crease_along_edge,
plane_first_torus_section_exact, keep_exact_pcurves and shell_one_construction
(solidcore#2367), and drops fillet_extended_rail_end_at_side_edge_crossing.
Every one is on. fillet_keep_features is no longer held back: solidcore#2374
fixes the round beside a boss it refused (solidcore#2370).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
A block's front top edge rounded r 3 beside a boss joined on its top fails SM_ERR_INVALID_INPUT
with it on; off it builds the closed form, 6099.225530 mm³, as the C++ fork does. Found by
ui-egui's opening_a_large_design_never_stalls_the_window.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
solidcore's fit is the largest size less a margin (34.99 where the L bracket's bend builds 35,
4.29 where #3435's ring builds 4.3), so the feature's search keeps naming the size, and solidcore's
is the answer only where the search finds none. The refusal keeps its words, "larger than the
faces beside its edges allow", with the edge after them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
solidcore sizes a blend it refuses as too large (the session's fit, SolidError::FilletRefused under
fillet_gn_section_generator). The smlib crate gives it as Error::TooLarge with the size, what it
sizes and a point halfway along its edge (an equal chamfer's ball radius turned back into its
distance); the kernel words it as the fillet feature's search does (largest_fit_note), and the
feature runs no search when the refusal names it. The 3x2 mixed corner whose rails cross, which
solidcore refuses (fillet_refuse_mixed_corner_crossing_rails), is not supported yet, citing
solidcore#2256.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
With it on, 11 rig cases that pass with it off are refused as breaking through the part, and
190-fillet-disc-rim-past-its-2mm-wall fails status 1001. A fix under the same flag is in progress
on solidcore.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
Main took #11351 as one squashed commit (ea772a043). This merge records its history as 509
wave commits: a wave ends at every SMLib pin and holds at most 4 commits or about 800 changed
lines. Each wave lists the commits it holds; the originals stay reachable from tag
archive/merge-main-develop. Main's files are kept as they are.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360).
- b2fd08e85 jyviko: Profiler: no smlib category left in its tests and help
- d49a7eac0 jyviko: Known-failing tests: the convex chamfer that would grow the part passes
- d55fedd56 jyviko: smlib export test: a rounded cube's corners checked on solidcore's spheres
- 017a2a607 jyviko: Known-failing tests: the fillet into an earlier round passes on solidcore
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* UI: rim and wall picking tests for a circle of arcs that is one wall
A circle drawn as two half arcs now extrudes to one full-turn wall with its
seam edge, and each rim is one closed edge (tangency-labs/smlib#67). The tests
keep their intent on that body: a rim clicked once is one item, measured and
highlighted whole and picked from either side; a wall picked either side of
its seam is the same surface, lit whole, and toggles off from the other side;
every face is its own patch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillets: a later round at a corner where earlier rounds meet blends them again with it
The owner's ruling of 2026-10-30: a later fillet on an edge at a vertex where earlier
rounds already meet in a mitre makes the corner rounding all of them at once makes, one
smooth patch, the mitre gone. A body made by constant-radius rounds keeps what they were
made on and which edges they rounded at which radius; a later round reaching such a corner
blends the earlier rounds' edges (from the earliest of those meeting there on) with the new
edges in one SMLib blend of the body before them. The result's history is put over the body
the later round was given: an earlier round's face is that face trimmed anew (its name
kept), the corner patch and the new rounds are the later fillet's. A picked mitre seam has
no round of its own: it is refused unless a new edge of its radius meets it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: a later r3 round at an r2 mitre, through the Fillet feature, makes the all-at-once corner
Two box edges rounded r2 in one fillet, then the upright edge at their mitre r3 in a second
fillet (tangent chain on, so the seam comes with it): 10 faces, 7928.743041 mm³ as
fillet_radii of the box gives, the r2 rounds' names kept, the r3 round and the corner patch
the second fillet's.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel: a body's record of rounds goes with its history, and can be read back
The rounds that made a body are over the body its history is over: a new history (an
operation carrying a step's result back to its own operands) leaves the record out, so a
later round never reads one history against another body. Body::rounds gives the record and
Body::with_rounds_of takes one back, checked (edges of the body before them, a fillet's
radii, the body's history over that body), for a saved model to keep it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Model cache: a body made by rounds keeps them, so a later round blends them the same after opening
A design gave another body when opened from its model cache: the rounds a body was made of
lived only in memory, so a later round at their mitre was built sequentially (or refused, as
too large) after opening and blended with them when evaluated anew. The saved model now
records, per kernel body made by rounds, the body they were made on (a place in the bodies,
stored once though no state holds it) and the edges with their radii; reading it attaches
them back down each chain, and a thinned model keeps those bodies with the bodies made from
them. Model cache format 7.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: a corner patch of rounds 2/3/4 takes no more than the strips leave in its block
three_rounds_at_a_corner bounded the patch's extra cut at 3 mm³ beyond the strips, a figure
with no derivation; SMLib's all-at-once body at radii 2, 3, 4 takes 3.099 (V 7878.579574
against strips 7881.678). That body is the strips' outside the block its patch lies in: its
rounds are the strips' cylinders ending at a's section y = rc, b's x = 20 − rc and c's rails
where they meet a's and b's (the patch's four corners, now asserted), so the patch takes at
most what the strips leave in that block (11.86 at 2/2/3, 32.69 at 2/3/4). The lower bound is
that block; the upper one, at most the strips' volume, stays.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: the io crate's hand-built saved models list their rounds, as format 7 records do
Model cache format 7 (f3cf0c4f3) records a `rounds` list in every saved model, and reading one
without it is refused ("saved model: rounds"), as is a model without any of its other lists:
the states, the preview and the thinned model all came back empty. The io tests' saved_model
and timeline_model wrote format-6 records, so six tests (the round trip, the repeated part
stored once, and the four too-big-for-the-file cases) read nothing. Their bodies are none made
by rounds: the list is empty, and every expectation stays as it was.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* SMLib: pin eaa998a (tangency-labs/smlib#68, #69, #70)
Batch 4: drafts and loops, mitre corners, rim chamfers, rulings, tight box, stitch, point
classification, eased corners. Batch 5: a face's tight box divides its cells at the surface's
knots (thread boxes exact); a cylinder, cone, sphere or torus is extended along its own circles.
Batch 6: a revolution's extension closes its turn; a dropped point's foot is the converged one.
The C API is ABI 5 (smlib_blend_dropping and smlib_brep_classify_point are new; nothing existing
changed), so the binding expects 5.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: a strip's tangent and curvature run-offs are the distance long across the surface
SMLib measures an extension's distance across the surface (smlib_extend_sheet corrects
CreateExtendedSurface until the parameter line through the side's middle is that long), so each
run-off of the cylinder strip, swept 20 along z, adds 5 x 20: 10 pi/2 20 + 100 = 414.159 for
both. The parabola-length formula (418.18) was truck's.
Ruling d2 (2026-10-30).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: one smooth angle, and a round too small to change the part is refused
The blend's tangent angle is the shaded view's half degree (smooth_edges::ANGLE), one value
for smooth. A constant round lies r (sec(d/2) - 1) inside the crease it replaces (about
r d^2/8); below the edge's tolerance it changes nothing and is refused before SMLib (which
answered SM_ERR_INVALID_INPUT), naming the smallest radius that rounds,
tolerance / (sec(d/2) - 1). d is the least turn along the edge
(tangent_edge::least_angle_along, at tangent_all_along's stations).
Ruling d3 (2026-10-30). The block's tolerance is 2e-5 mm, not 0.1 um: at 1 deg the smallest
radius is 0.526 mm, so R2 and R20 reach SMLib, which still calls an edge within 2 deg smooth
(SmEdge::GetBlendEdgeuse); that test is ignored until SMLib uses 0.5 deg.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet rig: the knife-edge chamfers name SMLib's cause, a cusp's ball radius of 0
smlib_chamfer turns the distance into a ball radius d sqrt((1 - c)/(1 + c)), c the faces'
binormals' dot (capi chamfer_radius); at #851's cusp the binormals agree, the radius is 0 and
the call is SM_ERR_INVALID_INPUT before the fillet executive runs (gdb: chamfer_edges sees
radius 0; the dump's why is empty). SolidCraft hands every chamfer to SMLib, so the
ball-contact chord (the ball of radius d: 3.822 wide at d = 2, 159.2365 removed) is SMLib's to
build.
Ruling d4 (2026-10-30).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel tests: a corner round wider than its faces overflows and takes the corner's other edges
R21 on a 20 mm cube's edge builds (6107.529370, closed form, to 2e-12). With R5 on the
corner's other edges the R21 takes the faces they lie on, so the body is R21's alone; SMLib
fails that blend (status 1001, fillet error 4, Unable to Trim Rail Curve) and the test is
ignored until it builds. It replaces the refusal test that expected TooLarge.
Ruling d8 (2026-10-30).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: a 1 degree crease rounds, and the knife edge's chamfers build, on SMLib smlib-batch-4-rulings
With SMLib's smooth limit at half a degree (422e6f1) the 1 degree crease rounds R2 and R20
(the test is no longer ignored), and with a cusp's chamfer the ball of radius d (d231547) the
The 0.5 one stays, for its own cause (the chamfer face left apart from the body). Two corner
cases the same SMLib (replay/1.0.1 and those commits) builds come off too.
Needs SMLIB_REV at that SMLib once it is pushed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel, doc: an overflowing round goes first; an edge it removes is gone, and the fillet says so
SMLib (smlib-batch-4-rulings 0e83cca, SMLIB_ABI_VERSION 5) rounds the edges whose rounds overflow
their faces first and then what is left of the others; smlib_blend_dropping says which picks'
edges the overflow removed whole. The smlib crate binds it (Brep::blend_dropping), the kernel
returns those picks (fillet_removing), and a fillet notes them as its warning: "the edge at
(0, 0, 10) was removed by the larger round, so it is not rounded" (a 50 x 50 x 20 block, R21 on
its bottom front edge with the front left upright: the block is R21's alone, in closed form).
Ruling d8: [21, 5, 5] on a 20 cube builds as R21 alone (6107.529370); the test is no longer
ignored. R25 with R2 at a corner (blend_corner) builds the same way, R25's alone in closed form,
where it was refused. The rig's 1080 notched block outline at R8 builds now and comes off the
known-failing list.
Needs SMLIB_REV at that SMLib once it is pushed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet rig: the knife edge's 0.5 chamfer builds
SMLib's trim took a fillet meeting its face at more than 78 degrees for one with no side
(smlib-batch-4-rulings 971e567); the chord of the knife edge's 0.5 chamfer meets the flat face at
81 degrees. The case comes off the known-failing list.
Needs SMLIB_REV at that SMLib once it is pushed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: a 15° tapered text builds, every letter grown, exact where its outline gives it
Owner ruling d6: the letter t of "tres long" was drafted inward by SMLib (its
loop's normal, summed from the cross products of its chords, pointed down;
fixed in SMLib). With the fix every letter grows, and the join builds at 3°
and 15° by the Round rule and by the default rule (tangent for spline
outlines), where before 15° was expected to be refused.
Exact where the outline derives it: a letter's section at height z is its
outline offset by e = z tan a, by the Round rule of area A + P e + C e² while
the offset trims nothing (Steiner; C half each loop's turning less
tan(t/2) - t/2 at each reflex corner), so the letter is
A h + P k h²/2 + C k² h³/3. Each extruded alone, the t at 3° and s, l and o
at 3° and 15° are checked to 1e-6 (SMLib measures them within 1.3e-9; its
mass properties integrate to 1e-8). The concave joins of r, n, g and e are
tighter than e already at 3° (their swallowtails trimmed: r 1.1e-3 under the
formula), the t's by 15° (9.9e-5 over), and on the block the letters grow
into each other, so the whole word is checked for what holds exactly: one
closed body with the block, and half-way up every point of each straight
letter's outline inside the solid (the t drafted inward failed that).
With SMLib's fix (smlib-batch-4-text-loops 82133b2).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: a sloped basin's mitred rim rounds are checked tangent along their contact lines
1080-fillet-sloped-basin-1-mm-rim-r0-5-4-edges asked G1 at every blend seam. Its front wall
leans 19 over 20 and the others 10 over 20, so at each rim corner the two mitred rounds meet the
sloped corner edge at different heights (0.155625 and 0.276393 below the top): the deeper round
runs on past the corner edge and is cut by the plane of the other's wall, a crease by
construction, the gap below the shallower round filled on that plane. The check now measures
the rounds' contact seams, on the top and on each wall, where the rounds are tangent. The
volume is unchanged.
With SMLib smlib-batch-4-mitre (1c15364): the case passes (V 144530.427946 against
144530.427909, 15 faces, sound); before it, only the four corner creases failed the check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* smlib: Brep::classify_point says exactly where a point lies against a body
Binds the fork's smlib_brep_classify_point (SmBrep::Point3DClassify at the body's own zone
tolerance): inside, outside, or on the boundary within that tolerance of a face, an edge or a
vertex. A box and a cylinder just off its curved wall in measure's tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKQ2rEZvcXNQnhE3Sgs
* kernel: Body::classify_point decides inside, outside or on the boundary exactly
SMLib's point classification at the body's own tolerance, on the exact faces and edges, in
place of a mesh at a chord of 2e-3 of the body's size (about 0.4 mm on a 200 mm part). A point
within the tolerance of a face, edge or vertex is OnBoundary, never decided by a ray. A mesh
body's triangles are its exact shape: on them within the record's tolerance, else by ray
crossings. The kernel's own probes move to it; Body::contains goes once its last callers have.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKQ2rEZvcXNQnhE3Sgs
* doc: a hole decides whether it exits at its drill point's shoulder exactly
Material past the depth needs a body with the point inside, air before it needs every body to
have it outside; a point within a body's tolerance of the exit face is neither.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKQ2rEZvcXNQnhE3Sgs
* engine tests: probes ask for the exact point class
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKQ2rEZvcXNQnhE3Sgs
* ui, cli tests: probes ask for the exact point class
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKQ2rEZvcXNQnhE3Sgs
* kernel: Body::contains, the mesh test, is gone
Every caller asks Body::classify_point now.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvoxKQ2rEZvcXNQnhE3Sgs
* kernel tests: the rim chamfers running off their rims build, on SMLib 737c392
chamfer_wider_than_sloped_basin_rim_builds and a_rim_loop_chamfer_running_off_its_rim_builds
waited for SMLib to build the cliff overflow (CloseRemovalRegion refused it,
SM_FILERR_NO_ROOM). The pinned SMLib builds it (eddf0ede4, bba9914b6): both pass on aarch64
Linux and are no longer ignored.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet rig: the cases SMLib 737c392 builds come off the known-failing list
The gate on aarch64 Linux reports 16 fillet cases FIXED with the pinned SMLib: the sloped and
equal-slope basin rim chamfers and rounds past their rims (1080-*, 5835-*), the pocket rim
chamfer past the floor, and the three pocket rim rounds now mitred at the pocket's corners
(every-pocket-*). No other area's gate reports a case fixed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: the re-blend's removed picks formatted as rustfmt lays them out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: blend_smlib laid out by the 2024 edition's rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Skills: the tests skill's unit-test example stays under the 3600-character limit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet: the radius-too-large choice in plain nouns
"If too large: Stop and say so / Largest that fits / Narrow where needed"
becomes "Face limits: Exact radius / Largest radius / Narrowed radius", in
every language of the catalog, with the error and the tip that name them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: a round that would cut through its wall into a hollow is refused
The owner's rule of 2026-10-30: a round running past a rim of its faces
into open air builds; one whose section would remove material through to
a hollow behind its edge (a slit into the hollow, a cut through the part)
is refused as too large, so the fillet names the largest radius that fits.
Decided exactly in the section of a straight convex edge between planar
faces: the round's centre is at depth r below both planes, and it opens
where its arc uncovers a boundary point strictly inside the wedge with no
material beyond it toward the centre (the body's exact point
classification). Looked at: straight edges parallel to the round's (a
hollow's corner), cylinders about parallel axes (a rounded corner), and a
picked concave parallel edge's own round, which fills the corner.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet rig: 1668's R7 past the inside corner is refused at 4 + 2 sqrt2
The round's centre (32 - r, 42 - r) leaves the hollow's corner (30, 40)
outside its circle, opening the wall, where sqrt2 (r - 2) = r: the case
expects the refusal naming 6.828. 2852's R30, refused naming 25.24, now
passes too: both come off the known-failing list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* xtask: known-failing grades a nextest junit report against tests/KNOWN_FAILING_TESTS
`cargo xtask known-failing --junit PATH` reads nextest's junit (a file, or every .xml under a
directory, so all of a run's junit artifacts at once) and fails on a test that failed and the
list does not name, and on a listed test that passed (FIXED: take its line off, as the kernel
rig's gate does). A listed test that did not run is neither, since a pull request tests only the
packages it touches. The list has the rig's KNOWN_FAILING format (`<test> <cause>`, sorted, the
rig's own parser), with `<test>` nextest's `<binary id>::<test name>`; `cargo xtask lists`
checks it is sorted. The list starts empty.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* CI: the test jobs grade their junit against tests/KNOWN_FAILING_TESTS
Native Linux tests and the GPU path test shards no longer fail on any failed test: nextest's
"tests failed" exit (100) goes to `cargo xtask known-failing --junit`, which fails on a failure
the list does not name and on a listed test that passes. Any other nextest exit (a build error,
a bad filter) still fails the step at once. The tests skill says to list a failing test with its
cause, in place of ignoring it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: the known-failing list takes develop's 10 failing tests
Develop 38fd4a4f6 (CI run 41157648345, after the SMLib eaa998a pin) fails 10 cargo tests; each
is listed with the cause its failure message gives. Seven are SMLib refusals or results off
their derived volumes (fillet, chamfer and shell), the cli action matrix and naming corpus
among them; the two corner_g2 tests are the fitted G2 corner patch bulging past the box, which
the explicit G2 corner fixes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Reference tests: the eight cases that fail on SMLib eaa998a name their cause as known failures
Develop 38fd4a4f6's Reference tests fail 34, 35, 77, 78 and 81 (STEP export finds fillet edges
4.6e-5 to 6.1e-5 off their surfaces against 2e-5), 37 (the apex blend 0.193 off), 80 (the
taper-to-fit area) and 83 (thicken status 1001). Each expected.json names its cause in
known_failure, which the oracle already reads: a known failure that passes fails the job.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sweep path: a curve of several pieces is turned round whole
The path chain oriented its first piece, not its first curve: a first curve
of several exact pieces (a fit spline, an ellipse, a projected free-form
edge) was never turned round, so a path whose next curve meets it at its
start was refused as "not connected end to end". The chain now orients
curve by curve: the first runs toward the second where they meet at one
end only (else from the end nearest the profile), each next one starts
where the previous ended, with one joint tolerance for both questions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* SMLib: pin 2fc375f (tangency-labs/smlib#71, #72, #73)
A sheet's side is extended exactly the distance asked, or the call says it cannot (#71);
NVIDIA's -Werror build passes again (#72); a body splits by a sheet of several faces as it
is, smlib_split_body_by_sheet (#73). The C API is ABI 6 (the new entry), so the binding
expects 6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: Extend grows a surface of several faces face by face
A surface body of more than one face (a fit-point spline's spans extruded, #3830) was refused.
Each face with a picked edge is now extended alone by SMLib's extension of its surface, and the
faces are sewn back together, each the face it was. A side that lengthens onto a face meeting it
tangent takes that face along, past its edge continuing the picked one; across a crease the
neighbour grows only when its edge is picked too, otherwise the extension is refused. Faces whose
lengthened sides no longer meet are refused. Up to a target keeps the pieces every grown face
lies in.
3830's extensions now build; its split still fails (the tool point picks one span, and a face
tool cuts with that face's surface alone), so it stays on the list with that reason.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: Split Body by a face of a smooth sheet cuts with the whole sheet
A face tool cut with that face's surface alone, so a face of a surface body made of spans joined
tangent (a fit-point spline extruded, #3830) cut nothing where its span ends inside the body.
Split Body by a face of a surface body now takes the faces joined to it tangentially (the exact
check Extend uses, within the one angle for smooth) and slices with them as they are, through
SMLib's slice by a sheet (smlib_split_body_by_sheet, tangency-labs/smlib 7a01f1b), its sides those
of the picked face. A sheet that only nicks the body cuts nothing, as before; a lone face, or a
face of a solid, still cuts with its surface extended.
3830 comes off the booleans list. Its answer counted the two halves of the cup and not the surface
that cut it, which stays as a body of its own (4879 removes its surface for that reason): three
bodies, the volume unchanged.
Needs SMLib 7a01f1b pinned (SMLIB_REV, prebuilt; its SMLIB_ABI_VERSION 6, which crates/smlib now expects) to link.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: a cylinder strip's run-offs are 100 pi + 100 to 1e-6, SMLib's exact area
The tangent and curvature run-offs of the quarter cylinder r 10 strip, 5 across the surface,
are its section swept 20 along z: exactly 10 pi/2 20 + 5 x 20 = 414.159265. measure is SMLib's
integration on the exact surface (1e-8), not a mesh, so the run-off check is 1e-6 relative and
the 'measured on meshes' notes go. Red until SMLib's extension is solved to its distance
(smlib-extend-converges 590d8a1): eaa998a's curvature run-off is 4.986 long, area 413.882.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: an extension SMLib cannot make exact says so, naming the length asked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: a control spline can carry its own knots and weights
A sketch spline over control points was always the clamped uniform B-spline
over them, so a free-form edge whose knots are not evenly spaced (or whose
weights are not 1) could only come into a sketch as one curve per Bezier
span. A control spline now may save `nurbs`: its clamped knots and its
weights. Its points, polyline, exact pieces (one a knot span; conics for a
rational quadratic), the solver's distance and curvature, links, parallel
re-projection and inspect.sketch all read them; a loaded design's are
checked. One pending format file (spline-knots).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch projection: a free-form edge comes in as the one exact spline it is
A projected spline edge of several Bezier spans came into the sketch as one
curve per span (#1508), so a G2 round's bottom edge was 16 curves and a path
naming the corner named one span of it (#3604). The kernel now reads such an
edge (a spline, or an elliptical arc of several spans) as the one clamped
B-spline it is over the edge's interval, its knots and weights its own, and
the sketch takes it as one control spline whose ends sit on the edge's
vertices. Planar regions still read edges span by span. The 3604 case builds
with its original path and leaves KNOWN_FAILING.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet rig: blends past an outer rim of their faces build, on SMLib smlib-blends-past-rims
The owner's ruling: a round or chamfer that runs past an outer edge of its face into open air
builds, tangent where it has room and cut by the face beyond where it runs out. SMLib's branch
smlib-blends-past-rims builds them by the rig's analytic answers. Off the known-failing list:
the disc's rim past its 2 mm wall (190), the hole's top rim R12 past the plate's bottom, the
chamfer past the cylinder's bottom (2893), each closing on the wall continued as itself, and
926's chamfer ending on the boss's wall, which now builds to its answer too.
The sloped basins' R4 rim rounds (1080, mitred rounds built together where one overflows) build
to their analytic volumes (to 6e-9), and stay listed with that reason: their continuity check
(g1 at every blend seam) takes in the mitres' creases, G0 by the mitre ruling.
2893-chamfer-two-distances-elliptical-rim is graded as a solid (the owner: it builds) and stays
listed, waiting on the ruling on unequal chamfers along a rim whose angle varies.
5158-fillet-round-just-past-a-10mm-face stays listed with its cause found: the round passes
5e-6 under the box's top back edge, inside the body's tolerance.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Naming: test that a round of a round's end has no seam with that round's faces
The r1 round of a block's top edge, chained onto the end curve of the r2
round of its arc at a cylinder (rig fillets/every-block-cylinder-crease-
top-edge-after-arc-round-r1), ends where it runs into the cylinder. That
edge is no seam of the r1 round: the cylinder is a face of the r2 round,
not of the r1. blend_seams takes it for one today (the r2 round's name
F3:blend:F1:+z|F2:side holds a | of its own), and the rig reads it as a
contact seam at 60 degrees.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Naming: a blend's seams split its edge's name at the | between its two faces
A blend face's name holds the edge it replaced, <face>|<face>, and a side
of that edge can be a blend face whose own name holds a |. Whether a face
is a contact of the blend was read as the edge's name starting or ending
with the face's name next to a |, so the r2 round's own face F2:side read
as a contact of the r1 round F4:blend:F1:+y|F3:blend:F1:+z|F2:side. The
edge's name is now split into its two faces, a blend side read whole as
the two faces of its own edge.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Fillet rig: five refused blends build, off the known-failing list
926 (the chamfer ending on the boss's wall), the oblique cut's r0.1
round, the every-block r1 round (its seam with the cylinder is no
contact seam, after the blend_seams fix), the up-down squares' concave
chamfers and the shelled box's lip chamfer build with SMLib branch
smlib-blend-refusals (f8650b8 and later). 1207 r0.5 passes SMLib's check
on its rails now and stays listed for the next cause: its end rib on the
boss, which starts where the round and the boss are tangent.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the trough and the pocket whose floors fall to a drain build
SMLib now offsets a vertex where four faces meet (two walls and two facets at the floor's
corners, four facets at the drain) to two vertices joined by a new edge (tangency-labs/smlib
branch smlib-shells). Both volumes match their closed forms. The pocket's lining, hanging from
the top's rim round the pocket, stands apart from the slab's outer walls with the cavity rising
between them to the open top: the case says two shells in the one body.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the plate with a hole through its arc side shells open at its far end
SMLib's merge now intersects the offsets of an edge's faces where they could not be mated along
it (the hole's offset poking out through the half-round side's; tangency-labs/solidcore#1795):
one closed valid solid with the one face open, as the owner ruled.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the ring cut frame and the up-down join shell
SMLib's inset now keeps only the regions that are cavity, not the one the offsets close where
they overlap (between the two faces of #545's 0.5 floor, round the up-down join's two empty
octants). The frame's core under the recess is hollowed to a sealed void, so the case says two
shells and its closed form, 21044 mm³.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: #616's lid shells open at a rib's side, with the 0.15 lip
SMLib keeps the skirt top's offset where its loops wind the other way under the opening, the
cavity's floor (the owner's ruling of 2026-10-31: build it; a lip thinner than the wall is no
break-through).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Known failing tests: the action matrix's shells and chamfers as they fail with SMLib batch 7
The ring cut frame's and the up-down join's shells build now, and so do the up-down join's and
modern-plastic's chamfers (SMLib smlib-blend-refusals). #616's lid in the corpus still fails
SMLib's loop check, the shelled box shelled again at an inner wall is unchanged, and the
oblique cut of a cylinder's fillet still fails SmSurfOfRevolution's Test #7: 3 actions of 7.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* SMLib: pin 26cc451 (batch 7: rounds past a rim, blend refusals that build, shells)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Known failing tests: the shell after a cut whose end touches an arc side builds on SMLib batch 7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Surface fair test: the energy falls strictly, the face moves, and the edges are read after the fair
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch scaling test: the first dimension sets l1 to 40 and scales both joined rectangles about the origin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames tests: a pick on a moved component or an instance removes the exact round and bore volumes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Issue 1080 tests: the rib's rounds and the mitred corner chamfers and rounds have their exact volumes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Engine tests: lip_after_boss checks each lip's and groove's exact band, hole_as_deep_as_the_plate each hole's exact bore
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Robustness tests: lip_after_boss and hole_as_deep_as_the_plate live once, in the engine's tests.rs with exact volumes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Engine tests: loft_cut goes; loft_spacing's hollow elbow covers its section counts and more
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel loft test: the square-to-circle loft has the oracle's exact ruled volume, without printing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tessellation lens test: the lens's triangles fill exactly the rhombus through its arcs' midpoints
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Pattern test: six chamfered holes take exactly five more holes' bore and chamfer rings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel pocket floor fillet test: the corner rounds and the floor loop round add their exact volumes, by Pappus at the corners
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Shell regression: the saddle-corner shell opened on the top box's side has its exact volume
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* SMLib history test: every operand's order is the identity on its record's faces and edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Boolean history tests: the SMLib module's box-minus-sphere, box-minus-cylinder and box-union-box copies go; the top-level ones check more
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Modify history tests: shell, offset and thicken are one test each through the public API, with the volumes, refusals and history the SMLib copies checked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Chamfer history test: the chamfer after each box cut is exactly one face on the painted block too
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Grid test: a pole side's face is the five triangles fanned from its one grid node, none degenerate
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel tests: the twelve ignored print-only debug tests and surveys go; coplanar_curved_booleans checks the flush-capped cylinder cuts and unions they printed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel: the #883 board fixture generator is an example, not an ignored test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* STEP import test: a seam sphere whose meridian stops short of the pole imports as the whole 2 mm ball
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Material tests: the nine copies in material_properties go; the persistence file checks the library copy's card and formats 20 and 21 in one loop
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sample test: one loop checks every sample builds cleanly and without a panic; the robustness copy goes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Known failing: the non-antipodal seam sphere import, refused for a loop of no (u, v) area
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: rustfmt the board fixture example and the coplanar asserts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the two 3871 cone cases were byte-for-byte the 258 cases; the 258 cases carry their sources
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: a volume or area can be graded as a hand-derived range where analysis only bounds it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: fillets keeps one case per regime; 17 replications of a case in the same regime go
The sloped-basin chamfers and rounds at 0.5 mm rims repeat the 1 mm rim's regimes; two of the
three knife-edge chamfer tips, the r1 and box r3 curvature corners, the r1 tangent corner, the
1 mm pocket-rim and hole-rim chamfers short of the floor and the r1 together-round each repeat a kept case's regime
and grades. #854 moves to 851-chamfer-arc-top-edge-9-5, and the cases that cited a dropped one
cite the kept one or state its formula.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: five cases outside fillets repeat a kept case's regime and go
A square cut is the slanted plane's ordinary crossing; the cam's half turn is the quarter turn's
contact at a symmetric angle; the r15 slab stands inside the same coincidence tolerance as the r10;
the 90 degree unfold and the 40 degree flange repeat the 72 degree and 20 degree cases' formulas.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 3243 rim and tooth join graded on its volume (rim plus the trimmed tooth less their 0.01 mm overlap)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 3782 emboss on a cylinder graded on its volume, area, faces and box (the wrapped 4 x 5 badge raised 1 mm)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 3604 G2 swept-tool cut graded on a volume range (filleted box minus the swept corner section)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 4505 coil joined through a cylinder wall graded on its volume, area and box (cylinder plus the wire's screw-swept segment outside r 76)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 4879 window cut through a thickened spline revolve graded on a volume range and its faces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 4623 join of crossing pleated loft skins graded on its volume and box (both skins less their overlap)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 831 tapered glyph extrude graded on a volume range and box (the font's S drafted in by 10 deg)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 2357 ring of 90 cylinder segments graded on its volume and box (the segments less their 90 joint overlaps)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 4542 fluted wall joined on a revolved base graded on its volume and box (the base by Pappus plus the fit-spline ring)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 1985 and 2243 STEP-export enclosures graded on their volume and box (the outline less the cavity, plus gusset and standoffs)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: both 4092 loft, ribs and pad unions graded on their volume and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 1525 graded on its volume (the convex body's exact 2 mm inward offset), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 1494 graded on its volume (box and cylinder less the 1 mm-offset cavity, sharp to rounded concave edges) and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 4492 graded on its box and a volume range (the face's 19 mm sweep added, within the block's sides)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 745 graded on its volume (the end moved 1 mm plus the spline boss's exact area), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 4567 graded on its volume (the revolved spline less its revolved 2 mm offset), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the up-down squares shell graded on its volume (the columns less the 0.346 mm-offset cavity, sharp to rounded concave edges) and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 545 graded on its volume (the frame less its 0.5 mm-offset cavity, sharp to rounded concave edges), its sealed pillar void and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the shell-again case graded on its volume (the shelled box less the 0.5 mm-offset cavity in its walls) and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the arc-sided plate shell graded on its volume (sharp to rounded at the hole's bottom), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 616 graded on its volume (the lid less its 0.5 mm-offset cavity, sharp to rounded concave edges) and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 391 graded on its volume (the shelled housing, sharp to rounded at the flange, less the letters' 0.6 mm deboss) and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: shell/3576 was the ladder's drafted box with rounds shelled, recipe for recipe; the ladder case grades it and carries #3576 and #3573
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the two 851 chamfers of 2 graded on their volume (the cone's sweep, and its union with the front edge's prism)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the chamfered corner of the lipped shell graded on its volume (the chamfer's triangle through the wall)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the concave round into the peg's cylinder graded on a volume range (the torus it must add, the band it can't leave)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the two folded 72 degree trays graded on their volume (flat area x thickness) and the walls' reach
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the flanged rhombus graded on its volume (flat area x thickness, all four reliefs cut) and its walls' ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the base with two adjacent flanges and a hole graded on its volume (base, bends and panels folded)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the flange beside the ledge graded on a volume range (the flange's two readings of its length)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the two G0 window patches graded on the box the part they close keeps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the hub's six swept grooves graded on its volume (the revolved hub less each tube's part inside it)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the cut mirrored loft graded on the box its sections pin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the three modelled-thread joins and the fine M48 graded on their volume (the basic profile's groove, Pappus)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the oblique-cut round graded by its seams (tangent, not curvature-continuous); the flanged rhombus says what it tests (its reliefs stay apart at 60 mm)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 3841 is 168's rim touching its coin along a circle, and 4092's reduced recipe is its report less a flange clear of the failing join; the kept cases carry their sources
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the oblique-cut round keeps its old grade until the new blend algorithm lands
Its seams grade needs the continuity check to skip the body the round is not on. Fillet cases
wait for the new algorithm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: 1985's enclosure is 78 x 77 (74 and 73 inside, 2 mm walls); its volume 38063.827 by hand
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the three spline walls' face counts wait for the one-wall decision; their volumes grade them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* STEP import: a face bounded by seams alone runs its loop the other way, never turns over
A loop that uses each of its edges once each way (a whole torus within its tube and ring seams)
is the same set of uses run backwards, so it says nothing of the face's side. One written
clockwise in (u, v) turned the face over, against its same_sense: the torus came in inside out
with a warning. Such a loop is now reversed and the face keeps its side.
Test: seam_only_torus_imports_as_a_whole_ring, both orders of the two seams, volume 2π²Rr².
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* STEP import: a face bounded by a slit alone is the whole of its closed surface
A loop that runs out along a chain of edges and straight back (a meridian from a sphere's pole
stopping short of the other, out and back) encloses no (u, v) area, yet on a closed surface it
bounds all of it less a cut of none. The reader only read such a face when the slit already ran
pole to pole (and moved the sphere's frame onto it only then), so the 2 mm ball whose meridian
stops at 2.5 rad was refused for its empty loop.
The slit is now made the face's seams, so its loop bounds the surface's whole domain: on a
sphere, a revolution whose profile ends on its axis, or a spline closed round u that collapses
at both ends, the slit's meridian is run on to both poles, out and back (a sphere's frame put
on the slit first, whichever two points it joins); on a torus, the circle the slit lies along is
closed and the other circle through its start is the second seam. The seams on a sphere are its
own meridians (angle 0 on the equator), so their pcurves are exact lines on its form.
Tests: non_antipodal_seam_sphere_imports_as_a_whole_ball passes (its known-failing line goes);
seam_only_torus_imports_as_a_whole_ring adds a torus bounded by a slit along its tube.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: the test-peg's concave arc and front top edge rounded together stay within the body's box
A new fillet case, report-fillet-concave-arc-and-front-top-edge-together-solver-residues:
the reported part's bar (with the sketch solver's residues) whose sides run tangent into the
cylinder, its concave arc and front top edge rounded r2 together. The plane of the front face
bounds the whole body, so every blend lies within the unblended body's exact box (SMLib's tight
box); graded to 4e-5, the corner patch's own tolerance. On SMLib 2fc375f the corner patch
stands 0.0374 out of the front face (box y min 0.0205): listed in KNOWN_FAILING.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: the test-peg corner at r5 and r7
Two more fillet cases, the reported part's concave arc and front top edge rounded together at
r5 and r7, with the same exact-box containment check (graded to 4e-5, the corner patch's
tolerance). On SMLib 2fc375f the corner patch stands 0.128 (r5) and 0.230 (r7) out of the
bar's front face (box y min -0.0699 and -0.1723): listed in KNOWN_FAILING.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: blends that end where their face runs tangent into another
Fifteen fillet cases on the test-peg's shape with clean numbers: a bar 40 x 16 x 10 whose far
end is a half disc R8, a disc R8 standing 10 on its top, joined, so the front face runs tangent
into the cylinder along x = 40 and the front top edge (convex) meets the concave arc of the top
tangentially there. Each blend ends on a face tangent to the one it rolls on.
- Rounds: both edges together at r2 and r5; one after the other in either order at r2, and at
r1.5 and r3; the front edge alone as a curvature round, whose end on the cylinder is a
semicubical cusp. The containment invariant (the unblended body's exact box, to 4e-5) and
G1 seams, or the analytic volume where the blend has a closed section.
- Chamfers: the front edge alone and the concave arc alone (analytic volumes: the section along
x up to the wall, the cone's spandrel ring clipped by the sides), both together, and one after
the other (1 then 2).
- STEP: the peg written to STEP and read back, its front edge rounded (analytic) and both edges
rounded together.
- A cone: the peg drafted 5 deg, whose front face runs tangent into a cone along a generator,
its front edge alone and both edges together.
The quadratures are tanh-sinh, converged to 1e-13; SMLib's own volumes of the passing analytic
cases agree to 4e-9. A sphere is left out: a plane meets a sphere tangentially at a point, not
along a seam, so it is not this ending.
On SMLib 2fc375f eight fail, listed in KNOWN_FAILING: every chamfer that ends tangent (status
1001, SmFilletNx1Corner), the two rounds together (the corner patch 0.0374 at r2 and 0.128 at r5
out of the front face, and the rounds meeting with normals 180 degrees apart where their
contact lines on the top cross), the same on the STEP-read peg (status 1001) and on the drafted
peg (its corner refused as unsupported).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: fillet corners graded curvature-continuous, the default to be
Six fillet cases that pick their edges with no type, so they take the fillet's default, which the
owner has ruled is to be curvature-continuous (G2) at every corner, with circular rounds kept as
an option. Each grades every seam of the rounds and of the corner patch G2, on one valid body:
- an oblique convex corner (a block drafted 15 deg);
- a four-edge and a five-edge apex corner (pyramids lofted to a point);
- a pocket's concave corner;
- a mixed corner (a step: one concave edge, two convex);
- a corner beside a cylinder (the top corner of a half cylinder).
All six fail on SMLib 2fc375f, listed in KNOWN_FAILING: today's default is the circular round,
whose seams jump in curvature by 1/r. On the five-edge apex the corner patch also meets two
rounds at 8.45 degrees (G0).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: the test-peg's front chamfer builds
With the SMLib fork's smlib-tangent-ends (a rail's end on its side edge is the rail/edge
crossing), report-peg-front-chamfer-d2 passes. Its line leaves KNOWN_FAILING, for the pin that
carries that fix.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: the curvature-continuous corner cases pick the curvature fillet
The six corner cases added in 3a854104a took the fillet's default type, on the premise that the
default would become curvature-continuous. The default stays the circular round, so each case
now asks for the curvature fillet itself (type curvature: curvature-continuous sections and
corner patches) and keeps its grading: every seam of the rounds and of the corner patch G2, one
valid body. They are renamed from cov-fillet-g2-default-* to cov-fillet-g2-*.
The oblique three-edge corner (a block drafted 15 deg) and the pocket corner pass. Four fail, as
KNOWN_FAILING now says:
- the corner beside a cylinder: the curvature fillet builds its sections only between planar
faces;
- the four- and five-edge apex corners: refused because the default setback is shorter than
where the rounds' contact lines meet (3.90 and 3.51 mm from the apex);
- the mixed corner: SMLib sets back a corner only where its edges are all convex or all
concave.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rig: the test-peg's concave chamfer, alone and after the front chamfer, builds
With SMLib's tangent end as an event of the fillet's trace (blend-end-event 6d73e4f), the
concave chamfer's rail on the cylinder ends where it crosses the seam along which the front
face runs tangent into the cylinder, continued past the vertex, and its end rib on the front
face is built from there. report-peg-concave-chamfer-d2 and
report-peg-front-chamfer-d1-then-concave-chamfer-d2 pass and leave KNOWN_FAILING. The two
chamfers together still fail, now at the mixed-convexity corner where they meet: its line says
so. Rig against SMLib 0cc48bd: no area regresses (963/993 pass, 961 on a87c502), ladder 168/168,
kernel lib only its listed failures.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: constant rounds of the exact classes, and a tee's round
A plane cutting a cylinder or a cone at an angle, a sphere or a cone coaxial with the other face, a
cone and a cylinder touching one ball, two pipes touching at a point: their rounds' centre lines
are rational, so the rounds are rational surfaces of degrees fixed by the construction ((4, 2),
(2, 2) revolved, (6, 2), (12, 2)). The tee's centre line is not rational; its round is graded on
its volume. Volumes from the divergence theorem over the exact pieces, at rel 1e-6. The six that
SMLib 0cc48bd traces are listed in KNOWN_FAILING with what they come out as.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the exact-class rounds pass on SMLib's classified exact rounds
The rounds now come as the rational surfaces their classes give, closed ones as two faces split
at their seams, the touching pipes' as four: one splines entry a face, each of the class's degrees.
Their KNOWN_FAILING lines go.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* SMLib: pin 7ac037e (the new blend's tangent-end event, zero-speed G2 ends, and its exact-class rounds)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the fillets known-failing list is the 22 cases that fail on SMLib 7ac037e
Twelve listed cases build on the new blend's end event and exact classes, or were already
built on develop: they come off the list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: #316's bottom rounds as large as the wall, or larger, shell with a step wall at the opening, not refused
Where the round meets the open bottom the cavity's wall steps down along the bottom's normal, so the
round meets it at 90 degrees and the opening is exactly the picked face. The cases are renamed and
graded on the exact volumes, and come off the shell known-failing list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Merge fixes: every crate and test target compiles on the merged tree, but for crates/geom's hlr
world_state, view::bounds, home_camera and scene return Result on develop; new
main code takes that with ? or session_world. New fixtures carry the spline's
nurbs. ForeignCopy::of returns Result. occurrence_placement_with walks the path
with its moves, since the placement index holds pending_moves only.
The hlr port is separate and still to come: this commit does not compile as it
stands in crates/geom/src/hlr.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Drawings hidden lines: read develop's B-rep records
Edges come from the record's edge list, cut to their interval (C3::of_edge), and
faces from its face list; a cylinder, cone, sphere or torus chart takes its bounds
from where its NURBS form lies on its label (S3::of_face). A rigidly placed
revolution has main's revolution chart; other placements stay refused. Moving a body
to its centre goes through Brep::moved. Loops are read against the natural normal of
the face's parameters where a chart wraps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Hidden-line fixtures: build develop's records from the fixtures' data
Fixtures keep their bounded curves and surfaces and their own edge numbers; a private
builder makes the canonical record, and the local prepare puts the edges back in the
fixture's numbering. Assertions are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Hidden lines: tests of the bounded edges, face charts and placed revolutions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* drawing-hlr doc: what is drawn and refused on develop's records
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* hlr tests: a placed revolution is refused when its placement is not rigid
The new model has one record for main's Revolution, which was drawn, and its
PlacedRevolution, which was refused. An identity placement is now the former, so
this test's fixture takes a non-rigid one. The refusal it asserts is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Hidden lines: a traced intersection is drawn only where its spline lies on both surfaces
A leader off either surface is refused like a curve with no spline to follow. Tests: a traced rim
drawn on the circle and plane within tolerance, the same leader 1 mm off refused, and kernel bodies
with arcs through the production prepare against closed forms.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Hidden lines: kernel bodies through the production prepare against closed forms
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Tests from main: the world state is a Result here
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* A blend's pick measures close edges on their curves, not their polylines
A polyline can be a chord off its edge, more than two edges are apart near a
tangent point. A pick exactly on a ball's rim took the straight edge the rim is
tangent to, and solidcore built a chamfer of that edge with a clean check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
(cherry picked from commit c786db6bf4)
* Merge fixes from the first SMLib test pass
Model cache key covers the crates develop's kernel adds under doc (profile, smlib, step).
A piece taking a name also takes the feature that made it: SMLib lists a cut's pieces in another
order, and the swap left the name on a piece of the wrong feature.
A replaced analysis keeps its status slot. A command with no world picks does not place the model
first, so assembly.mass_properties answers for a flattening placement. FeatureCommon loses the
touching key the merge added; only the contracts that read it take it.
Two of main's tests listed as failing on SMLib, with why.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Merge fixes from the ui test pass and the gates
Main's thread.direction keys go with develop's thread hand, which replaced them. Vietnamese for the
messages develop added while main made vi a complete catalog. CGA and 1-bit themes set develop's
comb and section hatch colours. A ribbon button with a persistent effect is pressed only while its
tool runs, so persistent_ribbon_pressed alone decides how its effect is shown; other analyses stay
pressed while on. Two of main's ui tests listed as failing on SMLib, with why.
Gates: fixed thread tables become slices, one collapsed if, rustfmt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* A silhouette takes its facing from the surface's normals
A flat triangle beside the outline can tip the other way from the surface it approximates, and its
edges joined the outline. On SMLib's sphere that made 192 segments instead of the equator's 64, 100
curves and 95 profiles from the tight fit of #7989. Each corner's normal is used where it is close
to the triangle's own; a mesh without such normals (none, zero, not numbers, or averaged across
creases) keeps the triangle's normal, as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Clippy and rustfmt on the merged tree
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
* Stepwise open checks every feature under the session's mode
OpenSteps::start evaluated under the default check mode, and finish kept those results under the session's mode: an each_step or off session opened in steps recomputed nothing. start now takes the mode (the app passes its session's), and a mode that changed before finish evaluates the design again under the new one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Clippy without SMLib: the planar-sheet edge reader is built only with it
Its one caller is in the smlib-only sheets module, so without the feature it was dead code and
clippy -D warnings refused the kernel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* SMLib: pin d01d7b0 (the new blend's one Gⁿ section generator: the chord, circle and curvature sections, and the variable rounds as the union of their balls)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the section orders, chord, circle and curvature section, on planes and against a cylinder
Eight fillet cases for the blend's cross-section by its order of contact with the faces, each
graded on its analytic volume at rel 1e-7 and its exact continuity (the order, and not the next):
- a box's top back edge chamfered 3 (G0), rounded r3 (G1) and curvature-rounded 3 (G2): the
areas cut off the corner s^2/2, (1 - pi/4) s^2 and 113/756 s^2, the last by the default
thumbweight's definition;
- a pipe R10 dipping into a plate, its concave edge chamfered 2 (the chord between the contacts of
the ball SMLib rolls for that setback, radius 1), rounded r2 and curvature-rounded 2, each
section's added area by Green's theorem along the plate, the section and the pipe's arc; the
order-2 section is built from the faces' feet of the point at distance d from both, which on
the pipe are not linear in d;
- a boss root curvature-rounded 2, the square corner's section revolved (Pappus);
- a variable round r1 to r5 along a box edge (rel 1e-5): the balls' envelope is a circular cone,
and the volume is the cone's sections integrated along the edge.
Three fail today and are listed: the two curvature rounds whose faces are not a square corner of
planes (SMLib's quintic blend curve, not the order-2 section: rel 6.5e-7 and 1.2e-5) and the
variable round (great circles, not the envelope's: rel 4.8e-5). The other five pass on SMLib
7ac037e.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the curvature fillets' expected bodies from the order-2 section at thumbweight 0
SMLIB_BLEND_CURVATURE's section is now the order-2 G^n section at thumbweight 0. Between two
planes square to each other it cuts A = 0.154192655384275 s^2 off the corner, its first moment
about either face 0.0291753295725360 s^3 (Green's theorem on the section): the curvature cases
built on that corner (862, 2708, every-box-edge, every-hole-top-rim, every-l-bracket,
every-block-cylinder-crease, the three-edges-at-bar-corner reports, 3604's fillet) take their
volumes from it by their own methods, the peg's front blend 23.3237146876 (its section along x
up to the wall). Between planes the section's t^3 term vanishes (their feet are linear in the
distance): the box edge case is exactly G3. The boss root is a certified fit, G3 to the plate and
G2 to the wall at Continuity Analysis's tolerances: at least G2. The boss root and the pipe on
the plate pass on SMLib's section and leave the known-failing list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Curvature fillets: the section's default thumbweight is equal area, so the round's volumes are the circle's
On the round's rails the order-2 section takes off what the ball's circle does: (1 - pi/4) s^2 at a
square corner, first moment 0.0474559669443 s^3 (w = -0.5252123889). The kernel and engine tests
and the curvature rig cases take their volumes from it by their own methods; the pipe on the plate
from its own wedge (70.52878 degrees, w = -0.8544103493). The G2 corner patch's seam test is listed
until the corner step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: four G2 corners wait for the corner step: their patch meets the new section's rounds G1 at one face seam
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the turn at a corner of two rounds, Mitre (the default) and Swept, at a pocket's floor and a boss's base, by exact volumes
A round's spandrel A = (1 - pi/4) r^2 and its first moment about its wall M = r^3 (5/6 - pi/4):
Mitre adds L A -+ 2 M per edge (cut at, or run on to, the corners' bisector planes), Swept turns
the section about a convex corner's edge, (pi/2) M a corner, and refuses a concave corner rounded
less than the ball. The pocket's tangent chain round its R3 corners is a torus each. Graded to
1e-7, where Mitre and Swept differ by 6.6e-6. The Swept cases are listed until solid.fillet
takes a turn.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: a junction family: oblique wedges 30 to 150 degrees rounded and chamfered (exact), bosses upright and tilted, pipe tees and a Y junction
Four are listed with their causes: the equal-pipe tee (its exact conic-pair rounds meet at the
ellipses' crossings in a corner the old corner code cannot join), the tilted bosses (1001, before the
blend rework too) and the Y junction (refused for room at its triple points).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Variable rounds: graded by the union of their balls (their envelope), not the balls' great circles
The smlib crate's laws and ladder 005, 006, 007 and 012 take the volumes the balls' envelope
removes; the law with a corner is its own test, listed as failing until the corner step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel tests: variable rounds graded by the union of their balls, the removed volume to 1e-4 of itself
removed_by_balls integrates, in each plane square to a right-angled edge, the corner the union
of the balls leaves (by rays from the edge, the least entry over the balls), cut to the body's
section. The law with a corner through a middle point is its own test, listed as failing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel tests: a spline radius whose balls fold over one another at its peak is refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: the variable round on its cone passes (the round is the balls' envelope)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: three rounds of different radii at a corner listed: the corner's transition kinks with the balls' touch circles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Ladder: the variable rounds graded to 1e-6 by the union of their balls; 012 by its law going on past the edge
At the default 1e-3 the great circles' volumes (4e-6 off) passed too. SMLib builds each within
1.6e-7. The golden takes the new volumes and areas; counts unchanged. The G2 corner test listed
as failing passes on SMLib's step 3 and leaves the list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Reference tests: the variable rounds 77, 78 and 81 pass on SMLib d01d7b0; their known-failure marks come off
The new section builds their edges on the surfaces, so STEP export no longer finds them 4.6e-5
to 6.1e-5 off. develop's Reference tests (60393a718) report all three as passing while marked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* STEP import: a ball's halves whose seams are off each other's quarter lines each form within one turn
A sphere split into two halves along a circle about its axis, each half covering a pole with no
seam, gets a seam per half from the first vertex of its loop to the pole. The circles between the
halves group their frames so they turn together, and when the two seams are not a whole number of
quarters apart no one turn fits both: the group kept its frames, a half's form ran past one turn,
SMLib's trim (SMLib and solidcore alike) across the form's end crossed the face, and the mesh
folded over the ball (a rotor's ball showed torn; its half had 196 times its area in triangles).
When no one turn fits the group, each spilling face is now turned on its own to start on a quarter
line. On the rotor file this also clears three other faces that were filled leniently and a
0.076 mm edge gap; regression test in step_in/tests.rs with the area and volume of each half.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
(cherry picked from commit b3188e005d427043b918267449c2336a1777e54f)
* SMLib: pin 5e8c9c1 (the new blend's corners: Ball and End/Join; exact fold and room checks with fit sizes; overflow in place; the round as its definition)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel tests: a law's dip shows its corner ball's sphere, a peak's two rounds cross (the reasons had them swapped)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Reference tests: the variable rounds 77, 78, 80 and 81 expect the union of their balls
A variable round is the envelope of the balls rolled along the edge, which takes less than a
quarter round in each section. The expectations are now that union, the law continued past the
edge's ends along its end slopes, integrated by Gauss-Legendre panels in x and t; 2, 4 and 8
panels agree to 1e-9 of the body's values, and 77's removed volume matches a brute-force union of
balls to 2.5e-10. The nearest-ball search now scans the balls the ray meets around ball x
(|x - s| < r(s) sqrt(sin 2t)) on their own, which near the faces and where 78's radius closes to 0
are narrower than the global scan's step. Regenerating keeps each case's known_failure. 79, a
constant radius, is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Known failing: the law corners' kernel and crate tests and rig 1207 pass on SMLib 48ea616
SMLib builds a variable round's law corners as its balls' union (the corner
ball's zone at a dip, the sides' crossing at a peak): the kernel's corner
through a middle point (39.5410) and the crate's 4 -> 2 -> 4 law (39.5421) pass.
Rig 1207 (the bar's top edge rounded after the boss's arc, r0.5) builds and
grades on the same SMLib; it failed on c820346.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Kernel rig: every fillet and chamfer case rounds its tangent chain
The owner's ruling of 2026-11-01: the rig and the ladder round with tangent_chain true, how a
user's default pick behaves. The 38 fillets-area recipes and the ladder's 07-fillets/016 and 018
that passed false now pass true. The shell recipes keep theirs: a shell's tangent_chain is its
open-face chain, a different feature.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the partial-selection cases kept as -partial-chain copies, tangent chain off
Where a case's point is one edge of a tangent chain rounded alone, a copy keeps tangent_chain
false as its own case (SMLib rounds exactly the picked edges, ending at the smooth vertex); their
expectations stay as they were, to be re-derived:
- fillets/1207-fillet-box-end-edge-into-unblended-round-partial-chain;
- fillets/every-fillet-after-fillet-curvature-front-then-side-r3-partial-chain;
- fillets/1207-fillet-bar-top-edge-after-boss-arc-round-partial-chain, renamed from
...-no-tangent-chain: with the chain on it is exactly 1207-fillet-bar-top-edge-after-boss-arc-round,
which the rig already has;
- ladder/07-fillets/020 and 021, the r5/r3/r7 and r5/r3/r2 corners (016 and 018) with the r3 on
its edge alone: with the chain on, the r3 runs on along the r5 round's end arc and down the
vertical edge the third round was to take.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the concave arc between the block's tangent sides kept with tangent chain off
fillets/every-block-cylinder-tangent-concave-arc-r2-partial-chain: the pick takes one piece of the
concave half circle, which SMLib splits; with the chain off its other pieces are left out, and the
blend is refused at the piece's end (the base gate's outcome). With the chain on the case rounds
the whole half circle. The copy keeps its expectation, to be re-derived.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: two chains that now build graded by their exact volumes
With the tangent chain on, two cases round more than the edge they pick, and their old
expectations were the single edge's:
- 1207-fillet-box-end-edge-into-unblended-round: the r1 chain is the end face's top edge, the r3
round's end arc and the back upright; 34 A + (pi/2) A (3 - c) by Pappus on the arc:
V = 7953.139216 (it built 7953.139216, the old 7957.505 passed only inside 1e-3), 10 faces.
- 851-fillet-top-front-then-front-left-upright: the upright's chain runs up the first round's
end arc on x = 0 and along the left top edge, so the corner becomes the R2 ball's eighth:
V0 less the first round's spandrel to the wall (35.344727) less 27 (4 - pi) + 2 pi/3:
V = 9530.777979 (built 9530.777987), 10 faces.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: a curvature chain round a round's end refused for its size; the concave half circle builds
- every-fillet-after-fillet-curvature-front-then-side-r3: the side edge's chain runs round the
first curvature round's end curve, whose radius of curvature has a weighted mean of 3 (its
setback) and is unbounded at the ends, so somewhere below 3: the size-3 blend's contact line
folds back on itself. Refused, "larger than the faces beside its edges allow", as ladder
07-fillets/016's r7 on the r5 arc. (It was solid or refused for running on tangentially.)
- every-block-cylinder-tangent-concave-arc-r2-no-tangent-chain: the chain takes every piece of
the half circle and ends at the convex edges it runs on into; it builds the analytic 19091.9620,
so the outcome is solid (the refusal alternative was the chain-off one's).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Known failing: two 851 chains whose corner piece is a ball of tube-centre radius 0
851-fillet-arc-then-top-front and 851-fillet-top-front-then-upright: with the tangent chain on,
each R2 chain runs along the end curve of an R2 round on a curved face (the arc round's end on the
front face; the first round's end on the wall), where the rolling ball sits on that round's own
centre line, so the piece is the ball about (39.2538, -19, 8): the three-edge rolling-ball corner.
SMLib fails with status 1001; the same piece on a plane end arc builds (front-left upright).
Expectations unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Ladder: 016 and 018 refused, their r3 chain takes the vertical edge; 020 and 021 recorded
With the tangent chain on, 016's and 018's r3 runs on along the r5 round's end arc and down the
vertical edge, so the third pick (60, 40, 8) is 3 from both of that round's contact lines and
names no edge: refused, asking for a point along one edge. The corners they were made for are
020 and 021 (the r3 alone), whose golden entries are 016's and 018's (021 measured on f12a101).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel tests: three rounds at a box corner end on one rational patch on the ball's sphere, not an analytic sphere
SMLib's Ball corner is always the rational patch exactly on the sphere (owner ruling, blend
design §23), so the corner counts as an 'other' face beside the three cylinders and six planes.
The removed volume still checks the corner against r³ − πr³/6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the curvature round on a pipe on a plate is listed: a seam grades G3 where exactly G2 is wanted
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel tests: the box-and-fillet wire fixture records the round's cylinder frame as SMLib now keeps it
The round's cylinder keeps the frame it was made on when it is turned (SMLib's SwapUV no longer
re-derives it): its origin sits at x = −20 on the same axis line, (x, 2, 8) along x, radius 2.
Same cylinder; one number in the record moves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Known failing: two kernel tests' reasons as they fail on SMLib 5e8c9c1 (a partial selection running into an unblended tangent edge)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: two curvature rounds get 600 s, past the 180 s default, while G2 certification is slow (tangency-labs/smlib#96)
On the CI runners the boss root and the hole rim, both size-2/size-1 curvature rounds, build
correctly but take more than 180 s: the order-2 section's span certificate and the round's
definition are evaluated station by station. The per-case limit is the one the thread cases use.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Lid ring sketch test: find the ring under the pick, not by main's kernel's name
On SMLib the lip join's exact history names the lid underside's ring a piece
of the lid's own start (F14:start#[...]), as the naming rule says for a face
that came from the feature's input; main's kernel named it after the case's
top it rests on (F2:top). The test looked the ring up by that name and so
stopped before the attachment it guards. It now takes the underside piece
under the pick point, which the cap certificate attaches on either kernel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Viewport culling test: each box's triangles from its mesh, not 12
SMLib meshes a 10 mm box in 108 triangles, so the hard-coded 12 a box stopped
the test before it reached the culling. The expected counts are now each
body's span in the scene.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Timeline chip test: a fillet that really reduces
The R20 fillet with fit reduce on one top edge of a 10 mm box builds on SMLib
without a reduced-radius warning, so the fixture had no warned feature. It
now rounds the four vertical edges at R6, reduced to the full round (5), as
the copy-warning test beside it does, and checks the warning says so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Oracle: 34-chamfer-then-fillet and 35-fillet-curved-curved pass on SMLib 5e8c9c1 (their STEP edges are on their surfaces)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Known-failing: the shell of a fully rounded box opened at one face fails on SMLib 5e8c9c1 (tangency-labs/smlib#102)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Known-failing: the action matrix's oblique cylinder cut fillet passes on SMLib 5e8c9c1; two shells still fail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the boss root's curvature round gets the rig's 1800 s cap: on the CI runners, 8 cases at a time, its G2 certification passed 600 s (tangency-labs/smlib#96)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: a case's continuity can ask for an order per seam (seams: [{order, edges, exact}])
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the pipe on a plate's curvature round meets the plate G2 and the pipe G3, 40307.8856312 (option B's order-2 jets, tangency-labs/solidcraft#10845)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Edge names: a seam names its one face once; the curve-id test reads every edge kernel-neutrally
A seam's two sides are the same face, and edge names list each face an edge
bounds once, so SMLib's extruded circle names its side's seam F2:side:c1, with
no separator. The name grammar now says one face also means a seam. The #5858
test no longer counts one '|' an edge: every part of every edge name is a
whole face name of the edge, one per face it bounds, two for the rims and one
only for the side's seam (checked to run bottom to top on the circle).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* rustfmt on the merged tree
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Known failing on SMLib: two of main's new tests assume truck's box mesh and fillet torus
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* SMLib: pin f916a8d (a round on a definition face is its definition; the G1 setback fill certified convex, setbacks too short refused naming the least; the G2 certificate halves a span no level can certify at once)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Fillet: a setback too short for its corner is refused naming the least that builds (smlib_blend_fit_size)
SMLib's setback corner takes a G1 fill only once certified convex, and refuses a setback too
short for that as SMLIB_ERR_NO_ROOM with SMLIB_FIT_SETBACK_AT_LEAST, the smallest setback that
builds. The kernel reads it (solidcraft-smlib binds smlib_blend_fit_size) and names it; the
Fillet dialog says it in plain words. Other room refusals keep their words. The r5 box corner
set back 5.5 is refused naming 5.962, which builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel tests: three rounds of different radii at a corner meet in SMLib's setback corner
Each round runs whole to its section square to its edge at its setback (the owner's rule, at
least 1.5 r, scaled to the least at which the G1 fill is certified convex), and the hole is the
setback split: one patch per round and the triangle in three quadrilaterals, 15 faces, G1.
Outside the box the sections span the body is the three strips', so its volume is theirs within
that box's. A later r3 round at the mitred corner makes the body all three at once make
(7928.142563938, 15 faces), as the engine and the model-cache tests have it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel tests: SMLib's own corner between curvature rounds is curvature continuous, as the G2 patch is
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the boss root's and the hole rim's curvature rounds take the default timeout again (37 s and 34 s on the box under the rig's parallel load, tangency-labs/smlib#96)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Agents: model decisions use exact geometry; a mesh is for display, export, previews and mesh bodies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* xtask: mesh-decisions, model decisions use exact geometry; today's 176 mesh decision sites are listed and the list only shrinks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Sheet metal: cuts and holes pass over sheets and bends by their exact boxes, never a mesh's
A primitive cut skips the sheets kernel::apart (exact bounds grown by the record tolerance)
finds clear of its tool; the bend check leaves the clear case to kernel::boolean, which answers
it from the same exact boxes with no intersection work. The mesh-box helpers are gone, and their
four lines leave xtask/mesh-decisions.txt (172 sites left).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Agents: AGENTS.md loses a stray merge-conflict marker line at its end
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Locales: Vietnamese for the setback-too-short refusal, now that vi is a complete catalog
Main made vi a complete catalog; develop's new message (ui.fillet_error_setback_short) had no vi
entry, so every_complete_catalog_carries_every_english_message failed on the merged tree.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: exact volumes for 1213's bent-tube round and 4782's bar round, rel 1e-6
1213: the loft is a cubic skin through the five sections (ellipses between
them), not a torus; its volume 131601.597487935 by quadrature less the exact
rolling-ball removal 233.662461919 gives 131367.935026 (was a Pappus estimate
on a torus, 131360.148, at rel 5e-4).
4782: the section's area in closed form, 25 pi/3 - 5 sqrt(75) + 25, so
V = 630.2934873 (was a grid estimate, 630.293125).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Kernel rig: the boss root's and the hole rim's curvature rounds take 600 s again: under CI's parallel load they pass the 180 s default (develop 820b7b6)
They take 37 s and 34 s alone on the box, but CI runs 8 cases at once on slower runners. Their
G2 certificate cost is the open item (tangency-labs/smlib#106, moved to solidcore#2344).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* After the merge: clippy's auto-deref, and the mesh-decisions list for the merged tree
Develop's list was taken on develop alone. Main's code (tap-marking reach, cut and hole box
checks, join pieces, print faces, placed measuring, selection items, imported mesh payloads) and
the branch's own exact_edges and named_vertex use meshes too; three listed functions were renamed
by main (face_outline and plate_recesses into FaceSlice, paste into build).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* After the merge: main's new tests on the SMLib kernel
- Cut To the far side of a curved wall (#8634): the tool stops past the first crossing of the
face ahead of the profile; SMLib's whole bore is one face that a line crosses twice, so the
single-crossing rule found none and the cut took nothing.
- Clearing view analyses goes through refresh_display, as main's #10687 made the others, so an
open feature editor keeps OK and Cancel after Zebra.
- vi, a complete catalog on main, gets the setback-too-short message.
- fillets/KNOWN_FAILING: 4782's cause is now its continuity check (SMLib f916a8d builds the
expected volume).
- Known failing, as main's tests assume truck: the spline wall's spans as one mesh patch, a
hole touching an edge at a point leaving one body, and a copy of a copy's triangles matching
a fresh mesh.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
* Twisted sweep: circles about a straight path are exact cylinders (solidcore#2184)
A twist about a straight path maps a profile circle centred on the path's
line onto itself, so its swept wall is exactly the cylinder. The skin
through the stations stayed within 3.9e-9 of it (6.6e-9 on the outer wall),
and a boolean with another body on that cylinder failed with status 1001
(solidcore#2184; the kernel's handling of a B-spline face lying on a
cylinder stays open there).
sweep_controlled now builds those walls exactly when the path is lines
along the profile's normal and there is no end scale or rails: a profile
whose every loop is such a circle is swept untwisted, and such holes in
another outer loop are cut as exact cylinders from the skinned sweep of
the rest. Other loops, and an axis-centred arc inside a loop of other
curves, are skinned as before; a failed cut falls back to skinning all.
Regression test in smlib_sweeps_tests.rs: #2184's tubes joined at 10, 16,
18, 20 and 30 degrees give one closed body of 11.5625 pi with cylinder
walls; a twisted hexagon with the bore keeps a cylinder bore.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SdcgEtwSrdwZxqTQp5MfnU
* After the merge: a hole that misses is found by exact boxes; a face is a one-face patch; main's mesh-box helpers gone
- `hole_misses` (main's #10701, through brett's branch) decided from the targets' mesh boxes. It now uses their exact boxes (`Body::exact_bounds`). An unknown box still leaves the hole not known to miss.
- With #10303's two shortcuts and `hole_misses` off the mesh, `body_box`, `mesh_box` and `padded_box` have no caller left, and are deleted.
- `project`'s intersection link passes its one face to `meeting_edges` as a one-element patch. This branch picks one face, not #9009's mesh patch.
- xtask/mesh-decisions.txt drops the six sites that no longer use a mesh here: `apply_traced_with`, `cut_end_past_face`, `beyond_cylinder_reach`, `hole_misses`, `body_box`/`mesh_box`/`padded_box`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* After the merge: split_move's Result reaches its callers; to_local's duplicated move check goes
`frames::split_move` returns a Result on this branch: an unplaceable model is an error, not a silent no-split.
- Move/Copy of a component (main's #9914) propagates it, as its other calls do.
- `to_local` had the solid.move check twice after the merge (brett's Option one and ours). Ours stays, after the no-picks/not-placed return.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* After the merge: main's two new tests take world_state's Result, as the rest of their files do
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Native B-rep: a ball patch is its own surface kind, read from and written to SMLib's flat kind 6
SMLib's flat arrays now carry the corner of three equal rounds as `SURFACE_BALL_PATCH` (kind 6): its net as a NURBS face's block, with its sphere's centre and radius as its definition (ids 36 and 166). The record reads it as `ball_patch {center, radius}`, a label like the analytic kinds, with the net as its `nurbs`. A plain sphere with a form won't do: the net is not a piece of SMLib's sphere NURBS, so SMLib's `IsNurbSurfaceSphere` would refuse it.
Written back, a ball patch is kind 6 with the same definition, which SMLib takes once its net is certified on that sphere. Elsewhere:
- Offsets classify it as its sphere, so its offsets stay exact and collapse at the centre.
- Face kinds count it as a sphere: fillet_three_edges_at_a_corner's corner is now `sphere`, no longer `other`.
- STEP, which has no ball-patch entity, gets the net as the face's B-spline surface, pcurves included.
- Iso curves and SSI of the label are refused; the face's form is what evaluates.
Test: a_rounded_cubes_ball_patches_go_round_with_their_spheres. The cube's eight corners are ball patches about the corners pulled in by r. Points of each patch lie on its sphere to 1e-12. The patches are kind 6 again after import, with the same definitions bit for bit, and the closed-form volume holds.
Format: pending/ball-patch-faces.rs. Docs: docs/native-brep.md and the rig README's `surface_types` (`ball_patch`).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* SMLib: pin v1.1.0-alpha (a18bbe5): the generic blend's step-4 corners, the Ball's sphere patch through the flat arrays, all-target CI
Since f916a8d:
- #120: every target again, plus the warnings fix;
- #121: the Ball's patch as flat kind 6 with its sphere, read by the previous commit;
- #122: tests gated on counts;
- #123: the Mixed corner;
- #124: the End at a smooth vertex;
- #125: four or more rounds, and open setbacks;
- #126: the equal-area thumbweight guard;
- #127: the trunk merge.
The SMLIB_PREBUILT checksums are from the release prebuilt-a18bbe5…, written by `scripts/fetch-smlib.sh --pin`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* smlib export tests: rustfmt's line for the rounded cube's edge midpoints
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: the fillet and ladder results on SMLib v1.1.0-alpha, the new failures recorded with their reasons
Fixed (off the known-failing list): the Mixed corner's peg cases and the concave arc with the front top edge (smlib #123), and the 40° boss junction (smlib #124). Eight cases in all.
New failures, recorded as they are, each with its reason. They passed on f916a8d.
- **Six cases grade a blend seam G0 where G1 (or G2) is wanted,** at the end of the round's contact seam, after smlib #124's End at a smooth vertex. Two of them also shift in volume.
- **Four cases come back unsupported** after smlib #125, which leaves setbacks to the Setback's corners only.
- **Ladder 07/012** makes 9 faces, 20 edges and 13 vertices, where its golden had 8, 18 and 12. Its golden entry is the new result, with the reason added.
Whether each change is by design or a defect is being established. A defect is fixed in solidcore, where the End and the Setback are being brought over (#2364, #2365), not in the frozen SMLib.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel ladder: 07/021 and 06/018 recorded as they are on SMLib v1.1.0-alpha, each with its reason
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel ladder: a golden case marked unstable is gated on its status, and 06/018 is marked
On SMLib v1.1.0-alpha, 06/018 makes 597 or 594 edges from the same input:
the union's post-process keeps pointers to edges it has deleted. A golden
entry's `unstable` reason makes the gate compare that case's status only
and name it in its output; recording keeps the reason, and only an edit of
the golden removes it. v1.1.0-alpha.1 fixes the cause and removes the mark.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* After the merge with main: its new code on develop's exact bounds, types and thread fields
- The sheet cut's cull (#10301) and the tapped wall's (#10227) use each
body's exact box (`exact_box`), not its display mesh.
- model.threads replies with develop's thread fields: form, hand (right,
left or both) and starts.
- surface.boundary's schema checks a network curve's continuity as the
handler does, and words a list entry's error as it does.
- Main's new tests take develop's Hole fields and world_state's Result.
- mesh-decisions: contact_sweep's triangle check is now `depth` (main
split `hits`).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Known failing: the 14 cargo tests SMLib v1.1.0-alpha fails, with what each sees; two cases that pass now
Develop's CI after the a18bbe5 pin (run 41522001173) fails 14 tests that
passed on f916a8d, and passes two listed ones. Each new line says what the
test sees on v1.1.0-alpha; v1.1.0-alpha.1 fixes the setback hole's cause.
shell_tangent_chain_that_opens_every_face_explains_how_to_keep_walls and
oracle 37-pyramid-apex-blend pass and leave their lists.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Cargo.lock: develop's profile, smlib and step crates at main's 0.30.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: main's six new sketch-only commands are exempt from a kernel case
sketch.construction_line (and its horizontal and vertical forms) and
sketch.spline.insert_point, remove_point and reverse change only the 2D
sketch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Cuts leave the bodies their tools can't reach, by exact boxes (#10225 on exact geometry)
- The per-target cut loop skips a body whose exact box lies clear of
every tool's, as main's version did with mesh boxes. The sheet culls
(#10226, #10301) and this one now leave the far sheets and bodies alone:
a_cut_leaves_bodies_it_cannot_reach_as_they_were passes and leaves the
known-failing list.
- a_cut_still_runs_where_its_tool_touches_grazes_or_meets_a_curved_face:
a tool 0.5 µm clear of the block is now left out (exact boxes; 0.5 µm is
far past the bodies' tolerances); touching and 0.1 mm in still cut.
- Known failing, with reasons: main's edge lookup by a stored point
(#11286, on the display mesh) is not taken; SMLib refuses the
wrong-way chamfer for its tangent chain first.
- EXEMPT: main's eight new sketch-only commands.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: main's new view, rendering, appearance and settings commands are exempt from a case
62 of the commands main added change no geometry: the view and render
panes, rendering lights and results, appearance tools, settings profiles,
point clouds (drawn as points, never a body), the selection, two sketch
edits, component links and History bar visibility, edit.repeat,
timeline.play, inspect.compare_picture (a picture against the outline),
and component.paste_from_design, which pastes the app's cross-window
clipboard that no command fills. Each joins EXEMPT's first section under
its family's reason.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: construct.plane.axis_point gets construction cases
The plane through a box edge and its far corner, graded against its
closed-form normal (0,-2,3)/sqrt(13) through the origin, and the refusal
of a point on the axis.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: assembly cases for mass properties, align, find limits and moving items between parts
- assembly.mass_properties: two boxes (2 g/cm3) in a rigid group: mass
0.006 kg, centre (18.333,5,5), inertia diag(0.1, 1.0333, 1.0333) kg mm2
by the parallel-axis theorem.
- occurrence.align: a block's end face onto a base's top face: a quarter
turn about y, centre (70,20,20), box (65,15,10)-(75,25,30).
- joint.find_limits: a slider between two stops: min -20, max 10 mm.
- component.move_features, browser.reparent and
component.move_sketches.to_parts: items moved into a turned and moved
part keep their world place (volumes, centres and boxes by hand).
The mass case assigns a material it creates, so material.create and
material.assign leave EXEMPT. PATHS names the new command modules.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Kernel rig: export and print face cases in the import area
- file.export_step, export_stl, export_3mf, export_obj: a 30x20x10 box
written and read back (the meshes converted to a solid): V 6000,
A 2200, 6 faces, box (5,-10,0)-(35,10,10).
- file.export_urdf: a hinged arm on a grounded base: 3 links, 2 joints,
and the base's mesh, written in metres, reads back as the
1 x 0.5 x 0.2 box (V 0.1, A 1.6).
- body.print_face: a cylinder's flat end is accepted, its side refused.
PATHS adds the URDF writer and the print face modules.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
---------
Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: brett19 <brett19@gmail.com>
39 commits, squashed; the originals stay reachable from tag archive/merge-main-develop. These commits sit on several merged branches, so the wave holds their combined result.
- 1b17dd7f5 brett19: Merge fixes: every crate and test target compiles on the merged tree, but for crates/geom's hlr
- 8f2c11da2 brett19: Drawings hidden lines: read develop's B-rep records
- c30ca0216 brett19: Hidden-line fixtures: build develop's records from the fixtures' data
- 5dd2509ae brett19: Hidden lines: tests of the bounded edges, face charts and placed revolutions
- 1642df0ea brett19: drawing-hlr doc: what is drawn and refused on develop's records
- ddcb80c8e brett19: hlr tests: a placed revolution is refused when its placement is not rigid
- e4977721f brett19: Hidden lines: a traced intersection is drawn only where its spline lies on both surfaces
- b3ef6ae52 brett19: Hidden lines: kernel bodies through the production prepare against closed forms
- 4cd2ae062 brett19: Tests from main: the world state is a Result here
- 51d7ad09e brett19: A blend's pick measures close edges on their curves, not their polylines
- 11a89713c brett19: Merge fixes from the first SMLib test pass
- 48fcb7aac brett19: Merge fixes from the ui test pass and the gates
- abd739855 brett19: A silhouette takes its facing from the surface's normals
- 85114c5a2 brett19: Clippy and rustfmt on the merged tree
- 55a46569f brett19: Stepwise open checks every feature under the session's mode
- 4627402e4 brett19: Clippy without SMLib: the planar-sheet edge reader is built only with it
- 5fbece0ac brett19: STEP import: a ball's halves whose seams are off each other's quarter lines each form within one turn
- eb78d20b0 brett19: Lid ring sketch test: find the ring under the pick, not by main's kernel's name
- 3048d8c49 brett19: Viewport culling test: each box's triangles from its mesh, not 12
- dc88b80e2 brett19: Timeline chip test: a fillet that really reduces
- 876203621 brett19: Edge names: a seam names its one face once; the curve-id test reads every edge kernel-neutrally
- 900635710 brett19: rustfmt on the merged tree
- b7e83cd7c brett19: Known failing on SMLib: two of main's new tests assume truck's box mesh and fillet torus
- 63bde053a jyviko: Locales: Vietnamese for the setback-too-short refusal, now that vi is a complete catalog
- 967a1caa6 brett19: Kernel rig: exact volumes for 1213's bent-tube round and 4782's bar round, rel 1e-6
- 82c821d2a brett19: After the merge: clippy's auto-deref, and the mesh-decisions list for the merged tree
- 5862ee223 brett19: After the merge: main's new tests on the SMLib kernel
- be78372b2 brett19: Twisted sweep: circles about a straight path are exact cylinders (solidcore#2184)
- 312d14500 jyviko: After the merge: a hole that misses is found by exact boxes; a face is a one-face patch; main's mesh-box helpers gone
- 6f7e51acb jyviko: After the merge: split_move's Result reaches its callers; to_local's duplicated move check goes
- 8f0c79b20 jyviko: After the merge: main's two new tests take world_state's Result, as the rest of their files do
- 5f4d70061 jyviko: After the merge with main: its new code on develop's exact bounds, types and thread fields
- 2b2ab6627 jyviko: Cargo.lock: develop's profile, smlib and step crates at main's 0.30.1
- e6a4b0a9a jyviko: Kernel rig: main's six new sketch-only commands are exempt from a kernel case
- 5acbd2e71 jyviko: Cuts leave the bodies their tools can't reach, by exact boxes (#10225 on exact geometry)
- d2b202307 jyviko: Kernel rig: main's new view, rendering, appearance and settings commands are exempt from a case
- 21db090ba jyviko: Kernel rig: construct.plane.axis_point gets construction cases
- c1f45cae2 jyviko: Kernel rig: assembly cases for mass properties, align, find limits and moving items between parts
- 084695416 jyviko: Kernel rig: export and print face cases in the import area
Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4e01031bc jyviko: smlib export tests: rustfmt's line for the rounded cube's edge midpoints
- c29190ec3 jyviko: Kernel rig: the fillet and ladder results on SMLib v1.1.0-alpha, the new failures recorded with their reasons
- 62d372cc1 jyviko: Kernel ladder: 07/021 and 06/018 recorded as they are on SMLib v1.1.0-alpha, each with its reason
- 2bf58241f jyviko: Kernel ladder: a golden case marked unstable is gated on its status, and 06/018 is marked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
A join that reports no history names faces by comparing the meshes before and
after. When the join makes the body bigger, round walls are meshed differently
and miss their old mesh at the naming tolerance, so they were named as the new
feature's faces. A curved face with no match now looks again within the two
meshes' chord tolerances. An edge name saved while a wall had the wrong name
falls back to the edge at its stored point.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: instances stepped in from an arc stop where the arc runs out, not turn round
Each instance after the first takes its side from a point one more step
past the last one. Stepping toward an arc's centre past an arc smaller
than the distance, that point lands beyond the centre, and the side was
read by comparing the point with the two offsets at the full distance:
the one toward the centre doesn't exist there, so the other won and the
next instance went back out onto an earlier one. The side is now read a
hair from the curve, where both offsets exist, and the point stops
halfway to the centre. The arc then runs out of room and the command is
refused there, as for a ring.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Offset side: read off the picked line or arc itself
A tiny step compared at large coordinates rounds away, and an arc left
smaller than that step by an earlier instance still has no offset toward
its centre: both turned the side round. A line's side is now its
half-plane and an arc's inside or outside its circle, as a circle's
already was; other curves compare both offsets' distance as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #9687
* Joints: Edit Joint and Unsuppress meet a conflicting loop joint as Joint does (#9687)
joint.create (#10371) turns an angle a half turn when a new loop-closing joint
comes out as a conflict, so a second planar joint whose faces point the same way
meets. joint.edit never did, so a design saved before that (the report's rail on
two planar joints) kept the conflict however the joint was edited, and a joint
unsuppressed after its part was turned away stayed one too, though Move's hint
says to edit the conflicting joint.
An edit that places the joint again (type, offset, angle, flip, a side, or
unsuppressing it) now tries the same half turns. A rename alone moves nothing.
* Joints: a loop group over the solver's values still moves the loops that need to (#9687)
A frame held by many planar joints (the report's printer: six planar joints
between two profiles, and more) ties its loops into one group through the
shared values. Past MAX_LOOP_VALUES (64) such a group was only checked, so a
new joint closing a loop in it (Joint35, the rail on the 450 mm profile, which
took the group from 63 to 69 values) stayed a conflict, and nothing in the
group could be driven or dragged any more.
Such a group now moves the values of the loops that need to move, those open
at the start or reading a held value that moves, when they are few enough,
while every loop of the group stays a residual, so the others stay closed.
Groups within the cap solve as before.
* Joints: closed loops through a moving value follow on their own closing joint (#9687)
In a loop group over the solver's values, a closed loop that runs through a
value the open or driven loops move (a part slid on one planar joint and held
by a second) kept its closing joint's values, so its gap opened and the solve
failed. Those closing joints' values move too: they are on no tree path, so
freeing them pulls in no further loop.
* Joints: loops a motion link ties to a following closing joint follow too (#9687)
A followed closing joint whose value a motion link sets moves the value its
link chain starts from; closed loops through that value now follow on their own
closing joints as well, until no more do or the values pass the solver's cap.
* Joints: say what the narrowed loop solve does not find (#9687)
* Joints test: measure the peg's 30 degree turn from where the loop left P0 (#9687)
---------
Co-authored-by: MateuszSychXpl <151755914+MateuszSychXpl@users.noreply.github.com>
* Arabic: one spelling of component in the Components from Bodies hint, history filters, delete prompt and appearance help
The catalog writes component as مكوّن (with shadda) in 68 places; five
messages used مكون. They now match.
* Arabic: included-settings label and computer term in the profile rows
* Arabic: tanween spelling in the components-start-open note
* Arabic: OK button name in the Find Limits hint
- Les motifs rectangulaire et circulaire prennent bodies et nomment leurs copies source (2), (3)…, en sautant les noms pris
- Motif de features : nouveau BodyN, comme le miroir ; noms lus dans created_bodies
- Miroir d'une copie : suffixe ajouté ; body.rename pour des noms stables ; renvoi à #8194
Co-authored-by: P'tite Tête <asso@ptitetete.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- b8fa0d8aa brett19: Known failing on solidcore after the f916a8d sync; blend_fit in the entry-point guard
- 5a93e6c4d brett19: Make the C++ SMLib kernel opt-in at build time (feature smlib, off by default)
- 29a148abd brett19: CI: build without the C++ SMLib kernel except where a job needs it
- e30cfd2ac brett19: Tests and the rig for a default build without the C++ kernel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Keys: a sketch and the model kept apart on Scope
`command_for` fell back to the first enabled command bound to a key, so a model key pressed in
a sketch (F, Fillet) still ran the model command. A key now runs only a command of the scope
the view is in, or one that works everywhere; otherwise nothing fires. Inspecting, views and
file commands (`inspect.*`, `view.*`, `file.*`) count as everywhere, so Measure's I still works
in a sketch. #4432's `sketch_and_model_keys_are_kept_apart` is ported to `Scope`.
Not ready: main's `the_extrude_key_in_a_sketch_finishes_the_sketch` (#2815) expects E in a
sketch to finish it and open Extrude, which this rule stops.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Keys: keep model keys out of sketches as an opt-in preference
The strict sketch/model split is now Preferences > Shortcuts > Keep model
keys out of sketches, off by default. Off, a key resolves exactly as on
main (a feature key such as E still finishes the sketch). On, a sketch
runs only sketch keys and keys that work everywhere (inspect, view, file).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Redesign Appearance preferences
* Reach the theme Import card by paging the carousel in the VFS import test
The redesigned Appearance page puts Import as the last theme carousel card,
so the test scrolled the page to a card that was not drawn. Page the carousel
until the card is on screen; both the in-scope and out-of-scope picks are
still checked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A hole in a design with sheet metal first tried to bore every sheet of its
component, building each panel and running a boolean on it, and then
checked every sheet again to see whether the drill met it at all. For a
sheet far from the hole both only found nothing: with 50 sheet parts that
was most of a hole's time. Now a sheet whose box lies clear of the
drill's box is left out of both, with the same grown boxes the other
sheet cuts use, so a drill into a sheet's rim still bores it. A drill a
sheet would refuse whatever it meets (an invalid one, or one more bore
than a sheet may hold) is still put to every sheet as before.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The countersink tool was a cone started at the run-on height above the
face, so above the face it was wider than the countersink and kept
widening: a wall or step just past the rim was notched. The tool is now
one revolved profile: the cone from just above the face down into the
hole, and above it a cylinder of the countersink's own diameter. The cone
is the profile's first segment, so its face keeps the name csink:side:0.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #7410
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch Break: break at a shared point separates the curves that meet there (#7410)
Two lines drawn as one chain share their corner point. There was no way to pull them apart:
Break there said "nothing to break at there", and deleting the point deleted both lines.
sketch.break aimed at a point where the picked curve ends and another curve also meets now
gives the picked curve its own end there (`<curve>.start` or `.end` when that id is free), at
the same place: both curves stay where they are and are no longer joined. The Break tool
snaps a click on the corner to that point, so clicking it works the same way.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #7584
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019FAWPuFoh9qxn2uS2j53QZ
* macOS update: say to quit SolidCraft before replacing it (#7584)
After Download and open, the update window told people to drag SolidCraft
to Applications, replacing the old copy, then restart it. Finder refuses to
replace an app that is running ("the item “SolidCraft” is in use"), so the
message now says to quit SolidCraft first, then drag the new copy over and
open it again. "Quit" rather than "close": closing the window on macOS can
leave the app running.
The id update.dmg_opened is unchanged; every catalog that carries it is
updated, and the user guide's update tables get the same step.
Fixes#7584.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019FAWPuFoh9qxn2uS2j53QZ
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #10909
* Crash report commands: input and output schemas (#10909)
diagnostics.crash_reports, diagnostics.crash_report,
diagnostics.crash_reports.clear and diagnostics.crash_test get typed
contracts and reply types in schema/diagnostics.rs and leave
unconverted.txt. Strict now refuses an `id` that isn't text on clear,
which the handler reads as no id and so deletes every report.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #10898
* Standard views and Normal To: input and output schemas (#10898)
view.front, view.back, view.left, view.right, view.top, view.bottom,
view.isometric and view.normal_to get typed contracts (an optional
`camera`, read by the new shared CameraParam type with the commands' own
reader) and a CameraReply output, and leave unconverted.txt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
edit.undo, edit.redo, edit.checkpoint and edit.restore_checkpoint get
input and output schemas in schema/edit.rs: the first three take no
keys, the last takes `checkpoint` (with the handler's message for a bad
id) and `forget`. The handlers build their replies from the reply
types. Their lines leave unconverted.txt.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10938
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Library commands: input and output schemas (#10938)
library.inspect, library.export and library.apply get typed contracts
and reply types in schema/libraries.rs and leave unconverted.txt. The
handlers' own serde parameter types move there and become the
contracts, so the contract is exactly what each handler reads; the
catalog, provenance and apply result schemas are written by hand, since
solidcraft-io doesn't use schemars.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #10942
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* List Edges, List Faces and List Threads: input and output schemas (#10942)
model.edges and model.faces take a typed `body`; model.threads takes no
parameters. Their replies are built from ModelEdges, ModelFaces and
ModelThreads in schema/inspect.rs, with the same JSON as before, and the
three commands leave unconverted.txt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #10949
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Curvature comb, minimum radius, isocurve, centre of mass: schemas (#10949)
The four analysis commands get typed contracts and reply types in
schema/sketch_inspect.rs and leave unconverted.txt. Each point list has
its own type with its handler's messages and reads only as many points
as the handler does; `count`, `density` and `scale` read numbers as
params::num does. The replies are built from the types, with the same
JSON as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #11059
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Configuration table, rules, activate and preview: schemas (#11059)
config.table, config.rules, config.activate and config.preview get typed
contracts and reply types in schema/config.rs and leave unconverted.txt.
A new `table` builds the table from ConfigTable; show and the activation
build their replies from it, so the unconverted config commands still
return the same JSON.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #11083
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Boundary Surface: input and output schemas (#11083)
surface.boundary gets a typed contract in schema/surface_boundary.rs and
the shared FeatureResult as its output, and leaves unconverted.txt. One
struct holds both forms; each key reads as the handler reads it, with
its messages, and `u` and `v` check their items where the handler does
without the design, index included.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #10959
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Loose Ends and Tie Loose Ends: input and output schemas (#10959)
sketch.loose_ends and sketch.loose_ends.tie get typed contracts and
reply types in schema/sketch_ends.rs and leave unconverted.txt.
SketchTarget reads `sketch` as sketch_store::target does and PointIds
reads `points` as the tie does, each with the handler's messages. The
replies are built from the types, with the same JSON as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #11075
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Bill of Materials: input and output schemas (#11075)
assembly.bom gets a typed contract and reply types in schema/bom.rs and
leaves unconverted.txt. Each key reads as the handler reads it, with its
message; the reply is built from Bom, BomRow and BomChild, in the old
field order, so the reply and the files it writes are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #6843
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PsiqyXWBFGTCX9J51bhysc
* Sheet metal: material joined in the plane of a panel is kept (#6843)
An extrude join through sheet metal went through the generic boolean:
the body grew, but the sheet model didn't, so the flat pattern, DXF and
bend table were refused, and the next sheet feature (a refold) dropped
the material ("what ... changed is not kept").
An untapered extrude join one sheet thick in the plane of a panel (the
base or a flange's panel, unfolded or folded) now joins the sheet model:
each region of its sketch becomes part of the one panel it is one piece
with, apart from every bend zone and the other panels, so the flat
pattern, its DXF and a refold keep it, and it follows its sketch's
parameters as a cut made there does. Cut-outs it covers are filled. A
join of another depth, out of every panel's plane, touching a bend zone
or another panel, or over a pocket, label, bore or perforation keeps the
generic path and its warning.
The extrude records its sketch plane and depth for a join too (its
profile grows into the material it joins, so it never counted as
untrimmed). The test that refused a joined tab beside a plain base now
refuses a block standing on the sheet instead; the tab is kept.
Fixes#6843.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
On the Blacksmith CI runners two quick same-size writes can share a modification time, and a
stale review page once accepted changed art there
(test_changed_art_reopens_and_requires_deliberate_current_acceptance failed intermittently).
art_rev() now hashes every file by content on main (b622a466); this test keeps it that way by
giving an edited SVG its old timestamp back and checking that the stale page is refused.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #5968
* Joint dialog: Find Limits fills the limits from where parts collide (#5968)
joint.find_limits sweeps each value of a joint both ways from where it is,
on a copy and with its own limits left out, and answers where the parts it
moves first touch another part, where a closed loop stops closing, or that
nothing is met within a turn (angles) or the parts' reach (distances).
Edit Joint's Limits section gets a Find Limits button that runs it on the
joint as the dialog has it, off the window thread, and fills the rows.
joint.sweep now tells touching bodies apart from the other bodies of the
same two parts: on the Hinge Assembly sample the pins touch where it starts,
and the plates used to pass through each other unnoticed.
* find_limits: read the session only
* find_limits: a joint with nothing to meet, edits during a search, tiny ranges
* find_limits: keep touching at the start per pair of parts
Per body, the Hinge Assembly sample's plates, which only come flush in
the end plane the two leaves share, stopped the search. The leaves never
pass into each other: the sample's answer is a whole turn.
* find_limits: touching boxes cost no collision work; stale results and rounding
* find_limits: each pair of bodies of resting parts held to its own depth; loops without bodies
* find_limits: a 32-bit budget it can pass, a repaint with the result, a bad form says so first
* find_limits: each pair of resting bodies gets its own margin
* find_limits: Arabic, Hebrew and Vietnamese strings (complete catalogs on main)
* find_limits: search the joint with Edit Joint's side picks
Edit Joint now keeps the joint's sides as picks in its inputs, and its OK
commands compare them with what it opened on. Built without them, the
commands Find Limits applies first asked for the sides again, so every
search failed.
---------
Co-authored-by: MateuszSychXpl <151755914+MateuszSychXpl@users.noreply.github.com>
A tapped hole looked for the cylindrical wall its marking lies on in
every face of every body of the design, measuring each face over all of
its body's triangles. A body is now passed over when the drill line,
widened by the hole's radius and a margin, misses its box (from the
mesh it keeps, which the wall's triangles are part of): no face there
can be the wall, so the marking stays the same.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #8151
* Opening: a design saved by 0.24 keeps the body a Join To Object runs to (#8151)
Since 0.24.1 a Join extrude To Object also joins the body it runs to
(#6424). Designs saved by 0.24.0 and earlier were built without that,
so on 0.25 the reported box swallowed its lid: the lid's sketch, the
holes, the cut and the moves after it failed.
An extent may now save `to_body_apart: true`, which leaves that body
apart. One pending format change sets it on every Join extrude To
Object of a design of format 39 or older as it opens; designs of
format 40 and later keep the join. Editing the extrude keeps the field.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A pattern or mirror replays its source hole's definition, so a hole with
reference edges finds its centre again from them. That happens after the
hole is drilled: through the part, the centre is then in the opening, and
the check that the centre lies on the face refused every copy. The replay
now skips that check; placing the hole itself still makes it.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Before a cut ran, every sheet metal body of its component went through a
boolean with the tool, to make sure the cut would not take material the
flat pattern cannot keep. For a sheet the tool does not reach, that check
only found nothing: in a design of 50 sheet parts it was about an eighth
of a hole's time. Now a sheet whose box lies clear of every tool's box is
left out of the check, with the same grown boxes the cut itself uses
(#10225), so a tool that touches or grazes a sheet is still checked.
Sheets shown in another frame and Intersect are checked as before.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #9274
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Browser: placements start closed (#9274)
A large assembly opened with every placement unfolded, so the browser was a
long list to scroll through. Placements now start closed; opening one shows
its own placements still closed, and closing and reopening it leaves them as
they were. Find in Browser, a pick in the view, Expand All and Collapse All
open and close them as before.
Preferences > Interface > Components start open (browser_components_open)
keeps every placement open from the start, as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Browser: scenarios and the icon audit open placements, which now start closed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Browser: tests that read rows inside placements set the open-placements preference
Three tests added on main since this branch started (joint folders, Features
folder marks, group rename) look at rows inside placements, which now start
closed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bherbruck <tenbee91@gmail.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
* PR rules: a title has to make sense to someone who never saw the chat
Agents write PR titles from inside their own context, or copy the issue's title, so a maintainer reading the list can't tell what a PR does. AGENTS.md, the contributing skill, CONTRIBUTING.md and the PR template now say who a title is for and show an unclear and a clear one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K14jA88xLsBfMkWo4Da5uh
* PR rules: write PR text in plain, literal English, and use a clearer example title
The first example still said "that window", the kind of pointing word the rule bans. The new rule takes the useful parts of Simplified Technical English without its approved-word list, which doesn't fit CAD terms.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K14jA88xLsBfMkWo4Da5uh
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
With a profile or face picked, clicking a face, vertex or parallel plane that is
not in the profile's plane now sets Extrude to To Object, not one more profile.
Clicking into the Profiles box first makes the next picks profiles again.
Preference extrude_auto_to_object (Tools) turns it off.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A pull request now starts by saying what it is in plain words, and shows
anything there is to look at in its description. A file in the diff
doesn't count. The new Picture check fails a PR that adds to the showcase
or docs/screenshots without showing a picture. It isn't a required check.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d3902c954 jyviko: SMLib: pin v1.1.0-alpha (a18bbe5): the generic blend's step-4 corners, the Ball's sphere patch through the flat arrays, all-target CI
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
The editor reused the new-hole Face input, which is multi, so a second pick
appended and OK silently kept the first. Editing now makes that input single,
so a pick replaces the place.
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
`sketch.rectangle.rounded` read `p0` and `p1` with `req_vec2`, so a corner typed as an
expression (`["W / 2", "H / 2"]`) was refused with "`p0` must be a point [x, y]", although the
2-point rectangle it hands the corners to already places expression corners and keeps them
following their parameters. The corners are now read with `corner_arg`, as the 2-point and
center rectangles read theirs; the worked-out values still check the radius against the sides.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A value typed before its target opened the box 18 px right and 10 px below the
pointer, so its frame covered the geometry a click was about to pick. Near the
viewport's right or bottom edge the clamp then slid the box back over the
pointer, losing the gap where it mattered most. It now keeps a 30 px gap, and at
an edge it opens on the pointer's other side instead of sliding back.
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Convert to Sheet Metal refused a tray made with SolidCraft's own sheet metal, exported and
imported again: its walls run on past each bend's end (notch, tear and round corner reliefs), so
the edges beside the bend cylinder's edge never reach the other face's plane and the face could
not be trimmed ("a face beside a chamfer picked as a bend does not reach the face across it").
Where that edge is round or runs on along the bend's line, the face now keeps its corner and
steps down square to the other plane, a step the bend's setback takes up again; the inset drops
an edge the setback leaves shorter than the tolerance.
Test: trays_of_its_own_sheet_metal_convert_back (notch, tear and round, the walls made in one
flange feature, and notch and round with the short walls in a second one): the volume, the flat's
size and outline area and every bend's length are the source's.
Fixes#7529.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #6452
* Engine: a pattern or mirror copy of a join keeps its ends as drawn (#6452)
The copy's tool is rebuilt against the current state, which already holds
the source feature's own material; the embedded-join-end trim (#2059)
read that material as the target already filling the copy's bottom band
and trimmed it away before the copy matrix was applied. Mirroring or
patterning a join on a hollow part silently lost the floor-level slice.
Copies now skip the trim: their ends are where the source drew them.
* chore: re-trigger duplicate PR check
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
Breaking a dimensioned line left the length on the first piece, which the solver stretched
back to the whole length, skewing the line. A cut on (or a hair from) an end, as where a tangent
arc meets a line, made a zero-length piece with its coincident and collinear ties every time
Break was clicked there.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Redesign General preferences
* Update Preferences regression fixtures and gallery coverage
* Keep measured Preferences faces out of neutral exclusions
* Keep the profile name entry in Preferences search results
The redesigned Profiles section had no search-visible control, so a query
such as "profiles" dropped the whole section and the name field could not
be reached with a search active. Report the entry row as a hit so the
section stays on the results page, and point the typing-focus regression
test at the redesigned "Profile name" field and "Save as new" button. It
still checks that typed profile names stay out of the search box.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The refusal of sketch.project ended in "face of " with nothing after the
"of" when the reference named no body: a picked face, edge or vertex is
found by its geometry, so the body it belongs to is not in the reference.
LinkSource::describe() now drops the "of <body>" when there is no body to
name and names the kind alone ("face", "edge", "vertex", "spun
profile", "isoparametric curve"). A source that names a body keeps its
name.
Only the text changes: the command refuses exactly what it refused before.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A hole placed on the side of a cone with no direction drilled along
the nearest display-mesh triangle's normal, up to 2.6° off the
surface's normal and sideways. Planes, cylinders and spheres already
gave their exact normal; cones and tori now do too, from the surface
the kernel reports for the face.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #11080
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Viewport: the shader compiles in browsers again (#11080)
The ambient occlusion turn added in #9335 mixed `<<` and `|` without
parentheses. naga accepts that, so the desktop app ran, but browsers'
WGSL compiler refuses it: the sc_viewport module was invalid, every
pipeline built from it failed, and the web app drew nothing once a
design was open. The line gets its parentheses, and a test checks every
shader in the repository for the rule.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Move to Component: a sketch on a face inside the moved part goes along (#11063)
A face attachment stores the placement path it was found through. Moving
the placement into another component changes that path, the stored one
no longer starts at the design, and the move was refused as breaking
the sketch. Face attachments of sketches and construction planes, and
an emboss's face, now follow the move as the session's paths already do.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Move to Component: attachments made through any placement of the old parent follow
A parent placed more than once is one definition: a face attachment made
through another placement of it than the one named also ran through the
moved placement and broke. Every stored path through the moved placement
now runs through its new place. A path that would grow past the 64
placements a design keeps is refused instead of saved unreadable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A flange picked on one segment of a stepped base outline ran the base
face's whole length: trimming the picked edge back to the bend line
merged it with the outline's own edge on that line beyond the step, and
the flange took the merged edge. It now stays off the base's edges that
already lay on the bend line, so it spans the segment picked, with no
relief there: the base is already back at the bend line. The same
outline made by cutting notches into a rectangle gave the right flange
already.
Assisted-by: LLM
* Sketch: a dog bone's outline outside it meets outside both notches (#10984)
Where two tangent arcs touch at a cusp, the copies of the two arcs cross
twice, both crossings as far from the cusp, and rounding chose one: on
one side of a dog bone the outline ran both copies on and drew a loop
into the bone. Such a tie now takes the crossing that cuts both copies
short.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Dog bone test: the outline goes outside, away from the picked bottom line
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Rename: a refused inline rename keeps the editor and says why (#10654)
commit_rename dropped the command's Result, so a refusal closed the editor
with no message and left the old name. It now returns the error, shows it in
the status line, and the inline editor stays open.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* Rename: keep the command's status line when the editor stays open (#10654)
The command completion already explains the refusal; do not overwrite it with
the raw engine error.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Extrude started with the sketch still open ends the sketch on its way. With
"If a sketch ends: Return to the previous view", that end starts a camera
animation, and turn_for_extrude read the camera through settled_cam() - the
target of that animation - so the view saved as "before Extrude" was where the
sketch end was already turning, not where the command was clicked. The view is
now taken before the sketch is finished.
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
The check that lets a key go only over HTTPS or to this computer ended the host part at `/` or
`?`, while the HTTP client also ends it at `#`, so the two could disagree about the host. It now
ends where the client ends it, and over plain HTTP the host part must be exactly this computer's
name with at most a valid port: no user name, backslash or stray character.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 4c1eed960 brett19: Tabbed plate: the rim and one corner arc round together (solidcore#2223)
- dd00ff989 brett19: Native wire fixture: a box edge round's cylinder keeps its own frame
- 584075662 brett19: Known failing on solidcore after the smlib merge: SMLib 5e8c9c1's new blend (solidcore#2273) and main's new tests
- 8af1fdf5a brett19: Known failing on SMLib (the .smlib list): as the smlib branch lists them at f916a8d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 597b23ba8 jyviko: Sheet metal: cuts and holes pass over sheets and bends by their exact boxes, never a mesh's
- 820b7b667 jyviko: Agents: AGENTS.md loses a stray merge-conflict marker line at its end
- 92734d7eb jyviko: Kernel rig: the boss root's and the hole rim's curvature rounds take 600 s again: under CI's parallel load they pass the 180 s default (develop 820b7b6)
- 653c16e6f jyviko: Native B-rep: a ball patch is its own surface kind, read from and written to SMLib's flat kind 6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: #9914
Co-Authored-By: Claude <noreply@anthropic.com>
* test: Move/Copy copy of a picked component (#9914)
Tests for a component picked in Move/Copy with Create Copy: it is copied as an
independent component placed with the move, the original stays, one undo removes
the copy; a body picked with Create Copy stays a body copy; a component picked
without Create Copy moves its bodies as before.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Move/Copy copies a picked component as a component (#9914)
With Create Copy ticked and the component pick mode on (or a Browser component
row), a picked component is copied as an independent component (Paste New,
component.paste_new) and the copy moves by the move's transform (occurrence.move
in the world). Bodies picked still copy as bodies; without Create Copy a component
still moves its bodies. The copy and the bodies are one undo step.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: solid.move copies of components reply like a move and roll back (#9914)
A copying move with components replies as a solid.move does: the bodies' feature reply,
with the copies listed in occurrences. The bodies are mapped to their frame before any
copy is made. The solid.move help documents occurrences. A copy that fails part way
changes nothing and leaves no undo step.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Move/Copy takes a picked component whether or not Create Copy is ticked (#9914)
A component picked in the component pick mode, or a Browser component row, goes into
the Move bodies input as a component, so Create Copy can be ticked after picking it.
Without Create Copy the component still moves its bodies. Not while editing an
existing move. The Browser model tests read the bodies the command would move.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Move/Copy preview draws a copied component where the copy lands (#9914)
The fast preview took the component's bodies from the listed occurrences as well as the
bodies, drawn moved by the move, so a component copy previews at the moved place
instead of the scratch design's unplaced states. Test: a component-only copy and a
mixed copy preview where the copy lands.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: a copying move refuses bodies that are not a list (#9914)
With components, a bodies value that is not a list was ignored; without components it
is refused. It is refused now, before anything is copied.
Co-Authored-By: Claude <noreply@anthropic.com>
* test: an edited move never takes a component pick, through the click (#9914)
Clicks the component in component pick mode while an existing move is edited: the pick
stays a body. Fails when the editing condition is dropped.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Move/Copy preview takes components only for a copy, and the mixed test can fail (#9914)
The engine refuses `occurrences` without `copy`, so the preview leaves
such params to the full preview too. The mixed-copy test now gives the
component a taller box, so its height shows the component was drawn.
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: component_pick no longer needs Create Copy ticked (#9914)
Co-Authored-By: Claude <noreply@anthropic.com>
* test: a component picked with its parent is copied once (#9914)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #9284
* Localization: Russian "Close draft" reads as a draft analysis (#9284)
The report form's "Close draft" button said «Закрыть анализ уклонов»
(close draft analysis). It closes the report draft: «Закрыть черновик»,
the word the Russian catalog already uses for this draft.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ad3ee0585 jyviko: Agents: model decisions use exact geometry; a mesh is for display, export, previews and mesh bodies
- 608d07eca jyviko: xtask: mesh-decisions, model decisions use exact geometry; today's 176 mesh decision sites are listed and the list only shrinks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Hole: a hole moved off the material says it removes no material (#10701)
A hole whose position, parameter or sketch point moves it off the part
cut nothing and said nothing: the feature had no warning, and a
parameter sweep listed the value as fine. A hole whose tool is clear of
every body it cuts now warns "the hole removes no material" ("1 of 2
holes remove no material" for several), as a pattern does of its
copies. The check compares boxes only, from the meshes the hole already
found its face on, so a large hole pattern costs no extra booleans.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Hole: a hole wider than the part says it removes all of it (#10702)
A through hole wider than the part removed the whole body with no
message, also when a parameter widened it later. The hole now warns
"the hole removes all of Body1" when a body it cuts is gone after the
cut.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The card's area is as tall as it was the frame before, and the first
frame laid the body out shorter than it ends up, so the scroll area
stayed short and the Hatch row (and Flip, for a tilted plane) was cut
off. The card may now grow to the height it is allowed.
The offset is shown to the design's length decimals and a tilted normal
to three places, as the pill shows them.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10127
* Assemblies: a construction axis follows its component when the component rotates (#10127)
A construction axis or point built on a body now goes with that body when
Move/Copy moves or turns it. Each construction records the bodies its picks
lie on; the Move feature (not a copy) carries along every construction whose
bodies it all moved, with the same transform in the construction's component
frame. One that also reads something fixed stays where it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
sheet.fold refused any fold whose bend zone wasn't a rectangle. It now
crosses the sheet's own outer edges, slanted or on any curve: the outline
is cut exactly across the zone, the panels keep their real outlines, and
flanges and other folds still go on them. The flat pattern's DXF keeps the
curve as drawn. A sharp corner in the zone stays refused.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A permission question counted as one of SolidCraft's own tools when its title merely contained
"solidcraft". Now the whole title must be a tool of the chat's own MCP server, named as
`mcp__solidcraft-app__<tool>`, and its kind must be `other` or not given. Anything else goes through
the user's mode and remembered answers, or is asked in the panel.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10704
* Section Analysis: view.pick skips edges and vertices in the removed half
near_edges now applies the same section `kept` predicate the mouse picker
uses (viewport::pick, since #6722), so an agent picking through view.pick /
ui.pick no longer gets edges and corners the user cannot see.
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
A client could connect and send nothing, or only blank lines, and hold one of the 16 connection
seats for as long as it liked. All reads before the token now share one five-second deadline; the
connection is then closed without a reply. An authenticated connection may idle as before.
`solidcraft-cli mcp --connect` used to open a connection at start and hold it until the first tool
call. It now only checks that the app is there, and the first call connects.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
On Windows the token file is restricted with `icacls`, which may not finish in time (#6145). That
counted as success everywhere, and is safe in the default folder, the user's own local app data.
A folder picked with SOLIDCRAFT_CONTROL_DIR may be readable by others, so there a timeout now
removes the still empty file and returns an error. The default folder behaves as before. The
decision is a small function of its own, tested without running icacls.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A design's lock file went through the same writer as the design, which follows a symbolic link
so a linked design is saved where it lives. The lock now has a writer of its own that refuses
anything at its path but a regular file and replaces only that name. Reading a lock takes only a
regular file and no more than a lock's size. Saving a design through a link works as before.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5136898b9 jyviko: Fillet: a setback too short for its corner is refused naming the least that builds (smlib_blend_fit_size)
- e6db7be0a jyviko: Kernel tests: three rounds of different radii at a corner meet in SMLib's setback corner
- 5d168a5e2 jyviko: Kernel tests: SMLib's own corner between curvature rounds is curvature continuous, as the G2 patch is
- 99953687c jyviko: Kernel rig: the boss root's and the hole rim's curvature rounds take the default timeout again (37 s and 34 s on the box under the rig's parallel load, tangency-labs/smlib#96)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
Also points the links at tangency-labs/solidcraft. The old list asked for reports of file access outside the allowed folders, and for crashes.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Selectable transcript labels do not request TextEdit focus, so the global
clipboard handler also copied, cut and pasted selected CAD geometry while
the user worked with chat text.
Keep keyboard ownership with the visible chat after a pointer press until
the next press outside it. Release it when the panel is hidden, and do not
use selections from other native viewports as a global CAD shortcut guard.
Cover real label selection, clipboard events, fallback key events, quick
select-all, hidden panels and deliberate return to the CAD viewport.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10689
Co-authored-by: Cursor <cursoragent@cursor.com>
* Edit Hole: seed the face where the hole is now (#10689)
Project the stored position onto the drilled face along the hole direction when opening the editor, matching evaluation, so OK works after a parameter moves the face.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- aed047703 jyviko: Kernel rig: the pipe on a plate's curvature round meets the plate G2 and the pipe G3, 40307.8856312 (option B's order-2 jets, tangency-labs/solidcraft#10845)
- 17de3569f jyviko: SMLib: pin f916a8d (a round on a definition face is its definition; the G1 setback fill certified convex, setbacks too short refused naming the least; the G2 certificate halves a span no level can certify at once)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Holes and cuts: count the bodies a cut works on in the cost tests
A test helper, cut_work, adds a feature at the end of a design and reports
how many bodies its cut ran booleans on and which bodies it left exactly
as they were (same geometry, key and face names). A new test pins that a
cut still goes through the boolean where its tool touches a face, runs
along an edge, passes a hair beside a body or drills into a dome.
The sheet metal hole (#10226) and cosmetic thread (#10227) work reuse the
helper for their own shortcuts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Holes and cuts: leave bodies the tool cannot reach untouched without a full cut
A cut ran a whole boolean against every body of its component, and for a
body its tool does not reach that boolean only handed the body back: about
7 ms per body, so a hole in a design of 200 blocks took 1.3 s. Now a body
whose box lies clear of every tool's box is left as it is. Both boxes are
their meshes' grown past how far the exact faces can curve out from them,
the same test sheet metal cuts already use, so a tool that touches a body,
grazes it or drills into a dome still goes through the boolean. Bodies
shown in another frame, mesh bodies and Intersect (which removes the
bodies it misses) are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Cosmetic tap markings: look for their cylinder only in nearby bodies
A tap marking (a Thread feature, or the marking of a tapped hole) looked
for the cylinder at its point in every body of the design, and each
search meshes the body afresh: with many bodies and many markings that
grew quadratically (200 markings on 200 cylinders: 33 s of a 33 s run).
A body is now passed over when its box, from the mesh it keeps and
grown past that mesh's deflection, lies farther from the point than the
search itself would look (a twentieth of the body's size, plus its own
mesh's deflection). The search finds no face there, so the marking and
everything else stay the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- f9fc68167 brett19: solidcore: a curvature fillet is the equal-area Gⁿ section; mixed wedges refused
- d52cf6b14 brett19: Known failures at solidcore adf26ddbc: curvature and variable rounds built
- 5ec92b0ba brett19: Move the solidcore pin to 2dbd88b6e
- 92618ac4c brett19: Turn on solidcore's new fixes at 2dbd88b6e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: #5388
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: rebuilding a projection keeps the sketch's own curves on its points (#5388)
When a projected face changed shape, update_link rebuilt the link with
drop_link_entities, whose remove_points also deleted every curve using a
projected point: a circle the user drew on a projected hole's centre vanished,
and the extrude on it lost its profile. Before the projected points go, the
sketch's own curves on them move to a free point at the same place.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Selecting a plane in the view now draws the grid on it, so the plane a
sketch would use shows before the button is clicked. Deselecting returns
the grid to the ground.
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
A Cut To Object on a curved face ran the tool through the target and kept
the tool less the body, the piece at the start. From outside a curved wall
to its inside face that piece is the air before the wall: the cut took
nothing, or the tool lay in the curved face and the boolean failed on the
coincident faces.
Where the target's material ends at the picked face under the whole
profile (rays over the profile cross it once, material before, none
after), the tool now ends flat halfway across the gap beyond the face. It
takes what lies before the face and meets no face of the body. Otherwise
the trim is as before.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Save As: refuse a name that opens as another kind of file (#9745)
file.save and file.save_as wrote a design container under any name, so a
design saved as part.step was refused when opened again and part.stl opened
as a broken mesh. A name doc.open reads as a STEP/CAD exchange file, a mesh,
a 2D drawing, a point cloud or a SolidCraft drawing is now refused, pointing
to .sc and, for export formats, to file.export. Names that open again as the
design (.sc, legacy extensions, .json, anything else) save as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Save As: check the folder scope before the design name (#9745)
A path outside an agent's folders is refused for that first, whatever its
extension, as before; the design-name check runs after it in `write`. Fixes
solidcraft-mcp tests::tool_calls_stay_inside_the_agents_folders, which saves
`x.step` outside the agent's folders and expects the scope refusal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10673
Co-authored-by: Cursor <cursoragent@cursor.com>
* AppImage: point the taskbar at the installed icon PNG (#10673)
Install hicolor icons before writing the desktop entry, refresh the icon cache, and set Icon= to the absolute 256×256 path so Cinnamon and similar panels show the mark instead of a thin strip.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- e30e983c3 brett19: Move the solidcore pin to 4d3ce6264
- c8351719e brett19: Move the solidcore pin to adf26ddbc
- d33b6eb30 brett19: Turn on fillet_gn_section_generator
- 3b4adeb73 brett19: solidcore: a variable round is built again, as the union of its balls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: 10331
* Assemblies: a second planar joint turns its part a half turn to meet (#10331)
A second planar joint between two boards that mates faces pointing the
same way needs the board turned a half turn on the first joint. The loop
solve starts exactly turned away, finds no way round, and left the new
joint as a conflict; Move then said the part has no movable joint axis.
A new loop-closing joint now tries its own angle, each angle on the
joint path between its two parts, or one of each, a half turn round, as
the first joint of a chain moves its part into place, and keeps the
first that closes the loop without a new conflict. Faces that can never
meet stay a conflict and nothing moves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Move test: give the blocked part faces that can never meet (#10331)
The blocked-Move test from #10509 used two boards whose second planar
joint mates two faces pointing the same way. That joint now closes its
loop with the board turned a half turn, so the scenario no longer
conflicts. Mate the yellow front against the red top instead, which no
turn on the first joint can bring together.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10688
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Feature editor: Undo, Redo and the History bar cancel an open editor first (#10688)
Undo, Redo and History steps changed the design under an open feature
editor, whose OK and Cancel then refused it. They now cancel the editor
first, putting its marker back, as starting another tool already does.
While an editor is still opening they wait for it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A relation given no values already started from where its parts sit
(relation_values), so the part moves no further than it must. A typed joint
(planar, revolute, cylindrical ...) added between parts another joint
already relates started its values at 0 instead, so the loop solver began
far from the current placement and could report a conflict for a joint that
agrees with how the parts are placed.
Seed every loop-closing joint, typed or relation, from the current
placement when no values are given. Joints in an open chain and joints with
explicit values keep their initial values as before.
* claim: #10316
* Insert Part: ASME/ANSI inch hex cap screws, hex nuts and SAE/USS washers (#10316)
Part of #10316. New standard-part families, tabled in inches as the
standards give them and built in millimetres: hex cap screw (ASME
B18.2.1) and hex nut (ASME B18.2.2), 1/4 to 1 in UNC and UNF from the
thread catalogue, and plain washers SAE and USS (ANSI B18.22.1 Type A).
Cap screws take the standard inch lengths, 1/2 to 8 in, defaulting to
the first at or above 2.5 d.
Lengths read as fractional inches in Insert Part, Change Part Size, part
names and part numbers. Insert Part gains a Unit system list (Metric,
Inch) above Type; it opens on Metric. parts.library reports each
family's system.
Inch parts get no cosmetic thread: solid.thread takes only metric
designations (#9571), and the old path would have made a wrong metric
mark. 9/16 waits for the thread catalogue; split lock washers and
carriage bolts follow in later PRs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The editor accepts revision changes that only changed what is shown,
counted by the display revision, but only hiding and showing counted
there. Section Analysis, the surface analyses, continuity, the
selection, the status pill catching up and view.render_select bumped
the revision alone, so turning a section off with an editor open made
OK refuse ("the design changed while the feature editor was open") and
Cancel leave the timeline rolled back. They now go through
refresh_display, as visibility changes do.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10852
* Circular pattern: the axis origin takes length expressions and follows them (#10852)
solid.pattern.circular with axis {origin, dir} kept its origin as plain
numbers, so a pattern about a parameter-driven point stayed where the
point was when the pattern was made: the seed moved with the parameter
and the copies did not. Expressions were refused (#248).
The pattern's origin is now a point of expressions, as a Mirror plane's
origin is: numbers or length expressions, evaluated on each rebuild, and
renamed with their parameters. Plain numbers are saved as numbers, as
before. timeline.edit sets pattern.origin as expressions, and editing the
pattern in its dialog keeps them. One pending format change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #9660
Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
* Move bodies of differently turned components in the world together (#9660)
A Move feature moves each of its bodies in the body's own frame by one
vector and one turn. `solid.move` mapped the world vector and axis into
the frame of the first body listed only, so a body in a frame turned
otherwise (a part inserted with a non-default direction, moved together
with a block of the root) moved along its own axes.
When the bodies listed lie in frames that turn differently (or, for a
turn, also sit in different places), the move is now split into one
Move feature per frame, each with the vector and axis mapped into that
frame, in one undo step. Bodies sharing a frame still make one feature.
Fixes#9660
Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
---------
Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
A surface extruded from a fit-point spline is one B-rep face per span,
joined by hidden seams; the viewport picks and highlights it as one face
(Mesh::surface_patch). sketch.intersection_curve turned a face pick into
the single nearest face, so the curve stopped at that span's ends.
project3d::mesh_of now returns the picked face's surface patch and
mesh_intersection keeps the triangles of every face in it. Body sources
and Project to Surface are unchanged.
* claim: #10306
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019FAWPuFoh9qxn2uS2j53QZ
* Language: a Chinese system tag goes by its script, then its region (#10306)
macOS lists its languages with a script (zh-Hant-TW), which no catalog
matches exactly, so the base zh (Simplified) was picked for a Traditional
Chinese system. Hong Kong and Macao tags got Simplified the same way.
A Chinese tag now picks zh-TW for the Hant script, zh for Hans, and
without a script zh-TW for the TW, HK and MO regions, zh otherwise.
Other languages keep the exact tag, then the base language.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: sectiontilt
* Section Analysis: tilting the plane no longer rebuilds the outline index every frame (#10373)
The section outline cut through an index of slabs along one normal, rebuilt
whenever the normal changed: tilting a Section Analysis rebuilt it every
drag frame (about 0.15 s on a 2.5 million triangle part). The index is now a
grid of cells holding each triangle by where its box sits, with the box
around each cell's triangles, so it serves every normal. It finds the same
segments, in the same order and to the bit, as cutting every triangle.
The viewport keeps one index per shown body mesh, no longer per normal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
`sheet.perforate` takes an optional `sketch` (and `profiles`): the field's
outline. Holes go only inside its closed profiles, out of their inner loops,
`margin` clear of its edges, on a grid from the outline's lower-left corner.
On a folded sheet the outline maps through each panel the sketch lies on and
is clipped to it, so it never reaches a flange in the flat; a sketch on no
face of the sheet is refused. A mirrored copy mirrors the outline, and an
edit that names no sketch (the Perforate dialog has no outline) keeps it.
Without a sketch the field covers the whole sheet as before.
The feature saves `sketch` and `profiles`, a sheet's perforation its outline
in flat coordinates: one pending format note, no migration.
Assisted-by: LLM
* claim: #8822
* Tangent Plane: line it up with a reference plane, at an angle (#8822)
`construct.plane.tangent` takes an optional `reference` (a plane or planar
face) and `angle`. On a cylinder, cone or torus the plane touches where the
face turns towards the reference, turned by the angle about the face's axis,
on the side of the pick; on a sphere it is parallel to the reference. The
plane follows the reference when it moves. The Tangent Plane dialog gets a
Reference plane input and, once one is picked, an Angle field; editing the
plane brings both back. Saved as a pending format change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #9074
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* OBJ export: welded as STL and 3MF are, so a curved body opens again closed (#9074)
The OBJ writer joined vertices only when their coordinates were equal bit
for bit, but each face of a curved body writes its edge points again a few
ulps apart, so neighbouring faces shared no vertices and the file reopened
as an open mesh with no volume.
It now welds each body as the STL and 3MF exports do (threemf::weld_tagged,
with the same tolerance), and every corner keeps its normal: the normal of
the original corner it came from, or for a point a side was split at, the
normal interpolated across the triangle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Ambient occlusion: the radius follows what the frame draws (#9327)
In an empty design the radius came from the model's box, which is empty, so a
preview got the smallest radius and the depth map's precision showed as specks.
It now comes from the box the depth range uses, and with nothing to draw there
is no occlusion.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Ambient occlusion: the term drawn once and blurred by depth (#9327)
The lit pass worked the term out for every fragment it shaded, under a pattern
that changed from pixel to pixel, which read as grain. The term now has its own
texture, drawn once for each pixel of the prepass, with a fixed 4 x 4 pattern, and
a 4 x 4 blur that keeps to each pixel's plane takes the pattern out without
crossing an edge. The lit pass reads the result. The prepass and the term share
their pipelines and draw walk.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #9373
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Timeline folders: editing a feature in a folder leaves no stale id, and such designs open again (#9373)
timeline.redefine runs the edited feature's command on a scratch copy with the marker just after
the feature, and takes the new definition from the feature that run makes. Inside a timeline
folder that trial feature joined the folder too; it was removed from the feature list but not
from the folder, and its id, handed back, was the next feature's. Each edit left that id in the
folder (the same one, edit after edit), naming no feature or, once a later feature took it, a
feature twice, and the reader then refused the design: "damaged design: invalid feature in a
timeline folder". The trial feature now leaves the folders as it leaves the feature list.
The reader drops a folder entry naming a feature or joint the design doesn't have, or one a
folder already holds, and opens the design: folders only group the timeline, so nothing else is
lost. A folder damaged in itself is still refused.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Report focused keyboard ownership from the shared text editor, matching the other Preferences fields. Regress real Name-field typing, focus retention, unchanged search text, and saving the resulting profile.
A mirror of placed bodies follows its source, so each frame of a drag evaluated
it and made new copies with empty mesh cells. A reflection can't share its
source's triangles, so every copy was tessellated from nothing, and so was
anything an evaluated feature after the mirror made.
Keep the first copy of a body with its source: each later copy is a proper rigid
move of it, so a world state draws them from one set of triangles. The model
keeps each copy's own lazy mesh. A feature evaluated again that gives the same
solids (an import) keeps its meshes.
A mirror of placed bodies no longer searches its copies' revolved faces when no
later feature can build on bodies. That depends on the design alone and is part
of the mirror's placement digest.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Since #10183 the app follows the system's language, and the tests followed it too, so a test
naming an English word failed on a PC set to another language. CI's runners read as English
and never saw it. In tests the system's language is now English: `cfg!(test)` for this crate's
own tests, as the engine's folders do, and the harness for the tests outside it. The preference
stays `system`, and the app is unchanged.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: 10368
* Web offline test: each copy of a real build gets a file of its own (#10368)
With --site, the six builds were copies of one real build that differed
only in index.html. The overlapping-downloads step holds back the files
the next build lacks, so nothing of v5 was held: its download finished
before v6 launched, v6's worker then retired and deleted it (correctly,
no page used it), and the step waited 240 s to see it complete.
Successive deployments differ in more file names than that (Trunk names
files after their contents). Each copy now gets own-<build>.txt, like
the stand-in's build-named script, so v5's own file is held as the step
intends.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Typing a parameter's name now lists every parameter whose expression
uses it, and a value finds the parameter that holds it. The filter
still reads names, comments and groups, and a text parameter's text.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A straight line of another sketch, picked into the Project dialog, came
in as a named sketch curve, which the projection preselection did not
know: it refused with "select geometry or bodies that can be projected"
although the OK button was live. The same reference the external pick
stands for is now made for it, so the line projects (#10291).
Co-authored-by: vdirienzo <vdirienzo@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* wip: the diagnosis of #10181 (the bug reproduces on current main)
sketch.project has .enabled(in_sketch) (crates/engine/src/cmd/sketch_project.rs:24)
and in_sketch (crates/engine/src/cmd/mod.rs:285) answers 'no sketch is being edited'.
Pressing P outside a sketch goes keymap::press -> sketch_tool_for
(crates/ui-egui/src/keymap.rs:451-457) -> app.start("sketch.create") with
d.then_start = Some("sketch.project"): the sketch IS created, but the Project
dialog opens and the command is refused, so the dialog shows the red row and the
'Create Issue...' button, which opens the Report a bug form over the viewport.
The probe here reproduces the bug on the CURRENT main (two variants). It is a
diagnostic probe, not the regression test: it must be replaced before a PR.
* test: a context error offers no Create Issue button (#10181)
The Project panel showed the red row for a CONTEXT error ('sketch.project is not
available right now: no sketch is being edited') and offered the 'Create Issue...'
button, which opens the Report a bug form over the viewport. A context error is
not something to report, so the panel must not offer it.
RED: the test fails with the exact message of the issue.
* fix: a context error is not something to report (#10181)
The Project panel offered "Create Issue..." for the error the engine
raises when the command is not available in the current context
("`sketch.project` is not available right now: no sketch is being
edited (Create Sketch or Edit Sketch first)"). That refusal is guidance
about the context, not a failure of the design, so there is nothing to
report: ending the sketch under an open Project panel should not invite
the user to file a bug.
error_rows already spared the missing-pick errors ("select ...", "pick
...") the same way. It now spares the context refusals too, using the
engine's own kind rather than the message text: CommandSpec gains
disabled_refusal, which is the engine's own Disabled refusal for the
command in the current session, and the UI matches the dialog's error
against it. A real failure of the command (an invalid face, say) still
shows the red row with "Create Issue...".
* style: rustfmt the test of #10181
The formatter joins the two asserts of the test onto one line (the
repository sets max_width = 150 and use_small_heuristics = Max). The
tokens of the file are unchanged: the diff is the line breaks of the
asserts and nothing else.
* Angle fields: a decimal point typed into an angle stays (#10582)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Angle fields: a decimal point typed into an angle stays (#10582)
Edit Canvas applies its Angle box at each keystroke and keeps the angle
in radians, so the box gets back a hair off the value it set; egui's
DragValue takes that for a change made elsewhere and rewrites the text
being typed, dropping a decimal point just typed (-3.7 became -37).
angle_field now hands the DragValue the value it set while the value it
is given is within 1e-9 of it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4a4d9c31c jyviko: Known-failing: the shell of a fully rounded box opened at one face fails on SMLib 5e8c9c1 (tangency-labs/smlib#102)
- 303111e4e jyviko: Known-failing: the action matrix's oblique cylinder cut fillet passes on SMLib 5e8c9c1; two shells still fail
- c5332faf4 jyviko: Kernel rig: the boss root's curvature round gets the rig's 1800 s cap: on the CI runners, 8 cases at a time, its G2 certification passed 600 s (tangency-labs/smlib#96)
- 970446dec jyviko: Kernel rig: a case's continuity can ask for an order per seam (seams: [{order, edges, exact}])
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 72109054c jyviko: Kernel tests: the box-and-fillet wire fixture records the round's cylinder frame as SMLib now keeps it
- f87305648 jyviko: Known failing: two kernel tests' reasons as they fail on SMLib 5e8c9c1 (a partial selection running into an unblended tangent edge)
- 75efb8f0c jyviko: Kernel rig: two curvature rounds get 600 s, past the 180 s default, while G2 certification is slow (tangency-labs/smlib#96)
- 68c3ccb75 jyviko: Oracle: 34-chamfer-then-fillet and 35-fillet-curved-curved pass on SMLib 5e8c9c1 (their STEP edges are on their surfaces)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Tangent Arc: a first click off a curve's end is refused at once, saying where to click (#10653)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tangent Arc: a first click off a curve's end is refused at once, saying where to click (#10653)
The Tangent Arc tool took any first click as its start; a click on a
line between its ends snaps to a place that is no point yet (on:l3:...,
mid:l1), and the second click then failed with "unknown sketch point"
naming that internal reference.
The tool now refuses such a first click at once, with its own hint as
the error, asking the command's rule (tangent_arc_starts_at, factored
out of arc_tangent: the picked point or one at the same place, and a
drawn curve leaving it). The command refuses a snapped start with its
existing message that start must be the end point of a line or arc.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Tests: the autosave scenario crashes once its autosave has landed (#10690)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tests: the autosave scenario crashes once its autosave has landed (#10690)
s25_autosave_recovery 'crashed' right after the extrude; under load the
autosave of it, written on a worker thread, had not landed, so the next
launch recovered the earlier autosave without the body (step 16).
The harness's crash restart now runs frames, bounded, until the active
autosave has caught up (Autosaver::caught_up: no write running and the
last autosave holds the design as it is). The app's own ticks still do
the writing, so an autosave that stopped writing still fails the test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #9087
* Control channel: report the dialog as data, the open windows, and what ui.start opened (#9087)
`ui.inspect.dialog` (and `ui.editFeature`'s reply) was the dialog's Rust Debug text, which
changed with every refactor and couldn't be parsed. It is now an object: the dialog's command,
title, the feature an edit rebuilds, its selection inputs, its error, and the commands OK runs
(or what it waits for). `hover` in `ui.inspect` and `ui.selection` is a selection-like item
instead of Debug text.
`ui.inspect` gains `windows`: the tool windows open beside the model (Parameters, Bill of
Materials, Design Properties, Sketch Report, material card review) by the command that opens
each, and the Help menu's (About, Updates, Shortcuts, Crash Reports, Report, Messages) by their
`ui.help` item. Before, an agent couldn't tell these windows were open.
`ui.start` and `ui.editFeature` reply with what they opened (tool, dialog, windows), the status
line, and `pending` when the start waits for the history and opens on a later frame.
Scenario `dialog` checks match words of the dialog's state from the app directly, so the
scenario files are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10675
* agent chat: Copy message on each sent prompt and assistant text block (#10675)
A visible Copy message button on each copyable transcript message and a
right-click menu with the same action. Assistant replies copy their
original Markdown, prompts copy the text as entered; picture-only prompts
and thoughts get no action. Hover-only message areas keep partial text
selection working.
* agent chat: complete Copy message locales and tests (#10675)
* agent chat: route the message copy menu through ui_kit::Container (ui-containers gate)
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* Sketch: Remove Spline Point takes one fit point out of a spline (#10783)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: Remove Spline Point takes one point out of a spline (#10783)
sketch.spline.remove_point takes one fit or control point out of a
spline. The spline keeps its id and runs through its other points, which
stay where they are. The point goes with the constraints on it, unless
another curve uses it. A closed spline's closing point, an end joined to
other geometry, the last 2 points (3 when closed), and projected, offset
or patterned splines are refused with a message.
The right-click menu of a spline point, picked alone, offers it beside
Reverse Spline Direction.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* claim: #10703
* Sketch: do not tie expression-placed points to the origin with an automatic Coincident
A point whose coordinates are parameter expressions follows those
expressions. When they came to 0 at draw time the point landed on the
origin and connect_points tied it there with a Coincident, exactly like
a snapped click; the next parameter change then conflicted with the tie.
connect_points now skips points that carry exprs; plain-number points
keep the snap.
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* Face names: one name on two bodies is no split face (#10699)
A hole placed on the top of one of two bodies an extrude made, or on a
piece of a split body, warned "face `F2:top` was split; using the piece
nearest the picked point": the face name is on both bodies, and any
name found more than once counted as split. A name on several bodies,
one face on each, now finds the face the point lies on without the
note; pieces on one body, or a point on none of them, still say split.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Hole: look for a face name shared by two bodies on the body the point is on (#10699)
The lookup over every body counts a name on several bodies as split on
purpose (a copy's face is not a piece of the source's, see
`the_same_face_on_a_copy_is_not_a_piece_of_the_named_bodys_face`), so
the first change, which made it unique there, is undone. A hole whose
face name is found split while its point lies on one of those faces now
looks again on that body alone: one face of the name there is the face,
whole; pieces on that body still say split.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The residual of a length dimension is the magnitude of the distance between
the line's two ends. At zero the magnitude has no derivative, so the rank
analysis read the constraint as if it were not there and the sketch reported
a degree of freedom that was not there.
At zero the two ends of the line meet, so the residual says it with the
vector between them, the way a coincidence does. That is the treatment a
distance of zero already gets (upstream #4397); the length family was left
out of it.
Regression test: crates/sketch/src/tests.rs, zero_length_keeps_the_line_constrained.
Co-authored-by: Homero Thompson <homero@local>
* claim: #8266
* Computing toast: a Cancel that gives up on the move (#8266)
The Computing toast for a history command (marker move, undo, redo,
suppress, reorder) or a delete's check computing off the window thread now
has a Cancel button. It drops the job and the commands queued behind it;
the design stays as it was, since a deferred command only runs for real
once its evaluation is in. A feature edit applying keeps its dialog's own
Cancel, so its toast shows none.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: thocsmith <193096300+thocsmith@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10620
* widen dialog form-card label columns to the measured label width (#10620)
* fix compile of the grow tests
* grow the card only past the label cap and tag the form scope in place (#10620)
* keep scope_grow crate-internal so the gallery scan stays element-only (#10620)
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* claim: #10510
Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
* Sketch: dragging a centre rectangle's constrained centre point keeps the rectangle's size
A centre rectangle's centre sits on the middle of its diagonal, and a
press there picked the diagonal's midpoint before the centre point. The
drag then took the diagonal by its middle: with the centre free the
rectangle moved along, but with the centre held (on the origin, on a
line) the diagonal turned and stretched about it, and the rectangle
grew or shrank with the pointer, many times its size.
A drag that starts on a line's middle where a point is held by a
Midpoint constraint now drags that point, as a drag that starts on the
point does. A centre held on the origin stays there and the rectangle
keeps its size; a centre on a line slides the whole rectangle along it;
a free centre still moves the rectangle. Clicking the middle still
selects the line's midpoint for constraints.
Fixes#10510
Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
---------
Signed-off-by: Maurizio Monticelli <maurizio@whatwedo.ch>
With a section on, Slice in the Sketch Palette lit up but the model was
still cut only by the section: the viewport took the sketch's plane only
when there was no section. Slice now takes it whenever it is on in the
sketch being edited; the section comes back when Slice is turned off or
the sketch closes. A slice is hatched as it is without a section.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d5cd5f303 jyviko: Known failing: two 851 chains whose corner piece is a ball of tube-centre radius 0
- ea49dff48 jyviko: Ladder: 016 and 018 refused, their r3 chain takes the vertical edge; 020 and 021 recorded
- 38385ab5d jyviko: Kernel tests: three rounds at a box corner end on one rational patch on the ball's sphere, not an analytic sphere
- 459937e52 jyviko: Kernel rig: the curvature round on a pipe on a plate is listed: a seam grades G3 where exactly G2 is wanted
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: #10874
Co-authored-by: Cursor <cursoragent@cursor.com>
* Insert drawing: name the sketch size cap when a file is too dense (#10874)
A large SVG/DXF failed with opaque \"sketch is too large\". Say the 20000 point/curve limit and that scale alone does not reduce entity count, and refuse dense drawings before adding them.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
`face_of` called `Body::faces`, which tessellates the whole body, on every
solve. Face origins went through the cached `ModelBody::joint_faces`, at
the same tolerance, but edge origins never did, so one edge origin on a
large body cost a drag or a Drive Joints step far more than the solve.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #9874
* Add shared Preferences cards, figure painters and gallery entries to ui_kit
* Preferences: Arabic, Hebrew and Vietnamese carousel labels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Use the app's selection colours in the Preferences cards
* Measure Preferences figure inks and use shared palette metrics
---------
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A corner dialog copied the preview's error into its own, where nothing
cleared it when the preview recovered. The dialog already shows the
preview's error, so the copy is gone.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 9f64cce54 brett19: solidcore: a variable-radius fillet is refused until solidcore builds the union of its balls
- bd4dc081d brett19: Known failures on solidcore after the merge: the refused curvature and variable rounds, develop's new cases
- c6fa7e563 brett19: Move the solidcore pin to c9a06dc7c
- de9a654db brett19: Turn on solidcore's new fixes at c9a06dc7c
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Tests: io's byte mutator moves to a testkit crate, a dev-dependency only (no behaviour change)
`solidcraft-testkit` (the Testkit class xtask/src/layers.rs reserves) holds the mutator and the
no-panic check unchanged: the same seeds, mutations, budget and doc comment. io's reader fuzz
tests use it as a dev-dependency and give the same case counts; the mutator's own test moves
with it. The co-editing wire's decoders will fuzz with it too (#5184, CE6).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Cargo.lock: testkit at the workspace version
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
A pull request outside crates/kernel, crates/geom and vendor/truck* is no longer labelled for a
kernel word in its title. Issues and discussions keep the title check.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #7481
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Coil: step arrows on the Revolutions field (#7481)
The Coil dialog drew Revolutions as a plain expression row, the one
count without the step arrows the pattern quantities have. It is now a
count row from 1 to 200 turns (the helix's limit); a fraction still
types in, and an arrow steps it to the next whole turn.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A chamfer's warning quoted the full generated names of fourteen split edges,
122,701 characters (#8541). Names over about 80 characters are now quoted by
their first 48 and last 24 characters.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Offset Plane and a cosmetic Thread have no live preview, so their edits' OK ran on the window
thread and recomputed every later feature there. Any edit now goes through the off-thread
transaction. The editor's pinned original is used only while the dialog previews, as
open_feature_edit keeps it: a Thread switched from Modeled to cosmetic edits the design as it is,
so a body hidden meanwhile doesn't refuse it as a changed design.
* claim: #4986
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Press Pull on a chamfer's face changes the chamfer's distance (#4986)
A chamfer's face is flat, so solid.press_pull and the Press Pull start
path in the UI took it for a planar face and extruded it. Both now look
for a fillet's or chamfer's face before asking whether the face is
planar, so a chamfer's face reopens the chamfer and its distance grows
by the distance pulled, as a fillet's radius already does. A first pick
with Press Pull already open is routed the same way.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Press Pull on a blend face puts the arrow on the edge clicked
A fillet or chamfer reopened by Press Pull from one of its faces drew
its radius or distance arrow on the feature's first stored edge, which
can be a corner the user did not click and cannot see (the Sample
Plate's fillet, from the far corner). The click's point now goes with
the reopened dialog as a hint that is never saved, and the arrow sits
on the feature's edge nearest it, at the point on that edge nearest the
click. Opened any other way (the history, Edit Feature) the arrow stays
on the first edge as before.
A click point that is not finite is not kept, and a point on a flat face next to a chamfer still extrudes that face (tested).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The live preview of extruding a picked face built its walls from the
face's display triangles and drew a line up the wall at every boundary
point, each wall piece shaded flat. A round face (the Bolted Flange's
flange) looked like a polygon while extruding. Lines now go up only
where an edge of the face ends and the outline turns there more than
its curves do, and a wall's normal turns with it between smooth pieces.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Colour popover: a held step button keeps stepping, and R, G and B have tooltips (#10201)
The step buttons beside each colour number sensed clicks only. egui
stops counting a press as a possible click once it outlasts its longest
click (0.8 s), so the held button stopped repeating after 8 steps. They
now sense drags too, which keeps a long press down on the button until
it is let go.
R, G and B now carry tooltips (Red, Green, Blue) as H, S and V already
did: a single letter doesn't name the colour in every language.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Colour popover: the R, G and B tooltips in Vietnamese too, a complete catalog (#10201)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Hole: reference Distance shows the document precision (#10693)
A measured reference distance showed the raw float (10.000000868569572 mm).
The field now reads at the document's length precision while Refs keeps the
measured value for the model, so OK still sends what was measured.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* Hole: restored literals use the document precision (#10693)
Round every literal reference distance on Edit Feature, including comma
decimals and exact whole values; expressions stay as written.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* ui_kit: search_picker, a filtered dropdown with a custom entry
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Agent chat: endpoints list their models with names, say when listing fails, and OpenClaw and OpenRouter presets (#2582)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Agent chat: a typed model goes to endpoints and to agents that offer a model option
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Agent chat: the header's model pickers search and take a custom model
The popup can't grow once it is open, so search_picker now fixes the height of what changes below
its box when it opens: the custom row or a late list could otherwise end up out of reach.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* AI preferences: pick an endpoint's model when adding it and on its card (#2582)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Agent chat: model picker rows read from the left, and a refused typed model says which
From running it: list_picker centres its text, which reads badly for a long list of ids, and an
agent's own refusal can say no more than "Internal error". The search box also asks for a repaint
while it waits for the focus, so an idle window does not stop short of it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Agent chat: docs for the model picker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Agent chat: an endpoint's answer that is no model list says so, an empty list too, and editing lists with the kept key
A 200 without a `data` array (a web page where the endpoint should be, as OpenClaw's gateway
serves until its chat endpoint is enabled) was cached as a successful, empty listing, so the
picker stayed blank with nothing to say and never asked again. Now it is an error with its own
note, an empty list says so, and both are asked for again the next time.
The Edit dialog lists its endpoint's models when it opens, with the kept key read from the
keychain on the listing's thread, as the card does; the key stays out of the field.
The method-not-found test expects the refusal notice that names the model, as every refused
model gets since this branch.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* Agent chat: models from several providers fold under their providers inside the picker
As Chemiseblanc does in #10187: with two or more groups, `search_picker` draws each group as a
header with a chevron, the name and how many of its choices are listed, and a click folds or opens
it. Before anything is typed only the current value's group (and the one the caller asks for) is
open; a group with a match opens once something is typed; a fold made by hand stays until the popup
closes. Enter takes the first row shown, so never one folded away. A lone group keeps its plain
heading.
The header's model picker feeds its providers in as groups, so the separate provider drop-down
goes; the control channel's `provider` now says which group opens first. A header click gives the
focus back to the search box, so typing goes on filtering.
The dialog's listing test checks what kind of listing it got rather than translated words, which
the listing thread may render in another language than the test's.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* Agent chat: rustfmt the provider groups
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* Agent chat: an endpoint's models named `Vendor: Model` fold under their vendors
OpenRouter lists `openai/gpt-6.1-terra` as "OpenAI: GPT-6.1 Terra". A listing whose ids read
`vendor/model` and whose names read `Vendor: Model` now names its providers, so the picker folds
it under its vendors like a multi-provider agent; the rows read the model's name, and the id stays
in the tooltip and in the search. An agent's own `Provider: …` word still comes first. One vendor
is one flat list, as before.
The Add dialog's picker has no current model to prefer, so with nothing to prefer every group
starts open; folding is a click away.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ce8b01fa3 jyviko: Kernel rig: the partial-selection cases kept as -partial-chain copies, tangent chain off
- 78ed75162 jyviko: Kernel rig: the concave arc between the block's tangent sides kept with tangent chain off
- ee3ed66a4 jyviko: Kernel rig: two chains that now build graded by their exact volumes
- f2ff6f0d4 jyviko: Kernel rig: a curvature chain round a round's end refused for its size; the concave half circle builds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
- snap_tangent_arcs : chaque extrémité d'arc prend la ligne la plus proche
- une ligne ne prend qu'une extrémité d'un arc ; l'autre passe à sa ligne suivante
- une ligne plus loin sur le contour est ignorée quand l'extrémité touche déjà une autre pièce
- tests : 4 unitaires (project_order.rs) et the_silhouette_of_conic_rounds_closes
Co-authored-by: P'tite Tête <asso@ptitetete.com>
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- bf51e62f7 jyviko: Kernel tests: a law's dip shows its corner ball's sphere, a peak's two rounds cross (the reasons had them swapped)
- cde8be4a1 jyviko: Reference tests: the variable rounds 77, 78, 80 and 81 expect the union of their balls
- 155f1f470 jyviko: Known failing: the law corners' kernel and crate tests and rig 1207 pass on SMLib 48ea616
- 21f00a917 jyviko: Kernel rig: every fillet and chamfer case rounds its tangent chain
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e8caa1e91 jyviko: Tests: three rounds of different radii at a corner listed: the corner's transition kinks with the balls' touch circles
- 60393a718 jyviko: Ladder: the variable rounds graded to 1e-6 by the union of their balls; 012 by its law going on past the edge
- 6ba069d06 jyviko: Reference tests: the variable rounds 77, 78 and 81 pass on SMLib d01d7b0; their known-failure marks come off
- e24eb7789 jyviko: SMLib: pin 5e8c9c1 (the new blend's corners: Ball and End/Join; exact fold and room checks with fit sizes; overflow in place; the round as its definition)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 02de15f90 brett19: Move the solidcore pin to 9fb13f145
- 09b646005 brett19: Turn on solidcore's new fixes at 9fb13f145
- c494a18f9 brett19: Rig: the reimported peg's rounds fail as the peg's do
- e9ac0e606 brett19: solidcore: a curvature fillet is refused until solidcore has the equal-area Gⁿ section
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: #1486
* Compare picture: overlap and edge offsets of the model against a reference picture (#1486)
inspect.compare_picture lays the model's silhouette over the part found in a
PNG or JPEG and slides it to the best overlap: overlap (0..1), the model's
edges against the picture's in mm at nine stations, and an overlay PNG. The
MCP tool compare_picture runs it and hands the overlay back as an image block.
inspect.silhouette grows a reusable silhouette::outline for the model side.
* chore: re-trigger checks (defaults line already present in PR body)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* i18n: carry the Compare Picture label in Arabic, Hebrew and Vietnamese too
The complete-catalog guard (every_complete_catalog_carries_every_english_message)
failed because the pending file covered only en/ja/zh; ar, he and vi are
complete catalogs and need the key as well.
* Compare picture: one uniform scale, capped fit, sturdier part finding
Review on #6416: fit no longer stretches the axes apart (width is the default,
both scales uniformly by width and reports aspect_mismatch); the fitted model
takes the same MAX_GRID cap as the picture; the border flood seeds only from
border pixels near the border's main colour, reads alpha, retries at a
stricter step, and says which case failed; the slide searches the whole
placement range instead of a tenth around the centre; the model's holes get
the picture's fill rule; crop becomes crop_px / crop_fraction with explicit
units. Pins #1486's bracket (overlap 0.865, bottom -10 mm at the upright) and
adds a regression test per problem.
* Compare picture: alpha only for a see-through border, part_fills_crop, outline-only wording
Review re-test on #6416: one translucent backdrop pixel no longer switches the read to
alpha — alpha decides only when most of the border is see-through, and any ink is then
part, so a part drawn at alpha 100 survives; part_fills_crop: true takes the crop box as
the part itself, for one view cropped tight off a board where the part takes most of the
border and the flood would keep the backdrop strip instead; a third backdrop pass compares
each pixel to the border's main colour, so a white part on (245, 245, 245) JPEG at quality
75 separates; the command, tool and docs descriptions now say the compare is outline only:
holes are not compared. A banded light backdrop stays a follow-up. A test per case.
* MCP compare: format the picture tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
* Render results: keep up to eight completed renders and select or discard them
* Render results: Live and render compare with a divider, and render all shots
* fix: use comparison theme tint and reveal reset test targets
* fix: restore Unicode expectations in render workspace tests
* claim: #6528
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Lost GPU: the per-frame probe opens a command list, as the upload would (#6528)
On a reset D3D12 device the empty submission before a frame's uploads
went through (it only signals a fence), and the first queue write then
panicked inside wgpu-core (PendingWrites::activate unwrapping Lost).
The probe now submits a command buffer with a debug marker: finishing it
makes the same begin_encoding call, through a path where wgpu loses the
device and runs its lost callback instead of panicking. The picture
capturer's probe does the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #7159
* Measure: a fillet's torus or a sphere reports its radius (#7159)
The face of a fillet round a circular edge is a torus and a ball's face a sphere, which
Measure listed by area only. Their face item now carries radius, diameter and surface
(and the ring radius of a torus); they stay out of Shape, so distances are unchanged.
Fixes#7159.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
* claim: #9111
* Preview: new surface is tinted whatever its size, and the tints can be turned off (#9111)
A preview decided which faces of a changed body were new surface by asking
whether their triangle centroids lay on the old body, within a tolerance that
follows the part's size. A round or chamfer small beside the part never leaves
that tolerance, so it was drawn as if it had always been there, and sampling at
a fixed step told alike faces apart by nothing but how many triangles they had.
The kernel already records which faces an operation generated, so `build` takes
that record alongside the geometric test. The test stays because a body carries
the history of whatever last made it, which is not the previewed operation when
a parameter change re-evaluates the design: the record only ever adds faces to
the answer. The vote itself now asks about every centroid of a small face,
spreads a large face's samples without a resonant step, and calls a face new
above an eighth of its samples, which a blend tangent on both of its sides
reaches with the one row of facets in five that is clearly off the old surface.
Graphics gains two settings, both on as they come, so nothing changes out of
the box: Tint new surface in a preview draws a changed body as itself when it
is off, working out no face at all, and Show removed material in red leaves the
see-through cut and the ghost of the shape a feature replaces fully
transparent, drawing only their outlines.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* claim: #9084
* Edit Extrude: close on the first Escape (#9084)
An edit dialog whose value names a parameter (`T` in Edit Extrude) opened with
that field focused and its completion list showing the longer names (`tan(`),
unarmed. The list took the first Escape, so the dialog needed two.
An unarmed list now leaves Escape to the window until the box is typed in, as
it already leaves Enter and Tab; once typed in, Escape dismisses the list first
as before. Its hint drops "Esc dismiss" in that state.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #9827
* Sketch Offset: an Instances count stacks offsets one behind another (#9827)
Offset made one offset at a time, so a set of evenly spaced outlines meant
running it again on the curves it had just made, once per ring: a separate undo
step and a separate driving dimension each time.
`sketch.offset` now takes `instances`, a whole number or a unitless expression
from 1 to 100 (1, today's behaviour, by default). The per-group work the command
did inline becomes `offset_rung`, and `offset_ladder` runs it once per instance,
each rung offsetting the one before it the same distance again, so instance n
stands n distances from the curves picked. Every rung of a side is driven by
that side's own dimension, so editing it moves the whole set and keeps the
spacing even, and each side of a Two Sides or Symmetric offset grows its own
ladder. A rung the shape has no room for refuses the whole command and names
which instance it was.
A later rung reads its side from the geometry, through the rung's own
normal-distance annotation, rather than from the distance's sign: an output's
stored ends need not run the way the chain through them is walked, and a
reversed walk reads the same sign as the other side. A circle is the exception
and keeps the sign, because it offsets concentrically with no chain to walk, and
a step past a ring smaller than the distance lands beyond the centre, where the
circle's "outside the current radius" side test reads as the outward side: an
inward ladder turned round and grew again (1, 4, 1, 4 mm) instead of running out
of room.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Sketch Offset: the Instances row in the offset window (#9827)
The offset window gets an Instances row under Distance: a whole number with step
arrows, 1 by default, so the count can be walked up a ring at a time and the
preview follows each step. The count is not kept in the design, as Mirror's and
Scale's values are not, so the window sends the number it evaluates to rather
than the text.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* UI kit: a count's step arrows are not text (#9827)
The arrows stand inside the editor, which asks for the text cursor across its
whole rect, so hovering one showed an I-beam and the arrows read as part of the
number. They take the ordinary cursor back after it, and the pointer is read
from the arrow's rect rather than from the hover the editor underneath competes
for, which keeps the hover highlight in step with it.
The pattern Quantity rows share this field and had the same thing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Sketch Offset: Instances label in the complete catalogs and the other shipped languages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch Offset Instances: translations for the complete catalogs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
* claim: #9873
* Add the Preferences design reference: pages, figures, measurements, tokens
* Fix the selection look in the design reference to match the app
File › Export STEP…, STL…, 3MF…, OBJ… and URDF… were UI actions around
the shared file.export, so Keyboard Shortcuts had no row for them.
file.export_step, _stl, _3mf, _obj and _urdf now do what those items do
when started from a key, command search or the menu (a save picker; Save
As Mesh for STL and 3MF), and take a path when called with JSON. The File
menu shows their keys. Each has a contract and a reply type
(schema/file.rs).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- a1b4119c3 brett19: Turn on geometric_g2_continuity: 2992's slowdown is gone
- f2ce343a0 brett19: Known failures after the new fixes: four tests and a rig case pass
- b57c24f7f brett19: Known-failing tests: the tabbed plate cites solidcore#2223
- 0aff35705 brett19: Merge fix: solidcore reads planar sheets without SMLib, so their edge reader is always built
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: #10600
* Sketch: a value box must not swallow a click that lands on a sketch point (#10600)
The construction line tools' Length box waits beside the pointer. When the
pointer reaches the reference line's own endpoint it can land under that box
(the box is anchored to the tool hover, which freezes while the pointer rests
on the box), and the box's text edit takes the click, so the tool never sees
it. A release over the tool's own value box or construction/normal switch that
lands on a snapped sketch point now goes to the tool; a click on the box away
from any sketch point still edits the box.
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* claim: Assemblies: use lookup maps when building the world state
* Assemblies: use lookup maps when building the world state
world_state_reusing, made again after every geometry command in a design
with components, filtered all bodies for every placement, searched the
timeline for every sketch and construction of a placed part, and searched
all bodies twice per tap and placement. It now builds the feature to
component map, the bodies of each component (in body order) and each
tap's component and body offset once per call. The result and its order
are unchanged.
On a 100-part assembly placed 5 times (800 sketches, 200 taps) one world
state drops from 124 ms to 9.5 ms (release, median).
A test-only counter of searches through all features or all bodies
checks that the work no longer grows with the sketches and taps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A join, cut or intersect without explicit targets reads where every body
of its component is placed. Its placement digest searched the model for
each of those bodies by name, then the timeline for its component and the
placements for that component's frame: O(B^2 + B*F) per feature, on every
evaluation, also when every feature comes from the cache.
The bodies, their components (Document::model_body_components) and each
component's frame are now looked up once per digest. The bodies are still
hashed in name order with the same values, so every digest stays the same
bit for bit and saved caches stay valid.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10393
* Per-component History hiding: flag, commands, Browser menu, bar toggle (#10393)
* Carry the new History-hiding strings in the complete catalogs (#10393)
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* Sketch: a construction line with a length can be a normal line (#10258)
`construction: false` on a construction line command that has a
`length` makes the segment a normal sketch line, ready to close a
profile, instead of construction geometry. The default stays
construction, and an infinite line is always construction.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: a length box in the construction line tools (#10258)
The horizontal, vertical, parallel and perpendicular construction line
tools show a Length box beside the pointer from the start. It stays
empty (shown as infinite) and leaves the keyboard to the tool's
shortcuts until a digit is typed; then the box takes the keyboard.
Without a length the tools work as before: one click, an infinite line.
With a length the first click sets the start and a second click the side
the segment runs to, sent as the command's `length` and `near`, so the
segment gets its length dimension. The angle tool has a Length box
beside its Angle box. A typed length keeps the start's snap, and the
preview draws the segment the click will create.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: a construction/normal switch in the construction line tools (#10258)
A Construction | Normal switch sits under the Length box of the
construction line tools. Normal sends `construction: false`, so a
segment with a length becomes a normal sketch line, ready to close a
profile, without converting it afterwards. The switch starts at
Construction with each start of a tool. An infinite line is always
construction, so without a length the switch is greyed out and its
tooltip says why. It belongs to the tool alone: the Sketch Palette's
drawing line type (X) is left as it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- fb851d9c2 brett19: Known-failing tests: main's four tests that fail on solidcore as on C++
- 6de10a7fb brett19: Model cache test: say why it reaches the C++ kernel
- 84bca5969 brett19: Move the solidcore pin to c931c9641
- e1b76bdfc brett19: Turn on solidcore's new fixes at c931c9641
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* claim: Sketch drag: drop the second document copy per frame
* Sketch drag: drop the second document copy per frame
edit_solved copied the document to edit it, then stored it with
`*s.doc_mut() = doc`. The command's undo snapshot still holds the old
document, so doc_mut copied the whole design a second time only to
overwrite it. Store the edited document with Session::set_doc instead,
which forgets the same caches and puts it in a new Arc. The design lands
at a new address as before and the command's end records it for the
crash journal (#7502).
A live drag frame on a design of 200 sketches (20k curves) drops from
19.2 ms to 9.4 ms; 50 sketches: 2.3 ms to 1.7 ms.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Move: say a part's joint conflicts instead of 'no movable joint axis'
* Move: say a part's joint conflicts instead of 'no movable joint axis'
When a joint of the selected part conflicts with the others (the solver
can't close its loop), Move found no axis and said "This part has no
movable joint axis.", pointing at joint types and limits. It now names
the conflicting joint and suggests editing, suppressing or deleting it.
Parts with no free joint value and no conflict keep the old message.
Refs #10331
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10484
* Sketch: Intersect can pick sketch lines and model edges (#10484)
The Intersect dialog only took faces or whole bodies, so a click on a
line of another sketch (the sides of a rectangle crossed by a plane
through its middle) picked nothing, although sketch.intersect already
cuts edges and sketch curves with the sketch plane. The pick list now
takes faces, edges and other sketches' curves, and the selection filter
reads Geometry | Bodies like Project's.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10471
* Show given names in bidi display order; find RTL prefs labels typed in reading order (#10471)
crate::bidi ran over catalog text only, so a multi-word Hebrew or Arabic
body name showed its words left to right in stored order, and Preferences
search compared display-order labels against reading-order queries.
given_name now returns right-to-left names in display order (browser rows,
tabs, status bar all draw names through it), and text_matches also scores
the query after the same bidi transform.
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* Configuration rules: Then says it lists only the table's columns, and how to add one (#10532)
A rule drives or restricts a column of the table only, so Then leaves out a
feature without a Suppress column or a parameter without a column, where
When lists them all. A note under the list now says so and points at Add
Column.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Configuration rules: the two notes in the complete catalogs (Arabic, Hebrew, Japanese, Vietnamese, Chinese)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: View: work out consumed sketches and hidden bodies once per revision
* View: work out the sketches features use once per design
Each sketch_shown call walked every feature of the design to tell whether
the sketch is used, and the viewport asks about every sketch several
times a frame. The used sketches are now gathered into a set once per
design (keyed on the design itself, so any edit reads them again).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* View: look hidden bodies up in a set
body_visible walked the hidden-bodies list for every body asked about, and
the viewport asks about every body several times a frame. The hidden
bodies now join the hidden joints and folders in the view's visibility
index, built when the list changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: View: work out consumed sketches and hidden bodies once per revision
* View: work out the sketches features use once per design
Each sketch_shown call walked every feature of the design to tell whether
the sketch is used, and the viewport asks about every sketch several
times a frame. The used sketches are now gathered into a set once per
design (keyed on the design itself, so any edit reads them again).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Canvas: store reference image data as shared text so edits stop copying it
* Canvas: store reference image data as shared text so edits stop copying it
Every edit clones the document, because the undo history still holds the
old one, and the canvas image was a plain String: each of the up to 200
undo states owned its own copy of the base64 text. Canvas::data is now
Arc<str>, like the shared STEP text, meshes and point clouds; serde's rc
feature writes it as the same JSON string, so design files stay byte for
byte the same.
A 4.2 MB image with 250 edits: peak memory 1.09 GiB -> 42 MB, run time
1.16 s -> 0.12 s.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Browser: a folder that holds only a new group shows it (#10526)
New Group from the root's context menu made an empty group in the Bodies
folder, but the Browser draws no folder without items, so in a design
with no bodies yet nothing appeared. A folder that holds groups is now
drawn with them, even before anything is in it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Browser: test that a new group in an empty folder shows and takes a dragged body (#10526)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Extrude dialog: work out the automatic operation once, not every frame
* Extrude dialog: work out the automatic operation once, not every frame
An open Extrude window with the automatic operation on asked the engine
for `auto_operation` every frame. That probes the bodies with
`Mesh::contains`, rays through every triangle, so a large part cost tens
of milliseconds per frame with nothing changing.
The window now keeps the answer with a key over what it depends on: the
extrude's parameters (participants included), the design's revision and
id, and the active component and occurrence path. The latch still runs
every frame as before.
Open Extrude over a 1M-triangle mesh body: 29.8 -> 0.87 ms per frame
(headless harness, median of 3).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Extrude dialog: keep the taper limits while the profile is unchanged
* Extrude dialog: keep the taper limits while the profile is unchanged
The taper handle is drawn every frame while the extrude window is open,
and every frame it worked out the inradius of each picked profile and of
each of its holes: a grid search over every side, about 200 ms a frame
for a plate with 64 round holes. Only the height changes between frames.
The radii are now kept in the window's state with the profiles they were
worked out for, and worked out again only when the profiles differ. The
limits come from the same arithmetic, so they are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10016
* Sketch: a Line chain survives Undo (#10016)
Undo could take away the segment the chain was drawing on from, and every
further click was then refused with "unknown sketch point". The chain now
remembers where each segment started and goes back to the last one still there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Raytracer: map faces to looks once
* Raytracer: map faces to looks once per body
Preparing a body for the CPU raytracer walked the body's face look list
one entry per work step for every triangle, so a body cost T x (F + 1)
steps (each through the job host) instead of T. The face looks are now
sorted once per body, keeping the first entry per face as before, and
each triangle finds its look with one binary search. Pixels are
unchanged; with 10 000 faces and 50 to 500 face looks, preparation
drops by 40 to 88 %.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Opening: validate the document once when a model cache is present
* Opening: validate the document once when a model cache is present
Opening a design that keeps its model parsed and validated document.json
twice: reading the model cache checked it before decoding the cached
bodies, and read_document, which follows straight after, runs the same
migrations and validation and fails the open when they fail. The open
path now reads the model without that check; geometry(),
read_design_geometry and the preview keep it. A broken document fails the
open with the same error as before.
3,000-feature design with its model cache, bench-open parse step:
426 -> 293 ms (median of 8, heavy machine load). Saving the opened
design gives a byte-identical file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10483
* ViewCube: an option to invert the curved roll arrows (#10483)
A new Navigation preference, "Invert the curved roll arrows"
(invert_curved_roll_arrows, off by default): with it on, the two curved
arrows at the cube's corner roll the view the other way within the
screen plane - the clockwise arrow rolls counterclockwise and the
counterclockwise arrow rolls clockwise. The sibling of the cardinal-arrow
inversion from #10286, which left these arrows alone.
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* claim: Mesh imports: compare by pointer before comparing contents
* Mesh imports: compare by pointer before comparing contents
MeshData derived PartialEq, so the dirty check and the autosave check
walked every coordinate and index of a scanned mesh after each edit,
although the document and its saved copy share the same arrays. Compare
shared arrays by pointer first and value by value otherwise, as Points
and Colors already do. About 1.9 ms per comparison for a mesh of one
million triangles goes to nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Sketch: use a lookup map for curves in pattern upkeep
* Sketch: use a lookup map for curves in pattern upkeep
Pattern upkeep runs before every solve, each drag frame included, and
looked up every copy curve and its arc points with a linear search over
all ids. Dragging another line in a sketch with a 500-copy slot pattern
spent about two thirds of each frame there. The ids now resolve through
maps built once per call; the result is the same to the bit.
The solve bench gains a circular slot pattern section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: hash sets for the stale-pattern check before each solve
The check whether a pattern lost a seed, copy or relation built three
ordered sets of all ids before every solve. Only membership is asked, so
hash sets give the same answer; a drag frame in a sketch with a 500-copy
pattern takes another third less.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: Sketch: use a lookup map for curves in pattern upkeep
* Sketch: use a lookup map for curves in pattern upkeep
Pattern upkeep runs before every solve, each drag frame included, and
looked up every copy curve and its arc points with a linear search over
all ids. Dragging another line in a sketch with a 500-copy slot pattern
spent about two thirds of each frame there. The ids now resolve through
maps built once per call; the result is the same to the bit.
The solve bench gains a circular slot pattern section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 15c5cd5d5 brett19: Known-failing tests: cite the solidcore issues now filed
- 462738b6a brett19: Known failing after the smlib merge: the r5 test-peg corner on solidcore, main's C++ test lines
- 4a98a1f8a brett19: Model cache: a saved model is its kernel's
- 9c2388ef8 brett19: Geometry kernel strings in Vietnamese, now a complete catalog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
Projecting a whole body fitted its outline from mesh edges: a round wall seen
edge-on has triangles leaning a hair either way, so the outline zig-zagged
between both rims and broke into two-point pieces (lines), and seams where two
faces' triangles don't share vertices counted as open, outline edges. Faces
that face one way all over (planes, cylinders and cones about the sketch
normal) now decide for all their triangles, near vertices are welded, and a
seam between two faces facing the sketch is no outline. A STEP hook went from
159 lines to 10 lines and arcs.
A single rounded or chamfered rim of a cut curved face is a spline that only
follows its circle; read as Bezier pieces it came in as twenty splines. An
edge read as spline pieces that stays on a circle within 1e-5 of its radius,
in a plane parallel to the sketch, now comes in as that arc.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Measure: datum planes, axes and points, at exact distances
The Measure tool took faces, edges, vertices and sketch geometry; a datum
plane or axis could not be picked into it, and a point set of an infinite
plane or axis would measure the wrong thing anyway.
Describe origin and construction planes, construction axes and construction
points as items, accept PLANES, AXES and CONSTRUCTION_POINTS (and the origin)
in the Measure dialog, and give the new shapes exact closest points:
- a point and a plane: the perpendicular distance;
- a point and a line: the perpendicular distance;
- two planes: parallel distance, or zero where they meet;
- a plane and a line: zero where they cross;
- two lines: the skew distance.
The panel and the quick readout show a plane's point and normal, and an
axis's point and direction.
Test: a point 10 above the XY plane, 5 from the Z axis, and a plane and an
axis that meet.
* Select: a straight sketch line is a curve in an input that takes curves
Adding axes to Measure's input made a straight sketch line match the "axis"
rule before the sketch-line rule, so a picked external sketch curve became a
SketchCurve instead of the ExternalSketchCurve Measure records. The axis rule
now applies only to inputs that take axes on their own (Move's direction and
the like), not to inputs that also take curves.
Test: measure_input_fits_external_sketch_geometry, and the Move axis picks.
* rustfmt: format the new selection filter and measure code
* Measure: drop an unused normalisation in the skew-line distance
---------
Co-authored-by: clarkliu <277482660@qq.com>
* Frames: test that a renamed cut-off piece keeps its name in a rebuild from the features alone (#10438)
solidcraft-cli eval rebuilds a saved design without its saved model; the
rename made after a cut then lands on the first line's member. The test
reproduces it on main; the fix follows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Frames: a renamed cut-off piece keeps its name when the design is rebuilt from its features (#10438)
Since #10132 a cut's pieces past the first belong to the cut and the piece
that keeps the body's name to the body's own feature. Ordering the pieces
by their faces then moved the names among them but left each body's
feature behind, so the cut-off piece said the frame member feature made
it. body.rename stored its new name there, in the first line's slot, and a
rebuild from the features alone (solidcraft-cli eval of the saved file)
named member A after it. A name now moves together with the feature it
belongs to.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
With several bodies to send (after Add all bodies, say), the Print face
input refused every face. It took a print face only when exactly one
body was sent; any other pick was cleared at once, with a note in the
status bar only. Each body's print face then had to be set with Ctrl+B,
or by sending that body alone.
The input now holds the print face of each body being sent. A face
picked in it becomes its body's print face, in place of the one it had.
A click on a body's print face takes it out and clears only that body's.
A face of a body that is not being sent is refused with a message
(`ui.print_face_body_not_sent`, in place of `ui.print_face_one_body`).
Each change is still one `body.print_face` command, so it undoes on its
own. Picks in this window are no longer widened to the other pieces of
the face's surface, so a click on a print face takes it out rather than
adding its neighbours.
The user guide (guide/files.md) says so. The new message is in
assets/locales/pending/print-face-each-body.json, in all 31 languages;
the old one is removed from the catalogs.
Test: dialogs_save_mesh::tests::the_print_face_input_takes_one_face_for_each_body_sent
(fails without the change: the second body's face is refused).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 01e2e939e jyviko: Variable rounds: graded by the union of their balls (their envelope), not the balls' great circles
- 7bba3092c jyviko: Kernel tests: variable rounds graded by the union of their balls, the removed volume to 1e-4 of itself
- 0b1cc8a8c jyviko: Kernel tests: a spline radius whose balls fold over one another at its peak is refused
- 1745e5c38 jyviko: Kernel rig: the variable round on its cone passes (the round is the balls' envelope)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- afb55d806 brett19: One kernel flag: solidcore, the default, or smlib; routed is gone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 3908128a8 brett19: Known-failing tests: refreshed from the default run at solidcore de85a3e00
- cd94f78f3 brett19: Rig: --route is gone; a run has one kernel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Sketch: Break Link in the context menu of projected geometry (#10417)
Projected curves and points (model edges and vertices, another sketch's
curves) could only be unlinked through command search, although Trim and
other refusals say "use Break Link on it". The sketch context menu now
offers Break Link when the selection holds projected geometry; text keeps
Explode Text.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch: test Break Link in a projected edge's context menu (#10417)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Browser: Features folders scrolled out of view skip their mark
A folded Features folder shows the worst error or warning mark of the
features it holds. Working that out scans the design's whole history, and
from 16 features builds a table of all of them: per placement, on every
frame, whether the row is on screen or not. In a long tree of placements of
a part with a long history this was most of the window's frame while
orbiting.
A row scrolled out of view paints nothing (`tree_row` only takes its space),
so its mark is now worked out only when the row is on screen, as the
placement rows already do for their own state. The rows on screen show the
same marks.
Refs #6083
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Scale tests: time each frame of an orbit around a large design
`scale_tests::orbit_frame_cost` (ignored, manual) turns the view with the
right button over a design (a STEP file inserted as the app opens one, a
design file, or the generated assembly) with the model scene built, as the
app builds it once a renderer is there. Per frame it times the window
thread's frame and its named steps (`frame_watch`), egui's tessellation,
and the renderer's prepare, draw recording and GPU work on an offscreen
device (`OffscreenFrames::frame_parts`); without an adapter it times the
window thread alone. `painted` fingerprints the tessellated picture once
the view rests, to compare two builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
On XZ a sketch's y runs along world -Z, so a value written as a height lands
below the plane; only the modelling skill's reference said so. The command's
parameter text now gives the axes of all three origin planes (XY: +X, +Y;
XZ: +X, -Z; YZ: +Y, +Z), and a test pins them.
Assisted-by: LLM
`component.insert_design` links a design saved as a .sc container or as plain
JSON (`.json`), but `component.relink` refused every path that was not a
container ("choose a saved .sc design"), so a component linked to a JSON
design could not be pointed at another one. Relink now takes any design path
Insert Design takes (`is_design_path`: .sc, a legacy extension or .json); the
file is read by the same `design_bodies`, which already reads both. The Relink
Source file dialog opens on a filter that lists .json among the designs, too.
Assisted-by: LLM
* claim: #10258
* Sketch: construction lines with a length (#10258)
The horizontal, vertical, angle, parallel and perpendicular construction
line commands take an optional `length`: the line becomes a construction
segment from `at`, running towards `near`, held by a length dimension
that follows its expression. Without `length` the line stays infinite,
as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- cf5e0e3c1 jyviko: Kernel rig: a junction family: oblique wedges 30 to 150 degrees rounded and chamfered (exact), bosses upright and tilted, pipe tees and a Y junction
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
- In entry_row (crates/ui-egui/src/browser.rs), use live rather than cached for the property
- Ensures eye toggle dynamically fades or unfades rows for sketches and bodies without requiring a cache rebuild
- Add regression test in browser_card_tests
Fixes#9953
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7577e032f jyviko: Kernel rig: the turn at a corner of two rounds, Mitre (the default) and Swept, at a pocket's floor and a boss's base, by exact volumes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 922ee28f3 jyviko: Kernel rig: the section orders, chord, circle and curvature section, on planes and against a cylinder
- 19455396b jyviko: Kernel rig: the curvature fillets' expected bodies from the order-2 section at thumbweight 0
- 4df3adc5a jyviko: Curvature fillets: the section's default thumbweight is equal area, so the round's volumes are the circle's
- 539d12648 jyviko: Kernel rig: four G2 corners wait for the corner step: their patch meets the new section's rounds G1 at one face seam
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- aa41c0b5d jyviko: Kernel rig: the fillets known-failing list is the 22 cases that fail on SMLib 7ac037e
- 05f5e8601 jyviko: Kernel rig: #316's bottom rounds as large as the wall, or larger, shell with a step wall at the opening, not refused
- 9d4f78001 jyviko: SMLib: pin d01d7b0 (the new blend's one Gⁿ section generator: the chord, circle and curvature sections, and the variable rounds as the union of their balls)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
OpenSteps splits doc.open of a design into steps for a caller that must
keep working meanwhile (the web app, which has one thread): start reads
the file, each step evaluates the next feature by moving a copy's history
marker one feature on (so every result before it is reused), and finish
puts the design in the session's place with doc.open's reply. The next
feature's imported STEP text is offered first, so a caller can read it
in parts. Session::opened and opened_at are split into small helpers so
both paths build the session the same way; doc.open is unchanged.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Saving a design with its model cache asked, for every state, for each sheet-metal body it holds,
and built that sheet's JSON record each time only to find it written already. A design of 906
states with 300 sheets spent most of its save there. The sheet's text written straight from it
is the key now; its record is built only the first time. The records and the file are the same.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Find a saved model's sheets by their text, not a record built per state
Saving a design with its model cache asked, for every state, for each sheet-metal body it holds,
and built that sheet's JSON record each time only to find it written already. A design of 906
states with 300 sheets spent most of its save there. The sheet's text written straight from it
is the key now; its record is built only the first time. The records and the file are the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Write the model cache manifest without copying the model's records
The manifest was built as a JSON tree, which copied the whole model's records (13 to 33 MB of
records in large designs) before writing them, and a cache too big for the file wrote it again for
each try at fewer states. The manifest is now written from the records where they are, its fields
in the sorted order the tree wrote them, so the file is the same byte for byte.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10063
* docs: add a design approach and workflows chapter to the user guide (#10063)
Adds guide/design-approach.md after the window tour: the parametric idea, principles for designs that change well, the timeline and rollback marker, bodies vs components and occurrences, common workflows with links, a term map for users of other CAD software, and where to find help.
* docs: match the chapter to the app's labels and sketch colours (#10063)
Checked in the web app (0.29.0): the timeline strip is headed History, the toolbar shows New Sketch and Parameters for Create Sketch and Change Parameters, and fully constrained geometry turns white in the default dark theme rather than dark.
* docs: tighten the design approach chapter's wording (#10063)
The glossary covers most, not all, of the chapter's terms; Redo moves forward; the timeline is shown as the History strip; Report a bug drafts a report for the user to file and sends nothing itself.
A flat node's roundoff allowance took a hypot per control point. Twice
|x| + |y| bounds each hypot from above with room to spare for rounding,
and rounding keeps sums monotonic, so whenever the flatness test passes
with that larger allowance it passes with the exact one too. Only nodes
whose chord distance comes near the 0.5 px bound (or with a non-finite
term) now take the exact hypots, and they decide as before.
Same result for every node: the reference comparison test still matches
bit for bit.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A caller that only needs the bodies' names (assembly occurrences included,
e.g. "Body2 (Part:2)") had to measure every body, or read document.inspect,
which lists definition bodies only. `inspect.measure {names_only: true}`
returns each world body's name and its definition's name, honouring the
`bodies` filter; an unknown name is refused before anything is measured.
The MCP `measure` tool passes it through, directly and as a batch step;
`summary` leaves such a list as it is, since there is nothing to narrow.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #8876
* Add optional viewport-only Kawase blur and native UI composition
* Fix vendored panel hook imports and deprecated float constant import
* Drain texture updates in the full GPU blur fixture
* Hold the blur evidence fixture camera fixed across radii
* Address blur compositor lint checks
* Share animated Render preview background with blur source
* Use resolved Design background for blur source
* Exercise blur rendering independently of software adapter policy in CI
* Use stock egui hosts instead of vendoring the full crate
* Preserve feature-window open handling with stock egui hosts
* Target the native Window in close-handling regression fixture
Show F2 beside Rename on context menus where F2 already renames the
target (bodies, features and sketches, construction planes, components and
occurrences, browser groups, and canvases). Saved views and joints remain
without a shortcut label because F2 does not rename them without a menu.
When a context menu is open, pressing F2 routes through press_shortcut to
rename the menu's target (such as a clicked browser group or canvas) and
close the menu, rather than renaming the viewport selection.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Gemini 3.8 Flash <noreply@google.com>
Each node of the display curve sampler recomputed a control point's
seven clip distances for every clip plane it tested (up to 7 times for
the reject test, 3 more for the depth test, once more for the cut), and
projected each point to the screen twice. They are now worked out once
per node into arrays and read from there.
Most nodes are split rather than drawn. A node is flat only when every
control point lies within the pixel bound of its chord after adding a
roundoff allowance that is never negative, so a point already farther
than the bound decides "split" on its own; the allowance (four hypot
and divisions per point) is now left out for those nodes.
Same values in the same order: the reference comparison test from the
previous commit still matches bit for bit.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The doc comment of the ground shadow had slid onto build_sketch_scene when
that function was added above ground_shadow. Give it back to ground_shadow
and describe what build_sketch_scene builds.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 75229f2b9 brett19: Offset tests: a sphere moved to its centre leaves nothing again (solidcore#2092 fixed by #2096)
- 6221b7f4b brett19: Rig: solidcore known-failing lists at pin de85a3e00
- b04e363e7 brett19: Rig: #316's renamed shell cases pass on solidcore, off its known-failing list
- c786db6bf brett19: A blend's pick measures close edges on their curves, not their polylines
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
* Sketch Coincident: a selected line midpoint is a point it takes (#10311)
A selected midpoint goes to the command as {midpoint: line}, as
Horizontal/Vertical's alignment takes it, but Coincident wanted a point
id and refused it with "b must be a point or curve". The command now
puts a point at the line's middle, tied there by a Midpoint constraint
(or uses the one already tied there), and makes that point coincident
or puts it on the other curve, in one undo step. The toolbar button and
the context menu send a selected midpoint that way.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch Coincident: test a line midpoint in the command, the toolbar and the context menu (#10311)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Engine: open a design a feature at a time (#10198)
OpenSteps splits doc.open of a design into steps for a caller that must
keep working meanwhile (the web app, which has one thread): start reads
the file, each step evaluates the next feature by moving a copy's history
marker one feature on (so every result before it is reused), and finish
puts the design in the session's place with doc.open's reply. The next
feature's imported STEP text is offered first, so a caller can read it
in parts. Session::opened and opened_at are split into small helpers so
both paths build the session the same way; doc.open is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Web app: open a design a few features a frame, with progress and Cancel (#10198)
On the web, a design to open is now a staged file load like a STEP file
(#1376): its features are evaluated for about 30 ms a frame through
OpenSteps, a feature's imported STEP file is read a solid per frame first
and held so the feature finds it read, the progress card counts the
design's features, Cancel works between steps, and the meshes are made
a few per frame afterwards. The desktop app keeps its worker thread.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Web app: design links and the files window open designs with progress and Cancel (#10198)
Design links (?open=URL, as embedded viewers use), the files window and
designs opened from the computer went through the one-shot open_path,
which froze the page on a large design. They now use the staged open; a
design link becomes an unsaved copy under the link's name once the open's
reply arrives (SolveApp::open_path_answered).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Engine: open a design a feature at a time (#10198)
OpenSteps splits doc.open of a design into steps for a caller that must
keep working meanwhile (the web app, which has one thread): start reads
the file, each step evaluates the next feature by moving a copy's history
marker one feature on (so every result before it is reused), and finish
puts the design in the session's place with doc.open's reply. The next
feature's imported STEP text is offered first, so a caller can read it
in parts. Session::opened and opened_at are split into small helpers so
both paths build the session the same way; doc.open is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Web app: open a design a few features a frame, with progress and Cancel (#10198)
On the web, a design to open is now a staged file load like a STEP file
(#1376): its features are evaluated for about 30 ms a frame through
OpenSteps, a feature's imported STEP file is read a solid per frame first
and held so the feature finds it read, the progress card counts the
design's features, Cancel works between steps, and the meshes are made
a few per frame afterwards. The desktop app keeps its worker thread.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
A sketch holding a text whose words come from a text parameter is left
unsolved after the words change and its links then move far, with the
warning "the sketch constraints conflict (k1, ..., k10)". The same two
changes the other way round solve.
Repro: a sketch with three projected points, a construction rectangle on
them and a centred text along its far side, the text's words given by a
text parameter. Change the parameter's words, then move the source
geometry about 280 mm. Without the word change it solves; with it, the
sketch warns of conflicting constraints.
Other words are other outlines: the text is built anew with new points
and curves. The solve that walks a sketch from its stored state to a far
link move (and the check for sides the jump turned over) refused the two
sketches as not the same entities, and the single jump left alone failed.
`Sketch::stored_with_rebuilt_texts` gives the stored sketch as this one
has its entities when they differ only by rebuilt texts: the texts'
entities as they are now, every other point, radius, arc turn and
constraint value as stored. `Document::solve_sketch` walks from that, so
the points pair up again. Sketches that differ in anything else are
refused as before.
Test: sketch_project::side_tests::a_label_follows_its_source_far_after_a_text_parameter_gave_it_other_words
(fails without the fix with the conflict warning above).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The pixel-bounded curve sampler that draws sketch curves and profile
outlines ran again on every camera move, and each subdivision step
allocated: every span's control points were a Vec, splitting one in
half built a Vec per de Casteljau level, each node's projection was
collected into a Vec, and every drawn part grew from two vertices.
The control points now live inline in a fixed array (`Hull`, at most a
degree-9 Bezier), the halves are worked out in place with the same
`mix` level by level, the projection goes into a reused array, and a
new part starts with room for eight vertices. The arithmetic and its
order are unchanged, so the points are the same bit for bit.
Tests: `samples_the_same_points_bit_for_bit_as_the_reference` keeps the
previous sampler as a reference and compares paths, quality and budget
use over every segment kind, slanted and far-off planes, orthographic
and perspective views from far out to far in, clipped and unclipped,
with ample and spent budgets. Ignored timings:
`sampler_cost_against_the_reference` (render) and
`sketch_scene_cost_while_the_camera_moves` (ui-egui).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The web build cannot start the open-meshing thread. Its fallback counted
every body done but listed none ready, so whatever the file load opened
on the web drew no bodies and kept "Loading parts n/n" up for good. The
fallback now lists every body ready and the viewport meshes as it draws,
as the fallback meant to. Found while opening a design through the file
load in the browser (#10198).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: #10218
* Assembly: move sketches to the part they're drawn on (#10218)
`component.move_sketches.to_parts` moves each given sketch, or every sketch in the design, whose
plane is an exactly attached face of a part's body into that part through
`component.move_sketches`, as one undo step. Sketches with no single part to go to stay where they
are, and the reply lists what moved and what stayed, with the reason. The Sketches folder's menu
offers it for the folder's sketches (or the selected ones), and a sketch's menu for that sketch or
the selected sketches; the status bar says how many moved and why the others stayed.
`component.move_sketches` now keeps a face-attached sketch where it is on its face: the sketch is
authored in the new component's placement (the face's own when the component owns the face), and
its picked point and repair plane are carried into it. Before, a face-attached sketch moved out of
the design was left without an author placement and failed to evaluate.
* Tests: the moved part is free to move; face anchor path
* Tests: move the to_parts test to the component command tests
* Shorter label: Move Sketches to Their Parts
* claim: #4581
* View angles card: per-axis zero buttons and locks (#4581)
The readout card under the orientation gizmo already showed and edited the
view's yaw, pitch and roll in degrees. Each axis row now also has a zero
button that turns that angle to 0 degrees at once, and a lock: a locked
angle stays put while orbiting, turning with the arrow keys or using a 3D
mouse, and its field and zero button go inert, so a symmetrical view can
hold its yaw and roll at 0 while only the pitch is adjusted.
* clippy: drop needless borrow in keep_locked call
---------
Co-authored-by: Dahak Builds <dahakbuilds@users.noreply.github.com>
* Sketch Ellipse: Major radius and Minor radius boxes while drawing (#10279)
The Ellipse tool showed no value boxes. After the centre it now shows
Major radius, after the end of the major axis Minor radius; a typed value
places the point at that size and becomes the ellipse's dimension, as for
a circle's Diameter. sketch.draw.dimensioned takes major_radius and
minor_radius for sketch.ellipse, so Dimension new shapes covers it too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch Ellipse: test the typed radii in the tool and in sketch.draw.dimensioned, and say so in the guide (#10279)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Sketch Ellipse: rustfmt the new engine test (#10279)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* claim: faster highlight with many bodies selected
* Viewport: find selected bodies by name once per highlight build
With every body of a large assembly selected, each hover change built the
highlight again and looked every selected body up along the world's bodies
(`ModelState::body` scans them), which is quadratic: about 2.2 million name
comparisons on 2,116 bodies, some 3 ms of every hover change.
The selected bodies, faces and edges are now found in a map by name, made at
the first lookup. A name held by more than one body finds the first, as the
scan did, so the same bodies are lit in the same order.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Viewport: measure hover changes with many bodies selected
An ignored scale test: every body of a design selected (a file named by
SOLIDCRAFT_SCALE_DESIGN, else a generated grid of 1,440 boxes), the pointer
moving from face to face, timing each hover change's highlight build headless
and as the app builds it on a GPU (bodies drawn from their plans, and from the
model scene's blocks). Run with `--ignored --nocapture`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Markus Kaltenbrunner <kaltenbrunnermarkus@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 197cd4f43 brett19: Booleans: the copies no longer take an index
- 0f843c295 brett19: Pin solidcore at main de85a3e00 (#2080, #2081, #2086, #2095, #2096, #2097, #2102, #2103)
- 0b48548af brett19: Turn on solidcore's new fixes and take the rational-span flag off HELD_BACK
- d0c95f0dc brett19: Chamfer: second offsets through SetFilletParameters (solidcore#2095)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 1bf9c8665 brett19: HELD_BACK: geometric_g2_continuity is a fourfold slowdown on 2992, not a hang
- 126a281bb brett19: Pin solidcore at main c093bc5a3 (#2054, #2060, #2061, #2065, #2066, #2068, #2069, #2072, #2076)
- 5d59d42d8 brett19: Turn on gap_samples_non_bspline_v_stride, gap_array_append_updates_longest, imprint_skips_collapsed_definition
- 1c90e60aa brett19: Working copies by solidcore's brep_copy, not our own key domains (#2047 fixed by #2055)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 32b26888c brett19: Turn on offset_keep_cavity_regions and offset_four_face_vertex_split
- 38849d7b0 brett19: Hold geometric_g2_continuity: with the rational-span flag off, 2992 and 3368 don't end
- 5d7dca1a9 brett19: Offset tests: both kernels refuse a top moved -9; the sphere to its centre waits on solidcore
- da4db59a3 brett19: HELD_BACK: geometric_g2_continuity's reason is 2992 alone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 19014f38a jyviko: Kernel rig: constant rounds of the exact classes, and a tee's round
- 73416a9bf jyviko: Kernel rig: the exact-class rounds pass on SMLib's classified exact rounds
- 60923d8cc jyviko: SMLib: pin 7ac037e (the new blend's tangent-end event, zero-speed G2 ends, and its exact-class rounds)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 2b1a63d3f brett19: Pin solidcore at main 2898e1197 (#2053)
- 9337aff4c brett19: Every solidcore fix on unless it appears broken (brett19's rule)
- 2cd566aae brett19: Hold bspline_trim_keeps_rational_end_spans: it fails 3078's check
- 9df34988c brett19: Pin solidcore at main bb6b65706 (#2049, #2051, #2055)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- eff6416d4 brett19: Pin solidcore at main f75e9d2e8 (#2023, #2024, #2034-#2040, #2043-#2045)
- 15e3a61da brett19: Pin 8: decide the new solidcore flags against the fork at 26cc451
- 6a0166853 brett19: A round mitred to one that overflows goes first with it (fork 9ba2b12); flags() and warnings
- d4eb66f25 brett19: Turn on offset_splits_corner_vertices (fork 2e1bb8c's behaviour)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 8ad306e69 brett19: boolean2d through boolean_2d, typed edge-vanishes, typed put-back refusal
- b6285e525 brett19: Overflowing rounds go first again (solidcore#1980)
- 2647b12e5 brett19: Hold back fillet_refuse_crossing_rails: not in the fork
- 0b627d637 brett19: Restore all_solid's loop: an unused index slipped in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a3165f62d jyviko: Rig: fillet corners graded curvature-continuous, the default to be
- be0b1b39b jyviko: Rig: the test-peg's front chamfer builds
- 6cd4003ad jyviko: Rig: the curvature-continuous corner cases pick the curvature fillet
- 4401ffb1f jyviko: Rig: the test-peg's concave chamfer, alone and after the front chamfer, builds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 83487c4d9 brett19: Pin solidcore at main 9f2c980b3 (#2004, #2005, #2006, #2008)
- aca0b57ee brett19: Turn on plane_recognition_origin_after_axes
- 5c0279153 brett19: Pin solidcore at main c369f8801 (#1977, #1996, #2000, #2016, #2017, #2018, #2027 and more)
- 14b1d1956 brett19: Pin 7: decide the new solidcore flags against the fork
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- ec3a21778 Brett Lawson: smlib: a blend on solidcore has a history, as on the C++ kernel
- 03470c3df brett19: Pin solidcore at main 9dde25e97 (#1988, #1997, #1985, #1940, #1974, #1975, #1976)
- f01b87757 brett19: Audit the held flags against the fork's source; tabbed plate and mitred rounds parity
- 9b73dfe74 brett19: Offsets go through solidcore's simple calls; ignored tests cite solidcore issues
Co-authored-by: Brett Lawson <brett@Ubuntu-resolute-latest-amd64-base.zst>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 88e00486b jyviko: STEP import: a face bounded by a slit alone is the whole of its closed surface
- 3c16884f7 jyviko: Rig: the test-peg's concave arc and front top edge rounded together stay within the body's box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 57edcf61a jyviko: Kernel rig: the oblique-cut round keeps its old grade until the new blend algorithm lands
- a250062c2 jyviko: Kernel rig: 1985's enclosure is 78 x 77 (74 and 73 inside, 2 mm walls); its volume 38063.827 by hand
- b0d1ba345 jyviko: Kernel rig: the three spline walls' face counts wait for the one-wall decision; their volumes grade them
- 77f127c61 jyviko: STEP import: a face bounded by seams alone runs its loop the other way, never turns over
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 889a2f866 jyviko: Kernel rig: the cut mirrored loft graded on the box its sections pin
- 37a4c5647 jyviko: Kernel rig: the three modelled-thread joins and the fine M48 graded on their volume (the basic profile's groove, Pappus)
- 6c2a2f395 jyviko: Kernel rig: the oblique-cut round graded by its seams (tangent, not curvature-continuous); the flanged rhombus says what it tests (its reliefs stay apart at 60 mm)
- cd56cd3ad jyviko: Kernel rig: 3841 is 168's rim touching its coin along a circle, and 4092's reduced recipe is its report less a flange clear of the failing join; the kept cases carry their sources
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f6847c97c jyviko: Kernel rig: the base with two adjacent flanges and a hole graded on its volume (base, bends and panels folded)
- bfdb79418 jyviko: Kernel rig: the flange beside the ledge graded on a volume range (the flange's two readings of its length)
- 130f2adaf jyviko: Kernel rig: the two G0 window patches graded on the box the part they close keeps
- 8e0f6403c jyviko: Kernel rig: the hub's six swept grooves graded on its volume (the revolved hub less each tube's part inside it)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 49c7b982e jyviko: Kernel rig: the chamfered corner of the lipped shell graded on its volume (the chamfer's triangle through the wall)
- 0bcc24ccd jyviko: Kernel rig: the concave round into the peg's cylinder graded on a volume range (the torus it must add, the band it can't leave)
- 27b7e202a jyviko: Kernel rig: the two folded 72 degree trays graded on their volume (flat area x thickness) and the walls' reach
- 9b4162a33 jyviko: Kernel rig: the flanged rhombus graded on its volume (flat area x thickness, all four reliefs cut) and its walls' ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f2aba03f8 jyviko: Kernel rig: 616 graded on its volume (the lid less its 0.5 mm-offset cavity, sharp to rounded concave edges) and box
- 764719c53 jyviko: Kernel rig: 391 graded on its volume (the shelled housing, sharp to rounded at the flange, less the letters' 0.6 mm deboss) and box
- 4b512f69e jyviko: Kernel rig: shell/3576 was the ladder's drafted box with rounds shelled, recipe for recipe; the ladder case grades it and carries #3576 and #3573
- 63dd6ae6f jyviko: Kernel rig: the two 851 chamfers of 2 graded on their volume (the cone's sweep, and its union with the front edge's prism)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a53f1640e jyviko: Kernel rig: the up-down squares shell graded on its volume (the columns less the 0.346 mm-offset cavity, sharp to rounded concave edges) and box
- be8e728cd jyviko: Kernel rig: 545 graded on its volume (the frame less its 0.5 mm-offset cavity, sharp to rounded concave edges), its sealed pillar void and box
- edb558bd1 jyviko: Kernel rig: the shell-again case graded on its volume (the shelled box less the 0.5 mm-offset cavity in its walls) and box
- fd9d159f4 jyviko: Kernel rig: the arc-sided plate shell graded on its volume (sharp to rounded at the hole's bottom), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c740e4de1 jyviko: Kernel rig: 1494 graded on its volume (box and cylinder less the 1 mm-offset cavity, sharp to rounded concave edges) and box
- ba75de350 jyviko: Kernel rig: 4492 graded on its box and a volume range (the face's 19 mm sweep added, within the block's sides)
- bdb321cdb jyviko: Kernel rig: 745 graded on its volume (the end moved 1 mm plus the spline boss's exact area), faces and box
- 1893a5016 jyviko: Kernel rig: 4567 graded on its volume (the revolved spline less its revolved 2 mm offset), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d54d3195f jyviko: Kernel rig: 4542 fluted wall joined on a revolved base graded on its volume and box (the base by Pappus plus the fit-spline ring)
- c0c961326 jyviko: Kernel rig: 1985 and 2243 STEP-export enclosures graded on their volume and box (the outline less the cavity, plus gusset and standoffs)
- d77aac416 jyviko: Kernel rig: both 4092 loft, ribs and pad unions graded on their volume and box
- e30459e52 jyviko: Kernel rig: 1525 graded on its volume (the convex body's exact 2 mm inward offset), faces and box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7fdbd5ab6 jyviko: Kernel rig: 4879 window cut through a thickened spline revolve graded on a volume range and its faces
- 18c8add3f jyviko: Kernel rig: 4623 join of crossing pleated loft skins graded on its volume and box (both skins less their overlap)
- 5fb3cfa8a jyviko: Kernel rig: 831 tapered glyph extrude graded on a volume range and box (the font's S drafted in by 10 deg)
- 34e404d38 jyviko: Kernel rig: 2357 ring of 90 cylinder segments graded on its volume and box (the segments less their 90 joint overlaps)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d3c8c36ec jyviko: Kernel rig: 3243 rim and tooth join graded on its volume (rim plus the trimmed tooth less their 0.01 mm overlap)
- 9aa2651b1 jyviko: Kernel rig: 3782 emboss on a cylinder graded on its volume, area, faces and box (the wrapped 4 x 5 badge raised 1 mm)
- 391fc51b4 jyviko: Kernel rig: 3604 G2 swept-tool cut graded on a volume range (filleted box minus the swept corner section)
- 166d574cc jyviko: Kernel rig: 4505 coil joined through a cylinder wall graded on its volume, area and box (cylinder plus the wire's screw-swept segment outside r 76)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5e348ae2a jyviko: Tests: rustfmt the board fixture example and the coplanar asserts
- 033d1a122 jyviko: Kernel rig: the two 3871 cone cases were byte-for-byte the 258 cases; the 258 cases carry their sources
- 780a0652d jyviko: Kernel rig: a volume or area can be graded as a hand-derived range where analysis only bounds it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 43551498d jyviko: STEP import test: a seam sphere whose meridian stops short of the pole imports as the whole 2 mm ball
- 6704d3094 jyviko: Material tests: the nine copies in material_properties go; the persistence file checks the library copy's card and formats 20 and 21 in one loop
- 94acc0c43 jyviko: Sample test: one loop checks every sample builds cleanly and without a panic; the robustness copy goes
- 88c7cb6a8 jyviko: Known failing: the non-antipodal seam sphere import, refused for a loop of no (u, v) area
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f81c4b157 jyviko: Chamfer history test: the chamfer after each box cut is exactly one face on the painted block too
- 9c0d6bd1f jyviko: Grid test: a pole side's face is the five triangles fanned from its one grid node, none degenerate
- 648413556 jyviko: Kernel tests: the twelve ignored print-only debug tests and surveys go; coplanar_curved_booleans checks the flush-capped cylinder cuts and unions they printed
- 35805f899 jyviko: Kernel: the #883 board fixture generator is an example, not an ignored test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 16bef1097 jyviko: Shell regression: the saddle-corner shell opened on the top box's side has its exact volume
- 699ddb6b3 jyviko: SMLib history test: every operand's order is the identity on its record's faces and edges
- ec421252d jyviko: Boolean history tests: the SMLib module's box-minus-sphere, box-minus-cylinder and box-union-box copies go; the top-level ones check more
- f87f22874 jyviko: Modify history tests: shell, offset and thicken are one test each through the public API, with the volumes, refusals and history the SMLib copies checked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 94e67d4ca jyviko: Kernel loft test: the square-to-circle loft has the oracle's exact ruled volume, without printing
- 4c7d4f5c0 jyviko: Tessellation lens test: the lens's triangles fill exactly the rhombus through its arcs' midpoints
- 0d94d5f77 jyviko: Pattern test: six chamfered holes take exactly five more holes' bore and chamfer rings
- c44cbe9ac jyviko: Kernel pocket floor fillet test: the corner rounds and the floor loop round add their exact volumes, by Pappus at the corners
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d7bbf09e0 jyviko: Issue 1080 tests: the rib's rounds and the mitred corner chamfers and rounds have their exact volumes
- 0e51ffbff jyviko: Engine tests: lip_after_boss checks each lip's and groove's exact band, hole_as_deep_as_the_plate each hole's exact bore
- e03c72a3e jyviko: Robustness tests: lip_after_boss and hole_as_deep_as_the_plate live once, in the engine's tests.rs with exact volumes
- 321e56724 jyviko: Engine tests: loft_cut goes; loft_spacing's hollow elbow covers its section counts and more
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5fe9df533 jyviko: Known failing tests: the shell after a cut whose end touches an arc side builds on SMLib batch 7
- 8ec40d25e jyviko: Surface fair test: the energy falls strictly, the face moves, and the edges are read after the fair
- 697ea2ca8 jyviko: Sketch scaling test: the first dimension sets l1 to 40 and scales both joined rectangles about the origin
- e60cde8dc jyviko: Frames tests: a pick on a moved component or an instance removes the exact round and bore volumes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 25692b119 jyviko: Kernel rig: the ring cut frame and the up-down join shell
- 18f08bf83 jyviko: Kernel rig: #616's lid shells open at a rib's side, with the 0.15 lip
- 78b765e83 jyviko: Known failing tests: the action matrix's shells and chamfers as they fail with SMLib batch 7
- f7d4e5344 jyviko: SMLib: pin 26cc451 (batch 7: rounds past a rim, blend refusals that build, shells)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 469a3b2f9 jyviko: Naming: a blend's seams split its edge's name at the | between its two faces
- 1d818a2d1 jyviko: Fillet rig: five refused blends build, off the known-failing list
- 8550ac7e4 jyviko: Kernel rig: the trough and the pocket whose floors fall to a drain build
- 5f826a1a6 jyviko: Kernel rig: the plate with a hole through its arc side shells open at its far end
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b16e8a542 jyviko: Sketch: a control spline can carry its own knots and weights
- e6abea809 jyviko: Sketch projection: a free-form edge comes in as the one exact spline it is
- f61f25c7f jyviko: Fillet rig: blends past an outer rim of their faces build, on SMLib smlib-blends-past-rims
- 09bc14dbd jyviko: Naming: test that a round of a round's end has no seam with that round's faces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- dd8867414 jyviko: kernel: Extend grows a surface of several faces face by face
- 48a757827 jyviko: kernel: Split Body by a face of a smooth sheet cuts with the whole sheet
- 3421a8ef0 jyviko: Tests: a cylinder strip's run-offs are 100 pi + 100 to 1e-6, SMLib's exact area
- 20d5d8b13 jyviko: kernel: an extension SMLib cannot make exact says so, naming the length asked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5bb43bdb1 jyviko: CI: the test jobs grade their junit against tests/KNOWN_FAILING_TESTS
- d23c37027 jyviko: Tests: the known-failing list takes develop's 10 failing tests
- e18fb40d8 jyviko: Reference tests: the eight cases that fail on SMLib eaa998a name their cause as known failures
- 9b58a5170 jyviko: Sweep path: a curve of several pieces is turned round whole
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c19500fce jyviko: Fillet: the radius-too-large choice in plain nouns
- b75d17667 jyviko: kernel: a round that would cut through its wall into a hollow is refused
- 795394417 jyviko: Fillet rig: 1668's R7 past the inside corner is refused at 4 + 2 sqrt2
- a26d3ee41 jyviko: xtask: known-failing grades a nextest junit report against tests/KNOWN_FAILING_TESTS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 62fe29dbd jyviko: Fillet rig: the cases SMLib 737c392 builds come off the known-failing list
- 571d711c8 jyviko: kernel: the re-blend's removed picks formatted as rustfmt lays them out
- 2fab94991 jyviko: kernel: blend_smlib laid out by the 2024 edition's rustfmt
- 38fd4a4f6 jyviko: Skills: the tests skill's unit-test example stays under the 3600-character limit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- b0568524b Brett Lawson: smlib: solidcore's four new fork-carried opt-ins are on; the trimmed face tight box waits
- a2d5971be Brett Lawson: smlib: the quarter-cylinder sheet offset and the half-disc extrude match the C++ kernel on solidcore
- 509209838 Brett Lawson: solidcore: move the pin to afcee131a (main, with solidcore#1594, #1674, #1595)
- c9fcf82a5 Brett Lawson: smlib: solidcore's four new fork-carried opt-ins are on; the fillet trim status waits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- cdff4ac7c jyviko: engine tests: probes ask for the exact point class
- 7ca072ec6 jyviko: ui, cli tests: probes ask for the exact point class
- a85d22e60 jyviko: kernel: Body::contains, the mesh test, is gone
- baf51b271 jyviko: kernel tests: the rim chamfers running off their rims build, on SMLib 737c392
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 9a901d136 Brett Lawson: smlib: tag history on solidcore is one application Tag per object, with the capi's handlers
- fecd4bee3 Brett Lawson: smlib: an extruded profile's arcs on one circle sweep one wall face on solidcore
- 5f7a21157 Brett Lawson: smlib: the half-disc extrude's C++ comparison cites solidcore#1477
- f64857f95 Brett Lawson: solidcore: move the pin to 15e72dff9 (main, with solidcore#1752, #1495, #1796)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 63864b298 Brett Lawson: smlib: solidcore's five new fork-carried opt-ins are on; the trim end-span opt-in waits
- 494a08de1 Brett Lawson: smlib: history on solidcore: a face whose edge is only cut by a vertex is Kept (fork 1c7accd)
- ccfa37a9b Brett Lawson: solidcore: move the pin to bba8d8798 (main, with solidcore#1747 application attribute handlers)
- 8d47118ff Brett Lawson: smlib: solidcore's three new fork-carried opt-ins are on; the blend-curve revolve opt-in waits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 20c0c2ffc jyviko: Kernel rig: a sloped basin's mitred rim rounds are checked tangent along their contact lines
- 56d39a576 jyviko: smlib: Brep::classify_point says exactly where a point lies against a body
- 7b3e66cba jyviko: kernel: Body::classify_point decides inside, outside or on the boundary exactly
- 3b88f1acc jyviko: doc: a hole decides whether it exits at its drill point's shoulder exactly
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- cf2a15ace Brett Lawson: smlib: solidcore's four fork-carried opt-ins are on; only the trim base v opt-in waits
- c3f5bb40b Brett Lawson: smlib: a draft on solidcore keeps the body's tags and face history
- cd25e9e8f Brett Lawson: smlib: a face section on solidcore cuts planes, cylinders, cones and spheres too (solidcore#1769)
- 9c1f8904e Brett Lawson: solidcore: move the pin to 43ed10e54 (main, with solidcore#1650, fixing #1631)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6f0bf0dea jyviko: Tests: a 1 degree crease rounds, and the knife edge's chamfers build, on SMLib smlib-batch-4-rulings
- 3772a6e97 jyviko: kernel, doc: an overflowing round goes first; an edge it removes is gone, and the fillet says so
- 9308224ef jyviko: Fillet rig: the knife edge's 0.5 chamfer builds
- 58e0d8346 jyviko: Tests: a 15° tapered text builds, every letter grown, exact where its outline gives it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 04955683f jyviko: Tests: a strip's tangent and curvature run-offs are the distance long across the surface
- 4f64a035a jyviko: kernel: one smooth angle, and a round too small to change the part is refused
- c23ef9d93 jyviko: Fillet rig: the knife-edge chamfers name SMLib's cause, a cusp's ball radius of 0
- 6f7172dc8 jyviko: kernel tests: a corner round wider than its faces overflows and takes the corner's other edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9760feed4 jyviko: Kernel: a body's record of rounds goes with its history, and can be read back
- f3cf0c4f3 jyviko: Model cache: a body made by rounds keeps them, so a later round blends them the same after opening
- 134a34f89 jyviko: Tests: a corner patch of rounds 2/3/4 takes no more than the strips leave in its block
- 456e5b7fa jyviko: Tests: the io crate's hand-built saved models list their rounds, as format 7 records do
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 8ed4663ae jyviko: Mesh convert: a reconstructed bore is one wall, so the bracket has 9 faces
- 6d8e002f8 jyviko: UI: rim and wall picking tests for a circle of arcs that is one wall
- 3e5b358af jyviko: Fillets: a later round at a corner where earlier rounds meet blends them again with it
- 5d1b18f40 jyviko: Tests: a later r3 round at an r2 mitre, through the Fillet feature, makes the all-at-once corner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2ae53d387 jyviko: Preferences: metric tapped holes drill only the tap maker's drill
- a71450aeb jyviko: Preferences: symmetric surface extrudes read only the total distance
- 26b42048c jyviko: Preferences: the Body check note says each option in one short line
- 2c1901371 jyviko: kernel: the record test takes the one wall a circle of arcs extrudes to
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 709765fca jyviko: Model cache: a saved model records its body check mode and is adopted under it
- 393c83c2a jyviko: STEP import: a solid the kernel refuses, its faces too, is refused with the reason, never a mesh
- 6700e6ef1 jyviko: kernel: a body SMLib keeps in the record's order is mapped, whatever order its export lists
- 222211de4 jyviko: Model cache: a thinned model keeps the check mode only as the model records it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e43fe1ab0 jyviko: Kernel rig: diagnostics.validation is a setting, exempt from cases
- b24d90269 jyviko: doc, ui: a feature that lost a reference asks for it to be picked again
- d62d248b7 jyviko: doc: Untrim's face points pick faces of the body it untrims
- 1b08d4b8b jyviko: doc: a feature's face points are named on its own component's bodies first
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5d80fc571 jyviko: Engine: diagnostics.validation reads and sets the mode
- 1a93a3977 jyviko: CLI: run and kernel-cases take the validation mode
- 50501fe14 jyviko: Preferences: Body check, once per feature by default
- 6a133042c jyviko: Preferences: the body check is the kernel's, not named after SMLib
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 292ec65c8 jyviko: Fillet rig: the chamfer running into the openings is named for what it does
- 051a7b714 jyviko: Kernel tests: rustfmt
- 4030b795c jyviko: Kernel: a validation mode decides when sweeps, booleans and blends are checked
- 9acbcf924 jyviko: Evaluation: under each_feature a feature's kept bodies are checked once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b4af45dd0 jyviko: Kernel rig: the horn torus and the circle revolved touching its axis build
- f1199f89b jyviko: Joint drive: contact is decided on the exact bodies, not their display meshes
- 3a2fac31a jyviko: Kernel tests, fillet rig: a chamfer as wide as its rim builds
- 1878274cb jyviko: Kernel tests, fillet rig: a chamfer past its rim builds, cut by what lies past it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e46359ff0 jyviko: Kernel rig: the patch cases the fill now builds come off the known-failing lists
- 7c9e5ec69 jyviko: kernel: a seam held as two edges is one join, drawn whole in the shaded view
- 12496c2c1 jyviko: Tests: a round flange stays an exact circle through unfold, refold and DXF, with a cut near its rim
- 7fe880a7b jyviko: SMLib: pin f8fd83e (tangency-labs/smlib#66)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 5314031ba Brett Lawson: smlib: solidcore's tangent-face edge check and horn-torus revolve opt-ins are on
- 81088bf0c Brett Lawson: smlib: a sweep along a bent path is tested on solidcore (solidcore#1628 is fixed)
- a6b280467 Brett Lawson: solidcore: move the pin to 3569b5d73 (main, with solidcore#1665, #1681, #1614, #1677)
- 0bed45d82 Brett Lawson: smlib: solidcore's planar thicken side walls opt-in is on; four opt-ins wait for the fork
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d5941c0d0 jyviko: geom: a general fill's crown fills out to the side its neighbours' normals face
- f7409dd59 jyviko: geom, kernel: a loop with fewer than three corners is filled by a ring of patches
- c088cf43e jyviko: geom: the patches about a centre are solved the same to the last bit on every run
- 25e275722 jyviko: Tests: a patch's continuity g3 is valid, g5 is the hostile word
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 49377d318 jyviko: geom: patches about a fill's centre join G1 there, with the linear gluing function
- 55cb6b32b jyviko: geom, kernel: the patch fill's sides run from corner to corner, not edge to edge
- 62d41a0cf jyviko: Tests: the fill tests evaluate a face's (u, v) on its NURBS form
- 30b12cea8 jyviko: geom: a crowned height field rises by the whole crown at its box's middle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5732b62ec jyviko: Tapered extrude: the end check of a profile with holes takes the section a swallowed line leaves
- 738f336e1 jyviko: Raytrace: a closed box dielectric is certified from its mesh's geometry, in any tiling
- 9243b6550 jyviko: SMLib history: a split line between two pieces of one face comes from nothing
- 013978724 jyviko: geom: the patch fill's cross-boundary targets agree with its corners
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fb5ae6cdd jyviko: SMLib import: an extruded circle's circle comes from its widest span, not the face's range
- 17a466e6b jyviko: Ruled surface: a free strip on a straight edge gets a far curve that can bend
- f2982b47a jyviko: Sheet tests: the tiny cut inside the exact circle is above SMLib's modelling tolerance
- cf40a3e6c jyviko: Boolean regression test: the raked wedge's R4 rounds the four edges the issue picked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 0b7468729 jyviko: Curvature comb: every comb shown at one scale, kept by the command
- 6ab96c658 jyviko: View analyses: one toggle group, its state in the session
- 9a45d4248 jyviko: Kernel rig: inspect.analysis is a display analysis switch, exempt like the others
- 8d590c198 jyviko: Kernel tests: the long-setback G2 patch's reach past the box from its exact surface
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- dfa84e84d jyviko: Blends: an edge is smooth when its faces' normals agree all along it, decided exactly
- 6cc759750 jyviko: SMLib import: an extruded circle is a cylinder over the face's trimmed range
- 9b3572797 jyviko: Fillet rig: the known-failing list names the report- cases, not their old ids
- 9851718ea jyviko: Curvature comb: purple envelope and orange teeth from their own theme tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 2d84f8a17 Brett Lawson: smlib: solidcore's new opt-in fixes are on: sliver iso curves degenerate, Coons corner patches tangent to their sides, a fillet's own edge kept at a corner patch, the corner ball centred where the axes meet, one solution for a seam point, 2D boolean covers of far faces, area only between solid and void, a coincident definition split across the split point, the tight box from the interval's knots, overlapping bands refused, and the SSI tangent-curve tracer
- 0877278d6 Brett Lawson: solidcore: move the pin to 2b81c033 (main, with solidcore#1640, #1623, #1655, #1673, #1668, #1662)
- 97a475d8d Brett Lawson: smlib: solidcore's torus check and step-wall opt-ins are on: the torus check reads its V interval, a spindle torus through its apex is a self-intersection, and a local operation builds the step wall between tangent faces moved apart
- f4eec76b4 Brett Lawson: solidcore: move the pin to dca3135cc (main, with solidcore#1630, #1632, #1649, #1664)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c9bf97ce4 jyviko: Blends: an edge is smooth only where its faces are tangent all along it
- 1e6c91a10 jyviko: Fillet rig: the concave arc where a bar's top meets a cylinder its sides run tangent into
- de9c005f2 jyviko: Blends: a blend face is named by its picked edge, not an edge it took up
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- bf85e0a6c jyviko: Fillet rig: the knife edge's R2 round builds on the new SMLib pin
- 739e47b9d jyviko: Kernel tests: the basin rim chamfers check the kernel's refusal kind, not the named size
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 94938b3b5 jyviko: Kernel rig sources: the kinds of the four sources the new cases cite first
- 191fa9839 jyviko: Fillet rig: the R7 round past a thin wall's inside corner held to its exact volume
- ecbca1f74 jyviko: Fillet rig: grade the 851 rows' rounds G1 at their own tangent seams
- 30dce7fba jyviko: Fillet rig: the sloped basin's rim loops with their mitred corners' exact volumes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 8b9e0e0c0 jyviko: Continuity rig: an opened tube end capped G1 and G2, as cases
- 24a58066c jyviko: Sweeps rig: a circle touching its axis revolved a quarter turn, as a case
- 51316b7ec jyviko: Import rig: the horn torus quarter written to STEP and read back, as a case
- 8524458ce jyviko: Tests skill: when a check is a unit test and when it is a rig case
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 368b34e3b jyviko: Tessellation: a curved face's grid reads the quarter turn from its surface, not its parameter
- 9da160892 jyviko: Tessellation: two corners of a face a hair apart, within their tolerance, are one point of it
- 7cbbe2bc2 jyviko: Tessellation: two curves that touch within the chord tolerance share nodes, so the face pinches there
- 95f1258b7 jyviko: Motion interference: a collision is deepest where the parts share the most volume
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c1328212d jyviko: Tests: curved bodies' contact stop is checked, not the sweep's internal step
- 172c64cef jyviko: Tests: the naming corpus checks that references resolve and builds agree
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5ea43b5c2 jyviko: Tests: a tray's sheet names are checked by where their points lie
- 978ae1d51 jyviko: Tests: a mirrored sheet's flat pattern is its source's mirrored, as the code makes it
- 2be7b1b6f jyviko: Tests: the extruded ellipse is checked by its area, not its face count
- 51855589d jyviko: Tests: Open in EasyPrint's STL is read back, not measured in bytes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4d7553dd8 jyviko: Kernel tests: a ruled strip's moved handles are checked on its far curve
- 21c1ed541 jyviko: Kernel tests: rim rounds meeting at a concave corner are mitred, not swept
- 03054211b jyviko: Tests: the arc-touching cut is checked by its volume and area, not its face count
- 5e7e1485c jyviko: Tests: the knife-edge R2 fillet is checked once, in closed form
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5229bbedd jyviko: Kernel tests: a small bend's display mesh is graded on the display mesh alone
- 4ff38619c jyviko: Kernel tests: the rounded shell's planar roles are graded by name and exact volume
- a3848d1d0 jyviko: Kernel tests: modifier histories are graded by what each face is, not how many changed
- a45d56aa9 jyviko: Kernel tests: the slot plates' STEP files are graded by their bounds and volume, not surface kinds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a0c24b87c jyviko: Kernel tests: the back edge then the arc is one more pair of the rounds-in-sequence test
- c69dbc5d3 jyviko: Kernel tests: the collapsed taper's mesh is held to its B-rep, the taper to validity
- 87e9123d3 jyviko: Kernel tests: a crowned patch's hostile crowns are refused for their range
- 65718cd41 jyviko: Kernel tests: the five- and six-sided fills are graded by what they make, not their face counts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 3569298a4 jyviko: Kernel tests: a chamfer whose leg runs off the thin rim is refused, naming the largest
- a8f393ca3 jyviko: Kernel tests: the tabbed plate's rim rounds take their exact volume
- 5af467aef jyviko: Kernel tests: the box rounded after separate bottom rounds takes its exact volume
- 659bd866b jyviko: Kernel tests: the #871 part's fitting rounds take their exact volume
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2f88ca2f6 jyviko: Kernel rig: everyday chamfers of box edges and pocket rims
- 51641123c jyviko: Kernel tests: drop the mixed arc-and-line mitre test, the rig's 485 grades it
- e9963439b jyviko: Kernel tests: the round into a hole moves to the rig, with the hole cut the test's way
- 65e46a962 jyviko: Kernel tests: a round as tall as its wall and more builds on the disc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 01d0d6bb9 jyviko: SMLib bindings: a curve list holds up to 16384 curves, as the C API now takes
- 96b248d28 jyviko: Kernel tests: a slot narrower than the taper closes partway up and builds; a closing hole is refused
- 42d4d0ecd jyviko: Engine tests: rounding the long edge then the left upright matches the three edges their chains take
- b66821c82 jyviko: Kernel tests: the third round at a mitred corner takes its tangent chain, a sphere octant
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 785b78bea jyviko: Surface Fair test: fair the B-spline patch on a saddle rim, not an offset sphere
- 1817cffaf jyviko: Shell: a basin shelled past its 4 mm rim measures its exact sharp offset
- 2e123eb3d jyviko: Kernel tests: a swallowed tip's volume is the drafted wedge's, every wall at the taper
- 1661fe292 jyviko: SMLib: pin 985faae, the batch of 2026-10-30 evening (tangency-labs/smlib#63–#65)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 3346f4172 Brett Lawson: smlib: solidcore's new opt-in fixes are on: UV trim checks on the surface, loop orientation from the loop's box, cones extended as themselves, the local operation's box, joined drop pieces, exact edges on analytic faces after a shell, and the two SSI trace fixes
- 271f0a39e Brett Lawson: smlib: a face's planar section runs on solidcore, as the capi's smlib_face_section (solidcore#1534)
- 436fae56a Brett Lawson: smlib: drafting a cylinder's side runs on solidcore (solidcore#1606, fixed by #1611)
- 39adb66ad Brett Lawson: solidcore: move the pin to 55748ecf (main, with solidcore#1648, #1645, #1644, #1641, #1639, #1637, #1636, #1634, #1657, #1656, #1654, #1653, #1652, #1651, #1598, #1622, #1618, #1616, #1603, #1626, #1661, #1658, #1660, #1629, #1663: attributes through offsets, shells, booleans and copies (#1462 P2, P4), the tight box from the interval's knots (#1054), a merge's UV trims named after their edge use (#435), SM_API ordered-point surfaces, exact projection copies, and the fork's WR-562, WR-547, WR-546, WR-541, WR-537, WR-536, WR-535, WR-533, WR-542 and WR-75 opt-ins)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 97d79e3b8 Brett Lawson: smlib: the solidcore tag test names what still holds it back
- 6a3558a96 Brett Lawson: smlib: a sweep along lines and arcs goes piece by piece on solidcore, as the capi does
- 1feba5af9 Brett Lawson: smlib: the bent-path sweep's ignore cites solidcore#1628
- 9ceddd9d5 Brett Lawson: solidcore: move the pin to 937a6319 (main, with solidcore#1534, #1537, #1544, #1617, #1608, #1582, #1591, #1625, #1586, #1619, #1620, #1611, #1647, #1646, #1643, #1642, #1638, #1635, #1633: planar section curves, SM_API intersections, cut, HCR silhouettes on solids, UV trim checks on the surface and tiny loops oriented, projection, trimming, tessellated boundaries and knot removal, the fillet refusal that leaves the body unchanged, Cone::lean_cylinder as a cone, and the fork's WR-260, WR-550, WR-545, WR-543, WR-80, WR-534 and WR-532 opt-ins)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 73b053221 jyviko: Face capture test: extruding a split face in an uncaptured component is refused
- 918429c6d jyviko: Sheet machining: a trimmed To Object tool is measured as the prism its record proves
- f37b95498 jyviko: Native B-rep: a body is written as it serializes, not through a JSON value
- 298869f4d jyviko: Engine tests: the hostile-parameter test builds its starting model once per command
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 01477bb14 jyviko: Tests: the saved curved strip is the link a truck build saved
- 0c4f54edf jyviko: rustfmt
- 74001e532 jyviko: Tests: check what each operation is for, not how many faces it makes
- a84369fe7 jyviko: Sheet convert: a wall cut off at its strip keeps each corner with its own edge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- c8adedaec Brett Lawson: smlib: solidcore's new fixes are on (taper tangent corner planes, holed revolve void, loose tangent edges refused, scaled extrusion origin zero, booleans skip faces apart)
- 744f7574d Brett Lawson: smlib: drafted extrudes keep their corners and curve sweeps keep the profile where it lies on solidcore (solidcore#1449, #1450)
- dafb25b4b Brett Lawson: smlib: the body check reads a Caller body's recorded keys on solidcore (solidcore#1584)
- 2ad118666 Brett Lawson: smlib: curvature-continuous rounds and corners left open on solidcore (solidcore#1438, #1439)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- a69016f21 Brett Lawson: solidcore: move the pin to e4379b45 (main, with solidcore#1573: the #1024 rail-through-boundary-vertex test, plus the CreateCurveApproxPoints and PolyBrepCopy ports)
- 2308fa5be Brett Lawson: solidcore: move the pin to ddfb3895 (main, with solidcore#1569 and #1533: the 3x2 mixed corner at a concave unfilleted edge, and SmSurface::ApproximateSurface)
- f23aa76d3 Brett Lawson: smlib: an offset or other non-NURBS face surface exports through ApproximateSurface on solidcore (solidcore#1441), and the new fixes are on
- d4cec2ca9 Brett Lawson: solidcore: move the pin to b2450cbf (main, with solidcore#1568, #1579, #1581, #1585, #1597, #1604, #1600: attributes through booleans, taper corner rules, the curve sweep, check_brep naming, fillet thirds and corner marks, WR-302)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- bf74dcbbe jyviko: Tests: a round wall is one face, its name without a piece number
- 8f914ddd2 jyviko: Tests: the saw cut's halves named after their faces, listed in the kernel's order
- 1a5a3b5eb jyviko: Tests: an extended cylinder strip stays one face in every mode
- a3f150257 jyviko: Tests: the tapered bosses' volume in closed form, not truck's measure
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ec4eebaa8 jyviko: sew: a folded pcurve has no piece shorter than it lifts onto its edge
- 1bc8b204f jyviko: Kernel tests: a circle is one closed arc, a round wall one face
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 41206c065 jyviko: Sheet metal: a whole circle in the outline is sewn as its two exact halves
- 374d3b7e8 jyviko: Sheet machining: a depth an ulp off the sheet's face is on it
- 909f9a20e jyviko: Sheet face names: a triangle takes a flat face's name only where that face faces its way
- ff9ccaf1e jyviko: Sheet tests: the DXF outline and the folded volume as the exact flat pattern and measure give them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 1ae748417 jyviko: Robustness: seed 5's edge-only join keeps two bodies, as joins have since 94ee28d5c
- 48d72ba2b jyviko: Convert Mesh: a triangle of no area is dropped, not refused (#4561)
- a0a75dc78 jyviko: Kernel rig: import/4561 passes, off the known-failing list
- beaed5b35 jyviko: Kernel rig: threads/2369 names the tap maker's 6.8 mm drill for M8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4ebc3d078 jyviko: UI tests: the thread catalogue's error and Press Pull's hole wall as they are now
- 2debdd87a jyviko: Pi case test: each standoff is four faces, its walls one face each
- db757efc7 jyviko: Tests: the pi case and the hole wall read as on green-truck-era-tests, so both branches agree
- 191c1b855 jyviko: Fair: a net of up to 128 x 128 control points, the band bounding the solver
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f8b45f277 jyviko: STEP import: a void reads as a cavity whichever way its shell flag points, again
- 64188ce43 jyviko: Planar regions: a hole goes to the material that holds it, read closer than the hole lies
- 1a0289011 jyviko: Planar region tests: edges on one line are one edge of the result
- 514426e5d jyviko: STEP import: a closed spline a face lies across the start of starts clear of the face
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c47c1d26a jyviko: Tests: the fit and taper tests use geometry that still doesn't fit
- 8c37bc756 jyviko: Fillet rig: R10 past the full round is refused naming 7.5 mm, as the case asks
- a100c7c06 jyviko: Loft rails: a station grows about its section's centroid by length, not the mean of its control points
- e5476706b jyviko: Issue 616 test: the lid's volume is its closed form, 6703.5344
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 44b779364 jyviko: Tests: a point path's sweep has a wall along each line; coplanar walls join at a corner
- d945cf53a jyviko: Fillet and chamfer: a refusal as too large names the largest size that fits
- 8bcd81244 jyviko: Tests: a blend refused as too large is SMLib's NO_ROOM, in its own words
- deaf8e679 jyviko: Tests: convex blends past a cliff are cut from the part, as the owner decided
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b9d0a3308 jyviko: Mesh memo test: SMLib's booleans mesh neither operand
- b6c3bf3c5 jyviko: Face capture test: an Offset Face's top is anchored by its exact history name
- 1ee5f1af3 jyviko: Kernel: a mitred sweep carries a slanted section all the way to each mitre
- 1e4b64402 jyviko: Provenance: a sweep's origins are the ones it recorded
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 15c31a96f jyviko: Kernel: planar source lineage finds each face's support through an index, with no budgets
- 049b2bc40 jyviko: Lumps: a face-source table of another length is refused, never sliced
- f60bf96df jyviko: Planar sources test: two bodies side by side joined as the record requires
- e1b762c4b jyviko: Booleans and Shell keep the lines faces were split along on purpose
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ffb1e650d jyviko: Isocurve Analysis: count curves each way, evenly spaced across the face
- 177eb207f jyviko: Exploded views are shown only: the design's placements and Capture Position leave them out
- 8d72cfa59 jyviko: SMLib export: a face's outer area reads only its own loop's edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e7e613b6f jyviko: Records: the item budget bounds input, not the kernel's own results (Refs #3992)
- cf2b3a62f jyviko: Fair Surface: a face of degree 1 one way fairs along its curved way, and a face with nothing free is left as it is
- 16d467e14 jyviko: Point and Plane Along Path: exact on the path's curves by arc length, and a t outside 0…1 is refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 97935eed8 jyviko: Inspect: the centre of mass from the exact faces, as Measure takes it
- d094d43f2 jyviko: Compare Bodies: each region measured exactly, on the cut of the two bodies
- 864bcbccb jyviko: Compare Bodies: a region the exact cut cannot measure has no volume and says why, never an estimate
- a1dbb7c08 jyviko: Kernel rig: the two G2 corner cases are graded clear of the vertices, as the ladder grades them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 80d08659f jyviko: Kernel rig: the booleans, import and threads lists name the 5 cases that fail on the pinned SMLib
- 5c45570c9 jyviko: Kernel rig: rustfmt; measured values in results are decimals, within tolerance; the ladder records 06/023 passing
- 393a9aab6 jyviko: CI: native and reference tests stay on pushes until develop is green
- 322ac2592 jyviko: CI: the release gate still calls ci.yml (workflow_call)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6af622978 jyviko: Threads: a taper thread's groove follows its crest cone across the section, so no sliver of the flanks is left
- 3f5efdf70 jyviko: Kernel rig: one results check, each {step, pointer?, json, rel?, abs_mm?}
- dc093b0cb jyviko: Kernel rig: a symmetric surface extrude with no convention is the total distance (#9091); the per-side reading is its own case
- 55338e139 jyviko: Kernel rig: each area's PATHS names only its own files, and EXEMPT lists only commands no case uses
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 0d3c46dad Brett Lawson: solidcore: move the pin to 6a068272 (main, with solidcore#1419 WP4: the level-2 AssertValid tests and SmSurfOfExtrusion::AssertValid, #1578)
- 41e902eaa Brett Lawson: solidcore: move the pin to 0ae36782 (main, with solidcore#1452: SolidError::sm_status and a port-invariant variant)
- c13d760fa Brett Lawson: smlib: a copy queried under the arena's identities is a port-side invariant (solidcore#1452)
- 76c755508 Brett Lawson: smlib: a call answers None exactly when solidcore's error stands for an SMLib status (SolidError::sm_status, solidcore#1452)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9fecf7709 jyviko: Kernel rig: interference and clearance between placed occurrences
- 22cd8e74f jyviko: Ladder generator: cases.py writes the values committed by hand for 05/007, 06/017, 07/016 and 11/003
- 487914427 jyviko: Ladder 05: UNC, UNF, Rc and NPT tapped holes, each drilled to its tap maker's drill
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 3b7dabdb7 jyviko: Kernel rig: bodies moved, copied and extracted, designs inserted, occurrences copied, reparented, dragged and exploded land where worked out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e7eb8a5d4 jyviko: Kernel rig: contact sets stop a drive at the block, touching faces don't, and edit, list, enable and disable do as coded
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 489441907 jyviko: Kernel rig: motion studies play, plot and trace to known values; a crank-slider's slider follows r cos t + sqrt(l^2 - r^2 sin^2 t)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 236a5597e jyviko: Kernel rig: gears turn by their radii, a rack travels r per radian, a screw its lead per turn, a disc cam lifts 2e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 0da95a8cc jyviko: Kernel rig: each joint type moves its part to the placement worked out by hand, limits clamp, as-built keeps it in place
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 445f6faa4 jyviko: Kernel rig: parameter cases, an expression in a sketch dimension and a cyclic one refused
- 2cd1a0335 jyviko: Kernel rig: an assemblies area, with the source files that rerun it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 305c36479 jyviko: Kernel rig: inspect cases, the gap between two spheres, their lens where they overlap, none past the clearance
- 4355e15df jyviko: Kernel rig: inspect cases, a box against a taller one and an identical one, and a tolerance out of range refused
- 7b1fbb57f jyviko: Kernel rig: inspect cases, the comb of a sketch circle and line and a cylinder edge, and nothing picked refused
- 5c80ef4ad jyviko: Kernel rig: inspect cases, three isocurves each way on a cube's top, and a count of 0 refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- cacc394f9 jyviko: Kernel rig: inspect cases, the centre of mass and volume of a box, of a box and cylinder, and an unknown body refused
- f43a0c7ac jyviko: Kernel rig: inspect cases, the smallest radius of a fillet, an ellipse and a circular edge, and none on a box
- 311b57bb7 jyviko: Kernel rig: inspect cases, a fillet's seams are G1 with a 1/r curvature jump, a box edge is sharp, too few stations refused
- 58b384d7d jyviko: Kernel rig: inspect cases, the overlap volume of two boxes, none where they only touch, a box inside a box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 1ac12ba72 jyviko: Kernel rig: construction cases, where three planes meet, and parallel planes or planes through one line refused
- f72108895 jyviko: Kernel rig: construction cases, where two edges meet or come closest, and parallel edges refused
- 1acbf1e9c jyviko: Kernel rig: construction cases, a point on a vertex or another construction point, and no body refused
- 33e3b6379 jyviko: Kernel rig: the inspect area, what reruns it, and the analyses that only draw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 02ee36ce9 jyviko: Kernel rig: construction cases, the plane through parallel and meeting edges, and skew edges refused
- fbe540b40 jyviko: Kernel rig: construction cases, a point along a sketch line and arc, and one past the end held at the end
- a0bd94f4d jyviko: Kernel rig: construction cases, the centre of a circular edge, sphere, torus and sketch arc, and a flat face refused
- 8a8960f13 jyviko: Kernel rig: construction cases, where an edge crosses a square and a slanted plane, and a parallel edge refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e0e3798ae jyviko: Kernel rig: construction cases, the midplane of parallel faces, of a corner, and of a plane with itself
- 3ff1347d9 jyviko: Kernel rig: construction cases, a plane through an edge or axis square to a plane, and a line along the normal refused
- 6fed4f996 jyviko: Kernel rig: construction cases, the tangent plane to a cylinder and a sphere, and a point on the axis refused
- 8be5341c7 jyviko: Kernel rig: construction cases, the plane through three points or vertices, and collinear points refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 776d979ce jyviko: Kernel rig: construction cases, an axis square to a flat face and to a cylinder through a point, and a point on the axis refused
- 84a326f16 jyviko: Kernel rig: construction cases, the axis of a cylinder, a torus and a circular edge, and a flat face refused
- 17c0aee44 jyviko: Kernel rig: construction cases, the line where two planes meet, square and slanted, and parallel planes refused
- f9c53503b jyviko: Kernel rig: construction cases, a plane turned about an axis in it, off it and along its own normal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b8c6bb921 jyviko: Kernel rig: thicken a sheet into a slab and a tube, trim by a plane and by a circle, and refuse a stray keep_with
- 70f695c6b jyviko: Kernel rig: grade construction geometry and the numbers a command replies with
- 5c0db8e82 jyviko: Kernel rig: the construction area, with what reruns it
- ffd3d5fb1 jyviko: Kernel rig: construction cases, an axis on a straight box edge, and a circular edge refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 75353cb04 jyviko: Kernel rig: extend, extrude, loft, patch, revolve, stitch and sweep surfaces, a normal case and an edge case each, with their exact areas and surface kinds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f861f44e1 jyviko: Kernel rig: a matched sheet meets its target's edge at the order asked, flat where both are flat, and a solid is refused
- 3d080e96a jyviko: Kernel rig: fairing leaves a flat patch flat and a face with no free control rows as it was; zero strength is refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 425c8ed42 jyviko: Kernel rig: a blend between coplanar sheets is flat, a step blend meets both sheets at the order asked, and unchained edges are refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7ac95e47e jyviko: Kernel rig: a reversed normal sends a later thicken to the other side, and a solid is refused
- 680f2ee5c jyviko: Kernel rig: boundary surfaces through a square, a triangle and a network of four lines have their exact areas; five curves are refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a01d82f30 jyviko: Kernel rig: untrim removes holes from a sheet, a cylinder sheet and a solid's face, and refuses a face with none
- b2cc77094 jyviko: Kernel rig: unstitch takes a box and a cylinder apart into their faces, or one face out, and refuses a single face
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- bc3c9185c jyviko: Kernel rig: grade the kinds of a result's surfaces, its B-spline degrees and spans, and its free edges
- 657c5af57 jyviko: Kernel rig: surfaces area; an offset plane, cylinder and sphere land exactly where the distance puts them, and faces across a sharp edge part
- 476b04ed3 jyviko: Kernel rig: ruled strips along a normal, at 45 degrees and tangent are the exact plane, cone and flat ring, and a closed chain mitres into a frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5ba60bd9d jyviko: Kernel rig: plastic cases, bosses, lips and grooves, rests, a snap fit edge case and the plastic rules, each with its answer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 67dd8892f jyviko: Kernel rig: bend table cases, JSON and CSV rows with angles, radii and K-factor allowances, and an unknown format refused
- 235645db5 jyviko: Kernel rig: the ellipse length's Simpson weights as a named step
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fce8e4a26 jyviko: Kernel rig: perforation cases, square and staggered fields counted hole by hole, a field kept clear of a bend zone, and a pitch refused
- c114e6c35 jyviko: Kernel rig: flat DXF cases, outline, cut and bend line lengths, an ellipse exact and as arcs, and no sheet refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2edf64952 jyviko: Kernel rig: hem cases, closed on a top and a bottom edge, open and flipped, on a flange, and one too short
- c60bcb55e jyviko: Kernel rig: path flange cases, a Z section, one line at 45 degrees down, and a path straight on refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 815711421 jyviko: Kernel rig: second cases for draft (two adjacent faces), rib (in plane), press pull (an edge), split face (sketch and tool face) and sketch projection (a face loop and a silhouette)
- acd7bb066 jyviko: Kernel rig: the boundary-fill crescent ends at the cusps, x = 5
- 45c955326 jyviko: Kernel rig: a case can check the files it writes and the commands' answers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4e7810659 jyviko: Kernel rig: frames area, frame member and inserted profile cases with their exact sections, placements and a too-thick wall refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a5513a4e1 jyviko: Kernel rig: boundary fill cases, the lens and the crescent of two cylinders, and a point outside every tool refused
- f0eac58a2 jyviko: Kernel rig: align cases, face onto face as a move, a side face turned onto a top face, and a face onto an offset plane along its normal
- 1e9cefe1e jyviko: Kernel rig: web cases, two gussets in a channel's corners and two walls grown along the sketch normal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- af8f28e34 jyviko: Kernel rig: scale cases, a cube doubled about its corner, a sphere scaled into an ellipsoid of the same volume, and a zero factor refused
- e1724be62 jyviko: Kernel rig: pattern on path cases, bosses along a line, bodies turning with an arc's tangent, and instances past the path's end refused
- cf58e3735 jyviko: Kernel rig: replace face cases, a top moved onto a plane and a lower step raised to the higher top (fails today: SMLib offset of faces refuses closing the step wall)
- be4f15db6 jyviko: Kernel rig: bounding solid cases, two boxes with a margin and a sphere's exact box
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d671bbbc1 jyviko: Kernel rig: every registry command has a case or an exemption (kernel-cases --coverage)
- 6701b1c5e jyviko: Docs: how the kernel rig picks its areas, how a new area joins, and the coverage check
- 585789c60 jyviko: Kernel rig: cone cases, a frustum on X and a full cone of negative height with their exact volume, area and centroid, and a zero height refused; a new solids area
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e71177769 jyviko: Docs: the kernel rig gate, updating a known-failing list, re-recording the ladder golden
- d84d00bb4 jyviko: Release gate: the packages' dry run is unsigned and skips the release job
- 02e1f1841 jyviko: Kernel rig: each area runs only when the files its PATHS lists change, every area on the shared core
- b67e93211 jyviko: Kernel rig: an area's PATHS names only its own files, never the shared core
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 376bba92c Brett Lawson: solidcore: move the pin to 3c17ddb1 (main, with solidcore#1480: an intersection edge's end goes to its own vertex, and #1419 WP1's whole-body AssertValid walk)
- c191634b5 Brett Lawson: solidcore: move the pin to 7ca6ce7a (main, with solidcore PR #1427 SmBrep::LocalOperation, #1474 Nx1 corner, and fixes since 3c17ddb1)
- 9c7c139bd Brett Lawson: solidcore: move the pin to b19dbcb5 (main, with solidcore#1476: a shell's implicit offsets take every base upstream casts to a B-spline, and the offset sample bound scales with the input)
- 22a1c20b1 Brett Lawson: solidcore: move the pin to b3baca8e (main, with solidcore#1490 and #1491: a revolve's torus is never inside out and keeps the flag, and a one-circle full turn puts its seam at the profile)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6c5537df6 jyviko: Kernel ladder: a gate run fails on any case whose status or counts differ from the golden
- ee2a1ea06 jyviko: CI: maintainers' pull requests run the tests, and the reference tests run on pull requests
- b4fcd5910 jyviko: Kernel rig: every area and the ladder as a parallel gate on pull requests that touch the kernel
- 18d2dddac jyviko: Release gate: every check in full and in parallel before a branch replaces main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 53da86734 Brett Lawson: solidcore: move the pin to 2a47645e (main, with solidcore#1435: precise properties split at the surface's knots)
- cb79c32ee Brett Lawson: smlib: the curved primitives' measures, round trips and two sweep volumes run on solidcore (solidcore#1435 landed)
- 6e5722af9 Brett Lawson: solidcore: move the pin to fa3caa94 (main, with solidcore#1463: a revolve's cylinder is never inside out, and an inside-out NURB cylinder keeps its frame)
- 9c7e54be4 Brett Lawson: solidcore: move the pin to 43ca3745 (main, with solidcore#1473: SmShell::IsInnerShellOf, and #1419's level-0 helpers)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9008d13f3 jyviko: Surface Extrude: a symmetric distance is the total, as for a solid extrude
- de5c338e7 jyviko: Preferences: keep the older per-side reading of a symmetric surface extrude
- ac70662d6 jyviko: Sweeps: a path through a drawn 3D arc follows the arc, not a spline through its three points
- 7664925fb jyviko: Sketch: Project onto Surface keeps the side the projection meets first, in one curve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- bb4299e56 jyviko: Tests: a drafted cube side leaves the bottom and the opposite side Kept, the rest Modified
- 29adfd0d7 jyviko: Kernel tests: the barrel's side is the exact surface of revolution of its arc
- 5ada4fc8a jyviko: SMLib: pin 90aabff, a shelled round stays a cylinder and a step wall is ruled as its plane
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f3b77d71b jyviko: Tests: expectations for the SMLib fixes of 2026-10-29
- 567b764b9 jyviko: Viewport tests: the offset ellipse ring's 512 wall joins are all smooth
- 9d0fb564e jyviko: SMLib: pinned at 60b1c6a: the 43 fixes of 2026-10-29 (tangency-labs/smlib#14–#56)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c93b3ad5a jyviko: Engine tests: SMLib's builds where truck refused or approximated
- b6b59e7b3 jyviko: Naming tests: pieces of one name on a grooved disc, the merged boss wall by its point
- ac52443df jyviko: Ring tests: a cut's volume is the piece it took, not the difference of the ring's volumes
- de606715b jyviko: Placement tests: a body mirrored in SMLib reads back from its record valid
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- d35dcf022 Brett Lawson: solidcore: move the pin to 19d87ca7 (main, with solidcore#1442: walls that meet are refused as WALLS_TOUCH)
- 8493abc90 Brett Lawson: smlib: shell_walls_touch runs on solidcore (solidcore#1442 landed)
- 30d6331a5 Brett Lawson: solidcore: move the pin to 19587445 (main, with solidcore#1453: an offset edge between two analytic faces is their exact line or conic)
- f44e08128 Brett Lawson: smlib: shell_cylinder_open_top runs on solidcore (solidcore#1453 landed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- f62d6ee6d Brett Lawson: solidcore: move the pin to 4cd55082 (main, with Ellipse::is_nurb_curve_circle, solidcore#1432)
- c11640214 Brett Lawson: solidcore: move the pin to f020a066 (main, with IsNurbSurfaceCylinder / IsNurbSurfaceTorus, solidcore#1433)
- c9b2c18eb Brett Lawson: smlib: circle, cylinder and torus NURBS forms come into solidcore (solidcore#1432, #1433)
- 04c2af035 Brett Lawson: solidcore: move the pin to 3546c9bc (main, with solidcore#1437 and #1445)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ee9fc3793 jyviko: Tests: a torus patch to thicken is cut from SMLib's one-face torus
- ca53656a2 jyviko: Schema tests: an empty face list is checked on the draft, which refuses it
- ab68a3d0f jyviko: View tests: the section cap test draws the cap in the cap colour
- 24bcaca03 jyviko: Engine tests: SMLib's faces, not truck's pieces, in the face counts and measures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2c341006a jyviko: Tests: a cylinder's side and a sphere are one face each, as SMLib builds them
- 6c9c679dc jyviko: Tests: a revolved sheet over one radian is one face, untrimmed over its whole span
- 8075b8f70 jyviko: Tests: a swept point path is its lines, and rails must turn with a cornered path
- b9d65e6bc jyviko: Tests: thicken across a sharp edge extends the offsets until they meet
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 3c680d21a jyviko: Geometry: the closest point on a full circle just before its start is found before its end
- 30ceb44e6 jyviko: Tests: SMLib's faces, one per swept segment, closed along a seam, replace truck's halves
- 908bc756c jyviko: Tests: the matchsurf and mixed-fillet helpers read an edge on the curve its interval is on
- 98284eb1e jyviko: Tests: a box thinner than a body's tolerance may be refused instead of getting no certificate
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 93bbde86e jyviko: Tests: a script keeps a fillet a parameter makes impossible, a radius below zero
- 913a61329 jyviko: Tests: a tilted cylinder's Intersect cut is checked on the cylinder, not by its mesh's count
- da4f122f4 jyviko: Tests: a face picked by point is found on a block of 256 drilled holes, as on #6720's thread
- d0daee90f jyviko: Tests: a cam's edge is picked on its rim, off the vertex where its circle's seam meets it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ff0dda537 jyviko: UI tests: picks that name one thing, and a thread that names its start
- 2523d13cf jyviko: UI tests: SMLib's cylinder has one wall and one edge per rim; split rims come from two arcs
- b71e5ae6f jyviko: Tests: edges are read on their NURBS forms, a chamfer's chain is its caller's, the cap test's hatch
- 138acad01 jyviko: UI tests: a frame member's volume is compared to the accuracy SMLib measures at
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 319e6b8b3 jyviko: Kernel tests: the chamfer on a tangent wall junction is measured on meshes fine enough
- 68a217d98 jyviko: Reference tests: the loft case is analytic, SolidCraft's correspondence with its closed form
- 73b028b5b jyviko: Kernel: a drafted extrusion of a profile with holes, every wall leaning on the material's side
- b2c5b1f5e jyviko: Designs before format 14: a split's pieces take the names its later features use them by
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4a0c13910 jyviko: UI kit: a field's scenario handle is where the field shows
- 271f0c5de jyviko: STEP import: a face's loop through a pole closes its turn, so a dimple keeps its area
- 983b1ca8f jyviko: Sketch projection: a projected face's curves meet at the face's vertices
- 426a505a8 jyviko: Display meshes: tests count the planner's grids; a mesh's outline is one line per straight edge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 43c1b7b88 jyviko: UI tests: Isocurve Analysis's engine colour is drawn from the theme's accent
- 7bb5bb3d5 jyviko: Locales: Arabic and Hebrew for the version and section hatch labels
- e657e4086 jyviko: UI kit gallery: entries for the controls added without one
- 6a6cd8f56 jyviko: Sketch: a sketch's bounds reach its circles' and arcs' extremes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 23bfa1cf7 jyviko: Tests: the saved fitted-letters design measures its closed form, its letter as conics
- 0e3f01ec0 jyviko: Tests: a loft cut whose top is the basin's whole outline leaves the walls above as their own body
- b3dfcf1ff jyviko: Tests: an engraved face's letters project as conics, their exact quadratic Béziers
- 367beae69 jyviko: Viewport: the analysis legend stays above the floating History card again
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4a94a025c jyviko: Tests: freezing rebuilt arc borders gets its rebuild from a notch across the arc
- 5cbfbe35d jyviko: Tests: interference lists the pair of a solid and an imported mesh as not checked
- 5489599c0 jyviko: Tests: a face with no attachment is a rib's wall, whose feature reports no roles
- f5dfb78ee jyviko: kernel: a cut's tool face blocks a planar role only where it enters the result
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a31272194 jyviko: Sketch: an included 3D edge keeps its exact curve from the moment it is linked
- 1fb5e94da jyviko: Tests: Intersect's box outline is compared as lines, and a tilted cylinder's whole rim projects to its ellipse
- 9be29894e jyviko: kernel: a cut by a tool apart from the body is the body itself
- 2b0357a22 jyviko: kernel: two planar supports are one when SMLib would call them coincident
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fcd5f7997 jyviko: Tessellation: a node lying on another chord is untangled like a crossing
- 43ad9d0b0 jyviko: Tessellation: a slit (a side the loops run along both ways) bounds the face on neither side
- 534dffa96 jyviko: Tessellation: the band beside a slit and the sag refinement keep the face on both sides of it
- 7b984936a jyviko: kernel: an emboss's arcs run on their wall's own frame, and its seam is read from the circle's angles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f9347aca7 jyviko: Tests: the mirrored union's volume held to the two integrals' 1e-8 accuracy
- bb0b146a9 jyviko: Tests: #1510's parts are weighed by their exact volumes, not 1e-3 mm meshes
- d5bd1ebfd jyviko: Bridge: a support surface's shape read about a station in its middle has the right signs
- a6054603d jyviko: Tests: fillet removals from exact volumes; SMLib's rounds match Pappus and the quadrature
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6a780de5f jyviko: Tests: the helical groove's removed volume from the cut's exact volume, not a 0.01 mm mesh's
- 80b7ce28e jyviko: Tests: volume checks held to what their measures can tell, not tighter
- a3e42e548 jyviko: Tests: the cap whose loops prism_measure compares is found by its plane, not as the last face
- fad9c44da jyviko: kernel: measure integrates to SMLib's finest accuracy, 1e-8, not 1e-4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 666ccd85d jyviko: Tessellation: sag refinement splits a flat triangle's long side and never across an obtuse one's short side
- 2b22b2cbe jyviko: Tessellation: a face's sides are flipped where the triangles lie closer along the surface the other way
- e0d5ee496 jyviko: Tests: thicken and raised-band histories checked as SMLib reports them, Meet edges and seams included
- 39e1dcea0 jyviko: Faceted boolean: a body's own mesh is closed once its faces' shared corners are one vertex
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7ec4b7212 jyviko: Tests: a face's flat area may differ from its surface's by the sails its boundary chords bridge
- 4626f83e5 jyviko: Tests: a sketch curve splits a cylinder's one side face in two, not a half side
- 9e97bc470 jyviko: Tests: a split face without its record exports as the body has it, and the next operation joins it
- 47b1d716d jyviko: Tessellation: a whole sphere's loop starts off its poles when its seam has two segments
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 8eb77affb jyviko: Kernel: a body's size counts its edges, so a sphere, cylinder or torus is its own size
- 6a06226ad jyviko: UI tests: the split face's isocurve pieces are each wider than the lines' spacing
- eb40e161d jyviko: Tests: the thread whose display is checked is made as the thread feature makes one, with exact helices
- 71ea626d0 jyviko: Tests: a quarter disc tapered outward builds, and its volume is the exact integral of its sections
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d91d3f2a6 jyviko: Kernel: a body moved by a non-rigid matrix keeps each face's source and paint on that face
- c1ead0fef jyviko: Kernel: a sweep along a smooth path names every wall, and a closed one has no caps
- 6387be309 jyviko: Tests: the high-degree line prism_curve certifies is written at the record's highest degree
- 55f48e4e5 jyviko: Tests: the sample-aliasing trap aliases by its knots, within the degree a record holds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5547cd98a jyviko: Blends: a picked edge is named as the blend takes it, the rim and not the seam
- 1cb713c96 jyviko: Kernel: an extrusion's wall seed marks only the edges nearest it
- db9cf693a jyviko: Kernel: an extrusion's cap is in its own plane however thin the extrusion
- de16a6b99 jyviko: Kernel: a half turn's caps keep their roles when its end plane is its start plane
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f8c2fba07 jyviko: STEP import: FILE_DESCRIPTION and the preprocessor name a Y-up exporter again
- 5cc0d5e9c jyviko: Threads: a metric size without a coarse pitch suggests its fine pitches again
- e0545b2bd jyviko: Measure: an arc edge's angle is its span on the circle, not its NURBS parameter
- ae5dc2416 jyviko: Split Body: a face tool runs over its own surface's parameters
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6a8753443 jyviko: Fill: the height-field fill tries grids up to 64 spans
- dc3d504ba jyviko: geom: a fill patch folds where its normal reverses between neighbours, not where it turns past the middle's
- bac6674ab jyviko: geom: patches about a fill's centre run in the spaces of their own sides, not one space of every edge's breaks
- ea6500559 jyviko: geom: patches about a fill's centre are solved by blocks, their banded interiors eliminated onto what they share
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b389601b0 jyviko: Ruled surface: a strip on a cone is SMLib's revolve of its ruling, a cone face
- 1e7713d1e jyviko: Fill: a patch's edges and vertices hold its fit's gap in SMLib's tolerance model
- 4faee7dd8 jyviko: Fill: the general fill takes a loop of one or two edges in exact pieces of their curves
- c5b038548 jyviko: Fill: its tolerances follow a size that does not depend on where the body is
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9095fce42 jyviko: SMLib export: a NURBS edge's interval a rounding past its knots is the NURBS's own
- b68f71a2d jyviko: Fill: a patch's edges are the body's own edges again, circles and ellipses included
- b540faaf5 jyviko: Thicken: a surface turned to its back grows the other way again
- ebb1d843a jyviko: Sweep: a parallel sweep whose path runs along the profile's plane is refused again
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 60f33f6fc jyviko: Feature walks: Repair Part has its fixture, its gap an input and its body renamed with the rest
- 075f307bf jyviko: UI tests: a shown dimension that breaks a later feature does it with a shell left no room
- 242bbc89f jyviko: Fillet rig: the known-failing list follows the SMLib 7e917f0 pin
- 8515dc1a3 jyviko: Blend tests: a vertical round run on up a top round's end arc (ladder 07-fillets/018) is SMLib's to end, and builds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 229739a70 jyviko: Blends: a smooth edge and an unfinished tangent chain are refused saying why; SMLib's unsupported corner is named
- 0ec97c570 jyviko: Blends: tangent propagation off blends the picked edges alone; a refusal says how to change it
- 94d763c83 jyviko: Tests: a round run on through an earlier one by tangent propagation is matched by the same edges together
- a0eaceab5 jyviko: SMLib tests: a round larger than the cube is cut as if its faces went on, at its exact volume
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7d00ad78c jyviko: kernel: a patch builds G0 to G4, and Continuity Analysis reads each seam's middle at the order asked
- 102cde292 jyviko: Kernel rig: patched holes graded by their continuity, at clashing corners and in one sheet
- 7c9a9051d jyviko: Patch: the continuity choice's hover text says the corners stay tangent where the faces round them clash
- ef93b18ed jyviko: SMLib: pinned at 7e917f0: a corner patch tangent to its sides, an unsupported corner named, a torus from a NURBS a whole turn round its tube
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- d6b3bf27b Brett Lawson: Shell walls-touch case waits on solidcore#1442 (port fork a759622)
- 29a1ac5a6 Brett Lawson: Sweep cases name their solidcore issues (#1449 draft corners, #1450 curve-sweep placement, #1451 planar sections)
- 4f1ad5cc6 Brett Lawson: Cylinder shell case waits on solidcore#1453 (port fork fddc366 + 98ab1b0)
- c9aa5116d Brett Lawson: solidcore: move the pin to 9b76ac13 (main, with SmApiBrepMaterialCensus, solidcore#1436)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 86e4226ae Brett Lawson: solidcore backend: every UpstreamFixes flag on, and the ignored cases name their solidcore issues
- ce5de8bcf Brett Lawson: Sphere measurement cases wait on solidcore#1437 (trim_boundary_seam_wrap at the poles)
- 5140556c7 Brett Lawson: Blend refusals name their solidcore issues (#960, #1438, #1439, #430)
- 263f34850 Brett Lawson: Offset cases name their solidcore issues (#1440 face picks, #1441 ApproximateSurface, #1060, #1019, PR #1427)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from branch jyviko/merge-main-develop-solidcore (#11360). Its changes conflict with main as it is, so this wave keeps the previous files; the next wave that merges cleanly holds them.
- 21eba6a38 Brett Lawson: claim: solidcore backend for develop
- 8c12073be Brett Lawson: Kernel: a solidcore backend behind crates/smlib, routed per operation
- 12ace4973 Brett Lawson: diagnostics.kernel: read and set which kernel answers, and see the routing table
- 976acfd76 Brett Lawson: Conversion tests: each ignored case names its solidcore issue (#1431, #1432, #1433)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7d9c84bdb jyviko: geom: the patch fill is tangent continuous across its own C0 knot lines, and tapers what its corners do not allow
- 2397a691c jyviko: geom: the patch fill is faired at the order it is asked for
- 0631d2d3a jyviko: kernel: a three-round corner patched G2 and G3, read off the faces at each seam
- 11af682c0 jyviko: examples: cleaning up rounds by patching their messy faces, G2 and G3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f11c0c571 jyviko: Bodies: an operation's result is its record, not the SMLib body it was exported from
- b121d8d00 jyviko: frames tests: the moved combine tool's part is made ungrounded
- e0c7867b9 jyviko: run_strict: the box's volume to 1e-9, as SMLib integrates it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 00faac965 jyviko: kernel: a planar sheet's loop splits where it passes one vertex twice
- 5d25684a1 jyviko: sheet tests: the flat pattern as SMLib's exact 2D boolean makes it
- 52343ba23 jyviko: Robustness tests: a round's tangent chain and the lid's closed-form volume
- bc6d31e60 jyviko: GPU tests build their designs with SMLib, and the GPU jobs fetch it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ab3ba1af4 jyviko: Mesh: a ray through an edge two triangles share crosses one of them
- ccff7224c jyviko: Shell: its planar walls carry their shell roles again
- 068c6a6dc jyviko: Shell certificate tests: the saved strips are saved data, not rebuilt pieces
- b9d4ad74f jyviko: kernel: a planar region inside another's hole keeps its material
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 17465a63b jyviko: Tests: the kernel-cases ladder is the reference for what the kernel builds; the seeded robustness goldens go
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 517fc01dc jyviko: Fillet rig: a regression gate on every pull request that touches fillet code
- b91ad9de2 jyviko: Splines: every degree a B-rep record holds is evaluated, so a G4 blend of degree 9 gets its pcurves
- 175b4f2ac jyviko: GPU tessellation: the shader's basis slots follow the CPU evaluator's highest degree
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 39bf63b16 jyviko: Kernel rig: designed continuity cases, G0 to G4, that prove the measurement
- 52339b7ec jyviko: Kernel rig: fillet cases for the open fillet issues, each with its exact answer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 44b859fe6 jyviko: STEP import: a whole sphere bounded by one seam has its frame on that seam
- ce71791ec jyviko: Spline surfaces: a closed spline whose outermost knots appear once is periodic
- c7373279d jyviko: Viewport: hidden edges are drawn before the visible ones, so a visible edge is never covered by a light hidden copy
- b3cb826ed jyviko: Engine: an optional check before every command
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6055ce6fd jyviko: step_in tests: knot multiplicities refused per knot, then by their sum
- ae393fd9c jyviko: step_in tests: a face with too many bounds is refused by the reader's own limit
- fc3a13f17 jyviko: step_in tests: the import's repair notes for added seams and turned faces
- 4688c0f20 jyviko: STEP import: a whole round face whose seam is off its frame's quarter lines is turned onto one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d2858cb3d jyviko: STEP import: a circle edge between two vertices is the arc between them, however short
- 8b4b4a9d6 jyviko: SMLib pcurves: an end SMLib moves within the tolerance it held the edge at is mapped
- 6c355fdf7 jyviko: step_in tests: the cube fixture's edge directions clear of the assembly fixtures' ids
- efdc245d1 jyviko: step_in tests: a face the reader refuses leaves the rest of the solid as surfaces, named
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- cfaf4ab55 jyviko: Kernel rig: the reason each refused sheet-metal, sweep, crash and ladder case must be refused for
- 30dc4c860 jyviko: Section hatch by part: touching cut parts never look alike
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2dd505d83 jyviko: kernel tests: rustfmt
- ee4d4b5a5 jyviko: STEP import: a round face off its frame's quarter lines is formed within one turn
- 97a31c0c0 jyviko: SMLib: the prebuilt where a union that seals a void keeps its enclosing shell first
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 025344dee jyviko: A refused face is tinted as well as ringed
- 25642b6d2 jyviko: STEP import: a part's later instances in a window wait for its first, not end the window
- c1713994f jyviko: Body::unmeshed_faces counts on the coarse plan, without making the mesh
- d0081b235 jyviko: kernel: a placed copy is planned as its original, moved, as its mesh already is
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 188011736 jyviko: A part the modelling kernel refuses is named, with what is wrong and what to do
- d3b8c3dc5 jyviko: Browser: Repair Part is planned under #8371
- c15c39443 jyviko: Open and import card: the step marks share one box, size and stroke
- 090fcec6c jyviko: A refused face is ringed in the error colour while the window points at it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 06fbcdfec jyviko: Fillet dialog: Setback shows its default as a length and flags one too small before OK
- baa44fc64 jyviko: Fillet dialog: a setback the field flags is not refused again under the dialog
- b7d813bd6 jyviko: Open and import card: three plain steps instead of a status line
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 33acb6dc3 jyviko: Section cap by crossing count: a body touching the cut body no longer shows through
- c33bae870 jyviko: Section cap: only closed bodies take part in the crossing count
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 97721ad05 jyviko: Fillet setbacks not past where the rounds meet are refused naming the least; the rig grades a refusal by its reason
- 3fd5e138c jyviko: kernel: rustfmt
- 61a1f8bf2 jyviko: STEP import: a face's NURBS form ends where its boundary does, within its tolerance
- cd4f72572 jyviko: STEP import: a surface model's closed shell beside a sheet is a solid of its own
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 912bccef6 jyviko: Isocurve Analysis: faces on one surface share their lines
- 29744b811 jyviko: Preview: the ghost leaves out the surface the changed body keeps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 739153d3d jyviko: Fillet dialog: one option model, plain labels, refusals in plain words
- e4844753c jyviko: SMLib: the prebuilt with a torus or sphere keeping its NURBS form, and the concave mixed fillet corner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fd5319a0e jyviko: docs: the kernel's move from truck to SMLib, as written up on #4012
- 4cb0d6ee9 jyviko: STEP import: a refused solid comes in as a surface body of its exact faces
- e19785620 jyviko: STEP import: a refused solid's surface body faces as the file has it
- 529fb7cf3 jyviko: Release: macOS builds on macos-15 (GitHub retires macos-14 on 2026-11-02)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5a596dd95 jyviko: STEP import: a patch side collapsed within its vertex's tolerance is a pole of the loop
- cfee4a720 jyviko: STEP import: a solid no B-rep can be made of is shown as a mesh of the faces that read
- 5bfecd8a0 jyviko: Tessellation: a loop corner on a side collapsed within its vertex's tolerance is a pole; a face no method plans is left out, named
- 0102f95dc jyviko: Tessellation tests: rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 0bee8c2ed jyviko: solidcraft-smlib: Brep::edge_face_distance, SMLib's own edge/face gap
- 5d6810128 jyviko: STEP and SMLib: no edge or vertex tolerance past the 1 mm SMLib takes
- 005b1e6ea jyviko: SMLib pcurves: an edge past its face's patch gets a tolerance that covers it
- f327cdb3d jyviko: solidcraft-smlib test: an edge 2.5 um past its patch keeps its interval
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fd34314d5 jyviko: UI: one continuity control for every continuity choice
- fab8948b3 jyviko: Clippy: assign operators and is_multiple_of in the continuity code
- 1260353f4 jyviko: Fillet Corners: the shared continuity control says what each corner builds
- bf16a76a4 jyviko: SMLib: the prebuilt with eased setbacks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f042d2073 jyviko: Isocurve test: the spline face's hole is an inner loop of one face (Refs #770)
- cb8712aa0 jyviko: Continuity: one table of orders G0-G4, and one check of what each construction builds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 0694fd4e8 jyviko: STEP import: an edge through a face's pole is split there
- 1d70ac267 jyviko: tess: a face whose boundary still crosses itself after untangling is filled leniently, not the whole body refused
- 77bd85cab jyviko: cli: snapshot --quality coarse|normal|fine|ultra meshes the bodies at that display quality
- 1404bc1f5 jyviko: STEP import: a spline face's edges are measured on their pcurves only, not by nearest point first
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e2c0c0a20 jyviko: pcurve: the lift check samples its interval's end exactly
- 293d19f65 jyviko: STEP import: a vertex's tolerance covers its edges', and edge samples end exactly
- 19c4a1502 jyviko: SMLib pcurves: an end SMLib sets within the edge's tolerance is mapped onto our interval
- fc08b5f99 jyviko: bspline: a parameter a rounding past the domain's end is that end
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- dfcdefa92 jyviko: STEP import: a loop jumps at a pole to within the tolerance, as its pcurves closed it
- 7ba82d729 jyviko: STEP import: spindle and horn tori, and a negative major radius
- 3a7b51f72 jyviko: STEP import: an edge's distance from an analytic face is measured before its closed-form pcurve
- fcb162448 jyviko: brep: the geometry check reads a pcurve at its edge's parameter within the interval's rounding
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 07cb8c7cc jyviko: STEP import: an edge off its face's surface carries its gap as its tolerance
- 21c64fb24 jyviko: tess: an edge loop of fewer than three segments is split until it encloses an area
- 9da3174bb jyviko: solidcraft-smlib: a revolution goes to SMLib as its NURBS form alone
- 31b9410f5 jyviko: solidcraft-smlib: a horn torus to rounding is no ring torus
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 05f1c6b9a jyviko: Tapped holes: the tap maker's drill for every form, and a drill of the user's within 5%
- 87e7fe472 jyviko: Tapped holes: a preference keeps metric's major-less-pitch drill
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9717fab2f jyviko: Tapped holes: Rc and NPT, and a modelled thread with the thread's End
- 72e0e0094 jyviko: Ladder 06/017: the golden entry from a run of the case
- 376a91ad7 jyviko: Hole presets: a modelled tapped thread and its End, and every catalogued size
- b6c3b32a9 jyviko: Tapped holes: an Rc or NPT hole takes the stocked drill under its standard minor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 361b35afe jyviko: Thread: a shoulder thinner than the overrun's reach is still a shoulder
- 5fe141c0f jyviko: Thread: the start never fades; ease_in is gone
- 386598282 jyviko: Thread dialog: the Ends section is Start (None, Chamfer) and End (Square, Fade)
- 80e47130b jyviko: Thread: the pipe forms in the dialog, ISO 7-1's Rp, a chamfered tip on a taper thread
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2c4212c04 jyviko: Thread: the chamfered tip at the start or at both ends
- 75deb73aa jyviko: Thread: ISO 228-1, ISO 7-1 and NPT pipe threads, taper threads by a radial law
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 28e3b8a19 jyviko: Continuity in words: surface dialogs and Continuity Analysis show no G codes
- 81ecc872f jyviko: Guide: the Fillet dialog's Type and Corners in their new words
- d1a8f0417 jyviko: Thread: a boss thread keeps clear of the plate below
- a30a85698 jyviko: Thread: the chamfered tip reaches ISO 724's external minor diameter
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4f6f254d0 jyviko: smlib: a setback left open is a profiler span like every other SMLib call
- 676919d4d jyviko: tess: a face no method plans is filled leniently in (u, v), and named in the stats
- 1acbe2806 jyviko: Fillet dialog: plain words for continuity, Corners with Setback out of Advanced
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b2fc5e1fb jyviko: smlib, kernel: a refused setback corner is named by its point and why
- 855575473 jyviko: SMLib: the prebuilt with setback-open corners and the refused-corner index
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d8282b336 jyviko: doc, engine: corner: g2 sets each corner back for its G2 patch
- 8fbb575a5 jyviko: kernel-cases: a continuity check, and ladder 07/015 graded by it
- 808913777 jyviko: kernel: G2 corners at concave corners, mixed ones refused
- ba38fbd2a jyviko: kernel-cases: ladder 07/019, a concave corner's G2 patch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6263db8d6 jyviko: smlib: Brep::blend_setback_open, set-back corners left open with their holes
- d63a50c47 jyviko: kernel: seam diagnostics give every station's values
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- faffa6664 jyviko: Profiler: the diagnostics.profile test holds while other tests record
- 7fde0bdff jyviko: Profiler: docs/perf.md says how to switch it on and read it
- 29225d2c8 jyviko: geom: fill_matched, a height field G1/G2 to the faces beside its loop
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 10ea00e74 jyviko: Profiler: every SMLib C API call is a span, timed by the C API itself
- 319c0bc9f jyviko: Profiler: kernel operations and STEP/IGES import stages are spans
- 9cd655259 jyviko: Profiler: commands, feature evaluation, io; diagnostics.profile; CLI --profile
- fafd977b0 jyviko: Profiler: the Profile operations preference switches recording at run time
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f6645e2c6 jyviko: Threads: a modelled thread's tangent flank joins are not drawn
- 970c29745 jyviko: Smooth edges: a measured crease is kept apart from a tangent display join
- 541b94a60 jyviko: Smooth edges: hide only joins inside one smooth surface (G2); draw tangent joins
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 57d48aa9f jyviko: Clippy: the kernel's and engine's warnings on develop
- b52a01e29 jyviko: Attribution: the hand-written box STL of kernel case 4561
- 15caa50d2 jyviko: CI affected crates: no truck crates are vendored any more
- c95580d04 jyviko: Smooth edges: one G1 rule on exact surfaces and pcurves
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d13300b0a jyviko: cargo fmt: the format-40 change and the rebase's export list
- 873124c49 jyviko: CI: develop runs like main; SMLib is fetched after the Rust cache is restored
- 6517d1ee6 jyviko: Arabic and Hebrew catalogs: #4414's thread direction labels out, as in every other catalog
- fddb57c0d jyviko: Thread dialog: its labels in the catalogs; Arabic and Hebrew pending messages compare in display order
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4e26dc640 jyviko: The command line and the web app link SMLib by default too
- 826f36a79 jyviko: CI and releases fetch SMLib before building
- 8aea8e5a8 jyviko: Format 40: a thread's hand on tapped holes too; v0.24.0's handedness opens as hand
- 652d3a2cb jyviko: ui: main's browser picks (#4774) read the placed model through session_world
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 562a5bd33 jyviko: Formatting: rustfmt over the rebased branch
- bc15221fa jyviko: The desktop app links SMLib by default
- e476aba94 jyviko: SMLib in the browser: built with wasi-sdk for wasm32-unknown-unknown
- e1ad6ec1a jyviko: SMLib links prebuilt: one build per commit, pinned by SHA-256
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a57ce13e7 jyviko: thread: a shaft thicker than a modelled thread is refused, never turned down
- 6b9f5e0e4 jyviko: thread: main's screw direction (#4414) out; the thread's hand is the one direction
- 5fc160732 jyviko: Main's new callers of the placing calls that now return their error
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 3e9c70e26 jyviko: Cargo.lock: resolved for the merged manifests
- 6e15b9676 jyviko: engine, kernel-cases: tangent joins out of the corner-pick count; 3383 and 5024 recipes to main's rules
- 46294c7c2 jyviko: kernel: STEP placements by a transformation operator keep its axes and scales
- 3d0f6aa3f jyviko: kernel: IGES trim pieces closed onto their meeting points in main's assembly reader
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d63aa814f jyviko: threads: main's tapped-hole sizes and shaft turn-down on the reworked thread
- cfc393d68 jyviko: Main's new callers of the placing calls that now return their error
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b310512e9 jyviko: kernel-ladder: tier 11 threaded parts grade their geometry
- f6b42d416 jyviko: kernel-ladder: 07/016 is a refusal; 07/018 the same corner with r2; cases.py makes 013
- fb384be9c jyviko: smlib: build against SMLib a15b5a2 (replay of usd-brep 1.0.1 with the fork's fixes)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d3f771998 jyviko: kernel-ladder: tier 07 corner cases grade their geometry
- 0d7acb0ce jyviko: kernel-ladder: 08/007 grades the rounds run into the chamfer
- c9dcc42a1 jyviko: kernel-ladder: tier 09 shells grade their geometry
- 05e0dc17b jyviko: kernel-ladder: 10/008 grades the vents as four times one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 191b2f4c4 jyviko: kernel-ladder: cases.py makes every committed case again
- 977230b7c jyviko: kernel-ladder: tier 04 cases grade their geometry
- 84473f61f jyviko: kernel-ladder: tier 06 grades the threaded boss; both hands and Tr40x14(P7) added
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 8edf5b873 jyviko: kernel-cases: the ladder's golden recorded after the thread rework
- 2e1c1097a jyviko: geom: a degenerate point's normal steps into the parameter interval
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 3287bcba9 jyviko: Threads with several starts
- 7bfc184e8 jyviko: A modelled thread's chamfered tip (ISO 4753)
- d433ce2c9 jyviko: Thread runouts: the groove fades out instead of stopping square
- fdede5a0a jyviko: Thread work in rustfmt's layout
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 610173e1f jyviko: combine: move each tool into its target's frame
- 3fb263d00 jyviko: hole: keep a countersink's tool within its rim above the face
- 1171c4c2a jyviko: A sheet metal body mirrored or patterned into new bodies is sheet metal (#3353)
- 5a9bf4742 jyviko: A converted sheet takes its rule's values at its own thickness (#4328)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 48abbbcc1 jyviko: kernel: a vertex a face's loops pass twice is one point of its (u, v)
- 1df330c79 jyviko: engine: a shell that opens no face makes a closed hollow body
- 5aeff43f8 jyviko: smlib: a horn or spindle torus face comes out as its NURBS form
- bd4e1926a jyviko: kernel-cases: 2928's base extrudes the ring it describes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 903e371fa jyviko: geom: a face's box reaches its boundary's extremes, not its samples'
- cfe1b8b92 jyviko: step: a loop through its surface's pole has its seam
- 0bea4631b jyviko: kernel: IGES trim pieces that miss their meeting point are closed onto it
- 0e6681a2d jyviko: kernel: the largest fitting fillet shrinks only on a refusal as too large
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 237f0ae74 jyviko: kernel, kernel-cases: a convex blend overflowing a cliff is built, with its analytic answer
- 7d300984b jyviko: kernel, kernel-cases: a shell whose walls would meet is refused, saying so
- 3be6ad433 jyviko: kernel: a tangent chain stops where the edges' convexity flips
- 098fac037 jyviko: geom: a face's loops lie in one turn of its periodic surface
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 810f0d66d jyviko: doc: a join groups pieces that touch nothing; only edge and point contacts are kept apart
- 1d98d5111 jyviko: smlib: solids touching round a pocket each export as one closed shell
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 773e627b4 jyviko: tess: no edge segment spans more than a quarter turn; loops touching at a vertex close
- 806268714 jyviko: tess: a face's sampled boundary never crosses itself
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 94ee28d5c jyviko: doc: a join keeps solids that only touch as separate bodies
- 3e2b109cc jyviko: engine: feature commands take touching; a join's result notice
- ec6fa9706 jyviko: kernel: a seam with one face on both of its sides is a seam, and no pick takes it
- 19cf11ef3 jyviko: kernel-cases: ladder 07-fillets/016's second fillet rounds only its picked edge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 42e50a87c jyviko: smooth edges: tangent joins of planes, cylinders and cones, along straight splines too
- 89e23d1eb jyviko: record: a body built from a sketch has new edges, with no origins
- 8eb93ff06 jyviko: step_in tests: the cube fixture's edges lie on their lines
- 4b418c0d2 jyviko: kernel: how a body's material regions meet, read from the record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 667ee5665 jyviko: kernel tests: a blend meant to run along a tangent chain asks for it
- 74d02d2a0 jyviko: smlib: the fork with NVIDIA usd-brep 1.0.1 merged (f7f012b)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 306c7b75b jyviko: pcurve: a rim at a steady pace on a spline face, read from the edge itself
- 28e0eea80 jyviko: pcurve: each use's closed form or none, and a kernel's trims for the rest
- 1bf206259 jyviko: STEP and IGES import: SMLib makes the pcurves that have no closed form
- 879958721 jyviko: pcurves: a flat patch's are a plane's; SMLib's sheet loops read either way round
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2883981a0 jyviko: brep: meridians, revolutions and whole turns exact on their forms
- 6c385c843 jyviko: sew, step: face forms from the boundary's extent; trimmed profiles exact
- fd71e6a95 jyviko: kernel: assembled faces and edges on their NURBS forms
- f6f8b28c0 jyviko: Records require NURBS forms on circles, ellipses and curved analytic faces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fd873bb83 jyviko: sew: an edge folded across a bend gets a Hermite pcurve on the bend's form
- c376e8403 jyviko: step: imported faces and edges on their NURBS forms
- 69702833f jyviko: solidcraft-smlib: ellipse edges on their NURBS form, as circles are (fork 0c5868e)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c5dbf879a jyviko: brep: exact pcurves of forms: cut on planes, along the parameters of spline faces
- a4180ab42 jyviko: sew: faces and edges on their NURBS forms, their pcurves exact
- 57080f88c jyviko: fixup! sew: faces and edges on their NURBS forms, their pcurves exact
- 76a254137 jyviko: sew: a circle on a revolved face is labelled on that face's frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f070eee2b jyviko: brep, kernel: a face's side is read on its NURBS form (#4149)
- 58f60adbf jyviko: kernel: an assembled face keeps its NURBS form
- 807010c49 jyviko: brep: the NURBS forms of lines, circles, ellipses, cylinders, cones, spheres and tori
- f370d1e42 jyviko: brep: forms on their frame's quarter grid, across the seam
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6892ceac7 jyviko: brep, kernel: code that reads an edge's angles takes them from the circle, code that evaluates takes the NURBS form
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b1326e48d jyviko: brep: an edge on a line, circle or ellipse carries the NURBS form SMLib holds it as
- 6adba90e2 jyviko: solidcraft-smlib: circle edges on their NURBS form, SMLib's trims kept on them (fork deec9cb)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e6f993fff jyviko: Revert "kernel: merged topology counts no seam edge (a face on both sides of it)"
- 4ea29e307 jyviko: kernel-cases: 818 counts its two cylinders' seams, as every case counts edges
- de0e5bf52 jyviko: kernel: a tangent chain stops at a smooth edge
- 369c897d8 jyviko: kernel, cli: clippy and the cli tests build again
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 84bd2daad jyviko: doc, engine, kernel: solid.fillet and solid.chamfer round each picked edge's tangent chain by default
- d0ff1dcfa jyviko: doc: an extrude's taper without a corner rule picks one per profile
- 5e7aba8df jyviko: loft sections matched to their neighbours
- 2752eee61 jyviko: kernel: merged topology counts no seam edge (a face on both sides of it)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b6a3b31ff jyviko: brep: a face on a cylinder, cone, sphere or torus carries the NURBS form SMLib holds it as
- 2e26e0567 jyviko: solidcraft-smlib: the export reads FACE_NURBS_FORM
- 03db54a23 jyviko: solidcraft-smlib: SMLib at the merged fixes: slice, seam check, analytic revolve, draft corners, blend refusal, union of many, NURBS forms (fork 03c14ca)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- bcbb99005 jyviko: kernel, smlib: a blend larger than its faces is SMLib's refusal; blends take exactly the given edges
- 13e49e069 jyviko: engine: solid.fillet and solid.chamfer say they blend exactly the edges given
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2ffbbc74d jyviko: step: a cone within the file's uncertainty of its limit plane over the face is read as that plane
- 0185ccc1e jyviko: solidcraft-smlib: Brep::union_all, the union of many bodies in one SMLib call
- 0213c3dfa jyviko: kernel: union_all, one SMLib union of many bodies checked once, history over every operand
- 83d965f30 jyviko: doc: a join into one target and an intersection's tools are one union_all call
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 045961445 jyviko: doc: an extrude's taper saves how it closes the profile's corners
- 1b5ca02b8 jyviko: solidcraft-smlib: SMLib's tangent draft corner meets lines at an edge (fork ccc56fd and docs)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 09c979a4b jyviko: brep: a full circle in a profile is one closed arc
- 8e6c24aeb jyviko: kernel: a raised band reads its arcs' circles from the record
- d10041743 jyviko: kernel: emboss reads a wall's span from its arc's interval
- 0414f5a7a jyviko: kernel: assemble's unused CurveEval import goes with edge_point
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 99024b368 jyviko: solidcraft-smlib: SMLib at the candidate: solver statuses, range-end refinement, arc sweeps as cylinders (fork 1c8e415)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 44744d3aa jyviko: kernel: a face's boundary runs along a pole as its pcurves say
- 01845c189 jyviko: kernel: planar sheets are built one simple loop at a time
- 529c2cf04 jyviko: solidcraft-smlib: SMLib's area counts the faces between solid and void only (fork 8400690)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 78937d1db jyviko: brep: one basis-derivative routine, bspline::basis_derivatives
- afce22bb6 jyviko: solidcraft-smlib: mass properties of any body, by its material regions (fork 311946c)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 81cef1c60 jyviko: kernel: a free ruled strip is the exact ruled surface to a far curve of its own
- 9e2c1c57c jyviko: kernel: ruled surface docs and test for the free strip's far curve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 2a09b9943 jyviko: kernel: the test target compiles: the last tests on the record and SMLib
- 2f83aaa5d jyviko: kernel: clippy's own fixes across the kernel (needless borrows, assign ops, contains)
- f6afec8ea jyviko: kernel: dead code left by the port deleted; clippy -D warnings clean on all targets
- a0e17daa5 jyviko: kernel: cargo fmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 1b7fda4d3 jyviko: kernel: surfaces and SMLib blends without the smlib feature gate
- e1b9ea10c jyviko: kernel: placement, history, mesh-memo, display and issue tests read the record
- 8237cc927 jyviko: kernel: mesh, lump, loft-rail, untouched-face and intersection-curve tests read the record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- af4e97b64 jyviko: cli: the rig and the oracle reach MeshTolerance through the engine
- f7daf6124 jyviko: doc, engine: the unused revolve targets and the formatting of the exact tools
- caa5ed0e6 jyviko: kernel: twisted and scaled sweeps round corners by the plain sweep's corner model
- dead22ba7 jyviko: kernel: corner rules for direction, rails and closed paths; no feature gate on SMLib sweeps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 712caf8bf jyviko: engine: no boolean retries to report; overlaps are SMLib's exact intersection
- 431c3f6d0 jyviko: doc: plastic features' tools stand on the face as drawn
- 4ca7793a3 jyviko: doc: a hole in sheet metal is a cut-out or a bore by its drill's direction
- 8d91c19f1 jyviko: brep: an intersection curve's point is a function of t alone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7646e8ff6 jyviko: kernel: compiles on the record — trim reads the tool's side near its body; mesh memo typed
- 748e796b2 jyviko: kernel: sweep histories attach with no edge origins given
- a5f5809ba jyviko: kernel: a ruled strip's side builder needs no mutable binding
- ee79235f5 jyviko: kernel: surfaces, bridge and loft rails clippy-clean; picked_loop gone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7d9eb68e4 jyviko: solidcraft-step: a record's layout (solids, voids, sheets) and outer loops for every writer
- ed43871f7 jyviko: kernel: IGES export from the record
- 1d4811201 jyviko: kernel: STEP import tests and docs without the deleted face splitting
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 30ddda306 jyviko: solidcraft-step: write a schema 4 record as ISO 10303-42 topology
- d59bb0084 jyviko: solidcraft-step: revolutions under axis-keeping placements; void shells as the record has them; Reader::frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 4a8ca6d0f jyviko: kernel: Assembly::finish ends in Brep::canonical
- bd1095fff jyviko: kernel: the general fill's tests read the record; five- and six-sided fills are patches about a centre
- 5aaf405d8 jyviko: kernel: the second-derivative tests check the record's SurfaceEval::second
- 4897ce17b jyviko: kernel: loft rails tests measure against the record's surfaces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 849bb1f24 jyviko: kernel: face sections along a direction as SMLib's exact curves
- 876333480 jyviko: doc: an iso link along a direction on a solid is SMLib's exact section
- d9274aaf1 jyviko: kernel: the point-path sweep test expects the polyline's walls
- 13e9aca7e jyviko: kernel: exact projection, section and iso curves exported; SMLib at the fork's integration head
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7b5d732e3 jyviko: kernel: project_onto_face, sketch curves projected onto a face as SMLib's curves
- 0ef5b910f jyviko: doc: a curve projected onto a solid's face is SMLib's projection of the curve
- 95e9a80fa jyviko: kernel: iso_curves, a face's isoparametric curve exactly, trimmed by its loops
- 814475f4f jyviko: doc: an iso curve of a solid's face along u or v is the surface's own curve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6d0993817 jyviko: kernel: a ruled strip whose rulings turn along a free-form edge is refused, not fitted
- a6b41dd82 jyviko: solidcraft-smlib: Brep::project_curves, curves projected onto a face as SMLib's B-splines
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 1708fe0e0 jyviko: brep: Brep::canonical, any record in canonical order
- 98548fe16 jyviko: kernel: one canonicaliser; one tensor sheet
- f8e175273 jyviko: brep: Brep::split_edges, a record's edges split exactly at parameters inside them
- 65e141ac4 jyviko: kernel: stitch splits an edge at another sheet's vertex lying on it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 30b02cdfa jyviko: kernel: the solid loft's rails anchored by loft_rails::railed; path curves shared
- 0d611ed84 jyviko: kernel: surface sweeps mitre at corners, as the solid sweep does
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c7afe5eb4 jyviko: doc: a lip is SMLib's raised band and a groove its exact rim band, nothing else
- 89423b88e jyviko: doc: a sheet bore is cut once, with the drill clipped to its panel
- f4fa8a407 jyviko: kernel: the touching-face checks, extrusion batching and clearance probe are gone
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7c0d9b5e8 jyviko: kernel: the general fill on loops of five or more edges, its patches about a centre
- 87907628e jyviko: kernel: surface match on the record, through bridge's record API
- 22fde06a3 jyviko: kernel: loft blend on the record, through bridge's record API
- 7e7193b33 jyviko: doc: the faceted thread groove is gone; the groove is SMLib's exact screw sweep
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- beebf2203 jyviko: kernel-cases: --dumps=DIR leaves each failing SMLib call's inputs for replay
- 83c0f4e2c jyviko: AGENTS.md: SMLib is the kernel; no switch, no other kernel
- 1b27c134d jyviko: kernel: an intersection curve is where SMLib's imprint cuts, exactly
- 9398b2586 jyviko: kernel: intersection edges exported from the crate root
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e00645ca5 jyviko: kernel: crate root follows the split, surfaces and SSI ports
- 252b2947a jyviko: kernel: mesh bodies built by Body::of_mesh; fuzz booleans have no fallback counts
- 0013249c4 jyviko: kernel: Patch of a body's edges is fill's patch with no crown
- 08f061b02 jyviko: kernel: boundary surfaces on the record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9b5e0a8b4 jyviko: kernel: T-spline sheets as record faces; NURBS faces on the record
- 5c1b335e1 jyviko: kernel: bridges read their support faces on the record
- b5a7d52b7 jyviko: kernel: bridges and surfaces read the body's own record
- c83bd8f94 jyviko: kernel: T-spline and offset tests read the body's record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- f6fb1af00 jyviko: kernel: an arc's knots built without a borrowed temporary
- d3ca6e089 jyviko: kernel: loft rails on exact NURBS sections, the last section met where the rail ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 0cbd9e19d jyviko: kernel: profile segments as exact schema 4 edge curves and pcurves
- e1326f37f jyviko: solidcraft-smlib: Brep::stitch and Brep::offset_sheet, and the fork pinned at e3d478d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 585334a29 jyviko: kernel: planar source lineage on the record, coplanar faces joined by SMLib
- 5c16e8dd1 jyviko: kernel: coplanar faces joined by SMLib's merge_faces, the record read from the body
- c802458ef jyviko: solidcraft-smlib: Brep::face_points, a point inside each face (smlib_face_points)
- 453a4dec7 jyviko: kernel: a trimmed piece's side is read at a point inside it, exactly
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e520c9d42 jyviko: kernel: a body's record may be a surface body of open shells
- befcfecb7 jyviko: solidcraft-smlib: Brep::split_faces and Brep::split_body on the fork's split shims
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d5d783066 jyviko: kernel: outline_union deleted, a retry of the old boolean with no caller left
- 25b128698 jyviko: kernel: crate root follows the query-module port; SMLib at the fork's integration head
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- abf46cc21 jyviko: kernel: clearance reads each face's surface from the schema 4 record
- f53405d6b jyviko: kernel: plane_fit fits and certifies planes on the schema 4 record
- bd956b88a jyviko: kernel: spline_conv makes record curves, surfaces and tensor sheets
- abb7c37d8 jyviko: kernel: face_params deleted; a face's boundary in its parameters is the record's pcurves
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e463eabb6 jyviko: kernel: topo reads each face's surface from the schema 4 record
- 80e34cc8c jyviko: kernel: surface_kind reads faces and edges off the schema 4 record
- b0ad6f62b jyviko: kernel: body distance projects onto the schema 4 record's faces and edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 3ef93b363 jyviko: kernel: the general fill is the iso-parametric patch on three or four edges
- cfb5dc3ba jyviko: solidcraft-smlib: Brep::planar_faces and Brep::boolean2d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5fa086dd5 jyviko: kernel: record.rs records history on the schema 4 record, by index
- c5c411de5 jyviko: kernel: an assembled record is the body; its history through record::attach
- 796d3e7d2 jyviko: kernel: boolean_record composes histories; healing is heal's
- f56a94eac jyviko: kernel: exact path helpers exported; SMLib pinned at the fork's integration head
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7952516eb jyviko: doc: sweeps along linked and planar curves follow the exact curves
- 43e8b0349 jyviko: kernel: a point path's polyline is swept as the lines it is, however smooth
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 166bfbacd jyviko: brep: records of bodies apart from each other join into one; islands stay inside their voids
- 065e61ec7 jyviko: kernel: Body is its schema 4 record, with its SMLib body made once
- 22734a55f jyviko: kernel: trim on the record: split, side by the tool's field, pieces removed
- 7bbdd3713 jyviko: kernel: untrim on SMLib (smlib_untrim_face), its history from SMLib's tags
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 1d289dfd6 jyviko: kernel: fairing works on record curves and surfaces; fair_faces rebuilds through SMLib
- f9f59d826 jyviko: brep: SurfaceEval::second, a record surface's exact second partial derivatives
- 748d9f25e jyviko: brep: CurveEval::derivs, a record curve's point and first derivative
- e01018839 jyviko: kernel: seam continuity measures the body's record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 9f71e93e2 jyviko: kernel: Delete Face with healing on the schema 4 record
- 3bd1cc534 jyviko: solidcraft-smlib: Brep::merge_faces, SMLib's removal of topological edges and vertices
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- cbf28a4fd jyviko: kernel: the prism boolean modules are gone from the crate root
- 9268a1e88 jyviko: solidcraft-smlib: SMLib's "no change" as Error::NoEffect, the fork pinned at its integration head
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b11433bc5 jyviko: kernel: smooth display edges classified on the schema 4 record
- 3ca3638c5 jyviko: kernel: the curve, loop and vertex blend modules are gone from the crate root
- b0cc84b28 jyviko: brep: a record moved rigidly, exactly
- fa3d914af jyviko: kernel: SMLib measures mass properties at its documented 1e-4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ba99405e2 jyviko: doc: a pattern or mirror of a pattern or mirror copies what that one made
- 386b1d123 jyviko: doc: a sweep round a closed path starts where the profile is (#3345)
- 5df8a5565 jyviko: engine: an extrude Join, Cut or Intersect leaves hidden bodies alone (#2464)
- f10dfd8d0 jyviko: kernel-cases: crossing equal holes leave each wall in two faces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 6e17d26dd jyviko: brep: a spline's closedness is worked out once, not on every evaluation
- 51d7fc413 jyviko: kernel: IGES trimmed surfaces close their loops and split into separate bodies
- f71cb3d99 jyviko: engine: revolve about a construction axis given by name
- 85da7d6c2 jyviko: engine: count a face pick's work as it is done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d61efb306 jyviko: kernel: a face's boundary takes its (u, v) from the record's exact pcurves
- 4b8edef06 jyviko: kernel: the tessellator's tests plan the body's schema 4 record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 667cd3356 jyviko: solidcraft-smlib: pcurves on B-spline faces are SMLib's own UV trims
- e57f2f2a5 jyviko: brep: a face's points search one grid of its surface, made once
- 1bc0df6d0 jyviko: doc: a join of many tools into one target unions them in a balanced tree
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 69a7a85cb jyviko: kernel: SMLib sweeps round corners and along free-form paths, lofts with holes or to a point, drafts on a foot
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- cac7d6eff jyviko: kernel-cases: the hollow ball of case 450 has two shells
- faae48d6e jyviko: solidcraft-smlib: Brep::loft_to_point, and the fork pinned at 0294982
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 520d934fe jyviko: kernel: SMLib sweeps that twist, scale or follow rails, railed lofts, and paths of points
- f870ecb87 jyviko: solidcraft-smlib: pin the fork at ffaf4e8, offset merge and intersection-edge ends
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e1a257169 jyviko: kernel-cases: SOLIDCRAFT_KERNEL=truck grades as the default kernel
- 1336352a4 jyviko: solidcraft-smlib: pin the fork at 2d7c7ed, the second round of SMLib C++ fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5a630daee jyviko: tess: a hole in a closed face lies in its outer loop's period
- 693cba4e2 jyviko: kernel: a curved strip straight across and narrower than a side is its boundary nodes alone
- 20d4b1f4e jyviko: kernel: a spline wall winding round an axis sends its body to the display plan for meshing
- 5ed1e95a4 jyviko: kernel: a cut grid past the grid cap thins its lines instead of giving the face to Delaunay
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 69ad1ae45 jyviko: solidcraft-smlib: the curve list carries nothing in a build without SMLib
- 1a5e60349 jyviko: brep: a point's parameters on a spline winding several turns are found on its own turn
- e1c631dd3 jyviko: brep: a pcurve keeps its tangent where its curve is smooth through a full knot
- 829d161f6 jyviko: brep: the projection runs Newton from up to 32 starts, nearest first, until one lands
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 02bfd6e10 bherbruck: kernel: draft through SMLib
- d20e91f8c jyviko: doc: re-anchor a stored face pick strictly inside its named face
- 36b7aa267 jyviko: solidcraft-smlib: a build without SMLib keeps the sweeps' curve lists without a dead-code error
- d22e89bcc jyviko: solidcraft-smlib: a solid touching itself along an edge comes back with every edge bounding two faces
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 714475b84 bherbruck: kernel: measure through SMLib's exact mass properties, checked against the mesh
- 07c36cfd0 bherbruck: solidcraft-smlib: Brep::chamfer_sides, and Error::Unsupported for a radius law with a corner
- ae1d746ae bherbruck: kernel: chamfers with two setbacks through SMLib
- a043e4ae2 bherbruck: kernel: an SMLib blend's corner patch comes from the edges meeting there
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 8fde178fe Brennen Herbruck: kernel: any schema 4 record into SMLib with its order, healed where refused
- 5014c4f17 Brennen Herbruck: kernel: with SOLIDCRAFT_KERNEL=smlib, STEP solids are SMLib's bodies
- 8ad09ec64 bherbruck: smlib export: a face's loop crosses its poles where the face's parameter box says
- f4da25243 bherbruck: solidcraft-smlib: the fork at bf7c272, whose operation results hold their own gaps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 96bdbbf3b bherbruck: docs: SMLib vs truck triage of the sweeps, threads and shell cases
- 82fe0e59e Brennen Herbruck: solidcraft-smlib: Brep::imprint
- 7e208529c Brennen Herbruck: solidcraft-step: each record face names its face in the file
- 863afb5e3 Brennen Herbruck: solidcraft-smlib: an arc past a full turn goes to SMLib a turn back
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- baae4ee19 jyviko: kernel: fillets and chamfers through SMLib when SOLIDCRAFT_KERNEL=smlib
- f73d40383 jyviko: kernel: an SMLib blend pick at a seam's end takes the sharp edge there
- 1d8299aed jyviko: kernel: an SMLib body keeps each edge's and vertex's tolerance through its record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 29d307bdc jyviko: doc: a modelled thread through SMLib cuts the exact groove
- 5dd3acdec Brennen Herbruck: kernel-cases: on the kernel branch a thread off its hole or shaft size is refused
- b900d6d46 jyviko: kernel: solids an SMLib boolean leaves touching come back as separate solids
Co-authored-by: Brennen Herbruck <brennen.herbruck@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 0f3d6f177 jyviko: kernel: shell, offset faces and thicken through SMLib, with SMLib's history
- 82865e283 jyviko: kernel: a body SMLib walks some loops of the other way keeps its order
- 6bfbe1041 jyviko: kernel: an SMLib shell opens a round wall whole; split pieces press on either kernel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d672cfa01 jyviko: kernel: one switch, SOLIDCRAFT_KERNEL, picks the kernel for every operation
- f35f06d98 jyviko: kernel: a revolution that is no analytic surface goes into SMLib as its B-spline
- a6ca4e0dd jyviko: AGENTS.md: one switch, SOLIDCRAFT_KERNEL, in place of the booleans-only note
- 51211ad1f jyviko: solidcraft-smlib: offset faces, thicken, and NoRoom for walls with no room
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e35b4d744 jyviko: kernel: revolutions of a line square to the axis go into SMLib as planes
- 00e43aacc jyviko: kernel: an operand SMLib's check refuses goes through SMLib's healer
- 94c159825 jyviko: kernel: SMLib's round faces decode as truck's own revolutions are laid out
- ff0f7ccfa jyviko: kernel: a body's record for SMLib takes a larger tolerance where an edge needs it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b27751d43 jyviko: kernel: planes go into SMLib as its planes; analytic angles start at zero
- 640d3d9ea jyviko: kernel: truck's extruded circles go into SMLib as its cylinders
- 1980f9743 jyviko: kernel: SMLib's export keeps every face of a void's shell
- c344801cc jyviko: kernel: note that the engine's and CLI's `smlib` features reach SOLIDCRAFT_BOOLEANS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5238840bc jyviko: kernel: booleans through SMLib behind SOLIDCRAFT_BOOLEANS, with SMLib's history
- d271add1a jyviko: kernel: revolutions go into SMLib as its cylinders, cones, spheres and tori
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- c992630e1 bherbruck: ATTRIBUTION.md: rows for the kernel rig's STEP import fixtures
- b90a5851c jyviko: kernel: open a half sphere's loop at its pole, so its seam closes
- 54542890d jyviko: kernel: hold every display-plan triangle to the chord tolerance
- f7336497f jyviko: AGENTS.md: the kernel does geometry, sugar lives above it
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 201ca9a81 Brennen Herbruck: smlib tests: score SMLib's GlobalSurfaceIntersect on the SSI corpus
- f8b48d0e4 Brennen Herbruck: smlib: pin the fork at 70e1bf5 (capi: surface/surface intersection)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 17eafa2d4 Brennen Herbruck: solidcraft-smlib: revolved surfaces into SMLib as exact rational B-splines
- 1edeb2a6f Brennen Herbruck: tests: SSI corpus fixtures (119 cases with exact truth)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 58ce14f45 bherbruck: kernel-cases: count ranges, a watertight mesh check, and per-case timeouts
- e809edd33 Brennen Herbruck: kernel-cases: thread cases that are slow by nature get 600 s
- 8cb976b9b bherbruck: kernel-cases: watertight checks the display mesh, welding vertices by distance
- 3feb9ba2c Brennen Herbruck: kernel-cases: tessellation cases from mesh-hole reports grade watertightness
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 35ebc816b jyviko: kernel-cases: a missing capability's message is the case's own text
- 248fee75b jyviko: ladder: every ladder run measures one case at a time
- e1575385b Brennen Herbruck: kernel-cases: a thread off its hole or shaft size is refused
- d7381a1fa bherbruck: kernel-cases: threads fit a hole or shaft off the thread's size again
Co-authored-by: Brennen Herbruck <brennen.herbruck@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 75aa8acb6 Brennen Herbruck: kernel-cases: sweeps skipped sources (72)
- 678a70da2 bherbruck: kernel-cases: shells as a graded count, no SMLib verdict where it can't take the record, $OUT
- c24b066d2 bherbruck: kernel-cases: an outcome for geometry with no single manifold answer
- 8764a76ff Brennen Herbruck: kernel-cases: threads cases from #1995 and #3368 (finely faceted booleans), skipped #987#3130#3824
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a9002968f Brennen Herbruck: kernel-cases: sweeps sweep and pipe cases from #96-#3505 (end scale, rails, corners, closed paths)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5e71db662 Brennen Herbruck: kernel-cases: sweeps revolve cases from #2183-#4008 (refusals, flush ends, dome seam, primitives)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 739524a17 Brennen Herbruck: kernel-cases: sweeps lofts from #271-#3412 (zig-zag pairing, ring sections, flush joins and cuts)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ce201eea1 jyviko: kernel: SMLib spheres cut by a boolean decode oriented and meshed
- 62142ef38 jyviko: brep: a revolution of a closed profile is periodic along it
- 62124a711 jyviko: kernel: spline edges on part of their curve load as that piece
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- a7c0109ea Brennen Herbruck: kernel: boolean runner grades the seeds against a reference volume
- 7bb74d1c6 bherbruck: kernel-cases: an smlib feature for the CLI, and no grading of a kernel the build isn't running
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- ac6ddbdbe jyviko: kernel: boolean runner times both kernels and runs the cut sequence
- 79ae117dd jyviko: kernel: boolean runner measures SMLib's results again on truck
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 27e996c44 jyviko: brep: splines closed on themselves are periodic for pcurves and tessellation
- 204b650d9 jyviko: brep: check_geometry refuses loops that enclose no area or turn the wrong way
- 19cf3d94a jyviko: brep: orientation, not position, tells a face's outer loop
- 2196129f1 jyviko: kernel: side-by-side boolean runner calls SMLib's boolean
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 5b8d89abd Brennen Herbruck: kernel: schema 4 STEP records of revolved and conic-bounded parts against closed-form volumes
- c35fd77f6 jyviko: solidcraft-smlib: rebuild SMLib when its own sources change
- 734883bdb jyviko: solidcraft-smlib: booleans, fillet, chamfer and shell through SMLib
Co-authored-by: Brennen Herbruck <brennen.herbruck@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- d41ae8512 Brennen Herbruck: solidcraft-step: surfaces of revolution and extrusion, offset surfaces, hyperbola and parabola edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- e0bad4161 bherbruck: solidcraft-smlib: check test on every primitive
- 7050e9cfc bherbruck: solidcraft-smlib: mass properties of every primitive against closed forms
- 4983b8872 Brennen Herbruck: kernel: the boolean runner builds every SMLib operand
- acff340a0 Brennen Herbruck: solidcraft-step: representation context units and uncertainty, shared with the kernel's STEP reader
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 161832976 jyviko: AGENTS.md: unsafe in the SMLib FFI module and its child modules
- 25d2056a2 jyviko: brep: a seam from pole to pole gets pcurves a period apart
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- b85b51e81 Brennen Herbruck: solidcraft-smlib: blend faces come from the edge they replace
- 4a6494b48 jyviko: brep: check_geometry, the geometric agreement of a record
- 570028f31 jyviko: brep: the truck adapter checks a record's geometry before decoding it
- 30f5e617c jyviko: brep: document check_geometry in the validation section
Co-authored-by: Brennen Herbruck <brennen.herbruck@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- fd80377dd Brennen Herbruck: solidcraft-smlib: face and edge history out of SMLib operations
- 4a4e11ef7 Brennen Herbruck: kernel: a side-by-side runner for truck and SMLib booleans
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 60aa5e697 jyviko: solidcraft-smlib: build every C API source file
- 3c0b53935 jyviko: solidcraft-smlib: read SMLib's log lines inside the FFI module
- 858f2c3bd jyviko: solidcraft-smlib: the C types are imported only when SMLib is built
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 692fba51a jyviko: naming: say how to re-record the corpus names
- a8c8f8832 jyviko: naming: list removed lines before added ones in the corpus diff
- 1d4916008 jyviko: brep: a surface point's parameters move to geom
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 099026d94 jyviko: kernel: fitted pcurves on curved surfaces, unwrapped and closed per wire
- c7088fac9 jyviko: kernel: pcurve tests for seams, poles and loop orientation, and pictures
- 0d026e975 jyviko: kernel: pcurve fits start from four samples per span
- 4afbe3b90 jyviko: kernel: pcurve test for a face round its surface without a seam
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.
- 7024ceec8 jyviko: CI: no runs for pull requests into kernel-smlib for now
- 92d433ca9 jyviko: AGENTS.md: the kernel-smlib branch's rules (ADR 0002)
- ee5deffaa jyviko: brep: Curve2 pcurve type and the truck pcurve entry point
- 26ab8981d jyviko: kernel: exact pcurves of lines and splines on planes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-20 22:53:02 -04:00
4443 changed files with 375212 additions and 110692 deletions
<!-- Title: which part of the app changes and what a user now sees or can do, clear to someone who hasn't seen your chat, the issue or the code. -->
## Change
Describe the problem and resulting behavior. Link the issue when applicable.
Start with what this is, in plain words someone new to the project would understand: what it does and who it's for. Don't assume anyone knows the name of your tool, project or feature. Then describe the problem and resulting behavior. Link the issue when applicable.
Changes a default: no
@@ -14,6 +16,8 @@ What did you run, and what were the results? Include expected and measured value
## Screenshots of the behavior (when observable)
Put the picture or video here in the description. A file in the diff doesn't count: a maintainer has to be able to see what this is without opening the changed files.
For observable CAD, UI or model behavior, include actual descriptive screenshots or a short recording from a small reproduction. This includes kernel, geometry, assembly and backend effects that can be shown in the app. Coding agents should run the app and capture the evidence themselves, rather than asking a human for evidence they can produce. Show the actual failure/result, preferably before and after, with brief steps, expected/actual behavior and annotations where helpful.
Flowcharts and Mermaid diagrams cannot substitute for evidence of visible behavior. Use diagrams for architectural reasoning when actual screenshots cannot illustrate the point. Changes with no useful observable behavior may omit screenshot/video evidence. Exclude private designs and sensitive details; attach media or link to an accessible recording rather than committing generated review artifacts.
# `ci` job still runs and reports the commit's real result (see the `ci` job): the merge queue
# reads `ci` from the newest run of a commit, so a run without it would block a PR that passed.
# Cross-compilation is opt-in through Run workflow; release builds remain in release.yml.
# The release gate (release-gate.yml) calls this workflow (workflow_call) as a Run workflow with
# cross-compilation on.
# Every Linux job runs on Blacksmith's Ubuntu 24.04 runners (blacksmith-<N>vcpu-ubuntu-2404), sized
# per job: 32 vCPU for the tests, 16 for Clippy, the GPU path tests, the archive build (nightly) and the merge queue's, 8 for compiles, doc and reference tests, 4 for the light checks, 2 for Select checks and ci.
# The Windows shader job runs on Blacksmith's Windows Server 2025 runners (blacksmith-8vcpu-windows-2025);
@@ -50,10 +52,14 @@ on:
# only (other labels are skipped, see the top of this file).
# Pull requests test the affected packages (scripts/ci/affected.py).
scope=(--workspace)
if [ "$FULL" != true ]; then scope=(); for p in $PACKAGES; do scope+=(-p "$p"); done; fi
status=0
# The GPU path tracer's tests run in their own job (GPU path tests): one at a time, they
# took about 36 of this job's 45 minutes.
# A failed test does not fail the step by itself: the tests known to fail today
# (tests/KNOWN_FAILING_TESTS) may fail, any other fails it, and so does a listed test
# that passes. nextest's exit code 100 is "tests failed"; any other is its own error
# (a build error, a bad filter) and fails the step at once.
status=0
cargo nextest run "${scope[@]}" --cargo-profile ci --locked --profile ci --no-tests=pass \
--ignore-default-filter -E "($base) & not (package(=solidcraft-gpu) & test(/^path::/))" || status=1
if [ "$status" != 0 ]; then
# A failed golden gets the hint to re-record it (junit.xml lists the failures).
if [ -f "$junit" ] && tr '\n' ' ' < "$junit" | grep -q '<testcase name="tests::robustness_goldens::[^"]*"[^>]*>[[:space:]]*<failure'; then
echo "::error::A robustness golden changed. If the new result is intended, re-record it in this pull request and say why:"
echo "::error::ROBUSTNESS_GOLDENS_BLESS=\"why it changed\" cargo test --profile ci -p solidcraft-engine --lib robustness_goldens:: (see docs/robustness.md)"
fi
exit 1
fi
--ignore-default-filter -E "($base) & not (package(=solidcraft-gpu) & test(/^path::/))" || status=$?
if [ "$status" -ne 0 ] && [ "$status" -ne 100 ]; then exit "$status"; fi
@@ -10,6 +10,8 @@ Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelle
- No GPL/LGPL/AGPL code, not even reading it (OpenCASCADE, FreeCAD, SolveSpace, CadQuery, LibreCAD, QCAD): `cargo xtask licences --check`.
- Every asset is original or openly licensed with a row in ATTRIBUTION.md; read `assets/AGENTS.md` before icon work: `cargo xtask assets`, `cargo xtask icons`.
- Never crash: no unwrap/expect/panic/unsafe in non-test code (unsafe allowlist in crash-safety), errors are `Result`, input is hostile: clippy `-D warnings`, `hostile_params_never_panic`.
- Model decisions (what an operation does, which bodies it touches, which face or edge a point or name means, depths, nearness) use exact geometry; a mesh is for display, export, previews and mesh bodies (`xtask/mesh-decisions.txt` only shrinks): `cargo xtask mesh-decisions`.
- New kernel cases go to solidcore: `cargo xtask lists`.
- Everything is a command and programmatic calls never open dialogs: `skills/solidcraft-commands/SKILL.md`.
- One outer UI container, one camera path (`navigation::handle`), colours from theme tokens: `cargo xtask ui-containers`.
@@ -22,6 +24,7 @@ Work: ROADMAP.md, "Where help is wanted most" in CONTRIBUTING.md, issues labelle
- A changed default keeps the old behaviour behind a preference and fills the PR's `Changes a default:` line, and no second PR for an issue a lower-numbered one closes: `pr-checks.yml`.
- A regression test goes in the area's existing test file, never a per-bug file (#3226).
- Look at open PRs first, claim with a draft PR (lowest number wins), one topic per PR, never force-push `main`, no pushes just to catch up with `main`: `skills/solidcraft-contributing/SKILL.md`.
- A PR's title and first sentence make sense to someone who never saw your chat or the issue: `skills/solidcraft-contributing/SKILL.md`.
- Show observable changes with real screenshots or a recording, captured yourself.
- Run `cargo xtask ci` before every commit, without switching branches while it runs. `cargo xtask skills` keeps this file and `skills/` honest.
@@ -103,6 +103,22 @@ Editable drawing code, native projects and shipped exports are collected under `
| tests/step-conformance/tiny_pin.step | step-conformance contributors | generated from formulas by https://github.com/dan335/step-conformance (corpus/generated, 96f30bb); import regression fixture | CC0-1.0 |
| tests/step-conformance/torus_ring_nurbs.step | step-conformance contributors | generated from formulas by https://github.com/dan335/step-conformance (corpus/generated, 96f30bb); import regression fixture | CC0-1.0 |
| tests/step-conformance/washer.step | step-conformance contributors | generated from formulas by https://github.com/dan335/step-conformance (corpus/generated, 96f30bb); import regression fixture | CC0-1.0 |
| tests/kernel-cases/import/1721-closed-bspline-tube-face/input.step | step-conformance contributors | copy of tests/step-conformance/cylinder_nurbs.step (generated from formulas by https://github.com/dan335/step-conformance, corpus/generated, 96f30bb); kernel regression case for tangency-labs/solidcraft#1721 | CC0-1.0 |
| tests/kernel-cases/import/2043-outer-bound-opposing-surface-sense/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#2043 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/258-cone-point-vertex/input.step | step-conformance contributors | copy of tests/step-conformance/cone_point_vertex.step (generated from formulas by https://github.com/dan335/step-conformance, corpus/generated, 96f30bb); kernel regression case for tangency-labs/solidcraft#258 | CC0-1.0 |
| tests/kernel-cases/import/258-cone-to-point/input.step | step-conformance contributors | copy of tests/step-conformance/cone_point.step (generated from formulas by https://github.com/dan335/step-conformance, corpus/generated, 96f30bb); kernel regression case for tangency-labs/solidcraft#258 | CC0-1.0 |
| tests/kernel-cases/import/258-tiny-pin/input.step | step-conformance contributors | copy of tests/step-conformance/tiny_pin.step (generated from formulas by https://github.com/dan335/step-conformance, corpus/generated, 96f30bb); kernel regression case for tangency-labs/solidcraft#258 | CC0-1.0 |
| tests/kernel-cases/import/3098-bspline-edges-over-tiny-knot-span/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#3098 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/3208-extruded-ellipse-face-over-parameter-seam/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#3208 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/3352-vertex-off-its-edge-curve/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#3352 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/3730-void-oriented-shell-false/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#3730 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/3880-cylinder-seam-edge/input.step | step-conformance contributors | copy of tests/step-conformance/cylinder_seam.step (generated from formulas by https://github.com/dan335/step-conformance, corpus/generated, 96f30bb); kernel regression case for tangency-labs/solidcraft#3880 | CC0-1.0 |
| tests/kernel-cases/import/3880-nurbs-hemisphere-dome/input.step | step-conformance contributors | copy of tests/step-conformance/dome_nurbs.step (generated from formulas by https://github.com/dan335/step-conformance, corpus/generated, 96f30bb); kernel regression case for tangency-labs/solidcraft#3880 | CC0-1.0 |
| tests/kernel-cases/import/3963-closed-spline-edge-vertex-past-start/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#3963 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/4005-cylinder-written-as-near-zero-cone/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#4005 | MIT OR Apache-2.0 |
| tests/kernel-cases/import/4006-plane-written-as-cone-of-nearly-right-angle/input.step | SolidCraft contributors | synthetic STEP file written by hand from ISO 10303-21 for the kernel regression case of tangency-labs/solidcraft#4006 | MIT OR Apache-2.0 |
| tests/ssi-corpus/cases/*.json.gz, tests/ssi-corpus/LICENSE-MIT, tests/ssi-corpus/LICENSE-APACHE | ssi-corpus contributors (jyviko) | 119 surface/surface intersection cases with exact ground truth from https://github.com/jyviko/ssi-corpus (cases/data, b04c8a6), gzip-compressed, unchanged; SSI scorer fixtures (tests/ssi-corpus/README.md) | MIT OR Apache-2.0 |
| tests/ssi-corpus/cases/y23_*.json.gz | Yang, Jia and Yan (paper authors: published surfaces, figures and topology); ssi-corpus contributors (reconstructions and truth) | 25 cases built from Yang, Jia & Yan 2023, "Topology Guaranteed B-Spline Surface/Surface Intersection", ACM Transactions on Graphics 42(6), Article 211; each cites the paper in its `source` field | CC-BY 4.0 (paper); MIT OR Apache-2.0 (case files) |
| tests/step-regressions/rod_doubled_edge.step | SolidCraft contributors | written by SolidCraft from the commands of #4598 (a bored rod moved 100 mm and exported); import regression fixture | MIT OR Apache-2.0 |
| tests/oracle/17-loft/reference.stl | SolidCraft contributors | triangulation of our own recipe (tests/oracle/17-loft/recipe.json) built with FreeCAD as an external tool by tools/freecad-oracle | MIT OR Apache-2.0 |
| tests/oracle/23-bracket-multifeature/reference.stl | SolidCraft contributors | triangulation of our own recipe (tests/oracle/23-bracket-multifeature/recipe.json) built with FreeCAD as an external tool by tools/freecad-oracle | MIT OR Apache-2.0 |
@@ -229,6 +245,18 @@ Editable drawing code, native projects and shipped exports are collected under `
| assets/icons/ui/design/svg/flat/plus.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/pan.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/perspective.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_appearance.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_assistant.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_design.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_general.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_graphics.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_layout.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_mouse3d.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_navigation.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_plugins.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_shortcuts.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_sketch.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/prefs_tools.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/redo.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/save.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/settings.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
@@ -630,6 +658,132 @@ Original SolidCraft drawings, Open for owner review; no runtime assignments.
| docs/book/src/generated/equation-wave.png | SolidCraft contributors | rendered by `cargo xtask book` (`solidcraft-cli snapshot docs/book/scripts/equation-wave.json`; gitignored) | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/model/print_face.svg | SolidCraft contributors | two-tone modelling icon master (64 grid), original SolidCraft artwork | MIT OR Apache-2.0 |
| assets/locales/fi.json | SolidCraft contributors | Original Finnish translation of SolidCraft's English catalog, AI-assisted (Claude Code) clean-room from the English and not yet reviewed line by line by a native speaker; no commercial CAD text used | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/model/plane_axis_point.svg | SolidCraft contributors | original icon master (64 grid) | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-2x.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-2x.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-4x.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-4x.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-8x.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-8x.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-off.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/aa-off.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/agent-pointer-speed.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/agent-pointer-speed.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/ao-on.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/ao-on.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/assembly-move.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/assembly-move.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/browser-card.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/browser-card.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/browser-column.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/browser-column.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-axes.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-axes.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-bends.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-bends.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-draft.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-draft.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-failed.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-failed.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-fixed.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-fixed.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-projected.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/colour-vision-projected.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/direct-interaction.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/direct-interaction.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/frame-rate.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/frame-rate.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-bottom.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-bottom.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-in-browser.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-in-browser.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-left.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-left.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-under-browser.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/history-under-browser.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/layout-schematic.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/layout-schematic.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/measure-axis-distances.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/measure-axis-distances.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/mouse-mapping.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/mouse-mapping.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/navigator-axes.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/navigator-axes.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/navigator-cube.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/navigator-cube.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orbit-centre.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orbit-centre.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orbit-cursor.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orbit-cursor.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orbit-origin.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orbit-origin.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orientation-y-up.dark.svg | SolidCraft contributors | original SolidCraft artwork: the Orientation figure copied from the app and extracted from the Preferences redesign board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orientation-y-up.light.svg | SolidCraft contributors | original SolidCraft artwork: the Orientation figure copied from the app and extracted from the Preferences redesign board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orientation-z-up.dark.svg | SolidCraft contributors | original SolidCraft artwork: the Orientation figure copied from the app and extracted from the Preferences redesign board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/orientation-z-up.light.svg | SolidCraft contributors | original SolidCraft artwork: the Orientation figure copied from the app and extracted from the Preferences redesign board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/quick-measure.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/quick-measure.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/select-bodies.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/select-bodies.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/select-faces-edges.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/select-faces-edges.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-conflict.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-conflict.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-exit-keep.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-exit-keep.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-exit-previous.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-exit-previous.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-exit-unless-turned.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-exit-unless-turned.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-guides.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-guides.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-hide-glyphs.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-hide-glyphs.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-state-icons.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/sketch-state-icons.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/style-shaded-edges.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/style-shaded-edges.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-coarse.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-coarse.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-fine.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-fine.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-normal.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-normal.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-ultra.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tess-ultra.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-dark.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-dark.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-gruvbox.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-gruvbox.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-imported.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-imported.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-light.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-light.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-system-dark-half.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-system-dark-half.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-system-light-half.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/theme-system-light-half.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-cursor.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-cursor.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-extrude.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-extrude.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-hole.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-hole.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-placement.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/tool-placement.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/vertex-markers.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/vertex-markers.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-angles.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-angles.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-grid.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-grid.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-perspective.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-perspective.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-shadow.dark.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| docs/design/preferences/figures/view-shadow.light.svg | SolidCraft contributors | original SolidCraft artwork drawn for the Preferences redesign (tracker #9863), extracted from the design board as a standalone SVG | MIT OR Apache-2.0 |
| `assets/locales/pending/sketch-offset-instances.json` | SolidCraft contributors | Original offset instance-count label and translations | MIT OR Apache-2.0 |
| assets/icons/ui/design/svg/flat/settings_profile.svg | SolidCraft contributors | single-colour application/navigation icon master (64 grid), original analytic head and shoulder geometry for settings profiles | MIT OR Apache-2.0 |
| tests/kernel-cases/import/4561-convert-box-mesh-with-a-zero-area-triangle/box-degenerate.stl | SolidCraft contributors | synthetic ASCII STL written by hand: a box with one zero-area triangle, for the kernel regression case of tangency-labs/solidcraft#4561 | MIT OR Apache-2.0 |
## Code adapted from sibling projects
@@ -669,6 +823,15 @@ in THIRD-PARTY-LICENSES.txt; no images or artwork from that project are copied.
The glTF test files are built by the tests themselves (crates/io/src/gltf_in_tests.rs,
crates/engine/src/tests/gltf_import.rs); no third-party models are committed.
## Geometry kernel crates
| Crate | Used for | Licence |
|---|---|---|
| solidcore (https://github.com/tangency-labs/solidcore, pinned by rev in Cargo.toml) | the Rust port of NVIDIA's SMLib: the B-rep kernel behind crates/smlib | Apache-2.0 (its NOTICE credits NVIDIA's USD BRep) |
Linked as a crate; no code from it is copied into SolidCraft. Its licence text and NOTICE go
into THIRD-PARTY-LICENSES.txt when `main` regenerates it.
## FreeCAD and Rhino import library
FreeCAD `.FCStd` and Rhino `.3dm` files are read with [cadmpeg](https://github.com/cadmpeg/cadmpeg)
@@ -684,17 +847,13 @@ copied into SolidCraft.
| SolidCraft file | Original contribution | Licence |
|---|---|---|
| crates/ui-egui/src/viewport.rs (`nearest_quarter_turn`, `axis_view_orbit`) | N3MI-DG's [PR #101](https://github.com/bherbruck/solidcraft/pull/101): [minimal TOP/BOTTOM turns](https://github.com/bherbruck/solidcraft/commit/c28e780f52490784ef5886f094b9d3f6d10c3e3f) and [drag-to-orbit](https://github.com/bherbruck/solidcraft/commit/f30b30be6ecc4e2e6544a851243137c01a354934), adapted to the axis gizmo | MIT OR Apache-2.0 |
| crates/smlib/src/core/offset.rs (`draft`: the tilted planes and `SmBrep::LocalOperation`, the tail of the capi's `draft_faces`) | ablasik's `draft` in `crates/smlib/src/ffi/rs_ops2.rs` on [ablasik/solidcraft `app/solidcore-backend-on-develop`](https://github.com/ablasik/solidcraft/blob/9c7e8e31565e1823f0591b58e2967351c32af13f/crates/smlib/src/ffi/rs_ops2.rs), adapted to `core::offset`'s errors and checks | MIT OR Apache-2.0 |
## Vendored third-party code
| Directory | Source | Licence | Changes |
|---|---|---|---|
| vendor/accesskit_macos | accesskit_macos 0.26.3, https://github.com/AccessKit/accesskit (The AccessKit contributors) | MIT OR Apache-2.0 | the subclassing adapter and its tests from 0.27.2: dropping the adapter keeps AppKit's key-value observers (vendor/README.md) |
| vendor/truck-shapeops | truck-shapeops 0.4.0, https://github.com/ricosjp/truck (RICOS Co. Ltd.) | Apache-2.0 | robust meshing and nearest-parameter fallback in booleans; degenerate intersection-curve rejection; face and edge history of booleans; trace macro; corner choice at vertices several intersection curves end on; reuse of an operand's meshes (vendor/README.md) |
| vendor/truck-geometry | truck-geometry 0.5.0, https://github.com/ricosjp/truck (RICOS Co. Ltd.) | Apache-2.0 | intersection curves divided from their neighbours' surface parameters; surface second derivatives (vendor/README.md) |
**Kernel cases go to solidcore.** A case that checks a kernel operation (a boolean, a blend, a
shell, a sweep, an import's geometry) is a new entry in solidcore's corpus,
`crates/solidcore/tests/kernel_cases/<area>/` in
[tangency-labs/solidcore](https://github.com/tangency-labs/solidcore), with an answer in closed
form or exact. Draft it as a rig case here, export it with
`cargo xtask kernel-cases --area <area> --export DIR`, add `DIR/<area>/<case>.json` and its
`.bodies.json.gz` there, and delete the draft; or write the entry by hand as that folder's README
describes. `tests/kernel-cases/` takes no new cases: its `CASES` list only shrinks
(`cargo xtask lists`). App-level cases (what a command does, the UI, product rules) stay in
SolidCraft, as tests in their area's existing test file or UI scenarios.
The naming corpus checks persistent names: every name a corpus design stores still finds a face or
an edge, and two builds name its faces and edges alike
(`cargo test --profile ci -p solidcraft-cli --test naming_corpus`).
[docs/mutation-testing.md](docs/mutation-testing.md) shows how to find kernel behaviour these
black-box suites miss.
@@ -221,8 +236,7 @@ Pull requests skip a few heavy tests (one to twelve minutes each), which run in
Check that validation after merging. They are listed in
`.config/nextest.toml` and the [testing page](docs/book/src/dev/testing.md):
- `solidcraft-engine`: `tests::hostile_params_never_panic`, everything in `tests::robustness` and
the seeds of `tests::robustness_goldens` (`seed_00` … `seed_95`; pull requests that change the kernel, truck or the goldens run all but the slowest, `SLOW_SEEDS` in `ci.yml`),
- `solidcraft-engine`: `tests::hostile_params_never_panic`, everything in `tests::robustness`,
constUSAGE_RUN: &str=" solidcraft-cli run <script.json|design.sc|part.step> [--in design.sc|part.step] [--out FILE]... [--save FILE] [--quiet] [--results] [--timings] [--profile] [--json-out FILE] [--allow-errors]\n [--param-check off|warn|strict]\n solidcraft-cli run --in <design.sc|part.step> [--out FILE]...\n (a timeline feature that fails fails the run and nothing is written; --allow-errors writes anyway)\n (--param-check checks each step against its command's contract: warn reports on stderr, strict stops the run)\n (--timings prints {timings: [{index, command, ms}], total_ms} for a script, with --results its results too;\n --profile adds each command's profile: {boolean_ms, tessellate_ms, other_ms}, the kernel's share)\n";
constUSAGE_RUN: &str=" solidcraft-cli run <script.json|design.sc|part.step> [--in design.sc|part.step] [--out FILE]... [--save FILE] [--quiet] [--results] [--timings] [--profile] [--profile-out trace.json] [--json-out FILE] [--allow-errors] [--validation each_step|each_feature|off]\n [--param-check off|warn|strict]\n solidcraft-cli run --in <design.sc|part.step> [--out FILE]...\n (a timeline feature that fails fails the run and nothing is written; --allow-errors writes anyway)\n (--validation: when SMLib's full check runs on the features computed (diagnostics.validation), default each_feature)\n (--param-check checks each step against its command's contract: warn reports on stderr, strict stops the run)\n (--timings prints {timings: [{index, command, ms}], total_ms} for a script, with --results its results too;\n --profile adds each command's profile: {boolean_ms, tessellate_ms, other_ms}, the kernel's share)\n (--profile also records where the time goes, SMLib's calls, kernel operations, features, commands and import stages,\n and prints the table to stderr: count, total, self time and longest per span; --profile-out FILE writes the spans\n as a Chrome trace for chrome://tracing or ui.perfetto.dev; SOLIDCRAFT_PROFILE=1 does the same for any command)\n";
/// `eval`'s lines in the usage.
constUSAGE_EVAL: &str=" solidcraft-cli eval <script.json|design.sc|part.step> [--in design.sc|part.step] [--json-out FILE] (alias: inspect)\n solidcraft-cli eval --in <script.json|design.sc|part.step> [--json-out FILE]\n (with both inputs, runs the positional script on --in before measuring; does not automatically save the modified design)\n (--json-out FILE writes the JSON that run (with --results, else the measurement) and eval print to FILE instead of stdout,\n as plain UTF-8: a shell's > can re-encode it, e.g. Windows PowerShell adds a byte-order mark)\n";
constUSAGE_EVAL: &str=" solidcraft-cli eval <script.json|design.sc|part.step> [--in design.sc|part.step] [--json-out FILE] [--profile] [--profile-out trace.json] (alias: inspect)\n solidcraft-cli eval --in <script.json|design.sc|part.step> [--json-out FILE]\n (with both inputs, runs the positional script on --in before measuring; does not automatically save the modified design)\n (--json-out FILE writes the JSON that run (with --results, else the measurement) and eval print to FILE instead of stdout,\n as plain UTF-8: a shell's > can re-encode it, e.g. Windows PowerShell adds a byte-order mark)\n (--profile and --profile-out as for run)\n";
/// `script`'s lines in the usage.
constUSAGE_SCRIPT: &str=" solidcraft-cli script <design.sc|script.json> [--out script.json]\n (the design's history as a command script that eval and run replay)\n";
/// `bench-open`'s lines in the usage.
constUSAGE_BENCH_OPEN: &str=" solidcraft-cli bench-open <design.sc | part.step> [--parse-only] [--save OUT.sc] [--display LEVEL [--edit NAME EXPR]] [--ops script.json]\n (--ops: after opening, run each command of the script and undo it, timing the command, the\n evaluations it caused and the view it leaves: placing and meshing what changed)\n";
constUSAGE_BENCH_OPEN: &str=" solidcraft-cli bench-open <design.sc | part.step> [--parse-only] [--save OUT.sc] [--display LEVEL [--edit NAME EXPR]] [--ops script.json] [--profile] [--profile-out trace.json]\n (--profile and --profile-out as for run)\n (--ops: after opening, run each command of the script and undo it, timing the command, the\n evaluations it caused and the view it leaves: placing and meshing what changed)\n";
constUSAGE_SNAPSHOT: &str=" solidcraft-cli snapshot <script|design> [--in design.sc|part.step] --out shot.png [--width W] [--height H] [--view NAME | --camera JSON] [--no-grid] [--no-axes]\n [--body NAME:opacity=0.3,color=#rrggbb]... [--tool NAME]... [--section z=27]\n solidcraft-cli snapshot --in <design.sc|part.step> --out shot.png ...\n (as with run, --in starts from a design and the script runs on top of it; an option snapshot doesn't take is an error;\n --view: iso, front, back, top, bottom, left, right, or the name of a view saved in the design with view.save;\n --camera: {target: [x,y,z], yaw, pitch, distance, fov?} in mm and radians, as the MCP screenshot takes it (docs/mcp.md);\n --no-grid and --no-axes leave the ground grid (on Z 0) and the origin's axes out of the picture;\n --body: how one body is drawn, as appearance.assign takes it: opacity 0-1 (below 1 is see-through, so what is inside\n it shows) and color #rrggbb, either or both, once per body;\n --tool: draw this body solid in the tool colour and every other body see-through, so a cut's or a join's tool body\n is visible inside the material it meets; a later --body overrides it;\n --section: cut the model as inspect.section does, so the inside shows: z=27 (the plane through that world\n coordinate, keeping the smaller side), add ,flip to keep the other side, or XY, XZ, YZ, or its own JSON)\n";
constUSAGE_SNAPSHOT: &str=" solidcraft-cli snapshot <script|design> [--in design.sc|part.step] --out shot.png [--width W] [--height H] [--view NAME | --camera JSON] [--no-grid] [--no-axes]\n [--body NAME:opacity=0.3,color=#rrggbb]... [--tool NAME]... [--section z=27] [--quality coarse|normal|fine|ultra]\n solidcraft-cli snapshot --in <design.sc|part.step> --out shot.png ...\n (as with run, --in starts from a design and the script runs on top of it; an option snapshot doesn't take is an error;\n --view: iso, front, back, top, bottom, left, right, or the name of a view saved in the design with view.save;\n --camera: {target: [x,y,z], yaw, pitch, distance, fov?} in mm and radians, as the MCP screenshot takes it (docs/mcp.md);\n --no-grid and --no-axes leave the ground grid (on Z 0) and the origin's axes out of the picture;\n --body: how one body is drawn, as appearance.assign takes it: opacity 0-1 (below 1 is see-through, so what is inside\n it shows) and color #rrggbb, either or both, once per body;\n --tool: draw this body solid in the tool colour and every other body see-through, so a cut's or a join's tool body\n is visible inside the material it meets; a later --body overrides it;\n --section: cut the model as inspect.section does, so the inside shows: z=27 (the plane through that world\n coordinate, keeping the smaller side), add ,flip to keep the other side, or XY, XZ, YZ, or its own JSON;\n --quality: the display quality the bodies are meshed at, as the app's setting (default normal))\n";
constUSAGE_KERNEL_CASES: &str=" solidcraft-cli kernel-cases <case-dir>... [--json] [--dumps=DIR] [--export=DIR] [--validation=each_step|each_feature|off]\n (the kernel regression rig, tests/kernel-cases, on SMLib; --dumps: each case's\n failing SMLib calls leave their inputs for replay in DIR/<area>-<case>; --export: each case's\n kernel operations, input records and expected values for solidcore's rig, in DIR/<area>/<case>.json; --validation: when SMLib's\n full check runs (diagnostics.validation), default each_feature)\n";
out.push(format!("{n} at {x:?}, then {m} at {y:?}"));
}
}
for((r,_),(q,_))ina.refs.iter().zip(&b.refs){
ifr!=q{
out.push(format!("{r}, then {q}"));
}
}
ifa.refs.len()!=b.refs.len(){
out.push(format!("{} stored names, then {}",a.refs.len(),b.refs.len()));
}
out.truncate(cap);
out
}
/// Designs whose names differ from one build to the next today: (design, why). Their
/// differences are printed, not failed on, until the cause is fixed; a stored name that finds
/// nothing still fails.
constUNSTABLE: [(&str,&str);1]=[(
"regressions/closed_sweep_torus_cut",
"the halves of each swept wall lie level along every axis, so which is `#1` and which `#2` follows the order the kernel gives the faces in, which changes from one build to the next",
"Sections (one sketch each)":"Presjeci (po jedna skica)",
"Select Other":"Izaberi drugo",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Izaberi drugo: držite lijevo dugme mirno na modelu (ili desni klik › Izaberi drugo…) da prikažete sve ispod pokazivača; ponovo kliknite na isto mjesto da izaberete sljedeći element. Dvaput kliknite srednjim dugmetom za Početni prikaz (Postavke › Navigacija).",
"config.rule_parameter_columns":"Prikazani su samo parametri koji imaju kolonu u tabeli. Dodajte kolonu pomoću Dodaj kolonu (+) da biste parametar koristili ovdje.",
"config.rule_suppression_columns":"Prikazane su samo operacije koje imaju kolonu Potisni u tabeli. Dodajte kolonu pomoću Dodaj kolonu (+) da biste ovdje mogli upravljati operacijom.",
"contact.components_count":"Komponente: {count}",
"contact.enabled_label":"omogućeno",
"coupling.gear_1":"Zupčanik 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Kota: {name}",
"dialog.edit_title":"UREDI {title}",
"dialog.no_shown_body":"Nema prikazanog tijela za izmjenu: prikažite jedno ili izaberite Novo tijelo",
"dialog.pattern_sketch_not_object":"Izaberite tijela ili operacije: skica nije ni jedno ni drugo. Ponovite njene krive pomoću alata Niz ili Preslikaj u samoj skici ili je prvo ekstrudirajte.",
"dialog.selection_guidance":"Izaberite ulaz da ga promijenite. Kliknite izabrane objekte da ih uklonite; Ctrl/Cmd-klik ih također uključuje i isključuje. Pogledajte pregled, a zatim pritisnite U redu.",
"dialog.selection_midpoint":"Središnja tačka · {id}",
"dialog.selection_step":"{step} od {total}: Izaberite {input}",
"dialog.step":"Korak",
"document.changed_on_disk":"{name} je promijenjen na disku",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Pravi pomoćnu osu kroz dvije tačke, vrhove ili tačke skice. Koristite je za osu koja prolazi između dva poznata položaja.",
"help.construct.plane.along_path":"Pravi pomoćnu ravan okomitu na ivicu ili krivu, na nekom položaju duž nje. Koristite je da skicirate profil za povlačenje ili presjek putanje.",
"help.construct.plane.at_angle":"Pravi pomoćnu ravan zakrenutu za ugao u odnosu na ravan ili lice, oko ose ili ivice. Koristite je za nagnute skice, npr. kutni nosač.",
"help.construct.plane.axis_point":"Pravi pomoćnu ravan koja sadrži osu i tačku izvan te ose. Izaberite osu ishodišta ili pomoćnu osu, ravnu ivicu ili liniju skice, pa vrh, tačku skice ili pomoćnu tačku. Tačka na osi ne može odrediti jedinstvenu ravan.",
"help.construct.plane.midplane":"Pravi pomoćnu ravan na pola puta između dvije ravni ili ravna lica, ili koja ih raspolavlja tamo gdje se sastaju pod uglom. Koristite je kao ravan simetrije za preslikavanje.",
"help.construct.plane.offset":"Pravi pomoćnu ravan paralelnu s ravni ili ravnim licem, na određenoj udaljenosti ili kroz tačku. Koristite je da skicirate na zadatoj visini iznad lica.",
"help.construct.plane.perpendicular":"Pravi pomoćnu ravan koja sadrži liniju ili ivicu i okomita je na ravan ili lice. Koristite je da skicirate uspravno na modelu duž ivice.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Provjerite vrstu spoja (npr. Kruti), učvršćenje, granice spoja i vrijednosti koje pokreću parametri.",
"joint_move.blocked_title":"Ovaj dio se ne može pomjeriti",
"joint_move.coarse":"Korak rotacije blizu ose (°)",
"joint_move.conflict":"Jedan spoj ovog dijela je u sukobu s ostalima: {joint}.",
"joint_move.conflict_hint":"Uredite, potisnite ili izbrišite spoj koji je u sukobu da bi ostali spojevi mogli postaviti dio.",
"joint_move.distance":"Udaljenost od početka",
"joint_move.done":"Gotovo",
"joint_move.fine":"Korak rotacije dalje od ose (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Staza {number}",
"nav.alias.help":"Shift+Alt+povlačenje lijevim dugmetom orbitira, Shift+Alt+srednjim pomjera, Shift+Alt+desnim zumira; povlačenje srednjim dugmetom također pomjera, a desnim orbitira",
"nav.blender.help":"Povlačenje srednjim dugmetom orbitira, Shift+srednje pomjera, Ctrl+srednje zumira; povlačenje desnim dugmetom ne dira kameru",
"nav.creo.help":"Povlačenje srednjim dugmetom orbitira, Shift+srednje pomjera, Ctrl+srednje uz vertikalno povlačenje zumira (prema dolje za približavanje); točkić također zumira",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Miš i 3D miš rotiraju kroz oba pola i čuvaju nagib. Privlačenje osa tipkom Shift je isključeno.",
"nav.free_orbit.label":"Slobodno orbitiranje",
"nav.free_orbit.snap_help":"Miš i 3D miš rotiraju kroz oba pola i čuvaju nagib. Držite Shift tokom povlačenja za orbitiranje da privučete smjer pogleda i nagib.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+lijevo povlačenje pomjera prikaz, Shift+Alt+lijevo zumira, Ctrl+lijevo povlačenje na praznom prostoru orbitira",
"nav.maya.help":"Alt+lijevo povlačenje orbitira, Alt+srednje pomjera, Alt+desno zumira; srednje povlačenje također pomjera",
"nav.nx.help":"Povlačenje srednjim dugmetom orbitira, Shift+srednje pomjera (u NX-u srednje + desno), Ctrl+srednje zumira (u NX-u srednje + lijevo); povlačenje desnim dugmetom ne dira kameru",
"nav.openscad.help":"Povlačenje lijevim dugmetom po praznom prostoru orbitira, Shift+povlačenje lijevim bira okvirom, povlačenje geometrije skice je uređuje; povlačenje desnim ili srednjim dugmetom pomjera, Shift+desno ili Shift+srednje zumira",
"nav.perspective.sketch":"Uređivanje skice koristi ortografski prikaz. Završite skicu da prebacite na perspektivu.",
"nav.right_drag_orbits.help":"Isključeno: povlačenje desnim dugmetom ne dira kameru, a desno dugme samo otvara kontekstni meni. Izbor mapiranja miša SolidWorks to isključuje.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Vijak s poluokruglom glavom i imbusom",
"parts.family.dowel_pin":"Cilindrični zatik",
"parts.family.hex_bolt":"Vijak sa šestougaonom glavom",
"parts.family.hex_cap_screw_inch":"Vijak sa šestougaonom glavom (inč)",
"prefs.cut_preview_tint":"Prikaži uklonjeni materijal u crvenoj boji",
"prefs.cut_preview_tint_help":"Pregled ispunjava materijal koji operacija uklanja i oblik koji zamjenjuje crvenom prozirnom sjenom. Kada je isključeno, te ispune su potpuno prozirne i crtaju se samo njihovi obrisi.",
"prefs.dark_parts_shading":"Zadrži oblik tamnih dijelova",
"prefs.dark_parts_shading_help":"Sjenči prikaz u linearnom svjetlu s mekim dopunskim svjetlom neba, tako da tamna lica zadrže gradijent umjesto da pocrne",
"prefs.dead_zone_note":"Šrafirana traka je mrtva zona: kretanje unutar nje se zanemaruje.",
"prefs.extra_navigation":"Ctrl + povlačenje lijevim dugmetom po praznom prostoru orbitira; držite razmaknicu za pomjeranje.",
"prefs.extrude_view_isometric":"Okreni prikaz u izometrijski kada se otvori Ekstrudiraj",
"prefs.extrude_view_return":"Vrati se na prethodni prikaz kada se Ekstrudiraj zatvori",
"prefs.follows_os":"Prati operativni sistem",
"prefs.font":"Font",
"prefs.font_fallback":"Znakovi koji nedostaju izabranom fontu prikazuju se ugrađenim fontom, tako da nijedna oznaka ne prikazuje prazan kvadrat.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatski",
"prefs.graphics_card_missing":"Sačuvana grafička kartica nije dostupna; koristi se Automatski.",
"prefs.graphics_card_restart":"Stupa na snagu nakon ponovnog pokretanja SolidCrafta. WGPU_ADAPTER_NAME ima prednost nad ovim izborom.",
"prefs.graphics_card_unused":"Sačuvana grafička kartica nije korištena za ovaj prozor; kartica koja se koristi prikazana je u Pomoć › O programu i u statusnoj traci. Pokušajte s opcijom Automatski ili postavite WGPU_ADAPTER_NAME na jedinstveni dio naziva kartice.",
"prefs.graphics_note":"Žrtvujte brzinu za glatkoću. Svaki izbor pokazuje svoj učinak na primjeru.",
"prefs.graphics_presets_note":"Unaprijed postavljene vrijednosti podešavaju sve izbore ispod odjednom.",
"prefs.hide_constraint_glyphs_zoomed_out":"Sakrij simbole ograničenja kada je prikaz umanjen",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Kada je Skice postavljeno na Ispod svoje operacije, vremenska traka lijevo prikazuje svaku skicu jedan nivo uvučeno, ispod prve operacije napravljene iz nje, kad god je dovoljno široka za nazive. Vremenska traka na dnu uvijek zadržava redoslijed nastanka.",
"prefs.history_sketches_under_feature":"Ispod svoje operacije",
"prefs.hold_stop_snapping":"Držite da isključite privlačenje",
"prefs.home_fit_size":"Veličina za Početni prikaz i Uklopi",
"prefs.home_fit_size_note":"Koliki dio prikaza model ispunjava kada ga uokviri Početni prikaz, Uklopi, otvaranje dizajna ili promjena prikaza u navigatoru, bez obzira na to je li postavka ispod uključena. 100 %: ispunjava prikaz između panela, kompasa i navigacijske trake.",
"prefs.icons_only":"Samo ikone",
"prefs.imported_file":"Uvezena datoteka",
"prefs.in_browser":"U stablu modela",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Jezik interfejsa",
"prefs.interface_note":"Kako SolidCraft izgleda i gdje su njegovi dijelovi.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Obrni zakrivljene strelice za valjanje",
"prefs.invert_curved_roll_arrows_note":"Dvije zakrivljene strelice u uglu kocke valjaju prikaz unutar ravni ekrana. Uključeno: strelica u smjeru kazaljke na satu valja prikaz suprotno od smjera kazaljke na satu, a strelica suprotno od smjera kazaljke na satu valja ga u smjeru kazaljke na satu. Isključeno: svaka strelica valja prikaz onako kako je zakrivljena.",
"prefs.invert_navigator_arrows":"Obrni strelice za rotaciju kocke prikaza",
"prefs.invert_navigator_arrows_note":"Strelice oko kocke orbitiraju kameru u smjeru u kojem pokazuju, kao u programima Fusion i Inventor: strelica s lijeve strane pokazuje udesno i zakreće kameru udesno. Isključeno: strelica okreće kocku prema strani na kojoj se nalazi, pa lijeva strelica zakreće kameru ulijevo. Postavka ne utiče na zakrivljene strelice za valjanje.",
"prefs.keep_work_on_tab_switch":"Zadrži dijaloge i alate otvorenima pri prebacivanju između dizajna",
"prefs.keep_work_on_tab_switch_note":"Svaka kartica dizajna zadržava svoj otvoreni dijalog ili alat, s onim što ste u njemu izabrali i upisali, te svoju karticu trake s alatima. Kada se vratite na dizajn, ponovo su tu. Isključeno: prebacivanje između dizajna otkazuje ih i prikazuje karticu Model.",
"prefs.labels":"Oznake",
"prefs.language_system":"Sistem",
"prefs.layout":"Raspored",
"prefs.layout_note":"Kompaktno pričvršćuje panele uz ivice prozora. Prozirnost stabla modela dostupna je u opciji Plutajuće. Stranu Asistenta promijenite na stranici Asistent.",
"prefs.left":"Lijevo",
"prefs.left_click":"Lijevi klik",
"prefs.line_drag_draws_one":"Pritisak i povlačenje crta jednu liniju",
"prefs.line_drag_draws_one_note":"U alatu Linija pritisak, povlačenje i puštanje crta jednu liniju od mjesta pritiska do mjesta puštanja i tu se završava. Klikovi i dalje crtaju lanac. Isključeno: povlačenje postavlja tačku tamo gdje se pusti, kao i klik.",
"prefs.line_hover_tangent_arc":"Zadržite pokazivač na posljednjoj tački linije da pređete na tangentni luk",
"prefs.line_hover_tangent_arc_note":"U alatu Linija, nakon što je nacrtan segment, odmaknite pokazivač od posljednje tačke lanca, vratite ga na nju i držite ga mirno: sljedeći klik završava tangentni luk, a isti pokret vraća na linije. Isključeno: zadržavanje na toj tački ne radi ništa.",
"prefs.linked_designs":"Povezani dizajni",
"prefs.live_input":"Ulaz uživo",
"prefs.live_preview":"Pregled uživo",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Mapiranje miša",
"prefs.navigation":"Navigacija",
"prefs.navigation_note":"Kako miš, trackpad i 3D miš pomjeraju prikaz.",
"prefs.navigator_fit":"Uklopi model nakon promjene prikaza u navigatoru",
"prefs.navigator_fit_note":"Lice, ugao ili strelica kocke prikaza, odnosno osa alata za orijentaciju, također usmjerava pogled na sredinu modela s jedne udaljenosti na kojoj se uklapa iz svakog smjera (njegova granična sfera). Početni prikaz koristi isti zum i centar dok je ova opcija uključena, pa se prikazi koje izaberete poslije njega samo okreću. Isključeno: prikaz se okreće na mjestu i zadržava svoj cilj i zum.",
"prefs.network_host_remove":"Ukloni",
"prefs.network_locations":"Dozvoli mrežne lokacije u dizajnima",
"prefs.network_locations_note":"Isključeno: povezane datoteke dizajna na drugom računaru (\\\\server\\share) otvaraju se samo sa servera navedenih ovdje ili nakon što ga dozvolite kada se to zatraži.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Postavljanje",
"prefs.prefer_free_sketch_points":"Daj prednost pokretnim tačkama skice kada se tačke preklapaju",
"prefs.preview_choices":"Pregled vaših izbora",
"prefs.preview_tint_new_faces":"Oboji novu površ u pregledu",
"prefs.preview_tint_new_faces_help":"Pregled operacije koja mijenja tijelo može nacrtati površ koju dodaje u boji pregleda. Kada je isključeno, tijelo se crta kakvo jest.",
"prefs.print_face_highlight":"Isticanje površine za štampu",
"prefs.print_face_highlight_tip":"Koliko se jako površina za štampu tijela boji i obrubljuje u prikazu. 0 % ne prikazuje isticanje.",
"prefs.profile_active":"Aktivni profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Koristi prethodni budžet geometrije za pregled renderovanja",
"prefs.render_previous_geometry_budget_help":"Vraća prethodno fiksno ograničenje geometrije (512 MiB na 64-bitnim desktop računarima, 128 MiB drugdje) umjesto budžeta prema uređaju.",
"prefs.reports_saved":"Sačuvano: {n}",
"prefs.ribbon_click_ends_tool":"Klik na dugme aktivnog alata završava ga",
"prefs.ribbon_click_ends_tool_note":"Klik na istaknuto dugme na traci alata za skiciranje koji je u upotrebi završava taj alat, pa klikovi u prikazu ponovo služe za biranje. Isključeno: klik ponovo pokreće alat.",
"prefs.ribbon_reveal":"Prikaži rezultate pretrage na traci",
"prefs.ribbon_reveal_note":"Zadržavanje pokazivača iznad rezultata u Pretraži komande pokazuje gdje se komanda nalazi na traci: njenu karticu, njeno dugme ili njen red u padajućem meniju panela. Komanda pokrenuta iz pretrage tamo trepće, a pokrenuta komanda iz padajućeg menija označava svoj panel.",
"prefs.right_click":"Desni klik",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Vrati se na prethodni prikaz",
"prefs.sketch_exit_view.unless_rotated":"Vrati se osim ako je rotirano",
"prefs.sketch_exit_view_note":"Kuda prikaz ide nakon Završi skicu, Otkaži ili dvostrukog Esc.",
"prefs.sketch_face_activates_part":"Skiciranje na licu dijela čini taj dio aktivnim",
"prefs.sketch_face_activates_part_note":"Skica započeta na licu tijela druge komponente prvo aktivira tu komponentu, pa skica pripada njoj i u stablu modela ostaje uz taj dio. Taj dio nakon toga ostaje aktivan. Isključeno: skica pripada aktivnoj komponenti.",
"prefs.sketch_open_look_at":"Okreni kameru prema skici kad se otvori",
"prefs.sketch_open_look_at_note":"Isključeno: kad napravite ili uredite skicu, prikaz ostaje onakav kakav jest. Pogledaj okreće prikaz prema skici kad to želite.",
"prefs.sketch_recent_snap":"Automatski privlači na nedavne centre i središnje tačke",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Greška",
"prefs.status_selected":"Izabrano",
"prefs.status_warning":"Upozorenje",
"prefs.structure.appearance":"Izgled",
"prefs.structure.appearance_note":"Boje, tekst i pristupačnost.",
"prefs.structure.in_profile":"U profilu",
"prefs.structure.layout":"Raspored",
"prefs.structure.layout_note":"Gdje se nalaze dijelovi prozora.",
"prefs.structure.look":"Vizuelno",
"prefs.structure.measure_pointer":"Mjerenje i pokazivač",
"prefs.structure.mouse3d":"3D miš",
"prefs.structure.mouse3d_note":"SpaceMouse i SpaceNavigator.",
"prefs.structure.navigation_note":"Miš i trackpad. 3D miš ima vlastitu stranicu.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Promijenjeno otkako je sačuvano",
"prefs.structure.profile_hover":"Sačuvano u profilima postavki",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Skica",
"prefs.structure.tools":"Alati",
"prefs.structure.tools_note":"Kako se ponašaju alati za modeliranje.",
"prefs.structure.work":"Rad",
"prefs.supersampling_brief":"Iscrtava prikaz većim i smanjuje ga filtriranjem: vrlo oštro i zahtjevnije.",
"prefs.tab_accent_note":"Naglasna boja prati aktivnu karticu",
"prefs.theme_file":"datoteka teme",
@@ -2501,6 +2600,10 @@
"render.base_color":"Osnovna boja · sRGB",
"render.base_metallic":"Metalni udio",
"render.base_opaque_only":"Ovaj uređivač čuva semantiku neprozirnih tijela. Za optičko propuštanje koristite izričite kontrole stakla.",
"render.batch_all_shots":"Svi kadrovi ({count})",
"render.batch_empty":"Sačuvajte kadar prije renderovanja svih kadrova.",
"render.batch_limit":"Renderovanje svih kadrova ograničeno je na 32 kadra.",
"render.batch_status":"U toku: {running} · Na čekanju: {waiting}",
"render.bloom_enable":"Sjaj prikaza",
"render.bloom_help":"Kreativni sjaj samo na izlazu iz pozitivnih linearnih svijetlih dijelova, raširen kroz tri normalizovana prolaza kutijastog filtera. Poluprečnik je u pikselima izlaza. Dodaje se u linearnoj svjetlosti prikaza prije sRGB-a; nije objektiv, volumetrijski efekat niti poboljšanje konvergencije. Sirovi EXR ostaje nepromijenjen.",
"render.bloom_opaque":"Sjaj zahtijeva neprozirni izlaz. Prozirni PNG se odbija, a ne spljoštava tiho.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Prvo izaberite izgled u Izgledima",
"ui.agent_chat_models_none":"Krajnja tačka ne navodi nijedan model",
"ui.agent_chat_models_not_a_list":"Odgovor nije popis modela",
"ui.agent_chat_new":"Novi razgovor",
"ui.agent_chat_new_confirm":"Započeti novi razgovor? Trenutni će biti obrisan.",
"ui.agent_chat_next_picture":"Sljedeća slika",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Dozvole",
"ui.ai_preset":"Unaprijed postavljeno",
"ui.ai_protocol":"Protokol",
"ui.ai_reasoning_effort":"Nivo zaključivanja",
"ui.ai_reasoning_effort_field_hint":"prazno = podrazumijevana vrijednost pružaoca",
"ui.ai_reasoning_effort_hint":"Neobavezno. Šalje se krajnjoj tački kao `reasoning_effort`; prihvaćene vrijednosti razlikuju se od pružaoca do pružaoca (na primjer `low`, `high` ili `max`). SolidCraft nikad ne mijenja vrijednost koju ovdje postavite. Ostavite prazno da se ništa ne šalje i da se zadrži podrazumijevana vrijednost pružaoca.",
"ui.ai_remove":"Ukloni",
"ui.ai_request_timed_out":"Model je trajao duže od {seconds} s. Vremensko ograničenje zahtjeva za ovu krajnju tačku možete povećati u Postavke › Asistent.",
"ui.edit_sketch_empty":"Nema skica za uređivanje",
"ui.ellipse":"Elipsa",
"ui.emboss_wrap_note":"Ortogonalni linijski profili koji tangiraju jedan podržani cilindar obavijaju se automatski. Izaberite zid da izaberete cilj.",
"ui.end_radius":"Krajnji poluprečnik",
@@ -4480,7 +4610,9 @@
"ui.equation_explicit":"Eksplicitno",
"ui.equation_form":"Oblik",
"ui.equation_note":"Varijabla je običan broj: sin(t) je uzima u radijanima. Rezultat bez jedinice je u jedinici dizajna.",
"ui.equation_note_range":"Varijabla je dužina, kao i njen raspon: kombinujte je s parametrima dužine, a za sin() je podijelite dužinom. Rezultat bez jedinice je u jedinici dizajna.",
"ui.equation_parametric":"Parametarski",
"ui.equation_variable_unit":"Varijabla ima jedinicu raspona",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4612,6 +4744,7 @@
"ui.hideOrigin":"Sakrij ishodište",
"ui.hidePlanes":"Sakrij ravni",
"ui.hideProfile":"Sakrij profil",
"ui.hide_component_history":"Sakrij njenu vremensku traku",
"ui.hide_origin_note":"Novi dizajni počinju sa skrivenim folderom Ishodište. Dizajn zadržava vlastitu postavku Ishodišta kada ga prikažete ili sakrijete.",
"ui.history_sketch_listed_under":"Navedeno ispod {feature}",
"ui.history_title":"Vremenska traka",
"ui.history_toggle_names":"Prikaži ili sakrij nazive operacija",
"ui.history_waits_for_editor":"Poništi, Ponovi i vremenska traka čekaju dok se ne otvori uređivač operacije",
"ui.hole":"Rupa",
"ui.hole_tap_type":"Vrsta navoja rupe",
"ui.hole_type":"Vrsta rupe",
@@ -4647,6 +4783,7 @@
"ui.insert_design.saved_file":"{name} ima nesačuvane promjene, pa je umetnuta njegova sačuvana datoteka. Sačuvajte ga, a zatim pokrenite Ažuriraj veze da unesete promjene.",
"ui.insert_design.unsaved":"Nesačuvane promjene",
"ui.inspect":"Pregledaj",
"ui.instances":"Instance",
"ui.intersect":"Presjek",
"ui.isolate":"Izoluj",
"ui.join":"Spoji",
@@ -4655,12 +4792,14 @@
"ui.joints":"Spojevi",
"ui.keyboard_shortcuts":"Prečice na tastaturi",
"ui.language":"Jezik",
"ui.lasso_select":"Laso (povucite petlju slobodnom rukom: uzima sve što je u cijelosti unutra)",
"ui.layout_compact":"Kompaktno",
"ui.layout_floating":"Plutajuće",
"ui.length":"Dužina",
"ui.length_decimals":"Decimale dužine",
"ui.light":"Svijetla",
"ui.line":"Linija",
"ui.line_arc_hint":"Tangentni luk: kliknite kraj luka. Ponovo se zadržite na posljednjoj tački za linije; desni klik ili Esc za završetak",
"ui.link_copies":"Poveži identične kopije",
"ui.link_copies_keep":"Zadrži",
"ui.link_copies_link":"Poveži",
@@ -4749,6 +4888,7 @@
"ui.part_size_shared":"Ponovo gradi dio, zamjenjujući sve dodane operacije. Svi primjerci ove komponente se ažuriraju.",
"ui.paste":"Zalijepi",
"ui.path":"Putanja",
"ui.pattern_object_type_tip":"Tijela: puni oblici, biraju se u prikazu ili u stablu modela; svako se kopira u cijelosti.\nOperacije: koraci vremenske trake, poput ekstruzije ili rupe, biraju se na vremenskoj traci ili na licu koje su napravili; korak se ponavlja.\nSkica nije ni jedno ni drugo: ponovite njene krive pomoću alata Niz ili Preslikaj u samoj skici ili je prvo ekstrudirajte.",
"ui.pattern_on_path":"Niz duž putanje",
"ui.perforate_margin_default":"iz prečnika",
"ui.perforate_pitch":"Korak",
@@ -4794,9 +4934,9 @@
"ui.polygon":"Poligon",
"ui.preferences":"Postavke",
"ui.press_a_key":"pritisnite tipku…",
"ui.print_face_body_not_sent":"Tijelo te površine se ne šalje: prvo ga dodajte u Tijela",
"ui.print_face_cleared":"{body}: površina za štampu uklonjena",
"ui.print_face_input":"Površina za štampu",
"ui.print_face_one_body":"Površina za štampu pripada jednom tijelu: pošaljite to tijelo samo da biste je promijenili",
"ui.print_face_pick":"Odaberite ravnu površinu punog tijela da postane površina za štampu",
"ui.print_face_set":"{body}: površina za štampu postavljena; Pošalji u slajser polaže tijelo na nju",
"ui.profile":"Profil",
@@ -4908,6 +5048,7 @@
"ui.showDimension":"Prikaži kotu",
"ui.showOrigin":"Prikaži ishodište",
"ui.showPlanes":"Prikaži ravni",
"ui.show_component_history":"Prikaži njenu vremensku traku",
"ui.view_angles_convention":"Stepeni oko ose prema gore. Skretanje 0° je pogled sprijeda, 90° slijeva, −90° zdesna, 180° straga; nagib 90° je pogled odozgo; pozitivno valjanje okreće model u smjeru kazaljke na satu.",
"ui.view_angles_help":"Prikazuje nagib, skretanje i valjanje prikaza u stepenima i njegovu projekciju ispod alata za orijentaciju. Kliknite očitanje da upišete tačne uglove.",
"Sections (one sketch each)":"Průřezy (každý jeden náčrt)",
"Select Other":"Vybrat jiné",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Vybrat jiné: podržte levé tlačítko na modelu (nebo pravé tlačítko › Vybrat jiné…) a zobrazí se vše pod kurzorem; dalším kliknutím na stejné místo vyberete další prvek. Dvojklikem prostředním tlačítkem přejdete na výchozí pohled (Předvolby › Navigace).",
"config.rule_parameter_columns":"Uvedeny jsou jen parametry, které mají v tabulce sloupec. Sloupec přidáte pomocí Přidat sloupec (+), abyste parametr mohli použít zde.",
"config.rule_suppression_columns":"Uvedeny jsou jen prvky, které mají v tabulce sloupec Potlačit. Sloupec přidáte pomocí Přidat sloupec (+), abyste mohli prvek řídit zde.",
"dialog.no_shown_body":"Není zobrazeno žádné těleso ke změně: zobrazte nějaké nebo zvolte Nové těleso",
"dialog.pattern_sketch_not_object":"Vyberte tělesa nebo prvky: náčrt není ani jedno. Opakujte jeho křivky vlastním nástrojem Pole nebo Zrcadlit v náčrtu, nebo jej nejprve vysuňte.",
"dialog.selection_guidance":"Vstup změníte jeho výběrem. Kliknutím na vybraný objekt jej odeberete; Ctrl/Cmd+klik výběr také přepíná. Zkontrolujte náhled a stiskněte OK.",
"dialog.selection_step":"{step} z {total}: Vyberte {input}",
"dialog.step":"Krok",
"document.changed_on_disk":"Soubor {name} byl změněn na disku",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Vytvoří konstrukční osu procházející dvěma body, vrcholy nebo body náčrtu. Použijte ji pro osu vedoucí mezi dvěma známými polohami.",
"help.construct.plane.along_path":"Vytvoří konstrukční rovinu kolmou k hraně nebo křivce v zadané poloze podél ní. Použijte to k náčrtu profilu pro tažení nebo příčného řezu podél cesty.",
"help.construct.plane.at_angle":"Vytvoří konstrukční rovinu natočenou o úhel od roviny nebo plochy kolem osy nebo hrany. Použijte ji pro šikmé náčrty, například u úhlového držáku.",
"help.construct.plane.axis_point":"Vytvoří konstrukční rovinu obsahující osu a bod mimo tuto osu. Vyberte osu počátku nebo konstrukční osu, přímou hranu nebo úsečku náčrtu a pak vrchol, bod náčrtu nebo konstrukční bod. Bod ležící na ose nemůže určit jednoznačnou rovinu.",
"help.construct.plane.midplane":"Vytvoří konstrukční rovinu uprostřed mezi dvěma rovinami nebo rovinnými plochami, nebo rovinu půlící jejich úhel, když se protínají pod úhlem. Použijte ji jako rovinu souměrnosti pro zrcadlení.",
"help.construct.plane.offset":"Vytvoří konstrukční rovinu rovnoběžnou s rovinou nebo rovinnou plochou ve zvolené vzdálenosti nebo procházející bodem. Použijte ji k náčrtu v dané výšce nad plochou.",
"help.construct.plane.perpendicular":"Vytvoří konstrukční rovinu, která obsahuje přímku nebo hranu a je kolmá k rovině nebo ploše. Použijte ji k náčrtu kolmo na model podél hrany.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Zkontrolujte typ kloubu (např. Pevný), ukotvení, limity kloubu a hodnoty řízené parametry.",
"joint_move.blocked_title":"Tento díl nelze posunout",
"joint_move.coarse":"Krok otáčení blízko osy (°)",
"joint_move.conflict":"Kloub tohoto dílu je v konfliktu s ostatními: {joint}.",
"joint_move.conflict_hint":"Upravte, potlačte nebo smažte kloub v konfliktu, aby mohly díl umístit ostatní klouby.",
"joint_move.distance":"Vzdálenost od začátku",
"joint_move.done":"Hotovo",
"joint_move.fine":"Krok otáčení daleko od osy (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Stopa {number}",
"nav.alias.help":"Shift+Alt+tažení levým tlačítkem otáčí, Shift+Alt+tažení prostředním posouvá, Shift+Alt+tažení pravým přibližuje; tažení prostředním tlačítkem také posouvá a pravým otáčí",
"nav.creo.help":"Tažení prostředním tlačítkem otáčí, Shift+prostřední posouvá, Ctrl+prostřední se svislým tažením přibližuje (tažením dolů přiblížíte); přibližuje i kolečko",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Myš a 3D myš otáčejí přes oba póly a zachovávají natočení. Přichytávání os klávesou Shift je vypnuto.",
"nav.free_orbit.label":"Volné otáčení",
"nav.free_orbit.snap_help":"Myš a 3D myš otáčejí přes oba póly a zachovávají natočení. Podržením klávesy Shift při otáčení tažením přichytíte směr pohledu a natočení.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+tažení levým tlačítkem posouvá, Shift+Alt+levé tlačítko přibližuje, Ctrl+tažení levým tlačítkem na prázdném místě otáčí",
"nav.maya.help":"Alt+tažení levým tlačítkem otáčí, Alt+prostřední tlačítko posouvá, Alt+pravé tlačítko přibližuje; tažení prostředním tlačítkem také posouvá",
"nav.nx.help":"Tažení prostředním tlačítkem otáčí, Shift+prostřední posouvá (v NX prostřední + pravé), Ctrl+prostřední přibližuje (v NX prostřední + levé); tažení pravým tlačítkem kameru nemění",
"nav.openscad.help":"Tažení levým tlačítkem na prázdném místě otáčí, Shift+tažení levým vybírá obdélníkem, tažení geometrie náčrtu ji upravuje; tažení pravým nebo prostředním tlačítkem posouvá, Shift+tažení pravým nebo prostředním přibližuje",
"nav.perspective.sketch":"Úpravy náčrtu používají ortografický pohled. Dokončením náčrtu přepnete na perspektivu.",
"nav.right_drag_orbits.help":"Vypnuto: tažení pravým tlačítkem kameru nemění a pravé tlačítko jen otevírá kontextovou nabídku. Volba přiřazení myši SolidWorks tuto možnost vypne.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Šroub s půlkulovou hlavou a vnitřním šestihranem",
"prefs.cut_preview_tint":"Zobrazit odebraný materiál červeně",
"prefs.cut_preview_tint_help":"Náhled vyplní materiál, který prvek odebírá, i tvar, který nahrazuje, červeným průhledným stínem. Když je vypnuto, jsou tyto výplně zcela průhledné a kreslí se jen jejich obrysy.",
"prefs.dark_parts_shading":"Zachovat tvar tmavých dílů",
"prefs.dark_parts_shading_help":"Stínuje pohled v lineárním světle s jemným světlem oblohy, takže tmavé plochy zachovají přechod a nezčernají",
"prefs.dead_zone_note":"Šrafované pásmo je mrtvá zóna: pohyb uvnitř něj se ignoruje.",
"prefs.default":"výchozí",
"prefs.design":"Výchozí nastavení návrhu",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Hrany a stínování",
"prefs.extend":"Prodloužit",
"prefs.extra_navigation":"Ctrl+tažení levým tlačítkem v prázdném prostoru otáčí pohled; podržením mezerníku pohled posunete.",
"prefs.extrude_view_isometric":"Při otevření Vysunutí otočit pohled do izometrického",
"prefs.extrude_view_return":"Po zavření Vysunutí vrátit dřívější pohled",
"prefs.follows_os":"Podle systému",
"prefs.font":"Písmo",
"prefs.font_fallback":"Znaky, které vybrané písmo neobsahuje, se nahradí vestavěným písmem, takže žádný popisek nezobrazí prázdný čtverec.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automaticky",
"prefs.graphics_card_missing":"Uložená grafická karta není k dispozici; použije se možnost Automaticky.",
"prefs.graphics_card_restart":"Projeví se po restartování aplikace SolidCraft. Tuto volbu přepíše WGPU_ADAPTER_NAME.",
"prefs.graphics_card_unused":"Uložená grafická karta se pro toto okno nepoužila; použitá karta je uvedena v nabídce Nápověda › O aplikaci SolidCraft a ve stavovém řádku. Zkuste možnost Automaticky, nebo nastavte WGPU_ADAPTER_NAME na jedinečnou část názvu karty.",
"prefs.graphics_note":"Rychlost, nebo hladkost obrazu: každá volba ukazuje svůj účinek na ukázce.",
"prefs.graphics_presets_note":"Předvolby nastaví níže uvedené volby najednou.",
"prefs.hide_constraint_glyphs_zoomed_out":"Skrýt symboly vazeb při oddálení",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Při nastavení Náčrty na Pod svým prvkem zobrazuje Historie vlevo každý náčrt o úroveň níž, pod prvním prvkem, který z něj vychází, pokud je dost široká pro názvy. Časová osa dole vždy zachovává pořadí vytvoření.",
"prefs.history_sketches_under_feature":"Pod svým prvkem",
"prefs.home_fit_size":"Velikost pro Domů a Přizpůsobit",
"prefs.home_fit_size_note":"Kolik pohledu model vyplní, když jej zarámuje Domů, Přizpůsobit, otevřený návrh nebo změna pohledu v navigátoru, ať je nastavení níže zapnuté, nebo ne. 100 %: vyplní pohled mezi panely, kompasem a navigační lištou.",
"prefs.icons_only":"Pouze ikony",
"prefs.imported_file":"Importovaný soubor",
"prefs.in_browser":"V prohlížeči",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Jazyk rozhraní",
"prefs.interface_note":"Vzhled aplikace SolidCraft a rozmístění jejích částí.",
"prefs.invert_curved_roll_arrows_note":"Dvě zakřivené šipky v rohu krychle natáčejí pohled v rovině obrazovky. Zapnuto: šipka po směru hodinových ručiček natáčí pohled proti směru hodinových ručiček a šipka proti směru hodinových ručiček ho natáčí po směru. Vypnuto: každá šipka natáčí pohled tak, jak je zakřivená.",
"prefs.invert_navigator_arrows_note":"Šipky kolem krychle otáčejí kameru tím směrem, kam míří, jako ve Fusion a Inventor: šipka vlevo míří doprava a stáčí kameru doprava. Vypnuto: šipka otáčí krychli na stranu, na které leží, takže šipka vlevo stáčí kameru doleva. Zakřivené šipky natočení tím nejsou dotčeny.",
"prefs.keep_work_on_tab_switch":"Ponechat dialogy a nástroje otevřené při přepínání návrhů",
"prefs.keep_work_on_tab_switch_note":"Každá karta návrhu si ponechá otevřený dialog nebo nástroj s tím, co jste v něm vybrali a zadali, i svou kartu panelu nástrojů. Po návratu k návrhu jsou zase tam. Vypnuto: přepnutí návrhu je zruší a zobrazí kartu Model.",
"prefs.labels":"Popisky",
"prefs.language_system":"Systém",
"prefs.layout":"Rozvržení",
"prefs.layout_note":"Kompaktní ukotví panely k okrajům okna. Průsvitnost prohlížeče je k dispozici v režimu Plovoucí. Stranu asistenta změníte na stránce Asistent.",
"prefs.left":"Vlevo",
"prefs.left_click":"Levé kliknutí",
"prefs.line_drag_draws_one":"Stisknutí a tažení nakreslí jednu úsečku",
"prefs.line_drag_draws_one_note":"V nástroji Úsečka nakreslí stisknutí, tažení a puštění jednu úsečku od místa stisknutí po místo puštění a tím kreslení skončí. Kliknutí stále kreslí řetězec. Vypnuto: tažení umístí bod tam, kde tlačítko pustíte, stejně jako kliknutí.",
"prefs.line_hover_tangent_arc":"Setrvání na posledním bodu úsečky přepne na tečný oblouk",
"prefs.line_hover_tangent_arc_note":"V nástroji Úsečka po nakreslení úseku odsuňte ukazatel od posledního bodu řetězce, vraťte se a podržte jej na něm v klidu: další kliknutí ukončí tečný oblouk a stejné gesto se vrací k úsečkám. Vypnuto: setrvání tam nic nedělá.",
"prefs.linked_designs":"Propojené návrhy",
"prefs.live_input":"Živý vstup",
"prefs.live_preview":"Živý náhled",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Přiřazení myši",
"prefs.navigation":"Navigace",
"prefs.navigation_note":"Jak myš, trackpad a 3D myš pohybují pohledem.",
"prefs.navigator_fit":"Přizpůsobit model po změně pohledu v navigátoru",
"prefs.navigator_fit_note":"Plocha, roh nebo šipka krychle pohledu, případně osa orientačního ovladače, také zaměří pohled na střed modelu z jediné vzdálenosti, ze které je celý vidět ze všech stran (jeho ohraničující koule). Domů při zapnutí používá stejné přiblížení a střed, takže pohledy zvolené po něm se jen otáčejí. Vypnuto: pohled se otáčí na místě a zachovává svůj cíl a přiblížení.",
"prefs.network_host_remove":"Odebrat",
"prefs.network_locations":"Povolit síťová umístění v návrzích",
"prefs.network_locations_note":"Vypnuto: propojené soubory návrhu na jiném počítači (\\\\server\\share) se otevírají jen ze zde uvedených serverů nebo poté, co jeden povolíte na výzvu.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Umístění",
"prefs.prefer_free_sketch_points":"Při překrytí bodů upřednostnit pohyblivé body náčrtu",
"prefs.preview_choices":"Náhled vašich voleb",
"prefs.preview_tint_new_faces":"Podbarvit nový povrch v náhledu",
"prefs.preview_tint_new_faces_help":"Náhled prvku, který mění těleso, může vykreslit povrch, který prvek přidává, barvou náhledu. Když je vypnuto, těleso se vykreslí samo o sobě.",
"prefs.print_face_highlight_tip":"Jak výrazně se tisková plocha tělesa v pohledu obarví a obtáhne. 0 % nezobrazí žádné zvýraznění.",
"prefs.profile_active":"Aktivní profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Použít předchozí rozpočet geometrie náhledu renderu",
"prefs.render_previous_geometry_budget_help":"Obnoví předchozí pevný limit geometrie (512 MiB na 64bitovém desktopu, 128 MiB jinde) místo rozpočtu podle zařízení.",
"prefs.reports_saved":"{n} uloženo",
"prefs.ribbon_click_ends_tool":"Kliknutím na tlačítko spuštěného nástroje jej ukončíte",
"prefs.ribbon_click_ends_tool_note":"Kliknutí na zvýrazněné tlačítko právě používaného nástroje náčrtu na pásu karet nástroj ukončí, takže kliknutí v pohledu opět vybírají. Vypnuto: kliknutí nástroj spustí znovu.",
"prefs.ribbon_reveal":"Ukazovat výsledky hledání na pásu karet",
"prefs.ribbon_reveal_note":"Najetí na výsledek v Hledat příkazy ukáže, kde se příkaz na pásu karet nachází: jeho kartu, tlačítko nebo řádek v rozbalovací nabídce panelu. Příkaz spuštěný z hledání tam zabliká a běžící příkaz z rozbalovací nabídky označí svůj panel.",
"prefs.right_click":"Pravé kliknutí",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Vrátit se k předchozímu pohledu",
"prefs.sketch_exit_view.unless_rotated":"Vrátit, pokud nebyl pohled otočen",
"prefs.sketch_exit_view_note":"Kam se pohled přesune po příkazu Dokončit náčrt, Zrušit nebo dvojitém Esc.",
"prefs.sketch_face_activates_part":"Náčrt na ploše dílu tento díl aktivuje",
"prefs.sketch_face_activates_part_note":"Náčrt zahájený na ploše tělesa jiné komponenty nejprve aktivuje tuto komponentu, takže jí náčrt patří a v prohlížeči zůstává u tohoto dílu. Díl zůstane aktivní i poté. Vypnuto: náčrt patří aktivní komponentě.",
"prefs.sketch_open_look_at":"Při otevření náčrtu natočit pohled k němu",
"prefs.sketch_open_look_at_note":"Vypnuto: vytvoření nebo úprava náčrtu ponechá pohled beze změny. Pohled kolmo natočí pohled k náčrtu, kdykoli ho chcete.",
"prefs.sketch_recent_snap":"Automaticky přichytávat k nedávným středům a středním bodům",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Chyba",
"prefs.status_selected":"Vybráno",
"prefs.status_warning":"Varování",
"prefs.structure.appearance":"Vzhled",
"prefs.structure.appearance_note":"Barvy, text a usnadnění přístupu.",
"prefs.structure.in_profile":"V profilu",
"prefs.structure.layout":"Rozvržení",
"prefs.structure.layout_note":"Kde jsou umístěné části okna.",
"prefs.structure.look":"Zobrazení",
"prefs.structure.measure_pointer":"Měření a ukazatel",
"prefs.structure.mouse3d":"3D myš",
"prefs.structure.mouse3d_note":"SpaceMouse a SpaceNavigator.",
"prefs.structure.navigation_note":"Myš a touchpad. 3D myš má vlastní stránku.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Změněno od uložení",
"prefs.structure.profile_hover":"Uloženo v profilech nastavení",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Náčrt",
"prefs.structure.tools":"Nástroje",
"prefs.structure.tools_note":"Jak se chovají nástroje pro modelování.",
"prefs.structure.work":"Práce",
"prefs.supersampling_brief":"Vykreslí pohled větší a pak jej zmenší s filtrováním: velmi ostré, ale náročnější.",
"prefs.tab_accent_note":"Zvýrazňovací barva se řídí aktivní kartou",
"prefs.theme_file":"soubor motivu",
@@ -2501,6 +2600,10 @@
"render.base_color":"Základní barva · sRGB",
"render.base_metallic":"Kovový podíl",
"render.base_opaque_only":"Tento editor zachovává sémantiku neprůhledných těles. Pro optický průchod světla použijte samostatné ovládací prvky skla.",
"render.bloom_help":"Kreativní záře z lineárních jasů se třemi normalizovanými průchody. Poloměr v pixelech výstupu, přičtení před sRGB. Nejde o simulaci čočky, objemu ani zlepšení konvergence. Surové EXR se nemění.",
"render.bloom_opaque":"Záře vyžaduje neprůhledný výstup. Průhledné PNG se odmítne, neprovede se skryté sloučení.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Nejprve vyberte styl ve Vzhledech",
"ui.agent_chat_model_no_tools":"{model} nemůže používat nástroje SolidCraftu, takže umí jen chatovat. Vyberte model s podporou nástrojů.",
"ui.agent_chat_model_rejected":"Agent nepřijal model {model}: {error}",
"ui.agent_chat_model_search":"Hledat modely…",
"ui.agent_chat_model_tip":"Model, který agent používá. Vaše volba se pro tohoto agenta zapamatuje.",
"ui.agent_chat_models_failed":"Seznam modelů se nepodařilo načíst: {error}",
"ui.agent_chat_models_heading":"Dostupné modely",
"ui.agent_chat_models_listing":"Načítání seznamu modelů…",
"ui.agent_chat_models_none":"Endpoint neuvádí žádné modely",
"ui.agent_chat_models_not_a_list":"Odpověď nebyla seznam modelů",
"ui.agent_chat_new":"Nový chat",
"ui.agent_chat_new_confirm":"Začít nový chat? Aktuální bude vymazán.",
"ui.agent_chat_next_picture":"Další obrázek",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Oprávnění",
"ui.ai_preset":"Předvolba",
"ui.ai_protocol":"Protokol",
"ui.ai_reasoning_effort":"Úroveň uvažování",
"ui.ai_reasoning_effort_field_hint":"prázdné = výchozí hodnota poskytovatele",
"ui.ai_reasoning_effort_hint":"Volitelné. Odesílá se na endpoint jako `reasoning_effort`; přípustné hodnoty se u jednotlivých poskytovatelů liší (například `low`, `high` nebo `max`). Hodnotu, kterou zde nastavíte, SolidCraft nikdy nenahradí. Ponechte prázdné, aby se nic neodeslalo a zůstala výchozí hodnota poskytovatele.",
"ui.ai_remove":"Odebrat",
"ui.ai_request_timed_out":"Model odpovídal déle než {seconds} s. Časový limit požadavku pro tento endpoint můžete zvýšit v Předvolbách › Asistent.",
"ui.ai_request_timeout":"Časový limit požadavku",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tečna: vyberte kružnici/oblouk nebo otevřený splajn/kuželosečku, pak bod dotyku (volné křivky: koncové body)",
"ui.construction.external_hint":"Tečna: vyberte kružnici nebo oblouk, vnější bod, pak požadované řešení",
"ui.construction.free_hint":"Konstrukční přímka: klikněte na dva body; pravým tlačítkem začnete znovu",
"ui.construction.normal_needs_length":"Nekonečná přímka je vždy konstrukční: zadejte délku, abyste nakreslili běžnou úsečku",
"ui.construction.point_hint":"Konstrukční přímka: klikněte na bod, kterým má procházet",
"ui.construction.reference_hint":"Konstrukční přímka: vyberte přímku, pak bod; pravým tlačítkem změníte referenci",
"ui.construction.ribbon_label":"Pom. přímky",
"ui.construction.side_hint":"Konstrukční přímka: klikněte na stranu, kterým směrem přímka vede; pravým tlačítkem začnete znovu",
"ui.emboss_wrap_note":"Profily z navzájem kolmých úseček, tečné k jednomu podporovanému válci, se obalí automaticky. Cíl zvolíte výběrem stěny.",
"ui.end_radius":"Koncový poloměr",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Explicitní",
"ui.equation_form":"Tvar",
"ui.equation_note":"Proměnná je prosté číslo: sin(t) ji bere v radiánech. Výsledek bez jednotky je v jednotce návrhu.",
"ui.equation_note_range":"Proměnná je délka, stejně jako její rozsah: kombinujte ji s parametry délky a pro sin() ji vydělte délkou. Výsledek bez jednotky je v jednotce návrhu.",
"ui.equation_parametric":"Parametrický",
"ui.equation_variable_unit":"Proměnná má jednotku rozsahu",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4612,6 +4749,7 @@
"ui.hideOrigin":"Skrýt počátek",
"ui.hidePlanes":"Skrýt roviny",
"ui.hideProfile":"Skrýt profil",
"ui.hide_component_history":"Skrýt její historii",
"ui.hide_origin_by_default":"Ve výchozím stavu skrýt počátek",
"ui.hide_origin_note":"Nové návrhy začínají se skrytou složkou Počátek. Návrh si ponechá vlastní nastavení počátku, jakmile ho zobrazíte nebo skryjete.",
"ui.history_back":"O krok zpět",
@@ -4619,6 +4757,7 @@
"ui.history_edge_hint":"dvakrát klikněte na hranu",
"ui.history_sketch_listed_under":"Uvedeno pod prvkem {feature}",
"ui.history_title":"Historie",
"ui.history_toggle_names":"Zobrazit nebo skrýt názvy prvků",
"ui.history_waits_for_editor":"Zpět, Znovu a Historie počkají, dokud se neotevře editor prvku",
"ui.hole":"Otvor",
"ui.hole_tap_type":"Typ závitu otvoru",
"ui.hole_type":"Typ otvoru",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} obsahuje neuložené změny, proto byl vložen jeho uložený soubor. Uložte jej a pak použijte Aktualizovat odkazy, aby se změny převzaly.",
"ui.insert_design.unsaved":"Neuložené změny",
"ui.inspect":"Analýza",
"ui.instances":"Instance",
"ui.intersect":"Průnik",
"ui.isolate":"Izolovat",
"ui.join":"Sjednotit",
@@ -4655,12 +4797,14 @@
"ui.joints":"Klouby",
"ui.keyboard_shortcuts":"Klávesové zkratky",
"ui.language":"Jazyk",
"ui.lasso_select":"Laso (tažením nakreslete volnou smyčku: vybere vše, co leží celé uvnitř)",
"ui.layout_compact":"Kompaktní",
"ui.layout_floating":"Plovoucí",
"ui.length":"Délka",
"ui.length_decimals":"Desetinná místa délky",
"ui.light":"Světlý",
"ui.line":"Úsečka",
"ui.line_arc_hint":"Tečný oblouk: klikněte na konec oblouku. Znovu setrvejte na posledním bodu pro úsečky; dokončíte pravým kliknutím nebo klávesou Esc",
"ui.link_copies":"Propojit shodné kopie",
"ui.link_copies_keep":"Ponechat",
"ui.link_copies_link":"Propojit",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Přestaví díl a nahradí všechny přidané prvky. Aktualizují se všechny výskyty této komponenty.",
"ui.paste":"Vložit",
"ui.path":"Cesta",
"ui.pattern_object_type_tip":"Tělesa: pevné tvary vybrané v pohledu nebo v prohlížeči; každé se zkopíruje celé.\nPrvky: kroky Historie, například vysunutí nebo otvor, vybrané v Historii nebo na ploše, kterou vytvořily; krok se zopakuje.\nNáčrt není ani jedno: opakujte jeho křivky vlastním nástrojem Pole nebo Zrcadlit v náčrtu, nebo jej nejprve vysuňte.",
"ui.pattern_on_path":"Pole po cestě",
"ui.perforate_margin_default":"z průměru",
"ui.perforate_pitch":"Rozteč",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Mnohoúhelník",
"ui.preferences":"Předvolby",
"ui.press_a_key":"stiskněte klávesu…",
"ui.print_face_body_not_sent":"Těleso této plochy se neodesílá: nejprve ho přidejte do Tělesa",
"ui.print_face_cleared":"{body}: tisková plocha zrušena",
"ui.print_face_input":"Tisková plocha",
"ui.print_face_one_body":"Tisková plocha patří jednomu tělesu: odešlete toto těleso samostatně, abyste ji změnili",
"ui.print_face_pick":"Vyberte rovinnou plochu objemového tělesa, aby se stala tiskovou plochou",
"ui.print_face_set":"{body}: tisková plocha nastavena; Odeslat do sliceru položí těleso na ni",
"ui.profile":"Profil",
@@ -4908,6 +5053,7 @@
"ui.showDimension":"Zobrazit kótu",
"ui.showOrigin":"Zobrazit počátek",
"ui.showPlanes":"Zobrazit roviny",
"ui.show_component_history":"Zobrazit její historii",
"ui.view_angles_convention":"Úhly ve stupních kolem svislé osy. Stáčení 0° je pohled zepředu, 90° zleva, −90° zprava, 180° zezadu; náklon 90° je pohled shora; kladné natočení otáčí model ve směru hodinových ručiček.",
"ui.view_angles_help":"Zobrazuje náklon, stáčení a natočení pohledu ve stupních a jeho projekci pod orientačním ovladačem. Kliknutím na údaj zadáte přesné úhly.",
"update.check_unavailable":"Pro tuto instalaci není kontrola aktualizací dostupná.",
"update.checking":"Kontrola…",
"update.copy":"Kopírovat",
"update.dmg_opened":"Obraz disku je otevřený a ověřený: přetáhněte SolidCraft do Aplikací místo staré kopie a poté SolidCraft restartujte.",
"update.dmg_opened":"Obraz disku je otevřený a ověřený: ukončete SolidCraft, přetáhněte nový SolidCraft do Aplikací místo staré kopie a poté SolidCraft znovu otevřete.",
"update.download":"Stáhnout",
"update.download_open":"Stáhnout a otevřít",
"update.downloading":"Stahování a ověřování… {done} z {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Otevřít propojený návrh?",
"web.open_link_confirm":"Existují neuložené změny. Otevřít propojený návrh na nové kartě?",
"Sections (one sketch each)":"Tværsnit (én skitse til hvert)",
"Select Other":"Vælg andet",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Vælg andet: Hold venstre museknap nede uden at flytte markøren på modellen (eller højreklik › Vælg andet…) for at vise alt under markøren. Klik igen samme sted for at vælge næste objekt. Dobbeltklik på den midterste museknap for at gå til Hjem (Indstillinger › Navigation).",
"config.rule_parameter_columns":"Kun parametre med en kolonne i tabellen vises. Tilføj en kolonne med Tilføj kolonne (+) for at bruge parameteren her.",
"config.rule_suppression_columns":"Kun features med en Undertryk-kolonne i tabellen vises. Tilføj en kolonne med Tilføj kolonne (+) for at styre undertrykkelsen her.",
"contact.components_count":"{count} komponenter",
"contact.enabled_label":"aktiveret",
"coupling.gear_1":"Tandhjul 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Mål: {name}",
"dialog.edit_title":"REDIGÉR {title}",
"dialog.no_shown_body":"Intet vist emne at ændre: Vis et, eller vælg Nyt emne",
"dialog.pattern_sketch_not_object":"Vælg emner eller features: En skitse er ingen af delene. Gentag dens kurver med skitsens eget Mønster eller Spejling, eller ekstruder den først.",
"dialog.selection_guidance":"Vælg et input for at ændre det. Klik på valgte objekter for at fjerne dem; Ctrl/Cmd-klik skifter også deres valgstatus. Gennemgå forhåndsvisningen, og tryk derefter på OK.",
"dialog.selection_step":"{step} af {total}: Vælg {input}",
"dialog.step":"Trin",
"document.changed_on_disk":"{name} er ændret på disken",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Opretter en konstruktionsakse gennem to punkter, hjørnepunkter eller skitsepunkter. Brug den til en akse mellem to kendte positioner.",
"help.construct.plane.along_path":"Opretter et konstruktionsplan vinkelret på en kant eller kurve i en given position langs den. Brug det til at skitsere en profil til et sweep eller et snit af en bane.",
"help.construct.plane.at_angle":"Opretter et konstruktionsplan, der er drejet med en vinkel fra et plan eller en flade omkring en akse eller kant. Brug det til skrå skitser, f.eks. et vinklet beslag.",
"help.construct.plane.axis_point":"Opretter et konstruktionsplan, der indeholder en akse og et punkt uden for aksen. Vælg en akse fra nulpunktet eller en konstruktionsakse, en ret kant eller skitselinje og derefter et hjørnepunkt, skitsepunkt eller konstruktionspunkt. Et punkt på aksen kan ikke definere et entydigt plan.",
"help.construct.plane.midplane":"Opretter et konstruktionsplan midt mellem to planer eller plane flader eller halverende dem, hvor de mødes i en vinkel. Brug det som symmetriplan til spejling.",
"help.construct.plane.offset":"Opretter et konstruktionsplan parallelt med et plan eller en plan flade i en afstand eller gennem et punkt. Brug det til at skitsere i en bestemt højde over en flade.",
"help.construct.plane.perpendicular":"Opretter et konstruktionsplan, der indeholder en linje eller kant og står vinkelret på et plan eller en flade. Brug det til at skitsere opretstående på en model langs en kant.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Kontrollér ledtypen (f.eks. Stiv), fastgørelse, bevægelsesgrænser for led og parameterstyrede værdier.",
"joint_move.blocked_title":"Kan ikke flytte dette emne",
"joint_move.coarse":"Rotationstrin nær aksen (°)",
"joint_move.conflict":"Et led på dette emne er i konflikt med de andre: {joint}.",
"joint_move.conflict_hint":"Redigér, undertryk eller slet det modstridende led, så de andre led kan placere emnet.",
"joint_move.distance":"Afstand fra start",
"joint_move.done":"Færdig",
"joint_move.fine":"Rotationstrin langt fra aksen (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Spor {number}",
"nav.alias.help":"Shift+Alt+træk med venstre museknap roterer visningen, Shift+Alt+midterste panorerer, Shift+Alt+højre zoomer; træk med midterste museknap panorerer også, og træk med højre roterer visningen",
"nav.blender.help":"Træk med midterste museknap roterer visningen, Shift+midterste panorerer, Ctrl+midterste zoomer; træk med højre museknap påvirker ikke kameraet",
"nav.creo.help":"Træk med midterste museknap roterer visningen, Shift+midterste panorerer, Ctrl+træk lodret med midterste zoomer (ned for at zoome ind); rulning med hjulet zoomer",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Musen og 3D-musen roterer gennem begge poler og bevarer rulning. Snap til akser med Shift er slået fra.",
"nav.free_orbit.label":"Fri rotation af visningen",
"nav.free_orbit.snap_help":"Musen og 3D-musen roterer gennem begge poler og bevarer rulning. Hold Shift nede under et rotationstræk for at snappe visningsretningen og rulningen.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+træk med venstre museknap panorerer, Shift+Alt+venstre zoomer, Ctrl+træk med venstre fra et tomt område roterer visningen",
"nav.inventor.help":"Træk med midterste museknap panorerer, Shift+midterste roterer visningen, Ctrl+midterste zoomer, træk med højre roterer visningen",
"nav.maya.help":"Alt+træk med venstre museknap roterer visningen, Alt+midterste panorerer, Alt+højre zoomer; træk med midterste museknap panorerer også",
"nav.nx.help":"Træk med midterste museknap roterer visningen, Shift+midterste panorerer (NX's midterste + højre), Ctrl+midterste zoomer (NX's midterste + venstre); træk med højre museknap påvirker ikke kameraet",
"nav.openscad.help":"Træk med venstre museknap i et tomt område roterer visningen, Shift+venstre markerer med en ramme, træk i skitsegeometri redigerer den; træk med højre eller midterste museknap panorerer, Shift+højre eller Shift+midterste zoomer",
"nav.perspective.sketch":"Skitseredigering bruger ortografisk visning. Afslut skitsen for at skifte til perspektiv.",
"nav.right_drag_orbits.help":"Slået fra: Træk med højre museknap påvirker ikke kameraet, og højre knap åbner kun genvejsmenuen. Hvis du vælger SolidWorks-musetildelingen, slås dette fra.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Rundhovedet skrue med indvendig sekskant",
"parts.family.washer_uss":"Almindelig skive, USS (bred)",
"parts.holes":"Huller (valgfrit)",
"parts.placement_hint":"vælg et eller flere huller for at sætte en del i hvert, eller tryk OK for at placere den ved nulpunktet",
"parts.system":"Enhedssystem",
"parts.system.inch":"Tommer",
"parts.system.metric":"Metrisk",
"pattern.alignment_2":"Justering 2",
"pattern.alignment_hint":"Antal omfatter originalen. Centrér fordeler kopierne ligeligt; Vend vælger siden med den ekstra kopi ved et lige samlet antal.",
"pattern.direction_1":"Retning 1",
@@ -2113,6 +2166,8 @@
"prefs.button_left":"Træk med venstre museknap",
"prefs.button_middle":"Træk med midterste museknap",
"prefs.button_right":"Træk med højre museknap",
"prefs.carousel_next":"Næste",
"prefs.carousel_previous":"Forrige",
"prefs.choose_font":"Vælg skrifttypefil…",
"prefs.click":"Klik",
"prefs.contact_shading":"Blød kontaktskygning",
@@ -2125,6 +2180,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Krumme overflader",
"prefs.curves":"Krumme overflader",
"prefs.cut_preview_tint":"Vis fjernet materiale i rødt",
"prefs.cut_preview_tint_help":"En forhåndsvisning udfylder det materiale, som en feature fjerner, og den form, den erstatter, med et rødt, gennemsigtigt spøgelse. Når indstillingen er slået fra, er udfyldningerne helt gennemsigtige, og kun deres omrids tegnes.",
"prefs.dark_parts_shading":"Bevar formen på mørke dele",
"prefs.dark_parts_shading_help":"Skygger visningen i lineært lys med en blød himmelfyld, så mørke flader beholder et farveforløb i stedet for at blive sorte",
"prefs.dead_zone_note":"Det skraverede bånd er dødzonen: Bevægelser inden for det ignoreres.",
"prefs.default":"standard",
"prefs.design":"Standardindstillinger for design",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Kanter og skygning",
"prefs.extend":"Udvid",
"prefs.extra_navigation":"Ctrl+træk med venstre museknap i et tomt område roterer visningen; hold mellemrumstasten nede for at panorere.",
"prefs.extrude_view_isometric":"Drej visningen til isometrisk, når Ekstrudering åbnes",
"prefs.extrude_view_return":"Gå tilbage til den tidligere visning, når Ekstrudering lukkes",
"prefs.follows_os":"Følger operativsystemet",
"prefs.font":"Skrifttype",
"prefs.font_fallback":"Tegn, som den valgte skrifttype mangler, vises med den indbyggede skrifttype, så ingen tekst viser en tom firkant.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatisk",
"prefs.graphics_card_missing":"Det gemte grafikkort er ikke tilgængeligt. Automatisk bruges i stedet.",
"prefs.graphics_card_restart":"Træder i kraft efter genstart af SolidCraft. WGPU_ADAPTER_NAME tilsidesætter dette valg.",
"prefs.graphics_card_unused":"Det gemte grafikkort blev ikke brugt til dette vindue. Kortet i brug vises i Hjælp › Om og i statuslinjen. Prøv Automatisk, eller sæt WGPU_ADAPTER_NAME til en entydig del af kortets navn.",
"prefs.graphics_note":"Afvej hastighed mod udjævning. Hvert valg viser sin virkning på et eksempel.",
"prefs.graphics_presets_note":"Forudindstillinger angiver de nedenstående valg samlet.",
"prefs.hide_constraint_glyphs_zoomed_out":"Skjul bindingssymboler, når der zoomes ud",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Når Skitser er sat til Under deres feature, viser historikken til venstre hver skitse ét niveau inde under den første feature, der er bygget på den, så snart den er bred nok til navne. Tidslinjen nederst bevarer altid oprettelsesrækkefølgen.",
"prefs.history_sketches_under_feature":"Under deres feature",
"prefs.hold_stop_snapping":"Hold nede for at slå snapping fra",
"prefs.home_fit_size":"Størrelse ved Hjem og Tilpas",
"prefs.home_fit_size_note":"Hvor meget af visningen modellen fylder, når Hjem, Tilpas, et åbnet design eller et skift af visning i navigatoren rammer den ind, uanset om indstillingen nedenfor er slået til. 100 %: Fylder visningen mellem panelerne, kompasset og navigationslinjen.",
"prefs.icons_only":"Kun ikoner",
"prefs.imported_file":"Importeret fil",
"prefs.in_browser":"I modeltræet",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Sprog i brugergrænsefladen",
"prefs.interface_note":"SolidCrafts udseende og placeringen af dets dele.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Vend de buede rulningspile om",
"prefs.invert_curved_roll_arrows_note":"De to buede pile i kubens hjørne ruller visningen i skærmplanet. Slået til: Pilen med uret ruller mod uret, og pilen mod uret ruller med uret. Slået fra: Hver pil ruller visningen den vej, den krummer.",
"prefs.invert_navigator_arrows_note":"Pilene rundt om kuben roterer kameraet i den retning, de peger, som i Fusion og Inventor: Pilen til venstre peger mod højre og svinger kameraet til højre. Slået fra: En pil drejer kuben mod den side, den sidder på, så venstre pil svinger kameraet til venstre. De buede rulningspile påvirkes ikke.",
"prefs.keep_work_on_tab_switch":"Behold dialoger og værktøjer åbne, når du skifter design",
"prefs.keep_work_on_tab_switch_note":"Hver designfane beholder sin åbne dialog eller sit åbne værktøj med det, du har valgt og skrevet i den, og sin fane på båndet. De er der igen, når du vender tilbage til designet. Slået fra: Skift af design annullerer dem og viser fanen Model.",
"prefs.labels":"Etiketter",
"prefs.language_system":"System",
"prefs.layout":"Layout",
"prefs.layout_note":"Kompakt fastgør panelerne til vinduets kanter. Gennemsigtighed i modelbrowseren er tilgængelig i Flydende. Skift assistentens side på siden Assistent.",
"prefs.left":"Venstre",
"prefs.left_click":"Venstreklik",
"prefs.line_drag_draws_one":"Tryk og træk tegner én linje",
"prefs.line_drag_draws_one_note":"I værktøjet Linje tegner tryk, træk og slip én linje fra trykket til slippet, og linjen slutter dér. Klik tegner stadig en kæde. Slået fra: Et træk placerer et punkt, hvor det slippes, ligesom et klik gør.",
"prefs.line_hover_tangent_arc":"Hvil markøren på en linjes sidste punkt for at skifte til en tangentbue",
"prefs.line_hover_tangent_arc_note":"Når et segment er tegnet i værktøjet Linje, så flyt markøren væk fra kædens sidste punkt, kom tilbage, og hold den stille på punktet: Næste klik afslutter en tangentbue, og samme bevægelse går tilbage til linjer. Slået fra: Det gør ingenting at hvile markøren der.",
"prefs.linked_designs":"Linkede designs",
"prefs.live_input":"Løbende input",
"prefs.live_preview":"Løbende forhåndsvisning",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Musetildeling",
"prefs.navigation":"Navigation",
"prefs.navigation_note":"Hvordan musen, pegefeltet og 3D-musen styrer visningen.",
"prefs.navigator_fit":"Tilpas modellen efter et skift af visning i navigatoren",
"prefs.navigator_fit_note":"En flade, et hjørne eller en pil på visningskuben eller en akse på orienteringsgizmoen ser også mod modellens midte fra den ene afstand, der får den til at passe fra alle sider (dens omsluttende kugle). Hjem bruger samme zoom og centrum, mens dette er slået til, så visninger, der vælges bagefter, kun drejer. Slået fra: Visningen drejer på stedet og beholder sit mål og sin zoom.",
"prefs.network_host_remove":"Fjern",
"prefs.network_locations":"Tillad netværksplaceringer i designs",
"prefs.network_locations_note":"Slået fra: Et designs linkede filer på en anden computer (\\\\server\\share) åbnes kun fra de servere, der er angivet her, eller efter at du har tilladt en, når du bliver spurgt.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Placering",
"prefs.prefer_free_sketch_points":"Foretræk flytbare skitsepunkter, når punkter overlapper",
"prefs.preview_choices":"Forhåndsvisning af dine valg",
"prefs.preview_tint_new_faces":"Farv ny overflade i en forhåndsvisning",
"prefs.preview_tint_new_faces_help":"En forhåndsvisning af en feature, der ændrer et emne, kan tegne den overflade, den tilføjer, i forhåndsvisningens farve. Når indstillingen er slået fra, tegnes emnet, som det er.",
"prefs.print_face_highlight":"Fremhævning af printflade",
"prefs.print_face_highlight_tip":"Hvor kraftigt et legemes printflade farves og omrids i visningen. 0 % viser ingen fremhævning.",
"prefs.profile_active":"Aktiv profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Brug det tidligere geometribudget til forhåndsvisning af rendering",
"prefs.render_previous_geometry_budget_help":"Gendan den tidligere faste geometrigrænse (512 MiB på 64-bit-computere, 128 MiB andre steder) i stedet for det enhedsbaserede budget.",
"prefs.reports_saved":"{n} gemt",
"prefs.ribbon_click_ends_tool":"Et klik på det kørende værktøjs knap afslutter det",
"prefs.ribbon_click_ends_tool_note":"Et klik på den lysende knap på båndet for det skitseværktøj, der er i brug, afslutter værktøjet, så klik i visningen markerer igen. Slået fra: Klikket starter værktøjet igen.",
"prefs.ribbon_reveal":"Vis søgeresultater på båndet",
"prefs.ribbon_reveal_note":"Når du holder musen over et resultat i Søg efter kommandoer, vises det, hvor kommandoen sidder på båndet: dens fane, dens knap eller dens række i et panels rullemenu. En kommando, der startes fra søgningen, blinker dér, og en kørende kommando fra en rullemenu markerer sit panel.",
"prefs.right_click":"Højreklik",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Vend tilbage til den forrige visning",
"prefs.sketch_exit_view.unless_rotated":"Vend tilbage, medmindre visningen er roteret",
"prefs.sketch_exit_view_note":"Hvor visningen går hen efter Afslut skitse, Annullér eller et dobbelt tryk på Esc.",
"prefs.sketch_face_activates_part":"Når du skitserer på en dels flade, bliver delen aktiv",
"prefs.sketch_face_activates_part_note":"En skitse, der startes på en flade af en anden komponents emne, aktiverer først den komponent, så skitsen hører til den og bliver hos den del i modeltræet. Delen forbliver aktiv bagefter. Slået fra: Skitsen hører til den aktive komponent.",
"prefs.sketch_open_look_at":"Vend visningen mod en skitse, når den åbnes",
"prefs.sketch_open_look_at_note":"Slået fra: Når en skitse oprettes eller redigeres, forbliver visningen, som den er. Se på vender visningen mod skitsen, når du ønsker det.",
"prefs.sketch_recent_snap":"Automatisk snap til nylige centre og midtpunkter",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Fejl",
"prefs.status_selected":"Valgt",
"prefs.status_warning":"Advarsel",
"prefs.structure.appearance":"Udseende",
"prefs.structure.appearance_note":"Farver, tekst og tilgængelighed.",
"prefs.structure.in_profile":"I profil",
"prefs.structure.layout":"Layout",
"prefs.structure.layout_note":"Hvor vinduets dele sidder.",
"prefs.structure.look":"Look",
"prefs.structure.measure_pointer":"Mål og markør",
"prefs.structure.mouse3d":"3D-mus",
"prefs.structure.mouse3d_note":"SpaceMouse og SpaceNavigator.",
"prefs.structure.navigation_note":"Mus og pegefelt. 3D-musen har sin egen side.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Ændret, siden den blev gemt",
"prefs.structure.profile_hover":"Gemt i indstillingsprofiler",
"render.bloom_help":"En kreativ glød, der kun påvirker output, ud fra positive lineære højlys og spredt med tre normaliserede box-pas. Radius er i outputpixels. Lægges til i lineært visningslys før sRGB; ikke en linseeffekt, en volumeneffekt eller en forbedring af konvergens. Den rå EXR er uændret.",
"render.bloom_opaque":"Bloom kræver uigennemsigtigt output. Gennemsigtig PNG afvises og gøres ikke stiltiende uigennemsigtig.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Vælg først et udseende under Udseender",
"ui.agent_chat_model_no_tools":"{model} kan ikke bruge SolidCrafts værktøjer og kan derfor kun chatte. Vælg en model med understøttelse af værktøjer.",
"ui.agent_chat_model_rejected":"Agenten accepterede ikke {model}: {error}",
"ui.agent_chat_model_search":"Søg efter modeller…",
"ui.agent_chat_model_tip":"Modellen, som agenten bruger. Dit valg huskes for denne agent.",
"ui.agent_chat_models_failed":"Kunne ikke hente listen over modeller: {error}",
"ui.ai_reasoning_effort_hint":"Valgfrit. Sendes til slutpunktet som `reasoning_effort`; accepterede værdier varierer fra udbyder til udbyder (for eksempel `low`, `high` eller `max`). En værdi, du angiver her, erstattes aldrig af SolidCraft. Lad feltet stå tomt for ikke at sende noget og beholde udbyderens standard.",
"ui.ai_remove":"Fjern",
"ui.ai_request_timed_out":"Modellen brugte mere end {seconds} s. Du kan hæve tidsgrænsen for anmodninger til dette endepunkt under Indstillinger › Assistent.",
"ui.ai_request_timeout":"Tidsgrænse for anmodning",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tangent: Vælg en cirkel/bue eller en åben spline/keglesnit, og vælg derefter røringspunktet (frie kurver: endepunkter)",
"ui.construction.external_hint":"Tangent: Vælg en cirkel eller bue og et eksternt punkt, og vælg derefter den ønskede løsning",
"ui.construction.free_hint":"Hjælpelinje: Klik på to punkter; højreklik for at starte forfra",
"ui.construction.normal_needs_length":"En uendelig linje er altid en hjælpelinje: Skriv en længde for at tegne en normal linje",
"ui.construction.point_hint":"Hjælpelinje: Klik på det punkt, linjen skal gå igennem",
"ui.construction.reference_hint":"Hjælpelinje: Vælg en ret linje og derefter et punkt; højreklik for at skifte reference",
"ui.construction.ribbon_label":"Hjælpelinjer",
"ui.construction.side_hint":"Hjælpelinje: Klik på den side, linjen går mod; højreklik for at starte forfra",
"ui.context_menu":"Genvejsmenu",
"ui.continuity_crease":"Knæk",
"ui.continuity_curvature":"Krumning",
"ui.continuity_curvature_change":"Ændring i krumning",
"ui.continuity_g0":"G0-knæk",
"ui.continuity_g1":"G1-tangentkontinuitet",
"ui.continuity_g2":"G2-krumningskontinuitet",
"ui.continuity_gap":"Åbning mellem flader",
"ui.continuity_position":"Positionskontinuitet",
"ui.continuity_tangent":"Tangentkontinuitet",
"ui.copy":"Kopiér",
"ui.corner":"Hjørne",
"ui.corners":"Hjørner",
@@ -4378,6 +4511,7 @@
"ui.dark":"Mørk",
"ui.default_modelling_orientation":"Standardorientering for modellering",
"ui.delete":"Slet",
"ui.delete_select_first":"Vælg først, hvad der skal slettes: features, emner, komponenter eller skitsegeometri",
"ui.depth":"Dybde",
"ui.design":"Design",
"ui.design_properties.author":"Forfatter",
@@ -4470,6 +4604,7 @@
"ui.edit_in_place_saved_elsewhere":"Delen blev gemt i en anden fil; samlingen linker stadig til {name}",
"ui.edit_in_place_wait":"Vent, til det, der kører i designet, er færdigt",
"ui.edit_section_analysis":"Redigér snitanalyse",
"ui.edit_sketch_empty":"Ingen skitser at redigere",
"ui.ellipse":"Ellipse",
"ui.emboss_wrap_note":"Ortogonale linjeprofiler, der tangerer én understøttet cylinder, vikles automatisk om. Vælg en væg for at vælge et mål.",
"ui.end_radius":"Slutradius",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Eksplicit",
"ui.equation_form":"Form",
"ui.equation_note":"Variablen er et almindeligt tal: sin(t) tager den i radianer. Et resultat uden enhed er i designets enhed.",
"ui.equation_note_range":"Variablen er en længde, ligesom dens interval er det: Kombinér den med længdeparametre, og divider den med en længde for sin(). Et resultat uden enhed er i designets enhed.",
"ui.equation_parametric":"Parametrisk",
"ui.equation_variable_unit":"Variablen har intervallets enhed",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4612,6 +4749,7 @@
"ui.hideOrigin":"Skjul nulpunkt",
"ui.hidePlanes":"Skjul planer",
"ui.hideProfile":"Skjul profil",
"ui.hide_component_history":"Skjul dens historik",
"ui.hide_origin_by_default":"Skjul nulpunktet som standard",
"ui.hide_origin_note":"Nye designs starter med mappen Nulpunkt skjult. Et design beholder sin egen indstilling for nulpunktet, når du har vist eller skjult det.",
"ui.history_sketch_listed_under":"Vises under {feature}",
"ui.history_title":"Historik",
"ui.history_toggle_names":"Vis eller skjul featurenavne",
"ui.history_waits_for_editor":"Fortryd, Gentag og Historik venter, indtil featureeditoren er åbnet",
"ui.hole":"Hul",
"ui.hole_tap_type":"Hullets gevindtype",
"ui.hole_type":"Hultype",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} har ændringer, der ikke er gemt, så dens gemte fil blev indsat. Gem den, og kør derefter Opdatér forbindelser for at hente ændringerne.",
"ui.lasso_select":"Lasso (træk en frihåndsløkke: Markerer det, der ligger helt indeni)",
"ui.layout_compact":"Kompakt",
"ui.layout_floating":"Flydende",
"ui.length":"Længde",
"ui.length_decimals":"Længdedecimaler",
"ui.light":"Lys",
"ui.line":"Linje",
"ui.line_arc_hint":"Tangentbue: Klik på buens slutpunkt. Hvil markøren på det sidste punkt igen for linjer; højreklik eller Esc for at afslutte",
"ui.link_copies":"Link identiske kopier",
"ui.link_copies_keep":"Behold",
"ui.link_copies_link":"Link",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Genopbygger delen og erstatter alle tilføjede features. Alle forekomster af komponenten opdateres.",
"ui.paste":"Indsæt",
"ui.path":"Bane",
"ui.pattern_object_type_tip":"Emner: massive former, der vælges i visningen eller modeltræet; hvert kopieres helt.\nFeatures: trin i historikken, f.eks. en ekstrudering eller et hul, der vælges i historikken eller på en flade, de har lavet; trinnet gentages.\nEn skitse er ingen af delene: Gentag dens kurver med skitsens eget Mønster eller Spejling, eller ekstruder den først.",
"ui.pattern_on_path":"Mønster langs bane",
"ui.perforate_margin_default":"ud fra diameteren",
"ui.perforate_pitch":"Deling",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Polygon",
"ui.preferences":"Indstillinger",
"ui.press_a_key":"tryk på en tast…",
"ui.print_face_body_not_sent":"Den flades emne sendes ikke: føj det først til Emner",
"ui.view_angles_convention":"Grader om den opadgående akse. Krøjning 0° er visningen Forfra, 90° Fra venstre, −90° Fra højre, 180° Bagfra; stampning 90° er visningen Ovenfra; en positiv rulning drejer modellen med uret.",
"ui.view_angles_help":"Viser visningens stampning, krøjning og rulning i grader samt dens projektion under orienteringsgizmoen. Klik på visningen for at skrive eksakte vinkler.",
"ui.viewport_status_clear_hint":"Slå {name} fra · Esc",
@@ -5086,7 +5236,7 @@
"update.check_unavailable":"Søgning efter opdateringer er ikke tilgængelig for denne installation.",
"update.checking":"Søger…",
"update.copy":"Kopiér",
"update.dmg_opened":"Diskbilledet er åbnet og verificeret: Træk SolidCraft til Programmer, erstat den gamle kopi, og genstart SolidCraft.",
"update.dmg_opened":"Diskbilledet er åbnet og verificeret: Afslut SolidCraft, træk det nye SolidCraft til Programmer, erstat den gamle kopi, og åbn derefter SolidCraft igen.",
"update.download":"Download",
"update.download_open":"Download og åbn",
"update.downloading":"Downloader og verificerer… {done} af {total} MB",
@@ -5130,6 +5280,7 @@
"web.open_link":"Åbn linket design?",
"web.open_link_confirm":"Der er ændringer, som ikke er gemt. Skal det linkede design åbnes i en ny fane?",
"help.solid.split_face":"Divides the selected faces along a plane, the face of another body or sketch curves, without cutting the body. Use it to give part of a face its own draft, colour or offset.",
"help.third_party":"Third-party licences",
"home.new_mm_hint":"Millimetres · opens in Design",
"prefs.design_tools.hole_snaps_help":"The middle of a face and the centres of its round edges.",
"prefs.logo_theme":"Theme's colours",
"prefs.max_file_size":"Largest file to open",
"prefs.max_file_size_design":"Design files",
"prefs.max_file_size_flag":"This run started with --max-file-size {size}, which applies until SolidCraft closes. These settings apply when it starts without it.",
"prefs.max_file_size_note":"Defaults: 512 MB and 256 MB; at most 16 GB. Opening a file takes several times its size in memory. A design that keeps a large import may need a higher design file limit to save and reopen.",
"prefs.max_file_size_step":"STEP and import files",
"prefs.max_file_size_web":"The web app opens STEP and import files up to 512 MB and designs up to 256 MB: a browser tab can't hold larger files. The desktop app can raise these limits.",
"prefs.megabytes":"MB",
"prefs.network_locations_note":"For organisations that keep designs on file servers. Off: only servers you allow.",
"prefs.sketch.center_arc":"Centre-point arc follows the cursor",
"prefs.sketch.conflict_colour":"Conflict colour",
"prefs.sketch.tracking_guides":"Centre and midpoint guides",
"prefs.sketch.tracking_guides_note":"Temporary horizontal and vertical guides from hovered centres and edge midpoints.",
"prefs.sketch_conflict_colour":"Conflicting geometry in the conflict colour",
"prefs.sketch_conflict_colour_note":"While a sketch's constraints conflict, the curves and points a failing constraint holds are drawn in the conflict colour too, not only its glyph or dimension. Off: they keep their usual colours.",
"prefs.sketch_construction_lines":"Extended construction line tools",
@@ -249,6 +257,7 @@
"ui.details_curvature_caption":"Faces are coloured by their local radius of curvature.",
"ui.details_draft_caption":"Faces are coloured by their angle to the pull direction.",
"ui.export_keymap_tip":"Keys, S box favourites and the toolbar, as a file",
"ui.instances":"Instances",
"ui.layout_compact":"Compact",
"ui.layout_floating":"Floating",
"ui.material_review.claims":"Sources and licences are unverified claims. Missing values remain unknown.",
"parts.family.set_screw":"Prisionero con hexágono interior, punta plana",
"parts.family.socket_head_cap_screw":"Tornillo cilíndrico con hexágono interior",
"parts.family.washer":"Arandela plana",
"parts.family.washer_sae":"Arandela plana, SAE (estrecha)",
"parts.family.washer_uss":"Arandela plana, USS (ancha)",
"parts.holes":"Agujeros (opcional)",
"parts.placement_hint":"elige uno o más agujeros para colocar una pieza en cada uno, o Aceptar la coloca en el origen",
"parts.system":"Sistema de unidades",
"parts.system.inch":"Pulgadas",
"parts.system.metric":"Métrico",
"pattern.alignment_2":"Alineación 2",
"pattern.alignment_hint":"Los recuentos incluyen el original. Centrar equilibra las copias; Invertir elige el lado adicional cuando el total es par.",
"pattern.direction_1":"Dirección 1",
@@ -1863,6 +1871,8 @@
"prefs.bottom_centre":"Centro abajo",
"prefs.bottom_right":"Derecha abajo",
"prefs.browser":"Explorador",
"prefs.browser_components_open":"Componentes abiertos al inicio",
"prefs.browser_components_open_note":"Cada componente del explorador empieza abierto, como antes, en lugar de cerrado hasta que lo abras.",
"prefs.browser_eye_left":"Ojo junto a la flecha de plegado",
"prefs.browser_eye_left_note":"Las filas del explorador muestran su ojo de mostrar/ocultar junto a la flecha de plegado, como antes, en lugar de",
"prefs.browser_reveal_on_hover":"Mostrar al pasar el puntero",
@@ -3589,10 +3599,7 @@
"the two origins are on the same component":"los dos orígenes están en el mismo componente",
"thread.automatic_size":"Tamaño automático",
"thread.designation":"Designación",
"thread.direction":"Dirección de la rosca",
"thread.iso_metric":"Métrica ISO",
"thread.left_hand":"Zurda",
"thread.right_hand":"Diestra",
"thread.select_size":"Seleccionar tamaño",
"timeline.delete_after_marker_one":"Eliminar 1 operación después del marcador de la línea de tiempo",
"timeline.delete_after_marker_other":"Eliminar {count} operaciones después del marcador de la línea de tiempo",
@@ -4097,10 +4104,15 @@
"ui.construction.reference_hint":"Línea de construcción: elige una línea recta, luego un punto; clic derecho para cambiar la",
"ui.construction.ribbon_label":"X-Líneas",
"ui.context_menu":"Menú contextual",
"ui.continuity_crease":"Arista",
"ui.continuity_curvature":"Curvatura",
"ui.continuity_curvature_change":"Cambio de curvatura",
"ui.continuity_g0":"G0 arista",
"ui.continuity_g1":"G1 tangencia",
"ui.continuity_g2":"G2 curvatura",
"ui.continuity_gap":"Separación",
"ui.continuity_position":"Posición",
"ui.continuity_tangent":"Tangente",
"ui.copy":"Copiar",
"ui.corner":"Esquina",
"ui.corners":"Esquinas",
@@ -4357,6 +4369,7 @@
"ui.insert_design.saved_file":"{name} tiene cambios sin guardar, así que se insertó su archivo guardado. Guárdalo y luego Actualizar vínculos para traer los cambios.",
"ui.insert_design.unsaved":"Cambios sin guardar",
"ui.inspect":"Inspeccionar",
"ui.instances":"Instancias",
"ui.intersect":"Intersecar",
"ui.isolate":"Aislar",
"ui.join":"Unir",
@@ -4504,9 +4517,9 @@
"ui.polygon":"Polígono",
"ui.preferences":"Preferencias",
"ui.press_a_key":"pulsa una tecla…",
"ui.print_face_body_not_sent":"El cuerpo de esa cara no se envía: añádelo primero a Cuerpos",
"ui.print_face_cleared":"{body}: cara de impresión limpiada",
"ui.print_face_input":"Cara de impresión",
"ui.print_face_one_body":"Se ha elegido una cara de impresión para un cuerpo: envía ese cuerpo solo para cambiarla",
"ui.print_face_pick":"Selecciona una cara plana de un cuerpo sólido para hacerla la cara de impresión",
"ui.print_face_set":"{body}: cara de impresión establecida; Enviar a Laminador coloca el cuerpo sobre ella",
"ui.profile":"Perfil",
@@ -4797,7 +4810,7 @@
"update.check_unavailable":"Las comprobaciones de actualización no están disponibles para esta instalación.",
"update.checking":"Comprobando…",
"update.copy":"Copiar",
"update.dmg_opened":"La imagen de disco está abierta y verificada: arrastra SolidCraft a Aplicaciones, sustituye la copia anterior y reinicia SolidCraft.",
"update.dmg_opened":"La imagen de disco está abierta y verificada: sal de SolidCraft, arrastra el nuevo SolidCraft a Aplicaciones, sustituye la copia anterior y vuelve a abrir SolidCraft.",
"update.download":"Descargar",
"update.download_open":"Descargar y abrir",
"update.downloading":"Descargando y verificando… {done} de {total} MB",
"ui.insert_design.saved_file":"Mallissa {name} on tallentamattomia muutoksia, joten sen tallennettu tiedosto lisättiin. Tallenna se ja tuo muutokset valitsemalla Päivitä linkit.",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Sélectionner un autre élément: maintenir le bouton gauche immobile sur le modèle (ou clic droit › Sélectionner un autre…) pour lister tout ce qui se trouve sous le curseur; cliquer de nouveau au même endroit pour sélectionner l'élément suivant. Double-cliquer avec le bouton du milieu pour revenir à l'accueil (Préférences › Navigation).",
"config.rule_parameter_columns":"Seuls les paramètres ayant une colonne dans la table sont listés. Ajouter une colonne avec Ajouter une colonne (+) pour l'utiliser ici.",
"config.rule_suppression_columns":"Seules les fonctions ayant une colonne Désactiver dans la table sont listées. Ajouter une colonne avec Ajouter une colonne (+) pour la piloter ici.",
"contact.components_count":"{count} composants",
"contact.enabled_label":"activé",
"coupling.gear_1":"Engrenage 1",
@@ -1344,7 +1372,11 @@
"dialog.pattern_sketch_not_object":"Choisissez des corps ou des fonctions : une esquisse n'est ni l'un ni l'autre. Répétez ses courbes avec la Répétition ou la Symétrie de l'esquisse, ou extrudez-la d'abord.",
"dialog.selection_guidance":"Sélectionner une entrée pour la modifier. Cliquer sur un objet sélectionné pour le retirer; Ctrl/Cmd-clic le bascule aussi. Vérifier l'aperçu, puis appuyer sur OK.",
"dialog.selection_midpoint":"Point milieu · {id}",
"dialog.selection_step":"{step} sur {total}: sélectionner {input}",
"dialog.step":"Étape",
"document.changed_on_disk":"{name} a été modifié sur le disque",
@@ -1427,6 +1459,7 @@
"help.construct.axis.two_points":"Crée un axe de construction passant par deux points, sommets ou points d'esquisse. À utiliser pour un axe qui relie deux positions connues.",
"help.construct.plane.along_path":"Crée un plan de construction perpendiculaire à une arête ou une courbe, à une position choisie le long de celle-ci. À utiliser pour esquisser le profil d'un balayage ou une coupe d'une trajectoire.",
"help.construct.plane.at_angle":"Crée un plan de construction tourné d'un angle par rapport à un plan ou une face, autour d'un axe ou d'une arête. À utiliser pour des esquisses inclinées, par exemple une équerre à angle.",
"help.construct.plane.axis_point":"Crée un plan de construction contenant un axe et un point situé hors de cet axe. Sélectionner une origine ou un axe de construction, une arête rectiligne ou une ligne d'esquisse, puis un sommet, un point d'esquisse ou un point de construction. Un point situé sur l'axe ne définit pas un plan unique.",
"help.construct.plane.midplane":"Crée un plan de construction à mi-distance entre deux plans ou faces planes, ou bissecteur lorsqu'ils se rencontrent en formant un angle. À utiliser comme plan de symétrie.",
"help.construct.plane.offset":"Crée un plan de construction parallèle à un plan ou une face plane, à une distance donnée ou passant par un point. À utiliser pour esquisser à une hauteur précise au-dessus d'une face.",
"help.construct.plane.perpendicular":"Crée un plan de construction qui contient une droite ou une arête et qui est perpendiculaire à un plan ou une face. À utiliser pour esquisser à la verticale sur un modèle, le long d'une arête.",
@@ -1803,6 +1836,8 @@
"joint_move.blocked_hint":"Vérifiez le type de liaison (par exemple rigide), la fixation de la pièce, les limites de la liaison et les valeurs pilotées par des paramètres.",
"joint_move.blocked_title":"Impossible de déplacer cette pièce",
"joint_move.coarse":"Pas de rotation près de l’axe (°)",
"joint_move.conflict":"Une liaison de cette pièce est en conflit avec les autres: {joint}.",
"joint_move.conflict_hint":"Modifier, désactiver ou supprimer la liaison en conflit pour que les autres liaisons puissent placer la pièce.",
"joint_move.distance":"Distance depuis le départ",
"joint_move.done":"Terminé",
"joint_move.fine":"Pas de rotation loin de l’axe (°)",
@@ -1902,6 +1937,8 @@
"motion.track_name":"Piste {number}",
"nav.alias.help":"Maj+Alt+glisser gauche fait orbiter, Maj+Alt+milieu fait un panoramique, Maj+Alt+droit zoome; glisser avec le milieu fait aussi un panoramique et glisser avec le droit fait orbiter",
"nav.blender.help":"Glisser avec le milieu fait orbiter, Maj+milieu fait un panoramique, Ctrl+milieu zoome; glisser avec le droit ne touche pas la caméra",
"nav.creo.help":"Glisser avec le milieu fait orbiter, Maj+milieu fait un panoramique, Ctrl+glisser avec le milieu zoome verticalement (vers le bas pour zoomer); la molette zoome",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"La souris et la souris 3D tournent en passant par les deux pôles et conservent le roulis. L'alignement des axes avec Maj est désactivé.",
"nav.free_orbit.label":"Orbite libre",
"nav.free_orbit.snap_help":"La souris et la souris 3D tournent en passant par les deux pôles et conservent le roulis. Maintenir Maj pendant un glissement d'orbite pour aligner la direction de vue et le roulis.",
@@ -1911,6 +1948,7 @@
"nav.hfss.help":"Alt+glisser gauche fait un panoramique, Maj+Alt+gauche zoome, Ctrl+glisser gauche sur un espace vide fait orbiter",
"nav.inventor.help":"Glisser avec le milieu fait un panoramique, Maj+milieu fait orbiter, Ctrl+milieu zoome, glisser avec le droit fait orbiter",
"nav.maya.help":"Alt+glisser gauche fait orbiter, Alt+milieu fait un panoramique, Alt+droit zoome ; glisser avec le milieu fait aussi un panoramique",
"nav.nx.help":"Glisser avec le milieu fait orbiter, Maj+milieu fait un panoramique (milieu + droit dans NX), Ctrl+milieu zoome (milieu + gauche dans NX); glisser avec le droit ne touche pas la caméra",
"nav.openscad.help":"Glisser avec le gauche dans le vide fait orbiter, Maj+glisser gauche sélectionne par rectangle, glisser la géométrie d'esquisse la modifie; glisser avec le droit ou le milieu fait un panoramique, Maj+droit ou Maj+milieu zoome",
"nav.perspective.sketch":"La modification d'une esquisse utilise la vue orthographique. Terminer l'esquisse pour passer en perspective.",
"nav.right_drag_orbits.help":"Désactivé : glisser avec le droit ne touche pas la caméra et le bouton droit ouvre seulement le menu contextuel. Choisir l'affectation des boutons de la souris SolidWorks le désactive.",
@@ -2053,12 +2091,19 @@
"parts.family.button_head_cap_screw":"Vis à tête bombée à six pans creux",
"parts.family.dowel_pin":"Goupille cylindrique",
"parts.family.hex_bolt":"Vis à tête hexagonale",
"parts.family.hex_cap_screw_inch":"Vis à tête hexagonale (pouces)",
"parts.family.washer_uss":"Rondelle plate, USS (large)",
"parts.holes":"Trous (facultatif)",
"parts.placement_hint":"choisissez un ou plusieurs trous pour y loger une pièce chacun, ou OK la place à l'origine",
"parts.system":"Système d'unités",
"parts.system.inch":"Pouces",
"parts.system.metric":"Métrique",
"pattern.alignment_2":"Alignement 2",
"pattern.alignment_hint":"La quantité inclut l’original. Le centrage répartit les copies de chaque côté ; si la quantité est paire, l’inversion choisit le côté qui reçoit la copie supplémentaire.",
"pattern.direction_1":"Direction 1",
@@ -2111,6 +2156,8 @@
"prefs.bottom_centre":"Bas centre",
"prefs.bottom_right":"Bas droite",
"prefs.browser":"Navigateur",
"prefs.browser_components_open":"Composants dépliés au départ",
"prefs.browser_components_open_note":"Chaque composant du navigateur commence déplié, comme avant, au lieu de rester replié jusqu'à ce que vous le dépliiez.",
"prefs.browser_eye_left":"Œil à côté de la flèche de dépliage",
"prefs.browser_eye_left_note":"Les lignes du navigateur affichent leur œil d'affichage et de masquage à côté de la flèche de dépliage, comme avant, au lieu d'une colonne à l'extrémité droite des lignes.",
"prefs.browser_reveal_on_hover":"Révéler au survol",
@@ -2120,6 +2167,8 @@
"prefs.button_left":"Glisser gauche",
"prefs.button_middle":"Glisser milieu",
"prefs.button_right":"Glisser droit",
"prefs.carousel_next":"Suivant",
"prefs.carousel_previous":"Précédent",
"prefs.choose_font":"Choisir un fichier de police…",
"prefs.click":"Clic",
"prefs.contact_shading":"Ombrage de contact doux",
@@ -2132,6 +2181,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Surfaces courbes",
"prefs.curves":"Surfaces courbes",
"prefs.cut_preview_tint":"Afficher en rouge la matière retirée",
"prefs.cut_preview_tint_help":"Un aperçu remplit la matière qu'une fonction retire, et la forme qu'elle remplace, d'un fantôme rouge translucide. Désactivée, ces remplissages sont entièrement transparents et seuls leurs contours sont tracés.",
"prefs.dark_parts_shading":"Conserver la forme des pièces sombres",
"prefs.dark_parts_shading_help":"Ombrer la vue en lumière linéaire avec un léger éclairage de ciel, pour que les faces sombres gardent un dégradé au lieu de devenir noires",
"prefs.dead_zone_note":"La bande hachurée est la zone morte: les mouvements à l'intérieur sont ignorés.",
"prefs.default":"par défaut",
"prefs.design":"Valeurs par défaut des conceptions",
@@ -2146,6 +2199,8 @@
"prefs.edges":"Arêtes et ombrage",
"prefs.extend":"Étendre",
"prefs.extra_navigation":"Ctrl+glisser gauche dans le vide fait orbiter; maintenir Espace pour un panoramique.",
"prefs.extrude_view_isometric":"Passer la vue en isométrique à l'ouverture de l'extrusion",
"prefs.extrude_view_return":"Revenir à la vue précédente à la fermeture de l'extrusion",
"prefs.follows_os":"Suit le système",
"prefs.font":"Police",
"prefs.font_fallback":"Les caractères absents de la police choisie utilisent la police intégrée, pour qu'aucun libellé n'affiche de case vide.",
@@ -2161,6 +2216,7 @@
"prefs.graphics_card_auto":"Automatique",
"prefs.graphics_card_missing":"La carte graphique enregistrée n'est pas disponible; Automatique est utilisé.",
"prefs.graphics_card_restart":"Prend effet après le redémarrage de SolidCraft. WGPU_ADAPTER_NAME prévaut sur ce choix.",
"prefs.graphics_card_unused":"La carte graphique enregistrée n'a pas été utilisée pour cette fenêtre; la carte utilisée est indiquée dans Aide › À propos et dans la barre d'état. Essayer Automatique, ou définir WGPU_ADAPTER_NAME avec une partie unique du nom de la carte.",
"prefs.graphics_note":"Compromis entre vitesse et fluidité. Chaque choix montre son effet sur un exemple.",
"prefs.graphics_presets_note":"Les préréglages définissent ensemble les choix ci-dessous.",
"prefs.hide_constraint_glyphs_zoomed_out":"Masquer les symboles de contraintes en cas de zoom arrière",
@@ -2175,6 +2231,8 @@
"prefs.history_sketches_note":"Avec Esquisses réglé sur Sous leur fonction, l'historique de gauche liste chaque esquisse un niveau en retrait, sous la première fonction construite à partir d'elle, dès qu'il est assez large pour les noms. La chronologie en bas garde toujours l'ordre de création.",
"prefs.history_sketches_under_feature":"Sous leur fonction",
"prefs.hold_stop_snapping":"Maintenir pour désactiver l'accrochage",
"prefs.home_fit_size":"Taille de Accueil et Cadrer",
"prefs.home_fit_size_note":"Part de la vue que remplit le modèle quand Accueil, Cadrer, l'ouverture d'une conception ou une vue du repère de navigation recadre la vue, que le réglage ci-dessous soit activé ou non. 100 %: remplit la vue entre les panneaux, la boussole et la barre de navigation.",
"prefs.icons_only":"Icônes seules",
"prefs.imported_file":"Fichier importé",
"prefs.in_browser":"Dans le navigateur",
@@ -2183,15 +2241,22 @@
"prefs.interface_language":"Langue de l'interface",
"prefs.interface_note":"L'apparence de SolidCraft et la place de ses éléments.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Inverser les flèches courbes de roulis",
"prefs.invert_curved_roll_arrows_note":"Les deux flèches courbes au coin du cube font rouler la vue dans le plan de l'écran. Activé : la flèche horaire fait rouler dans le sens antihoraire et la flèche antihoraire dans le sens horaire. Désactivé : chaque flèche fait rouler la vue dans le sens de sa courbure.",
"prefs.invert_navigator_arrows":"Inverser les flèches de rotation du cube de vue",
"prefs.invert_navigator_arrows_note":"Les flèches autour du cube font orbiter la caméra dans le sens où elles pointent, comme dans Fusion et Inventor: la flèche de gauche pointe vers la droite et fait pivoter la caméra vers la droite. Désactivé : une flèche fait tourner le cube vers le côté où elle se trouve, donc la flèche de gauche fait pivoter la caméra vers la gauche. Les flèches courbes de roulis ne sont pas concernées.",
"prefs.keep_work_on_tab_switch":"Garder dialogues et outils ouverts en changeant de conception",
"prefs.keep_work_on_tab_switch_note":"Chaque onglet de conception garde son dialogue ou son outil ouvert, avec ce que vous y avez sélectionné et saisi, ainsi que son onglet de barre d'outils. Vous les retrouvez en revenant à la conception. Désactivé : changer de conception les annule et affiche l'onglet Modèle.",
"prefs.labels":"Libellés",
"prefs.language_system":"Système",
"prefs.layout":"Disposition",
"prefs.layout_note":"Compacte: ancre les panneaux aux bords de la fenêtre. La transparence du navigateur est disponible en mode Flottante. Changez le côté de l'assistant dans la page Assistant.",
"prefs.left":"Gauche",
"prefs.left_click":"Clic gauche",
"prefs.line_drag_draws_one":"Appuyer et glisser trace une seule ligne",
"prefs.line_drag_draws_one_note":"Dans l'outil Ligne, appuyer, faire glisser puis relâcher trace une seule ligne, du point d'appui au point de relâchement, et le tracé s'arrête là. Les clics tracent toujours une chaîne. Désactivé : un glissement place un point là où il est relâché, comme un clic.",
"prefs.line_hover_tangent_arc":"S'arrêter sur le dernier point d'une ligne pour passer à un arc tangent",
"prefs.line_hover_tangent_arc_note":"Dans l'outil Ligne, une fois un segment tracé, éloigner le pointeur du dernier point de la chaîne, revenir et le maintenir immobile dessus: le clic suivant termine un arc tangent, et le même geste revient aux lignes. Désactivé : s'arrêter là ne fait rien.",
"prefs.linked_designs":"Conceptions liées",
"prefs.live_input":"Saisie en direct",
"prefs.live_preview":"Aperçu en direct",
@@ -2215,6 +2280,8 @@
"prefs.mouse_mapping":"Affectation des boutons de la souris",
"prefs.navigation":"Navigation",
"prefs.navigation_note":"Comment la souris, le pavé tactile et la souris 3D déplacent la vue.",
"prefs.navigator_fit":"Cadrer le modèle après un changement de vue du repère de navigation",
"prefs.navigator_fit_note":"Une face, un coin ou une flèche du cube de vue, ou un axe du gizmo, regarde aussi le milieu du modèle depuis la distance unique qui le cadre sous tous les côtés (sa sphère englobante). Accueil utilise le même zoom et le même centre tant que cette option est activée, de sorte que les vues choisies ensuite ne font que tourner. Désactivé : la vue tourne sur place, en gardant sa cible et son zoom.",
"prefs.network_host_remove":"Retirer",
"prefs.network_locations":"Autoriser les emplacements réseau dans les conceptions",
"prefs.network_locations_note":"Désactivé : les fichiers liés d'une conception situés sur un autre ordinateur (\\\\server\\share) ne sont ouverts que depuis les serveurs listés ici, ou après en avoir autorisé un sur demande.",
@@ -2235,6 +2302,8 @@
"prefs.placement":"Placement",
"prefs.prefer_free_sketch_points":"Privilégier les points d'esquisse déplaçables quand des points se superposent",
"prefs.preview_choices":"Aperçu de vos choix",
"prefs.preview_tint_new_faces":"Teinter la nouvelle surface dans un aperçu",
"prefs.preview_tint_new_faces_help":"L'aperçu d'une fonction qui modifie un corps peut tracer la surface qu'elle ajoute dans la couleur d'aperçu. Désactivée, le corps est tracé tel quel.",
"prefs.print_face_highlight":"Mise en évidence de la face d’impression",
"prefs.print_face_highlight_tip":"Intensité de la teinte et du contour de la face d’impression d’un corps dans la vue. 0 % n’affiche aucune mise en évidence.",
"prefs.profile_active":"Profil actif",
@@ -2263,6 +2332,8 @@
"prefs.render_previous_geometry_budget":"Utiliser l'ancien budget de géométrie de l'aperçu Rendu",
"prefs.render_previous_geometry_budget_help":"Rétablir l'ancienne limite fixe de géométrie (512 Mio sur un ordinateur 64 bits, 128 Mio ailleurs) au lieu du budget basé sur l'appareil.",
"prefs.reports_saved":"Enregistrés: {n}",
"prefs.ribbon_click_ends_tool":"Cliquer sur le bouton de l'outil en cours le termine",
"prefs.ribbon_click_ends_tool_note":"Un clic sur le bouton allumé du ruban de l'outil d'esquisse en cours termine l'outil, et les clics dans la vue sélectionnent de nouveau. Désactivé : le clic relance l'outil.",
"prefs.ribbon_reveal":"Montrer les résultats de recherche dans le ruban",
"prefs.ribbon_reveal_note":"Survoler un résultat dans Rechercher des commandes montre où se trouve la commande dans le ruban: son onglet, son bouton ou sa ligne dans le menu déroulant d'un panneau. Une commande lancée depuis la recherche y clignote, et une commande en cours issue d'un menu déroulant signale son panneau.",
"prefs.right_click":"Clic droit",
@@ -2292,6 +2363,8 @@
"prefs.sketch_exit_view.previous":"Revenir à la vue précédente",
"prefs.sketch_exit_view.unless_rotated":"Revenir, sauf si la vue a été tournée",
"prefs.sketch_exit_view_note":"Où va la vue après Terminer l'esquisse, Annuler ou un double Échap.",
"prefs.sketch_face_activates_part":"Esquisser sur la face d'une pièce active cette pièce",
"prefs.sketch_face_activates_part_note":"Une esquisse commencée sur une face du corps d'un autre composant active d'abord ce composant, de sorte que l'esquisse lui appartient et reste avec cette pièce dans le navigateur. La pièce reste ensuite active. Désactivé : l'esquisse appartient au composant actif.",
"prefs.sketch_open_look_at":"Se placer face à l'esquisse à son ouverture",
"prefs.sketch_open_look_at_note":"Désactivé : créer ou modifier une esquisse laisse la vue telle quelle. Vue normale place la vue face à l'esquisse quand vous le souhaitez.",
"prefs.sketch_recent_snap":"Accrocher automatiquement aux centres et points milieux récents",
@@ -2323,7 +2396,24 @@
"prefs.status_error":"Erreur",
"prefs.status_selected":"Sélectionné",
"prefs.status_warning":"Avertissement",
"prefs.structure.appearance":"Apparence",
"prefs.structure.appearance_note":"Couleurs, texte et accessibilité.",
"prefs.structure.in_profile":"Dans le profil",
"prefs.structure.layout":"Disposition",
"prefs.structure.layout_note":"Où se placent les parties de la fenêtre.",
"prefs.structure.look":"Aspect",
"prefs.structure.measure_pointer":"Mesure et pointeur",
"prefs.structure.mouse3d":"Souris 3D",
"prefs.structure.mouse3d_note":"SpaceMouse et SpaceNavigator.",
"prefs.structure.navigation_note":"Souris et pavé tactile. La souris 3D a sa propre page.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Modifié depuis l'enregistrement",
"prefs.structure.profile_hover":"Enregistré dans les profils de réglages",
"prefs.structure.scale_percent":"{percent} %",
"prefs.structure.sketch":"Esquisse",
"prefs.structure.tools":"Outils",
"prefs.structure.tools_note":"Comportement des outils de modélisation.",
"prefs.structure.work":"Travail",
"prefs.supersampling_brief":"Dessine la vue en plus grand puis la réduit par filtrage: très net, mais plus lourd.",
"render.base_opaque_only":"Cet éditeur conserve la sémantique des corps opaques. Utilisez les commandes de verre dédiées pour la transmission optique.",
"render.batch_all_shots":"Toutes les prises de vue ({count})",
"render.batch_empty":"Enregistrer une prise de vue avant de rendre toutes les prises de vue.",
"render.batch_limit":"Le rendu de toutes les prises de vue est limité à 32 prises de vue.",
"render.batch_status":"{running} en cours · {waiting} en attente",
"render.bloom_enable":"Halo lumineux (bloom) à l'affichage",
"render.bloom_help":"Lueur créative appliquée à la sortie seulement, à partir des hautes lumières linéaires positives, étalée par trois passes de flou normalisées. Le rayon est en pixels de sortie. Ajoutée en lumière d'affichage linéaire avant sRVB; ce n'est ni un effet d'objectif, ni un effet volumétrique, ni une amélioration de la convergence. L'EXR brut est inchangé.",
"render.bloom_opaque":"Le halo lumineux nécessite une sortie opaque. Un PNG transparent est refusé, pas aplati en silence.",
@@ -2621,6 +2715,13 @@
"render.choose_look":"Choisissez d'abord un aspect dans Apparences",
"render.chromatic_offset":"Décalage chromatique des bords",
"render.clear_stage":"Supprimer le décor enregistré",
"render.compare_divider":"Séparateur de comparaison",
"render.compare_live":"En direct",
"render.compare_live_preview":"Aperçu en direct",
"render.compare_render":"Rendu {number}",
"render.compare_side":"Rendu {number} · {shot}",
"render.compare_summary":"{shot} · {width} × {height} · PNG · {seconds} s · {renderer} · capturé à la révision {revision}",
"render.compare_swap":"Inverser",
"render.copy_request":"Copier le JSON",
"render.cpu_aa_help":"Échantillons spatiaux: plus d'échantillons améliorent les bords et allongent le rendu.",
"render.cpu_area_add":"Ajouter une lumière CPU rectangulaire",
@@ -3370,6 +3471,10 @@
"render.result_retained":"Affichage de la dernière image terminée; un rendu plus récent ne l'a pas remplacée.",
"ui.agent_chat_custom_hint":"Tout programme qui parle l'Agent Client Protocol sur stdin et stdout. Aucun shell ne le lance.",
"ui.agent_chat_denied":"Refusé",
"ui.agent_chat_deny":"Refuser",
@@ -4086,8 +4191,16 @@
"ui.agent_chat_mode_all":"Tout",
"ui.agent_chat_mode_ask":"Demander",
"ui.agent_chat_mode_edits":"Édition",
"ui.agent_chat_model_custom":"Utiliser le modèle personnalisé : {model}",
"ui.agent_chat_model_no_tools":"{model} ne peut pas utiliser les outils de SolidCraft: il peut seulement discuter. Choisissez un modèle qui prend en charge les outils.",
"ui.agent_chat_model_rejected":"L'agent n'a pas accepté {model}: {error}",
"ui.agent_chat_model_search":"Rechercher des modèles…",
"ui.agent_chat_model_tip":"Le modèle utilisé par l'agent. Votre choix est mémorisé pour cet agent.",
"ui.agent_chat_models_failed":"Impossible de lister les modèles: {error}",
"ui.agent_chat_models_listing":"Liste des modèles en cours…",
"ui.agent_chat_models_none":"Le point d'accès ne liste aucun modèle",
"ui.agent_chat_models_not_a_list":"La réponse n'était pas une liste de modèles",
"ui.agent_chat_new":"Nouveau chat",
"ui.agent_chat_new_confirm":"Démarrer un nouveau chat? Le chat actuel sera effacé.",
"ui.agent_chat_next_picture":"Image suivante",
@@ -4223,6 +4336,9 @@
"ui.ai_permissions":"Autorisations",
"ui.ai_preset":"Préréglage",
"ui.ai_protocol":"Protocole",
"ui.ai_reasoning_effort":"Effort de raisonnement",
"ui.ai_reasoning_effort_field_hint":"vide = valeur par défaut du fournisseur",
"ui.ai_reasoning_effort_hint":"Facultatif. Envoyé au point d'accès sous le nom `reasoning_effort`; les valeurs acceptées varient selon le fournisseur (par exemple `low`, `high` ou `max`). Une valeur saisie ici n'est jamais remplacée par SolidCraft. Laisser vide pour ne rien envoyer et garder la valeur par défaut du fournisseur.",
"ui.ai_remove":"Retirer",
"ui.ai_request_timed_out":"Le modèle a mis plus de {seconds} s. Vous pouvez augmenter le délai d'expiration des requêtes de ce point d'accès dans Préférences › Assistant.",
"ui.ai_request_timeout":"Délai d'expiration des requêtes",
@@ -4358,14 +4474,21 @@
"ui.construction.contact_hint":"Tangente: sélectionnez un cercle/arc ou une spline/conique ouverte, puis le point de contact (courbes libres: extrémités)",
"ui.construction.external_hint":"Tangente: sélectionnez un cercle ou un arc, un point extérieur, puis la solution souhaitée",
"ui.construction.free_hint":"Droite de construction: cliquez sur deux points; clic droit pour recommencer",
"ui.construction.normal_needs_length":"Une ligne infinie est toujours de construction: saisir une longueur pour tracer une ligne normale",
"ui.construction.point_hint":"Droite de construction: cliquez sur le point de passage",
"ui.construction.reference_hint":"Droite de construction: sélectionnez une ligne droite, puis un point; clic droit pour changer la référence",
"ui.construction.ribbon_label":"Lignes aux.",
"ui.construction.side_hint":"Ligne de construction: cliquer du côté vers lequel la ligne s'étend; clic droit pour recommencer",
"ui.context_menu":"Menu contextuel",
"ui.continuity_crease":"Angle vif",
"ui.continuity_curvature":"Courbure",
"ui.continuity_curvature_change":"Variation de courbure",
"ui.continuity_g0":"G0 angle vif",
"ui.continuity_g1":"G1 tangence",
"ui.continuity_g2":"G2 courbure",
"ui.continuity_gap":"Écart",
"ui.continuity_position":"Position",
"ui.continuity_tangent":"Tangence",
"ui.copy":"Copier",
"ui.corner":"Angle",
"ui.corners":"Angles",
@@ -4388,6 +4511,7 @@
"ui.dark":"Sombre",
"ui.default_modelling_orientation":"Orientation de modélisation par défaut",
"ui.delete":"Supprimer",
"ui.delete_select_first":"Sélectionner d'abord ce qu'il faut supprimer: fonctions, corps, composants ou géométrie d'esquisse",
"ui.depth":"Profondeur",
"ui.design":"Conception",
"ui.design_properties.author":"Auteur",
@@ -4480,6 +4604,7 @@
"ui.edit_in_place_saved_elsewhere":"La pièce a été enregistrée dans un autre fichier; l'assemblage reste lié à {name}",
"ui.edit_in_place_wait":"Attendez la fin de ce qui s'exécute dans la conception",
"ui.edit_section_analysis":"Modifier l'analyse de coupe",
"ui.edit_sketch_empty":"Aucune esquisse à modifier",
"ui.ellipse":"Ellipse",
"ui.emboss_wrap_note":"Les profils de lignes orthogonales tangents à un cylindre pris en charge s'enroulent automatiquement. Choisir une paroi pour définir une cible.",
"ui.end_radius":"Rayon final",
@@ -4490,7 +4615,9 @@
"ui.equation_explicit":"Explicite",
"ui.equation_form":"Forme",
"ui.equation_note":"La variable est un simple nombre: sin(t) la prend en radians. Un résultat sans unité est dans l'unité de la conception.",
"ui.equation_note_range":"La variable est une longueur, comme sa plage: la combiner avec des paramètres de longueur, et la diviser par une longueur pour sin(). Un résultat sans unité est dans l'unité de la conception.",
"ui.equation_parametric":"Paramétrique",
"ui.equation_variable_unit":"La variable a l'unité de la plage",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4622,6 +4749,7 @@
"ui.hideOrigin":"Masquer l'origine",
"ui.hidePlanes":"Masquer les plans",
"ui.hideProfile":"Masquer le profil",
"ui.hide_component_history":"Masquer son historique",
"ui.hide_origin_by_default":"Masquer l'origine par défaut",
"ui.hide_origin_note":"Les nouvelles conceptions démarrent avec le dossier Origine masqué. Une conception garde son propre réglage d'Origine dès que vous l'affichez ou la masquez.",
"ui.history_back":"Reculer d’une étape",
@@ -4629,6 +4757,7 @@
"ui.history_edge_hint":"double-cliquer sur le bord",
"ui.history_first":"Aller au début",
"ui.history_forward":"Avancer d’une étape",
"ui.history_hide_hidden":"Masquer les composants masqués",
"ui.history_hide_names":"Masquer les noms",
"ui.history_last":"Aller à la fin",
"ui.history_marker_tip":"Marqueur d'historique: faire glisser pour ramener le modèle en arrière; les nouvelles fonctions s'insèrent ici",
@@ -4638,6 +4767,7 @@
"ui.history_play_button_show":"Afficher le bouton Lire",
"ui.history_play_finish_action":"Terminez l'action en cours avant de lire l'historique",
"ui.history_play_roll_back":"Reculez le marqueur d'historique avant de lire",
"ui.history_show_hidden":"Afficher les composants masqués",
"ui.history_show_names":"Afficher les noms",
"ui.history_sketch_listed_under":"Listé sous {feature}",
"ui.history_title":"Historique",
@@ -4657,6 +4787,7 @@
"ui.insert_design.saved_file":"{name} contient des modifications non enregistrées; c'est donc son fichier enregistré qui a été inséré. Enregistrez-le, puis utilisez Mettre à jour les liens pour intégrer les modifications.",
"ui.insert_design.unsaved":"Modifications non enregistrées",
"ui.inspect":"Inspecter",
"ui.instances":"Instances",
"ui.intersect":"Intersection",
"ui.isolate":"Isoler",
"ui.join":"Joindre",
@@ -4665,12 +4796,14 @@
"ui.joints":"Liaisons",
"ui.keyboard_shortcuts":"Raccourcis clavier",
"ui.language":"Langue",
"ui.lasso_select":"Lasso (faire glisser une boucle libre: prend ce qui est entièrement à l'intérieur)",
"ui.layout_compact":"Compacte",
"ui.layout_floating":"Flottante",
"ui.length":"Longueur",
"ui.length_decimals":"Décimales des longueurs",
"ui.light":"Clair",
"ui.line":"Ligne",
"ui.line_arc_hint":"Arc tangent: cliquer sur l'extrémité de l'arc. S'arrêter de nouveau sur le dernier point pour revenir aux lignes; clic droit ou Échap pour terminer",
"ui.link_copies":"Lier les copies identiques",
"ui.link_copies_keep":"Conserver",
"ui.link_copies_link":"Lier",
@@ -4805,9 +4938,9 @@
"ui.polygon":"Polygone",
"ui.preferences":"Préférences",
"ui.press_a_key":"appuyez sur une touche…",
"ui.print_face_body_not_sent":"Le corps de cette face n’est pas envoyé : ajoutez-le d’abord à Corps",
"ui.print_face_cleared":"{body} : face d’impression effacée",
"ui.print_face_input":"Face d’impression",
"ui.print_face_one_body":"Une face d’impression appartient à un seul corps : envoyez ce corps seul pour la modifier",
"ui.print_face_pick":"Sélectionnez une face plane d’un corps solide pour en faire la face d’impression",
"ui.print_face_set":"{body} : face d’impression définie ; Envoyer au slicer pose le corps sur cette face",
"ui.profile":"Profil",
@@ -4919,6 +5052,7 @@
"ui.showDimension":"Afficher la cote",
"ui.showOrigin":"Afficher l'origine",
"ui.showPlanes":"Afficher les plans",
"ui.show_component_history":"Afficher son historique",
"ui.show_constraints":"Contraintes",
"ui.show_construction_geometries":"Géométries de construction",
"ui.show_dimensions":"Cotes",
@@ -5035,12 +5169,15 @@
"ui.view_angles":"Angles de vue",
"ui.view_angles_convention":"Degrés autour de l'axe vertical. Lacet 0° = vue de face, 90° = vue de gauche, −90° = vue de droite, 180° = vue arrière; tangage 90° = vue de dessus; un roulis positif fait tourner le modèle dans le sens horaire.",
"ui.view_angles_help":"Affiche le tangage, le lacet et le roulis de la vue en degrés, ainsi que sa projection, sous le gizmo d'orientation. Cliquez sur l'indicateur pour saisir des angles exacts.",
"update.check_unavailable":"La recherche de mises à jour n’est pas disponible pour cette installation.",
"update.checking":"Vérification…",
"update.copy":"Copier",
"update.dmg_opened":"L'image disque est ouverte et vérifiée: faites glisser SolidCraft dans Applications en remplaçant l'ancienne copie, puis redémarrez SolidCraft.",
"update.dmg_opened":"L'image disque est ouverte et vérifiée: quittez SolidCraft, faites glisser le nouveau SolidCraft dans Applications en remplaçant l'ancienne copie, puis rouvrez SolidCraft.",
"update.download":"Télécharger",
"update.download_open":"Télécharger et ouvrir",
"update.downloading":"Téléchargement et vérification… {done} sur {total} Mo",
@@ -5142,6 +5279,7 @@
"web.open_link":"Ouvrir la conception liée?",
"web.open_link_confirm":"Il y a des modifications non enregistrées. Ouvrir la conception liée dans un nouvel onglet?",
"Sections (one sketch each)":"Seccións (un bosquexo cada unha)",
"Select Other":"Seleccionar outro",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Seleccionar outro: mantén o botón esquerdo quieto sobre o modelo (ou clic dereito › Seleccionar outro…) para listar todo o que hai baixo o cursor; fai clic de novo no mesmo punto para seleccionar o seguinte. Fai dobre clic co botón central para ir ao Inicio (Preferencias › Navegación).",
"browser.sketches_to_parts_already_in_part":"xa na súa peza",
"browser.sketches_to_parts_design_body":"nun corpo do propio deseño",
"browser.sketches_to_parts_moved":"Movéronse {moved} bosquexos á peza na que están",
"browser.sketches_to_parts_no_exact_attachment":"nunha cara sen unha ancoraxe exacta",
"browser.sketches_to_parts_not_on_face":"non na cara dunha peza",
"browser.sketches_to_parts_part_missing":"a súa peza desapareceu",
"browser.sketches_to_parts_result":"Movéronse {moved} bosquexos á peza na que están; {stayed} non se moveron: {why}",
"browser.units":"Unidades: {units}",
"cam.flat":"Cara plana",
"cam.follower":"Seguidor",
@@ -852,6 +861,7 @@
"cmd.component_extract":"Extraer a un ficheiro",
"cmd.component_finish_edit":"Rematar a edición",
"cmd.component_from_bodies":"Crear compoñentes a partir de corpos",
"cmd.component_hide_history":"Ocultar o historial do compoñente",
"cmd.component_insert_design":"Inserir deseño",
"cmd.component_links":"Listar as ligazóns",
"cmd.component_list":"Listar os compoñentes",
@@ -860,6 +870,7 @@
"cmd.component_move_bodies":"Mover corpos ao compoñente",
"cmd.component_move_features":"Mover operacións ao compoñente",
"cmd.component_move_sketches":"Mover bosquexos ao compoñente",
"cmd.component_move_sketches_to_parts":"Mover os bosquexos ás súas pezas",
"cmd.component_paste_from_design":"Pegar desde outro deseño",
"cmd.component_paste_new":"Pegar como novo",
"cmd.component_properties":"Propiedades físicas do compoñente",
@@ -867,6 +878,7 @@
"cmd.component_rename":"Renomear o compoñente",
"cmd.component_replace_with_link":"Substituír por unha ligazón",
"cmd.component_revert_position":"Reverter a posición",
"cmd.component_show_history":"Mostrar o historial do compoñente",
"cmd.component_unlock":"Desbloquear o contido",
"cmd.component_update_links":"Actualizar as ligazóns",
"cmd.config_activate":"Activar a configuración",
@@ -877,6 +889,7 @@
"cmd.config_rule":"Regra de configuración",
"cmd.config_rules":"Regras de configuración",
"cmd.config_table":"Mostrar a táboa de configuracións",
"cmd.construct.plane.axis_point":"Plano por un eixe e un punto",
"cmd.construct_axis_edge":"Eixe pola aresta",
"cmd.construct_axis_normal_to_face":"Eixe perpendicular á cara",
"cmd.construct_axis_through_cylinder":"Eixe por cilindro/cono/toro",
@@ -925,6 +938,11 @@
"cmd.explode_show":"Mostrar a vista explosionada",
"cmd.expr_evaluate":"Avaliar a expresión",
"cmd.face_delete":"Eliminar a cara",
"cmd.file.export_3mf":"Exportar 3MF",
"cmd.file.export_obj":"Exportar OBJ",
"cmd.file.export_step":"Exportar STEP",
"cmd.file.export_stl":"Exportar STL",
"cmd.file.export_urdf":"Exportar URDF",
"cmd.file_export":"Exportar",
"cmd.file_insert_mesh":"Inserir malla",
"cmd.file_insert_step":"Inserir STEP",
@@ -942,6 +960,7 @@
"cmd.inspect_colored_components":"Activar as cores dos compoñentes",
"cmd.inspect_colored_components_disable":"Desactivar as cores dos compoñentes",
"cmd.inspect_compare":"Comparar corpos",
"cmd.inspect_compare_picture":"Comparar a imaxe",
"cmd.inspect_continuity":"Análise de continuidade",
"cmd.inspect_curvature_comb":"Análise con pente de curvatura",
"cmd.inspect_curvature_map":"Análise con mapa de curvatura",
@@ -1032,6 +1051,9 @@
"cmd.pointcloud_edit":"Editar a nube de puntos",
"cmd.pointcloud_insert":"Inserir nube de puntos",
"cmd.pointcloud_list":"Nubes de puntos",
"cmd.render.compare.divider":"Mover o divisor da comparación de renders",
"cmd.render.result.discard":"Descartar o resultado do render",
"cmd.render.result.select":"Seleccionar o resultado do render",
"cmd.render_aging_describe":"Envellecemento da superficie por capas",
"cmd.render_backends":"Motores de render",
"cmd.render_batch":"Renderizar todas as tomas",
@@ -1195,6 +1217,7 @@
"cmd.sketch_spline_control_point_5":"Spline por puntos de control (grao 5)",
"cmd.sketch_spline_fit_point":"Spline por puntos de paso",
"cmd.sketch_spline_insert_point":"Engadir punto ao spline",
"cmd.sketch_spline_remove_point":"Eliminar punto do spline",
"cmd.sketch_spline_reverse":"Inverter a dirección do spline",
"cmd.sketch_spun_profile":"Perfil de revolución",
"cmd.sketch_toggle_diameter":"Alternar raio / diámetro",
@@ -1245,6 +1268,7 @@
"cmd.timeline_rollback":"Mover o marcador da liña de tempo",
"cmd.timeline_stop":"Deter a reprodución do historial",
"cmd.timeline_suppress":"Suprimir a operación",
"cmd.ui.assistant":"Mostrar/Ocultar o asistente",
"cmd.view.render_browser":"Navegador de render",
"cmd.view.render_dock":"Mover o panel de render",
"cmd.view.render_focus":"Vista de foco do render",
@@ -1279,17 +1303,28 @@
"cmd.view_tool":"Ferramenta de navegación",
"cmd.view_top":"Vista superior",
"cmd.view_visual_style":"Estilo visual",
"color.blue":"Azul",
"color.copy":"Preme para copiar os valores da cor",
"color.edit":"Preme para editar a cor",
"color.gamma":"Mostrando os valores da cor no espazo gamma 0-255",
"color.green":"Verde",
"color.hex":"Hex",
"color.hex_help":"Escribe #rrggbb ou #rrggbbaa; con seis díxitos consérvase a opacidade",
"color.hex_hint":"#rrggbb",
"color.hue":"Ton",
"color.linear":"Mostrando os valores da cor no espazo lineal 0-1",
"color.recent":"Cores recentes",
"color.recent_help":"As cores que escolles en calquera campo de cor aparecen aquí",
"color.red":"Vermello",
"color.saturation":"Saturación (porcentaxe)",
"color.saturation_value":"Saturación e valor",
"color.selected":"Cor seleccionada",
"color.step_down":"Diminuír un paso",
"color.step_up":"Aumentar un paso",
"color.value":"Valor, a luminosidade (porcentaxe)",
"config.column_filter_empty":"Non hai columnas que coincidan",
"config.rule_parameter_columns":"Só se listan os parámetros que teñen unha columna na táboa. Engade unha con Engadir columna (+) para usala aquí.",
"config.rule_suppression_columns":"Só se listan as operacións que teñen unha columna Suprimir na táboa. Engade unha con Engadir columna (+) para controlalas desde aquí.",
"contact.components_count":"{count} compoñentes",
"contact.enabled_label":"activado",
"coupling.gear_1":"Engrenaxe 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Cota: {name}",
"dialog.edit_title":"EDITAR {title}",
"dialog.no_shown_body":"Non hai ningún corpo visible para modificar: mostra un ou escolle Corpo novo",
"dialog.pattern_sketch_not_object":"Escolle corpos ou operacións: un bosquexo non é ningunha das dúas cousas. Repite as súas curvas co Patrón ou a Simetría do propio bosquexo, ou extrúeo primeiro.",
"dialog.selection_guidance":"Selecciona unha entrada para cambiala. Fai clic nos obxectos seleccionados para quitalos; Ctrl/Cmd-clic tamén os alterna. Revisa a previsualización e preme Aceptar.",
"dialog.selection_step":"{step} de {total}: selecciona {input}",
"dialog.step":"Paso",
"document.changed_on_disk":"{name} cambiou no disco",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Crea un eixe de construción por dous puntos, vértices ou puntos do bosquexo. Úsao para un eixe que vai entre dúas posicións coñecidas.",
"help.construct.plane.along_path":"Crea un plano de construción perpendicular a unha aresta ou curva, nunha posición ao longo dela. Úsao para debuxar o perfil dun varrido ou unha sección dunha traxectoria.",
"help.construct.plane.at_angle":"Crea un plano de construción xirado un ángulo a partir dun plano ou dunha cara, arredor dun eixe ou dunha aresta. Úsao para bosquexos inclinados, como unha escuadra en ángulo.",
"help.construct.plane.axis_point":"Crea un plano de construción que contén un eixe e un punto fóra dese eixe. Escolle unha orixe ou un eixe de construción, unha aresta recta ou unha liña do bosquexo e despois un vértice, un punto do bosquexo ou un punto de construción. Un punto sobre o eixe non pode definir un plano único.",
"help.construct.plane.midplane":"Crea un plano de construción a medio camiño entre dous planos ou caras planas, ou que os bisecta onde se atopan formando un ángulo. Úsao como plano de simetría.",
"help.construct.plane.offset":"Crea un plano de construción paralelo a un plano ou a unha cara plana, a unha distancia ou por un punto. Úsao para debuxar a unha altura fixa sobre unha cara.",
"help.construct.plane.perpendicular":"Crea un plano de construción que contén unha liña ou aresta e é perpendicular a un plano ou a unha cara. Úsao para debuxar en vertical sobre un modelo ao longo dunha aresta.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Comproba o tipo de unión (como Ríxida), a fixación ao chan, os límites da unión e os valores controlados por parámetros.",
"joint_move.blocked_title":"Non se pode mover esta peza",
"joint_move.coarse":"Paso de rotación preto do eixe (°)",
"joint_move.conflict":"Unha unión desta peza está en conflito coas outras: {joint}.",
"joint_move.conflict_hint":"Edita, suprime ou elimina a unión en conflito para que as outras unións poidan colocar a peza.",
"joint_move.distance":"Distancia desde o inicio",
"joint_move.done":"Feito",
"joint_move.fine":"Paso de rotación lonxe do eixe (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Pista {number}",
"nav.alias.help":"Shift+Alt+arrastrar co botón esquerdo orbita, Shift+Alt+botón central desprázase, Shift+Alt+botón dereito fai zoom; arrastrar co botón central tamén desprázase e arrastrar co botón dereito orbita",
"nav.blender.help":"Arrastrar co botón central orbita, Shift+botón central desprázase, Ctrl+botón central fai zoom; arrastrar co botón dereito non move a cámara",
"nav.creo.help":"Arrastrar co botón central orbita, Shift+botón central desprázase, Ctrl+botón central arrastrando en vertical fai zoom (cara abaixo para achegar); xira a roda do rato para facer zoom",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"O rato e o rato 3D xiran a vista a través dos dous polos e conservan o xiro sobre a vista. O axuste dos eixes con Shift está desactivado.",
"nav.free_orbit.label":"Órbita libre",
"nav.free_orbit.snap_help":"O rato e o rato 3D xiran a vista a través dos dous polos e conservan o xiro sobre a vista. Mantén Shift durante un arrastre de órbita para axustar a dirección da vista e o xiro.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+arrastrar co botón esquerdo desprázase, Shift+Alt+botón esquerdo fai zoom, Ctrl+arrastrar co botón esquerdo sobre un espazo baleiro orbita",
"nav.inventor.help":"Arrastrar co botón central desprázase, Shift+botón central orbita, Ctrl+botón central fai zoom, arrastrar co botón dereito orbita",
"nav.maya.help":"Alt+arrastrar co botón esquerdo orbita, Alt+botón central desprázase, Alt+botón dereito fai zoom; arrastrar co botón central tamén desprázase",
"nav.nx.help":"Arrastrar co botón central orbita, Shift+botón central desprázase (botón central + dereito de NX), Ctrl+botón central fai zoom (botón central + esquerdo de NX); arrastrar co botón dereito non move a cámara",
"nav.openscad.help":"Arrastrar co botón esquerdo sobre un espazo baleiro orbita, Shift+arrastrar co botón esquerdo selecciona por caixa, arrastrar a xeometría do bosquexo edítaa; arrastrar co botón dereito ou central desprázase, Shift+arrastrar co botón dereito ou central fai zoom",
"nav.perspective.sketch":"A edición de bosquexos usa a vista ortogonal. Remata o bosquexo para cambiar á perspectiva.",
"nav.right_drag_orbits.help":"Desactivado: arrastrar co botón dereito non move a cámara e o botón dereito só abre o menú contextual. Escoller a asignación do rato de SolidWorks desactívao.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Parafuso de cabeza abombada con hexágono interior",
"parts.family.set_screw":"Parafuso sen cabeza de hexágono interior, punta plana",
"parts.family.socket_head_cap_screw":"Parafuso de cabeza cilíndrica con hexágono interior",
"parts.family.washer":"Arandela plana",
"parts.family.washer_sae":"Arandela plana, SAE (estreita)",
"parts.family.washer_uss":"Arandela plana, USS (ancha)",
"parts.holes":"Furados (opcional)",
"parts.placement_hint":"escolle un ou máis furados para asentar unha peza en cada un, ou Aceptar colócaa na orixe",
"parts.system":"Sistema de unidades",
"parts.system.inch":"Polgadas",
"parts.system.metric":"Métrico",
"pattern.alignment_2":"Aliñamento 2",
"pattern.alignment_hint":"O número inclúe o orixinal. Centrar equilibra as copias; Inverter escolle o lado da copia extra cando o total é par.",
"pattern.direction_1":"Dirección 1",
@@ -2113,6 +2166,8 @@
"prefs.button_left":"Arrastrar co botón esquerdo",
"prefs.button_middle":"Arrastrar co botón central",
"prefs.button_right":"Arrastrar co botón dereito",
"prefs.carousel_next":"Seguinte",
"prefs.carousel_previous":"Anterior",
"prefs.choose_font":"Escoller ficheiro de tipo de letra…",
"prefs.click":"Clic",
"prefs.contact_shading":"Sombreado suave de contacto",
@@ -2125,6 +2180,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Superficies curvas",
"prefs.curves":"Superficies curvas",
"prefs.cut_preview_tint":"Mostrar en vermello o material retirado",
"prefs.cut_preview_tint_help":"Unha vista previa énchea o material que retira unha operación, e a forma que substitúe, cun fantasma vermello translúcido. Se está desactivado, eses recheos son totalmente transparentes e só se debuxan os seus contornos.",
"prefs.dark_parts_shading":"Conservar a forma das pezas escuras",
"prefs.dark_parts_shading_help":"Sombrea a vista en luz lineal cunha luz de recheo suave do ceo, para que as caras escuras manteñan un degradado en vez de volverse negras",
"prefs.dead_zone_note":"A banda raiada é a zona morta: o movemento dentro dela ignórase.",
"prefs.default":"predeterminado",
"prefs.design":"Valores predeterminados do deseño",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Arestas e sombreado",
"prefs.extend":"Estender",
"prefs.extra_navigation":"Ctrl+arrastrar co botón esquerdo no espazo baleiro orbita; mantén premida a barra espaciadora para desprazar.",
"prefs.extrude_view_isometric":"Cambiar a vista a isométrica ao abrir Extruír",
"prefs.extrude_view_return":"Volver á vista anterior ao pechar Extruír",
"prefs.follows_os":"Segue o sistema operativo",
"prefs.font":"Tipo de letra",
"prefs.font_fallback":"Os glifos que lle faltan ao tipo de letra escollido substitúense polos do tipo de letra integrado, así que ningunha etiqueta mostra unha caixa baleira.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automático",
"prefs.graphics_card_missing":"A tarxeta gráfica gardada non está dispoñible; úsase Automático.",
"prefs.graphics_card_restart":"Aplícase despois de reiniciar SolidCraft. WGPU_ADAPTER_NAME anula esta opción.",
"prefs.graphics_card_unused":"A tarxeta gráfica gardada non se usou para esta xanela; a tarxeta en uso móstrase en Axuda › Acerca de e na barra de estado. Proba Automático ou define WGPU_ADAPTER_NAME cunha parte única do nome da tarxeta.",
"prefs.graphics_note":"Troca velocidade por suavidade. Cada opción mostra o seu efecto nunha mostra.",
"prefs.graphics_presets_note":"Os axustes predefinidos configuran xuntas as opcións de abaixo.",
"prefs.hide_constraint_glyphs_zoomed_out":"Ocultar as iconas de restricións ao reducir o zoom",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Con Bosquexos configurado en Baixo a súa operación, o Historial da esquerda lista cada bosquexo un nivel máis adentro, baixo a primeira operación construída a partir del, sempre que sexa o bastante ancho para mostrar os nomes. A liña de tempo da parte inferior mantén sempre a orde de creación.",
"prefs.history_sketches_under_feature":"Baixo a súa operación",
"prefs.hold_stop_snapping":"Manter premido para deixar de axustar",
"prefs.home_fit_size":"Tamaño de Inicio e Axustar",
"prefs.home_fit_size_note":"Canto da vista ocupa o modelo cando Inicio, Axustar, un deseño aberto ou un cambio de vista do navegador de vistas o encadran, estea ou non activado o axuste de abaixo. 100 %: ocupa a vista entre os paneis, a brúxula e a barra de navegación.",
"prefs.icons_only":"Só iconas",
"prefs.imported_file":"Ficheiro importado",
"prefs.in_browser":"No navegador",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Idioma da interface",
"prefs.interface_note":"Como se ve SolidCraft e onde están as súas partes.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Inverter as frechas curvas de balanceo",
"prefs.invert_curved_roll_arrows_note":"As dúas frechas curvas da esquina do cubo fan xirar a vista no plano da pantalla. Activado: a frecha en sentido horario xira en sentido antihorario e a frecha en sentido antihorario xira en sentido horario. Desactivado: cada frecha xira a vista no sentido en que se curva.",
"prefs.invert_navigator_arrows":"Invertir as frechas de rotación do cubo de vistas",
"prefs.invert_navigator_arrows_note":"As frechas arredor do cubo fan orbitar a cámara na dirección na que apuntan, como en Fusion e Inventor: a frecha da esquerda apunta á dereita e move a cámara cara á dereita. Desactivado: unha frecha xira o cubo cara ao lado no que está, así que a frecha da esquerda move a cámara cara á esquerda. As frechas curvas de balanceo non se ven afectadas.",
"prefs.keep_work_on_tab_switch":"Manter abertos os diálogos e as ferramentas ao cambiar de deseño",
"prefs.keep_work_on_tab_switch_note":"Cada lapela de deseño conserva o seu diálogo ou ferramenta aberto, co que escolliches e escribiches nel, e a súa lapela da barra de ferramentas. Volven estar aí cando regresas ao deseño. Desactivado: cambiar de deseño cancélaos e mostra a lapela Modelo.",
"prefs.labels":"Etiquetas",
"prefs.language_system":"Sistema",
"prefs.layout":"Disposición",
"prefs.layout_note":"Compacta acopla os paneis aos bordos da xanela. A translucidez do navegador está dispoñible en Flotante. Cambia o lado do Asistente na páxina do Asistente.",
"prefs.left":"Esquerda",
"prefs.left_click":"Clic esquerdo",
"prefs.line_drag_draws_one":"Premer e arrastrar debuxa unha liña",
"prefs.line_drag_draws_one_note":"Na ferramenta Liña, premer, arrastrar e soltar debuxa unha liña desde onde se preme ata onde se solta, e remata alí. Os clics seguen debuxando unha cadea. Desactivado: un arrastre coloca un punto onde se solta, como fai un clic.",
"prefs.line_hover_tangent_arc":"Manter o punteiro quieto no último punto dunha liña para cambiar a un arco tanxente",
"prefs.line_hover_tangent_arc_note":"Na ferramenta Liña, unha vez debuxado un segmento, afástate do último punto da cadea, volve e mantén o punteiro quieto nel: o seguinte clic remata un arco tanxente, e o mesmo xesto volve ás liñas. Desactivado: manter o punteiro aí non fai nada.",
"prefs.linked_designs":"Deseños ligados",
"prefs.live_input":"Entrada en directo",
"prefs.live_preview":"Vista previa en directo",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Asignación do rato",
"prefs.navigation":"Navegación",
"prefs.navigation_note":"Como moven a vista o rato, o panel táctil e o rato 3D.",
"prefs.navigator_fit":"Axustar o modelo despois dun cambio de vista do navegador",
"prefs.navigator_fit_note":"Unha cara, esquina ou frecha do cubo de vistas, ou un eixe do gizmo, tamén mira ao centro do modelo desde a única distancia que o abarca por todos os lados (a súa esfera delimitadora). Inicio usa o mesmo zoom e centro mentres isto está activado, así que as vistas escollidas despois só xiran. Desactivado: a vista xira no sitio, conservando o seu punto de mira e o seu zoom.",
"prefs.network_host_remove":"Quitar",
"prefs.network_locations":"Permitir ubicacións de rede nos deseños",
"prefs.network_locations_note":"Desactivado: os ficheiros ligados dun deseño que están noutro ordenador (\\\\server\\share) só se abren desde os servidores listados aquí, ou despois de que permitas un cando se che pregunte.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Colocación",
"prefs.prefer_free_sketch_points":"Preferir os puntos de bosquexo móbiles cando os puntos se solapan",
"prefs.preview_choices":"Vista previa das túas opcións",
"prefs.preview_tint_new_faces":"Colorear a superficie nova nunha vista previa",
"prefs.preview_tint_new_faces_help":"A vista previa dunha operación que cambia un corpo pode debuxar a superficie que engade coa cor da vista previa. Se está desactivado, o corpo debúxase tal e como é.",
"prefs.print_face_highlight":"Resaltado da cara de impresión",
"prefs.print_face_highlight_tip":"Intensidade da tinguidura e do contorno da cara de impresión dun corpo na vista. 0 % non mostra resaltado.",
"prefs.profile_active":"Perfil activo",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Usar o orzamento de xeometría anterior da vista previa de Render",
"prefs.render_previous_geometry_budget_help":"Restaura o límite fixo de xeometría anterior (512 MiB en escritorio de 64 bits, 128 MiB noutros casos) en lugar do orzamento baseado no dispositivo.",
"prefs.reports_saved":"{n} gardados",
"prefs.ribbon_click_ends_tool":"Facer clic no botón da ferramenta en uso remata a ferramenta",
"prefs.ribbon_click_ends_tool_note":"Un clic no botón resaltado da cinta da ferramenta de bosquexo en uso remata a ferramenta, e así os clics na vista volven seleccionar. Desactivado: o clic inicia a ferramenta de novo.",
"prefs.ribbon_reveal":"Mostrar os resultados da busca na cinta",
"prefs.ribbon_reveal_note":"Ao pasar o punteiro sobre un resultado en Buscar ordes, móstrase onde está a orde na cinta: a súa lapela, o seu botón ou a súa fila no despregable dun panel. Unha orde iniciada desde a busca escintila alí, e unha orde en execución desde un despregable marca o seu panel.",
"prefs.right_click":"Clic dereito",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Volver á vista anterior",
"prefs.sketch_exit_view.unless_rotated":"Volver, salvo que se xirase",
"prefs.sketch_exit_view_note":"A onde vai a vista despois de Finalizar o bosquexo, Cancelar ou un dobre Esc.",
"prefs.sketch_face_activates_part":"Crear un bosquexo na cara dunha peza activa esa peza",
"prefs.sketch_face_activates_part_note":"Un bosquexo iniciado na cara dun corpo doutro compoñente activa primeiro ese compoñente, de modo que o bosquexo lle pertence e queda con esa peza no navegador. Despois a peza segue activa. Desactivado: o bosquexo pertence ao compoñente activo.",
"prefs.sketch_open_look_at":"Xirar para mirar cara ao bosquexo cando se abre",
"prefs.sketch_open_look_at_note":"Desactivado: crear ou editar un bosquexo deixa a vista tal e como está. Mirar cara a orienta a vista cara ao bosquexo cando o queres.",
"prefs.sketch_recent_snap":"Axustar automaticamente aos centros e puntos medios recentes",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Erro",
"prefs.status_selected":"Seleccionado",
"prefs.status_warning":"Aviso",
"prefs.structure.appearance":"Aparencia",
"prefs.structure.appearance_note":"Cores, texto e accesibilidade.",
"prefs.structure.in_profile":"No perfil",
"prefs.structure.layout":"Disposición",
"prefs.structure.layout_note":"Onde se colocan as partes da xanela.",
"prefs.structure.look":"Estilo",
"prefs.structure.measure_pointer":"Medición e punteiro",
"prefs.structure.mouse3d":"Rato 3D",
"prefs.structure.mouse3d_note":"SpaceMouse e SpaceNavigator.",
"prefs.structure.navigation_note":"Rato e panel táctil. O rato 3D ten a súa propia páxina.",
"prefs.structure.profile":"Perfil",
"prefs.structure.profile_edited":"Cambiado desde que se gardou",
"prefs.structure.profile_hover":"Gardado nos perfís de axustes",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Bosquexo",
"prefs.structure.tools":"Ferramentas",
"prefs.structure.tools_note":"Como se comportan as ferramentas de modelado.",
"prefs.structure.work":"Traballo",
"prefs.supersampling_brief":"Debuxa a vista máis grande e redúcea con filtrado: moi nítida, pero máis pesada.",
"prefs.tab_accent_note":"O realce segue a pestana activa",
"prefs.theme_file":"ficheiro de tema",
@@ -2501,6 +2600,10 @@
"render.base_color":"Cor base · sRGB",
"render.base_metallic":"Fracción metálica",
"render.base_opaque_only":"Este editor mantén a semántica de corpo opaco. Usa os controis explícitos de vidro para a transmisión óptica.",
"render.batch_all_shots":"Todas as tomas ({count})",
"render.batch_empty":"Garda unha toma antes de renderizar todas as tomas.",
"render.batch_limit":"Renderizar todas as tomas está limitado a 32 tomas.",
"render.batch_status":"{running} en curso · {waiting} en espera",
"render.bloom_enable":"Mostrar resplandor",
"render.bloom_help":"Brillo creativo só de saída a partir de realces lineais positivos, esparexido con tres pasadas de caixa normalizadas. O raio está en píxeles de saída. Engádese na luz de visualización lineal antes de sRGB; non é unha lente, un efecto volumétrico nin unha mellora da converxencia. O EXR en bruto non cambia.",
"render.bloom_opaque":"O resplandor require unha saída opaca. O PNG transparente rexéitase; non se aplana sen avisar.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Escolle primeiro un estilo en Aparencias",
"render.chromatic_offset":"Desprazamento cromático dos bordos",
"render.clear_stage":"Quitar o escenario gardado",
"render.compare_divider":"Divisor da comparación",
"render.compare_live":"En directo",
"render.compare_live_preview":"Vista previa en directo",
"render.compare_render":"Render {number}",
"render.compare_side":"Render {number} · {shot}",
"render.compare_summary":"{shot} · {width} × {height} · PNG · {seconds} s · {renderer} · capturado na revisión {revision}",
"render.compare_swap":"Intercambiar",
"render.copy_request":"Copiar JSON",
"render.cpu_aa_help":"Mostras espaciais: máis mostras melloran os bordos e aumentan o tempo de renderizado.",
"render.cpu_area_add":"Engadir luz rectangular da CPU",
@@ -3360,6 +3470,10 @@
"render.result_retained":"Móstrase a última imaxe completada; un renderizado máis recente non a substituíu.",
"ui.agent_chat_custom_hint":"Calquera programa que fale o Agent Client Protocol por stdin e stdout. Non se executa en ningún shell.",
"ui.agent_chat_denied":"Denegado",
"ui.agent_chat_deny":"Denegar",
@@ -4076,8 +4191,16 @@
"ui.agent_chat_mode_all":"Todo",
"ui.agent_chat_mode_ask":"Preguntar",
"ui.agent_chat_mode_edits":"Edicións",
"ui.agent_chat_model_custom":"Usar o personalizado: {model}",
"ui.agent_chat_model_no_tools":"{model} non pode usar as ferramentas de SolidCraft, así que só pode conversar. Escolle un modelo que admita ferramentas.",
"ui.agent_chat_model_rejected":"O axente non aceptou {model}: {error}",
"ui.agent_chat_model_search":"Buscar modelos…",
"ui.agent_chat_model_tip":"O modelo que usa o axente. A túa escolla lémbrase para este axente.",
"ui.agent_chat_models_failed":"Non se puideron listar os modelos: {error}",
"ui.agent_chat_models_listing":"Listando os modelos…",
"ui.agent_chat_models_none":"O punto de acceso non lista ningún modelo",
"ui.agent_chat_models_not_a_list":"A resposta non era unha lista de modelos",
"ui.agent_chat_new":"Chat novo",
"ui.agent_chat_new_confirm":"Comezar un chat novo? Borrarase o actual.",
"ui.agent_chat_next_picture":"Imaxe seguinte",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Permisos",
"ui.ai_preset":"Axuste predefinido",
"ui.ai_protocol":"Protocolo",
"ui.ai_reasoning_effort":"Esforzo de razoamento",
"ui.ai_reasoning_effort_field_hint":"baleiro = valor predeterminado do provedor",
"ui.ai_reasoning_effort_hint":"Opcional. Envíase ao punto de acceso como `reasoning_effort`; os valores aceptados difiren segundo o provedor (por exemplo `low`, `high` ou `max`). SolidCraft nunca substitúe un valor que definas aquí. Déixao baleiro para non enviar nada e manter o valor predeterminado do provedor.",
"ui.ai_remove":"Quitar",
"ui.ai_request_timed_out":"O modelo tardou máis de {seconds} s. Podes aumentar o tempo límite da solicitude deste punto de acceso en Preferencias › Asistente.",
"ui.ai_request_timeout":"Tempo límite da solicitude",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tanxente: escolle un círculo/arco ou unha spline/cónica aberta e despois o punto de tanxencia (curvas de forma libre: extremos)",
"ui.construction.external_hint":"Tanxente: escolle un círculo ou arco, un punto exterior e despois a solución desexada",
"ui.construction.free_hint":"Recta de construción: fai clic en dous puntos; clic dereito para reiniciar",
"ui.construction.normal_needs_length":"Unha recta infinita é sempre de construción: escribe unha lonxitude para debuxar unha liña normal",
"ui.construction.point_hint":"Recta de construción: fai clic no punto polo que debe pasar",
"ui.construction.reference_hint":"Recta de construción: escolle unha recta e despois un punto; clic dereito para cambiar a referencia",
"ui.construction.ribbon_label":"Liñas aux.",
"ui.construction.side_hint":"Recta de construción: fai clic no lado cara ao que segue a recta; clic dereito para comezar de novo",
"ui.context_menu":"Menú contextual",
"ui.continuity_crease":"Aresta",
"ui.continuity_curvature":"Curvatura",
"ui.continuity_curvature_change":"Cambio de curvatura",
"ui.continuity_g0":"G0 aresta",
"ui.continuity_g1":"G1 tanxente",
"ui.continuity_g2":"G2 curvatura",
"ui.continuity_gap":"Separación",
"ui.continuity_position":"Posición",
"ui.continuity_tangent":"Tanxente",
"ui.copy":"Copiar",
"ui.corner":"Esquina",
"ui.corners":"Esquinas",
@@ -4378,6 +4511,7 @@
"ui.dark":"Escuro",
"ui.default_modelling_orientation":"Orientación de modelado predeterminada",
"ui.delete":"Eliminar",
"ui.delete_select_first":"Selecciona primeiro o que queres eliminar: operacións, corpos, compoñentes ou xeometría do bosquexo",
"ui.depth":"Profundidade",
"ui.design":"Deseño",
"ui.design_properties.author":"Autor",
@@ -4470,6 +4604,7 @@
"ui.edit_in_place_saved_elsewhere":"A peza gardouse noutro ficheiro; a ensamblaxe segue ligando {name}",
"ui.edit_in_place_wait":"Agarda a que remate o que se está a executar no deseño",
"ui.edit_section_analysis":"Editar a análise de sección",
"ui.edit_sketch_empty":"Non hai bosquexos para editar",
"ui.ellipse":"Elipse",
"ui.emboss_wrap_note":"Os perfís de liñas ortogonais tanxentes a un cilindro compatible envólvense automaticamente. Escolle unha parede para elixir un destino.",
"ui.end_radius":"Raio final",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Explícita",
"ui.equation_form":"Forma",
"ui.equation_note":"A variable é un número sen unidade: sin(t) tómaa en radiáns. Un resultado sen unidade está na unidade do deseño.",
"ui.equation_note_range":"A variable é unha lonxitude, igual que o seu intervalo: combínaa con parámetros de lonxitude e divídea entre unha lonxitude para sin(). Un resultado sen unidade está na unidade do deseño.",
"ui.equation_parametric":"Paramétrica",
"ui.equation_variable_unit":"A variable ten a unidade do intervalo",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4612,6 +4749,7 @@
"ui.hideOrigin":"Ocultar a orixe",
"ui.hidePlanes":"Ocultar os planos",
"ui.hideProfile":"Ocultar o perfil",
"ui.hide_component_history":"Ocultar o seu historial",
"ui.hide_origin_by_default":"Ocultar a orixe de forma predeterminada",
"ui.hide_origin_note":"Os deseños novos comezan co cartafol Orixe oculto. Un deseño conserva o seu propio axuste de Orixe cando o mostras ou o ocultas.",
"ui.history_back":"Retroceder un paso",
@@ -4619,6 +4757,7 @@
"ui.history_edge_hint":"fai dobre clic na aresta",
"ui.history_first":"Ir ao comezo",
"ui.history_forward":"Avanzar un paso",
"ui.history_hide_hidden":"Ocultar os compoñentes ocultos",
"ui.history_hide_names":"Ocultar os nomes",
"ui.history_last":"Ir ao final",
"ui.history_marker_tip":"Marcador de historial: arrastra para retroceder o modelo; as operacións novas van aquí",
@@ -4628,10 +4767,12 @@
"ui.history_play_button_show":"Mostrar o botón Reproducir",
"ui.history_play_finish_action":"Remata a acción actual antes de reproducir o historial",
"ui.history_play_roll_back":"Move o marcador do historial cara atrás antes de reproducir",
"ui.history_show_hidden":"Mostrar os compoñentes ocultos",
"ui.history_show_names":"Mostrar os nomes",
"ui.history_sketch_listed_under":"Listado en {feature}",
"ui.history_title":"Historial",
"ui.history_toggle_names":"Mostrar ou ocultar os nomes das operacións",
"ui.history_waits_for_editor":"Desfacer, Refacer e Historial agardan ata que se abra o editor da operación",
"ui.hole":"Furado",
"ui.hole_tap_type":"Tipo de roscado do furado",
"ui.hole_type":"Tipo de furado",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} ten cambios sen gardar, así que se inseriu o seu ficheiro gardado. Gárdao e despois usa Actualizar as ligazóns para incorporar os cambios.",
"ui.insert_design.unsaved":"Cambios sen gardar",
"ui.inspect":"Inspeccionar",
"ui.instances":"Instancias",
"ui.intersect":"Intersecar",
"ui.isolate":"Illar",
"ui.join":"Unir",
@@ -4655,12 +4797,14 @@
"ui.joints":"Unións",
"ui.keyboard_shortcuts":"Atallos de teclado",
"ui.language":"Idioma",
"ui.lasso_select":"Lazo (arrastra un bucle a man alzada: colle o que queda totalmente dentro)",
"ui.layout_compact":"Compacta",
"ui.layout_floating":"Flotante",
"ui.length":"Lonxitude",
"ui.length_decimals":"Decimais das lonxitudes",
"ui.light":"Claro",
"ui.line":"Liña",
"ui.line_arc_hint":"Arco tanxente: fai clic no final do arco. Mantén o punteiro quieto de novo no último punto para volver ás liñas; clic dereito ou Esc para finalizar",
"ui.link_copies":"Ligar copias idénticas",
"ui.link_copies_keep":"Manter",
"ui.link_copies_link":"Ligar",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Reconstrúe a peza, substituíndo as operacións engadidas. Actualízanse todas as ocorrencias deste compoñente.",
"ui.paste":"Pegar",
"ui.path":"Traxectoria",
"ui.pattern_object_type_tip":"Corpos: formas sólidas, escollidas na vista ou no Navegador; cada un cópiase enteiro.\nOperacións: pasos do Historial, como unha extrusión ou un furado, escollidos no Historial ou nunha cara que crearon; repítese o paso.\nUn bosquexo non é ningunha das dúas cousas: repite as súas curvas co Patrón ou a Simetría do propio bosquexo, ou extrúeo primeiro.",
"ui.pattern_on_path":"Patrón nunha traxectoria",
"ui.perforate_margin_default":"a partir do diámetro",
"ui.perforate_pitch":"Paso",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Polígono",
"ui.preferences":"Preferencias",
"ui.press_a_key":"preme unha tecla…",
"ui.print_face_body_not_sent":"O corpo desa cara non se envía: engádeo primeiro a Corpos",
"ui.print_face_cleared":"{body}: cara de impresión quitada",
"ui.print_face_input":"Cara de impresión",
"ui.print_face_one_body":"Unha cara de impresión pertence a un só corpo: envía ese corpo só para cambiala",
"ui.print_face_pick":"Selecciona unha cara plana dun corpo sólido para facela a cara de impresión",
"ui.print_face_set":"{body}: cara de impresión definida; Enviar ao laminador apoia o corpo sobre ela",
"ui.profile":"Perfil",
@@ -4908,6 +5053,7 @@
"ui.showDimension":"Mostrar a cota",
"ui.showOrigin":"Mostrar a orixe",
"ui.showPlanes":"Mostrar os planos",
"ui.show_component_history":"Mostrar o seu historial",
"ui.show_constraints":"Restricións",
"ui.show_construction_geometries":"Xeometrías de construción",
"ui.show_dimensions":"Cotas",
@@ -5024,12 +5170,15 @@
"ui.view_angles":"Ángulos da vista",
"ui.view_angles_convention":"Graos arredor do eixe cara arriba. A guiñada 0° é a vista frontal, 90° a esquerda, −90° a dereita, 180° a posterior; un cabeceo de 90° é a vista superior; un balanceo positivo fai xirar o modelo en sentido horario.",
"ui.view_angles_help":"Mostra o cabeceo, a guiñada e o balanceo da vista en graos e a súa proxección baixo o indicador de orientación. Fai clic na lectura para escribir ángulos exactos.",
"update.check_unavailable":"A busca de actualizacións non está dispoñible para esta instalación.",
"update.checking":"Comprobando…",
"update.copy":"Copiar",
"update.dmg_opened":"A imaxe de disco está aberta e verificada: arrastra SolidCraft a Aplicacións, substituíndo a copia antiga, e despois reinicia SolidCraft.",
"update.dmg_opened":"A imaxe de disco está aberta e verificada: sae de SolidCraft, arrastra o novo SolidCraft a Aplicacións, substituíndo a copia antiga, e despois volve abrir SolidCraft.",
"update.download":"Descargar",
"update.download_open":"Descargar e abrir",
"update.downloading":"Descargando e verificando… {done} de {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Abrir o deseño ligado?",
"web.open_link_confirm":"Hai cambios sen gardar. Abrir o deseño ligado nunha pestana nova?",
"Sections (one sketch each)":"Presjeci (po jedna skica)",
"Select Other":"Odaberi drugo",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Odaberi drugo: držite lijevu tipku mirno na modelu (ili desni klik › Odaberi drugo…) kako biste prikazali sve ispod pokazivača; ponovno kliknite na isto mjesto kako biste odabrali sljedeći element. Dvaput kliknite srednjom tipkom za Početni prikaz (Postavke › Navigacija).",
"config.rule_parameter_columns":"Navedeni su samo parametri koji imaju stupac u tablici. Dodajte stupac pomoću Dodaj stupac (+) kako biste parametar mogli upotrijebiti ovdje.",
"config.rule_suppression_columns":"Navedene su samo značajke koje imaju stupac Potisni u tablici. Dodajte stupac pomoću Dodaj stupac (+) kako biste ovdje mogli upravljati značajkom.",
"contact.components_count":"Komponente: {count}",
"contact.enabled_label":"omogućeno",
"coupling.gear_1":"Zupčanik 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Kota: {name}",
"dialog.edit_title":"UREDI {title}",
"dialog.no_shown_body":"Nema prikazanog tijela za promjenu: prikažite jedno ili odaberite Novo tijelo",
"dialog.pattern_sketch_not_object":"Odaberite tijela ili značajke: skica nije ni jedno ni drugo. Ponovite njezine krivulje pomoću alata Niz ili Zrcali u samoj skici ili je najprije ekstrudirajte.",
"dialog.selection_guidance":"Odaberite ulaz kako biste ga promijenili. Kliknite odabrane objekte kako biste ih uklonili; Ctrl/Cmd-klik ih također uključuje i isključuje. Pogledajte pretpregled, a zatim pritisnite U redu.",
"dialog.selection_midpoint":"Središnja točka · {id}",
"dialog.selection_step":"{step} od {total}: Odaberite {input}",
"dialog.step":"Korak",
"document.changed_on_disk":"{name} je promijenjen na disku",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Izrađuje pomoćnu os kroz dvije točke, vrhove ili točke skice. Upotrijebite je za os koja prolazi između dvaju poznatih položaja.",
"help.construct.plane.along_path":"Izrađuje pomoćnu ravninu okomitu na brid ili krivulju, na položaju duž njih. Upotrijebite je za skiciranje profila za povlačenje ili presjeka putanje.",
"help.construct.plane.at_angle":"Izrađuje pomoćnu ravninu zakrenutu za kut u odnosu na ravninu ili lice, oko osi ili brida. Upotrijebite je za nagnute skice, primjerice kutnog nosača.",
"help.construct.plane.axis_point":"Izrađuje pomoćnu ravninu koja sadrži os i točku izvan te osi. Odaberite os ishodišta ili pomoćnu os, ravni brid ili liniju skice, pa vrh, točku skice ili pomoćnu točku. Točka na osi ne može odrediti jedinstvenu ravninu.",
"help.construct.plane.midplane":"Izrađuje pomoćnu ravninu na pola puta između dviju ravnina ili ravnih lica, ili ravninu koja raspolavlja kut kad se one sijeku pod kutom. Upotrijebite je kao ravninu simetrije za zrcaljenje.",
"help.construct.plane.offset":"Izrađuje pomoćnu ravninu paralelnu s ravninom ili ravnim licem, na određenoj udaljenosti ili kroz točku. Upotrijebite je za skiciranje na zadanoj visini iznad lica.",
"help.construct.plane.perpendicular":"Izrađuje pomoćnu ravninu koja sadrži liniju ili brid i okomita je na ravninu ili lice. Upotrijebite je za skiciranje uspravno na modelu duž brida.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Provjerite vrstu spoja (npr. Kruti), učvršćenje, granice spoja i vrijednosti kojima upravljaju parametri.",
"joint_move.blocked_title":"Ovaj dio nije moguće pomaknuti",
"joint_move.coarse":"Korak rotacije blizu osi (°)",
"joint_move.conflict":"Jedan spoj ovog dijela u sukobu je s ostalima: {joint}.",
"joint_move.conflict_hint":"Uredite, potisnite ili izbrišite spoj koji je u sukobu kako bi ostali spojevi mogli postaviti dio.",
"joint_move.distance":"Udaljenost od početka",
"joint_move.done":"Gotovo",
"joint_move.fine":"Korak rotacije daleko od osi (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Staza {number}",
"nav.alias.help":"Shift+Alt+povlačenje lijevom tipkom orbitira, Shift+Alt+srednjom pomiče, Shift+Alt+desnom zumira; povlačenje srednjom tipkom također pomiče, a desnom orbitira",
"nav.blender.help":"Povlačenje srednjom tipkom orbitira, Shift+srednja pomiče, Ctrl+srednja zumira; povlačenje desnom tipkom ne dira kameru",
"nav.creo.help":"Povlačenje srednjom tipkom orbitira, Shift+srednja pomiče, Ctrl+srednja uz okomito povlačenje zumira (prema dolje za približavanje); kotačić također zumira",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Miš i 3D miš rotiraju kroz oba pola i čuvaju nagib. Privlačenje osi tipkom Shift isključeno je.",
"nav.free_orbit.label":"Slobodno orbitiranje",
"nav.free_orbit.snap_help":"Miš i 3D miš rotiraju kroz oba pola i čuvaju nagib. Držite Shift tijekom povlačenja za orbitiranje kako biste privukli smjer pogleda i nagib.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+povlačenje lijevom tipkom pomiče, Shift+Alt+lijeva tipka zumira, Ctrl+povlačenje lijevom tipkom na praznom prostoru orbitira",
"nav.nx.help":"Povlačenje srednjom tipkom orbitira, Shift+srednja pomiče (u NX-u srednja + desna), Ctrl+srednja zumira (u NX-u srednja + lijeva); povlačenje desnom tipkom ne dira kameru",
"nav.openscad.help":"Povlačenje lijevom tipkom po praznom prostoru orbitira, Shift+povlačenje lijevom odabire okvirom, povlačenje geometrije skice uređuje je; povlačenje desnom ili srednjom tipkom pomiče, Shift+desna ili Shift+srednja zumira",
"nav.perspective.sketch":"Uređivanje skice koristi ortografski prikaz. Završite skicu kako biste prešli na perspektivu.",
"nav.right_drag_orbits.help":"Isključeno: povlačenje desnom tipkom ne dira kameru, a desna tipka samo otvara kontekstni izbornik. Odabir mapiranja miša SolidWorks isključuje ovu opciju.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Vijak s poluokruglom glavom i unutarnjim šesterokutom",
"parts.family.dowel_pin":"Cilindrični zatik",
"parts.family.hex_bolt":"Vijak sa šesterokutnom glavom",
"parts.family.hex_cap_screw_inch":"Vijak sa šesterokutnom glavom (inč)",
"prefs.cut_preview_tint":"Prikaži uklonjeni materijal u crvenoj boji",
"prefs.cut_preview_tint_help":"Pregled ispunjava materijal koji značajka uklanja i oblik koji zamjenjuje crvenom prozirnom sjenom. Kada je isključeno, te su ispune potpuno prozirne i crtaju se samo njihovi obrisi.",
"prefs.dark_parts_shading":"Zadrži oblik tamnih dijelova",
"prefs.dark_parts_shading_help":"Sjenča prikaz u linearnom svjetlu uz meko dopunsko svjetlo neba, tako da tamna lica zadrže gradijent umjesto da pocrne",
"prefs.dead_zone_note":"Šrafirana traka je mrtva zona: kretanje unutar nje se zanemaruje.",
"prefs.default":"zadano",
"prefs.design":"Zadane postavke dizajna",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Bridovi i sjenčanje",
"prefs.extend":"Produži",
"prefs.extra_navigation":"Ctrl + povlačenje lijevom tipkom po praznom prostoru orbitira; držite razmaknicu za pomicanje.",
"prefs.extrude_view_isometric":"Okreni prikaz u izometrijski kad se otvori Ekstrudiraj",
"prefs.extrude_view_return":"Vrati se na prethodni prikaz kad se Ekstrudiraj zatvori",
"prefs.follows_os":"Prati operacijski sustav",
"prefs.font":"Font",
"prefs.font_fallback":"Znakovi koji nedostaju odabranom fontu prikazuju se ugrađenim fontom, tako da nijedna oznaka ne prikazuje prazan kvadrat.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatski",
"prefs.graphics_card_missing":"Spremljena grafička kartica nije dostupna; koristi se Automatski.",
"prefs.graphics_card_restart":"Stupa na snagu nakon ponovnog pokretanja SolidCrafta. WGPU_ADAPTER_NAME ima prednost nad ovim odabirom.",
"prefs.graphics_card_unused":"Spremljena grafička kartica nije korištena za ovaj prozor; kartica koja se koristi prikazana je u Pomoć › O programu i u statusnoj traci. Pokušajte s opcijom Automatski ili postavite WGPU_ADAPTER_NAME na jedinstveni dio naziva kartice.",
"prefs.graphics_note":"Žrtvujte brzinu za glatkoću. Svaki odabir pokazuje svoj učinak na primjeru.",
"prefs.graphics_presets_note":"Unaprijed zadane vrijednosti postavljaju sve odabire ispod odjednom.",
"prefs.hide_constraint_glyphs_zoomed_out":"Sakrij simbole ograničenja kada je prikaz umanjen",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Kad je Skice postavljeno na Ispod svoje značajke, vremenska traka lijevo prikazuje svaku skicu jednu razinu uvučeno, ispod prve značajke izrađene iz nje, kad god je dovoljno široka za nazive. Vremenska traka na dnu uvijek zadržava redoslijed nastanka.",
"prefs.history_sketches_under_feature":"Ispod svoje značajke",
"prefs.hold_stop_snapping":"Držite kako biste isključili privlačenje",
"prefs.home_fit_size":"Veličina za Početni prikaz i Uklopi",
"prefs.home_fit_size_note":"Koliki dio prikaza model ispunjava kad ga uokviri Početni prikaz, Uklopi, otvaranje dizajna ili promjena prikaza u navigatoru, bez obzira na to je li postavka ispod uključena. 100 %: ispunjava prikaz između panela, kompasa i navigacijske trake.",
"prefs.icons_only":"Samo ikone",
"prefs.imported_file":"Uvezena datoteka",
"prefs.in_browser":"U stablu modela",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Jezik sučelja",
"prefs.interface_note":"Kako SolidCraft izgleda i gdje su njegovi dijelovi.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Obrni zakrivljene strelice za valjanje",
"prefs.invert_curved_roll_arrows_note":"Dvije zakrivljene strelice u kutu kocke valjaju prikaz unutar ravnine zaslona. Uključeno: strelica u smjeru kazaljke na satu valja prikaz suprotno od smjera kazaljke na satu, a strelica suprotno od smjera kazaljke na satu valja ga u smjeru kazaljke na satu. Isključeno: svaka strelica valja prikaz onako kako je zakrivljena.",
"prefs.invert_navigator_arrows":"Obrni strelice za rotaciju kocke prikaza",
"prefs.invert_navigator_arrows_note":"Strelice oko kocke orbitiraju kameru u smjeru u kojem pokazuju, kao u programima Fusion i Inventor: strelica s lijeve strane pokazuje udesno i zakreće kameru udesno. Isključeno: strelica okreće kocku prema strani na kojoj se nalazi, pa lijeva strelica zakreće kameru ulijevo. Postavka ne utječe na zakrivljene strelice za valjanje.",
"prefs.keep_work_on_tab_switch":"Zadrži dijaloge i alate otvorenima pri prebacivanju između dizajna",
"prefs.keep_work_on_tab_switch_note":"Svaka kartica dizajna zadržava svoj otvoreni dijalog ili alat, s onim što ste u njemu odabrali i upisali, te svoju karticu alatne trake. Kad se vratite na dizajn, ponovno su tu. Isključeno: prebacivanje između dizajna poništava ih i prikazuje karticu Model.",
"prefs.labels":"Oznake",
"prefs.language_system":"Sustav",
"prefs.layout":"Raspored",
"prefs.layout_note":"Kompaktno pričvršćuje panele uz rubove prozora. Prozirnost stabla modela dostupna je u opciji Plutajuće. Stranu Asistenta promijenite na stranici Asistent.",
"prefs.left":"Lijevo",
"prefs.left_click":"Lijevi klik",
"prefs.line_drag_draws_one":"Pritisak i povlačenje crta jednu liniju",
"prefs.line_drag_draws_one_note":"U alatu Linija pritisak, povlačenje i otpuštanje crta jednu liniju od mjesta pritiska do mjesta otpuštanja i ondje završava. Klikovi i dalje crtaju lanac. Isključeno: povlačenje postavlja točku ondje gdje se otpusti, kao i klik.",
"prefs.line_hover_tangent_arc":"Zadržite pokazivač na posljednjoj točki linije kako biste prešli na tangentni luk",
"prefs.line_hover_tangent_arc_note":"U alatu Linija, nakon što je nacrtan segment, odmaknite pokazivač od posljednje točke lanca, vratite ga na nju i držite ga mirno: sljedeći klik završava tangentni luk, a isti pokret vraća na linije. Isključeno: zadržavanje na toj točki ne radi ništa.",
"prefs.linked_designs":"Povezani dizajni",
"prefs.live_input":"Ulaz uživo",
"prefs.live_preview":"Pregled uživo",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Mapiranje miša",
"prefs.navigation":"Navigacija",
"prefs.navigation_note":"Kako miš, dodirna pločica i 3D miš pomiču prikaz.",
"prefs.navigator_fit":"Uklopi model nakon promjene prikaza u navigatoru",
"prefs.navigator_fit_note":"Lice, kut ili strelica kocke prikaza, odnosno os orijentacijskog gizma, također usmjerava pogled na sredinu modela s jedne udaljenosti na kojoj se uklapa iz svakog smjera (njegova granična sfera). Početni prikaz koristi isti zum i središte dok je ova opcija uključena, pa se prikazi koje odaberete poslije njega samo okreću. Isključeno: prikaz se okreće na mjestu i zadržava svoj cilj i zum.",
"prefs.network_host_remove":"Ukloni",
"prefs.network_locations":"Dopusti mrežne lokacije u dizajnima",
"prefs.network_locations_note":"Isključeno: povezane datoteke dizajna na drugom računalu (\\\\server\\share) otvaraju se samo s poslužitelja navedenih ovdje ili nakon što ga dopustite kad se to zatraži.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Postavljanje",
"prefs.prefer_free_sketch_points":"Daj prednost pomičnim točkama skice kad se točke preklapaju",
"prefs.preview_choices":"Pregled vaših odabira",
"prefs.preview_tint_new_faces":"Oboji novu plohu u pregledu",
"prefs.preview_tint_new_faces_help":"Pregled značajke koja mijenja tijelo može nacrtati plohu koju dodaje u boji pregleda. Kada je isključeno, tijelo se crta kakvo jest.",
"prefs.print_face_highlight_tip":"Koliko se jako ploha ispisa tijela boji i obrubljuje u prikazu. 0 % ne prikazuje isticanje.",
"prefs.profile_active":"Aktivni profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Koristi prethodni proračun geometrije za pregled renderiranja",
"prefs.render_previous_geometry_budget_help":"Vrati prethodnu fiksnu granicu geometrije (512 MiB na 64-bitnom desktopu, 128 MiB drugdje) umjesto proračuna prema uređaju.",
"prefs.reports_saved":"Spremljeno: {n}",
"prefs.ribbon_click_ends_tool":"Klik na gumb aktivnog alata završava ga",
"prefs.ribbon_click_ends_tool_note":"Klik na istaknuti gumb na vrpci alata za skiciranje koji je u uporabi završava taj alat, pa klikovi u prikazu ponovno služe za odabir. Isključeno: klik ponovno pokreće alat.",
"prefs.ribbon_reveal":"Prikaži rezultate pretraživanja na vrpci",
"prefs.ribbon_reveal_note":"Zadržavanje pokazivača iznad rezultata u Pretraži naredbe pokazuje gdje se naredba nalazi na vrpci: njezinu karticu, gumb ili redak u padajućem izborniku panela. Naredba pokrenuta iz pretraživanja ondje zatreperi, a pokrenuta naredba iz padajućeg izbornika označava svoj panel.",
"prefs.right_click":"Desni klik",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Vrati se na prethodni prikaz",
"prefs.sketch_exit_view.unless_rotated":"Vrati se osim ako je rotirano",
"prefs.sketch_exit_view_note":"Kamo prikaz ide nakon Završi skicu, Odustani ili dvostrukog Esc.",
"prefs.sketch_face_activates_part":"Skiciranje na licu dijela čini taj dio aktivnim",
"prefs.sketch_face_activates_part_note":"Skica započeta na licu tijela druge komponente najprije aktivira tu komponentu, pa skica pripada njoj i u stablu modela ostaje uz taj dio. Taj dio nakon toga ostaje aktivan. Isključeno: skica pripada aktivnoj komponenti.",
"prefs.sketch_open_look_at":"Okreni kameru prema skici pri otvaranju",
"prefs.sketch_open_look_at_note":"Isključeno: kad izradite ili uredite skicu, prikaz ostaje onakav kakav jest. Pogledaj okreće prikaz prema skici kad to želite.",
"prefs.sketch_recent_snap":"Automatski privlači na nedavna središta i središnje točke",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Pogreška",
"prefs.status_selected":"Odabrano",
"prefs.status_warning":"Upozorenje",
"prefs.structure.appearance":"Izgled",
"prefs.structure.appearance_note":"Boje, tekst i pristupačnost.",
"prefs.structure.in_profile":"U profilu",
"prefs.structure.layout":"Raspored",
"prefs.structure.layout_note":"Gdje se nalaze dijelovi prozora.",
"prefs.structure.look":"Vizualno",
"prefs.structure.measure_pointer":"Mjerenje i pokazivač",
"prefs.structure.mouse3d":"3D miš",
"prefs.structure.mouse3d_note":"SpaceMouse i SpaceNavigator.",
"prefs.structure.navigation_note":"Miš i dodirna pločica. 3D miš ima vlastitu stranicu.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Promijenjeno otkako je spremljeno",
"prefs.structure.profile_hover":"Spremljeno u profilima postavki",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Skica",
"prefs.structure.tools":"Alati",
"prefs.structure.tools_note":"Kako se ponašaju alati za modeliranje.",
"prefs.structure.work":"Rad",
"prefs.supersampling_brief":"Iscrtava prikaz većim i smanjuje ga filtriranjem: vrlo oštro i zahtjevnije.",
"prefs.tab_accent_note":"Naglasna boja prati aktivnu karticu",
"prefs.theme_file":"datoteka teme",
@@ -2501,6 +2600,10 @@
"render.base_color":"Osnovna boja · sRGB",
"render.base_metallic":"Metalni udio",
"render.base_opaque_only":"Ovaj uređivač čuva semantiku neprozirnih tijela. Za optičko propuštanje upotrijebite izričite kontrole stakla.",
"render.batch_all_shots":"Svi kadrovi ({count})",
"render.batch_empty":"Spremite kadar prije renderiranja svih kadrova.",
"render.batch_limit":"Renderiranje svih kadrova ograničeno je na 32 kadra.",
"render.batch_status":"U tijeku: {running} · Na čekanju: {waiting}",
"render.bloom_enable":"Sjaj prikaza",
"render.bloom_help":"Kreativni sjaj samo na izlazu iz pozitivnih linearnih svijetlih dijelova, raširen kroz tri normalizirana prolaza kutijastog filtra. Polumjer je u pikselima izlaza. Dodaje se u linearnoj svjetlosti prikaza prije sRGB-a; nije objektiv, volumetrijski efekt niti poboljšanje konvergencije. Sirovi EXR ostaje nepromijenjen.",
"render.bloom_opaque":"Sjaj zahtijeva neprozirni izlaz. Prozirni PNG odbija se, a ne spljoštava tiho.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Najprije odaberite izgled u Izgledima",
"ui.agent_chat_models_none":"Krajnja točka ne navodi nijedan model",
"ui.agent_chat_models_not_a_list":"Odgovor nije popis modela",
"ui.agent_chat_new":"Novi razgovor",
"ui.agent_chat_new_confirm":"Započeti novi razgovor? Trenutni će biti obrisan.",
"ui.agent_chat_next_picture":"Sljedeća slika",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Dopuštenja",
"ui.ai_preset":"Unaprijed zadano",
"ui.ai_protocol":"Protokol",
"ui.ai_reasoning_effort":"Razina zaključivanja",
"ui.ai_reasoning_effort_field_hint":"prazno = zadana vrijednost pružatelja",
"ui.ai_reasoning_effort_hint":"Neobavezno. Šalje se krajnjoj točki kao `reasoning_effort`; prihvaćene vrijednosti razlikuju se od pružatelja do pružatelja (na primjer `low`, `high` ili `max`). SolidCraft nikad ne mijenja vrijednost koju ovdje postavite. Ostavite prazno da se ništa ne šalje i da se zadrži zadana vrijednost pružatelja.",
"ui.ai_remove":"Ukloni",
"ui.ai_request_timed_out":"Model je trajao dulje od {seconds} s. Vremensko ograničenje zahtjeva za ovu krajnju točku možete povećati u Postavke › Asistent.",
"ui.edit_sketch_empty":"Nema skica za uređivanje",
"ui.ellipse":"Elipsa",
"ui.emboss_wrap_note":"Ortogonalni linijski profili tangentni na jedan podržani valjak automatski se omataju. Odaberite stijenku kako biste odabrali cilj.",
"ui.end_radius":"Krajnji polumjer",
@@ -4480,7 +4610,9 @@
"ui.equation_explicit":"Eksplicitni",
"ui.equation_form":"Oblik",
"ui.equation_note":"Varijabla je običan broj: sin(t) je uzima u radijanima. Rezultat bez jedinice izražen je u jedinici dizajna.",
"ui.equation_note_range":"Varijabla je duljina, kao i njezin raspon: kombinirajte je s parametrima duljine, a za sin() je podijelite duljinom. Rezultat bez jedinice izražen je u jedinici dizajna.",
"ui.equation_parametric":"Parametarski",
"ui.equation_variable_unit":"Varijabla ima jedinicu raspona",
"ui.hide_origin_note":"Novi dizajni počinju sa skrivenom mapom Ishodište. Dizajn zadržava vlastitu postavku Ishodišta kad ga prikažete ili sakrijete.",
"ui.history_sketch_listed_under":"Navedeno ispod {feature}",
"ui.history_title":"Vremenska traka",
"ui.history_toggle_names":"Prikaži ili sakrij nazive značajki",
"ui.history_waits_for_editor":"Poništi, Ponovi i vremenska traka čekaju dok se ne otvori uređivač značajke",
"ui.hole":"Provrt",
"ui.hole_tap_type":"Vrsta navoja provrta",
"ui.hole_type":"Vrsta provrta",
@@ -4647,6 +4783,7 @@
"ui.insert_design.saved_file":"{name} ima nespremljene promjene, pa je umetnuta njegova spremljena datoteka. Spremite ga, a zatim pokrenite Ažuriraj veze kako biste unijeli promjene.",
"ui.lasso_select":"Laso (povucite petlju slobodnom rukom: obuhvaća sve što je u cijelosti unutra)",
"ui.layout_compact":"Kompaktno",
"ui.layout_floating":"Plutajuće",
"ui.length":"Duljina",
"ui.length_decimals":"Decimale duljine",
"ui.light":"Svijetla",
"ui.line":"Linija",
"ui.line_arc_hint":"Tangentni luk: kliknite kraj luka. Ponovno se zadržite na posljednjoj točki za linije; desni klik ili Esc za završetak",
"ui.link_copies":"Poveži identične kopije",
"ui.link_copies_keep":"Zadrži",
"ui.link_copies_link":"Poveži",
@@ -4749,6 +4888,7 @@
"ui.part_size_shared":"Ponovno gradi dio, zamjenjujući sve dodane značajke. Svi primjerci ove komponente ažuriraju se.",
"ui.paste":"Zalijepi",
"ui.path":"Putanja",
"ui.pattern_object_type_tip":"Tijela: puni oblici, odabiru se u prikazu ili u stablu modela; svako se kopira u cijelosti.\nZnačajke: koraci vremenske trake, poput ekstruzije ili provrta, odabiru se na vremenskoj traci ili na licu koje su izradili; korak se ponavlja.\nSkica nije ni jedno ni drugo: ponovite njezine krivulje pomoću alata Niz ili Zrcali u samoj skici ili je najprije ekstrudirajte.",
"ui.pattern_on_path":"Niz duž putanje",
"ui.perforate_margin_default":"iz promjera",
"ui.perforate_pitch":"Korak",
@@ -4794,9 +4934,9 @@
"ui.polygon":"Mnogokut",
"ui.preferences":"Postavke",
"ui.press_a_key":"pritisnite tipku…",
"ui.print_face_body_not_sent":"Tijelo te plohe ne šalje se: najprije ga dodajte u Tijela",
"ui.view_angles_convention":"Stupnjevi oko osi prema gore. Skretanje 0° je Pogled sprijeda, 90° Pogled slijeva, −90° Pogled zdesna, 180° Pogled straga; nagib 90° je Pogled odozgo; pozitivno valjanje okreće model u smjeru kazaljke na satu.",
"ui.view_angles_help":"Prikazuje nagib, skretanje i valjanje prikaza u stupnjevima te njegovu projekciju ispod orijentacijskog gizma. Kliknite očitanje kako biste upisali točne kutove.",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Más kijelölése: tartsa nyomva a bal gombot egy helyen a modellen (vagy jobb kattintás › Más kijelölése…) a kurzor alatti elemek listázásához; kattintson újra ugyanarra a helyre a következő elem kijelöléséhez. A középső gomb dupla kattintása a kezdőnézetre vált (Beállítások › Navigáció).",
"config.rule_parameter_columns":"Csak azok a paraméterek szerepelnek, amelyeknek van oszlopa a táblázatban. Az Oszlop hozzáadása (+) paranccsal vehet fel egyet, hogy itt használhassa.",
"config.rule_suppression_columns":"Csak azok az elemek szerepelnek, amelyeknek van Elnyomás oszlopa a táblázatban. Az Oszlop hozzáadása (+) paranccsal vehet fel egyet, hogy innen vezérelje.",
"contact.components_count":"{count} komponens",
"contact.enabled_label":"engedélyezve",
"coupling.gear_1":"1. fogaskerék",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Méret: {name}",
"dialog.edit_title":"{title} SZERKESZTÉSE",
"dialog.no_shown_body":"Nincs módosítható megjelenített test: jelenítsen meg egyet, vagy válassza az Új test lehetőséget",
"dialog.pattern_sketch_not_object":"Válasszon testeket vagy elemeket: a vázlat egyik sem. Ismételje a görbéit a vázlat saját Minta vagy Tükrözés parancsával, vagy húzza ki előbb.",
"dialog.selection_guidance":"Válasszon ki egy bemenetet a módosításhoz. A kijelölt objektumokra kattintva eltávolíthatja őket; a Ctrl/Cmd-kattintás is váltja a kijelölést. Tekintse át az előnézetet, majd nyomja meg az OK gombot.",
"document.changed_on_disk":"A(z) {name} megváltozott a lemezen",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Szerkesztőtengelyt hoz létre két ponton, csúcson vagy vázlatponton át. Használja két ismert helyzet között húzódó tengelyhez.",
"help.construct.plane.along_path":"Szerkesztősíkot hoz létre egy élre vagy görbére merőlegesen, annak egy adott helyén. Használja söpréshez való profil vagy egy útvonal keresztmetszetének megrajzolására.",
"help.construct.plane.at_angle":"Szerkesztősíkot hoz létre, amely egy síktól vagy laptól egy tengely vagy él körül adott szöggel van elforgatva. Használja ferde vázlatokhoz, például szögben álló konzolhoz.",
"help.construct.plane.axis_point":"Szerkesztősíkot hoz létre, amely tartalmaz egy tengelyt és egy, a tengelyen kívül eső pontot. Válasszon egy origótengelyt vagy szerkesztőtengelyt, egy egyenes élt vagy vázlatvonalat, majd egy csúcsot, vázlatpontot vagy szerkesztőpontot. A tengelyen lévő pont nem határoz meg egyértelmű síkot.",
"help.construct.plane.midplane":"Szerkesztősíkot hoz létre két sík vagy sík lap között félúton, vagy, ha szögben találkoznak, felezve őket. Használja tükrözés szimmetriasíkjaként.",
"help.construct.plane.offset":"Szerkesztősíkot hoz létre egy síkkal vagy sík lappal párhuzamosan, adott távolságra vagy egy ponton át. Használja, hogy egy lap fölött meghatározott magasságban rajzoljon vázlatot.",
"help.construct.plane.perpendicular":"Szerkesztősíkot hoz létre, amely tartalmaz egy egyenest vagy élt, és merőleges egy síkra vagy lapra. Használja, hogy egy modellen egy él mentén függőlegesen álló vázlatot rajzoljon.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Ellenőrizze a csukló típusát (például Merev), a földhöz rögzítést, a csuklókorlátokat és a paraméterrel vezérelt értékeket.",
"joint_move.blocked_title":"Ez az alkatrész nem mozgatható",
"joint_move.coarse":"Forgatási lépés a tengely közelében (°)",
"joint_move.conflict":"Ennek az alkatrésznek egy csuklója ütközik a többivel: {joint}.",
"joint_move.conflict_hint":"Szerkessze, nyomja el vagy törölje az ütköző csuklót, hogy a többi csukló elhelyezhesse az alkatrészt.",
"joint_move.distance":"Távolság a kezdőponttól",
"joint_move.done":"Kész",
"joint_move.fine":"Forgatási lépés a tengelytől távol (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"{number}. sáv",
"nav.alias.help":"Shift+Alt+bal húzás: keringés, Shift+Alt+középső húzás: pásztázás, Shift+Alt+jobb húzás: nagyítás; a középső húzás is pásztáz, a jobb húzás is keringést végez",
"nav.blender.help":"Középső húzás: keringés, Shift+középső húzás: pásztázás, Ctrl+középső húzás: nagyítás; a jobb húzás nem mozgatja a kamerát",
"nav.creo.help":"Középső húzás: keringés, Shift+középső húzás: pásztázás, Ctrl+középső függőleges húzás: nagyítás (lefelé húzva közelít); az egérgörgő görgetése: nagyítás",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Az egér és a 3D-egér mindkét póluson átforgat, és megőrzi az elfordulást. A Shiftre történő tengelyhez illesztés ki van kapcsolva.",
"nav.free_orbit.label":"Szabad keringés",
"nav.free_orbit.snap_help":"Az egér és a 3D-egér mindkét póluson átforgat, és megőrzi az elfordulást. Keringéskor tartsa lenyomva a Shiftet a nézetirány és az elfordulás illesztéséhez.",
"nav.maya.help":"Alt+bal húzás: keringés, Alt+középső húzás: pásztázás, Alt+jobb húzás: nagyítás; a középső húzás is pásztáz",
"nav.nx.help":"Középső húzás: keringés, Shift+középső húzás: pásztázás (az NX-ben középső + jobb gomb), Ctrl+középső húzás: nagyítás (az NX-ben középső + bal gomb); a jobb húzás nem mozgatja a kamerát",
"nav.openscad.help":"Bal húzás üres helyen: keringés, Shift+bal húzás: kijelölés kerettel, a vázlatgeometria húzása szerkeszt; jobb vagy középső húzás: pásztázás, Shift+jobb vagy Shift+középső húzás: nagyítás",
"nav.perspective.sketch":"A vázlatszerkesztés ortografikus nézetet használ. A perspektívára váltáshoz fejezze be a vázlatot.",
"nav.right_drag_orbits.help":"Ki: a jobb gombos húzás nem mozgatja a kamerát, és a jobb gomb csak a helyi menüt nyitja meg. A SolidWorks egérkiosztás kiválasztása kikapcsolja.",
"parts.family.washer_uss":"Sima alátét, USS (széles)",
"parts.holes":"Furatok (opcionális)",
"parts.placement_hint":"jelöljön ki egy vagy több furatot, hogy mindegyikbe beillesszen egy alkatrészt, vagy az OK az origóba helyezi",
"parts.system":"Mértékegység-rendszer",
"parts.system.inch":"Hüvelyk",
"parts.system.metric":"Metrikus",
"pattern.alignment_2":"2. igazítás",
"pattern.alignment_hint":"A darabszám tartalmazza az eredetit. A Közép kiegyensúlyozza a másolatokat; a Megfordítás páros összegnél kijelöli a többletoldalt.",
"prefs.cut_preview_tint":"Az eltávolított anyag megjelenítése pirossal",
"prefs.cut_preview_tint_help":"Az előnézet az elem által eltávolított anyagot és a lecserélt alakzatot piros, áttetsző szellemképpel tölti ki. Kikapcsolva ezek a kitöltések teljesen átlátszóak, és csak a körvonalaik láthatók.",
"prefs.dark_parts_shading":"A sötét alkatrészek formájának megőrzése",
"prefs.dark_parts_shading_help":"A nézet árnyalása lineáris fényben, lágy égbolt-kitöltéssel, hogy a sötét lapokon megmaradjon az átmenet, és ne váljanak feketévé",
"prefs.dead_zone_note":"A sraffozott sáv a holtsáv: az azon belüli mozgást figyelmen kívül hagyja.",
"prefs.default":"alapértelmezett",
"prefs.design":"Terv alapbeállításai",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Élek és árnyalás",
"prefs.extend":"Meghosszabbítás",
"prefs.extra_navigation":"A Ctrl+bal egérgombos húzás az üres területen keringést végez; a Szóköz nyomva tartásával pásztázhat.",
"prefs.extrude_view_isometric":"A nézet izometrikusra fordítása a Kihúzás megnyitásakor",
"prefs.extrude_view_return":"Visszatérés a korábbi nézethez a Kihúzás bezárásakor",
"prefs.follows_os":"Az operációs rendszert követi",
"prefs.font":"Betűtípus",
"prefs.font_fallback":"A kiválasztott betűtípusból hiányzó karakterek a beépített betűtípusból pótlódnak, így egyetlen felirat sem mutat üres négyzetet.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatikus",
"prefs.graphics_card_missing":"A mentett videokártya nem érhető el; az Automatikus beállítás van használatban.",
"prefs.graphics_card_restart":"A SolidCraft újraindítása után lép életbe. A WGPU_ADAPTER_NAME felülbírálja ezt a választást.",
"prefs.graphics_card_unused":"A mentett videokártyát nem használta ez az ablak; a ténylegesen használt kártya a Súgó › A SolidCraftról ablakban és az állapotsorban látható. Próbálja az Automatikus beállítást, vagy a WGPU_ADAPTER_NAME értékét állítsa a kártya nevének egy egyedi részletére.",
"prefs.graphics_note":"Cserélje a sebességet simaságra. Minden választás hatását egy minta mutatja.",
"prefs.graphics_presets_note":"Az előbeállítások az alábbi beállításokat együtt állítják be.",
"prefs.history_sketches_note":"Ha a Vázlatok beállítása „Elemük alatt”, a bal oldali Előzmények minden vázlatot egy szinttel beljebb, az első belőle készült elem alatt sorol fel, ha elég széles a nevekhez. Az alul lévő idővonal mindig a létrehozás sorrendjét tartja meg.",
"prefs.hold_stop_snapping":"Nyomva tartva leállítja az illesztést",
"prefs.home_fit_size":"A Kezdőnézet és az Illesztés mérete",
"prefs.home_fit_size_note":"Mekkora részét tölti ki a modell a nézetnek, amikor a Kezdőnézet, az Illesztés, egy megnyitott terv vagy egy navigátornézet-váltás keretezi, függetlenül attól, hogy az alábbi beállítás be van-e kapcsolva. 100 %: kitölti a nézetet a panelek, az iránytű és a navigációs sáv között.",
"prefs.icons_only":"Csak ikonok",
"prefs.imported_file":"Importált fájl",
"prefs.in_browser":"A böngészőben",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Felület nyelve",
"prefs.interface_note":"A SolidCraft megjelenése és elemeinek elhelyezése.",
"prefs.invert_curved_roll_arrows_note":"A nézetkocka sarkában lévő két íves nyíl a nézetet a képernyő síkjában gördíti. Be: az óramutató járásával megegyező nyíl ellentétes irányba gördít, az ellentétes nyíl pedig az óramutató járásával megegyező irányba. Ki: minden nyíl abba az irányba gördíti a nézetet, amerre ível.",
"prefs.invert_navigator_arrows_note":"A kocka körüli nyilak úgy keringetik a kamerát, ahogy mutatnak, mint a Fusion és az Inventor esetében: a bal oldali nyíl jobbra mutat, és a kamerát jobbra lendíti. Ki: a nyíl a kockát afelé az oldal felé forgatja, amelyiken van, így a bal nyíl a kamerát balra lendíti. Az íves gördülőnyilakat ez nem érinti.",
"prefs.keep_work_on_tab_switch":"A párbeszédablakok és eszközök nyitva tartása tervek közötti váltáskor",
"prefs.keep_work_on_tab_switch_note":"Minden tervfül megtartja a nyitott párbeszédablakát vagy eszközét azzal együtt, amit kijelölt és beírt benne, valamint a menüszalag-fülét. A tervhez visszatérve újra ott vannak. Ki: a tervek közötti váltás megszakítja őket, és a Modell fület mutatja.",
"prefs.labels":"Feliratok",
"prefs.language_system":"Rendszer",
"prefs.layout":"Elrendezés",
"prefs.layout_note":"A Kompakt a paneleket az ablak széleihez rögzíti. A Böngésző áttetszősége Lebegő módban érhető el. Az Asszisztens oldalát az Asszisztens oldalon módosíthatja.",
"prefs.left":"Bal",
"prefs.left_click":"Bal kattintás",
"prefs.line_drag_draws_one":"Lenyomás és húzás egy vonalat rajzol",
"prefs.line_drag_draws_one_note":"A Vonal eszközben a lenyomás, húzás és felengedés egyetlen vonalat rajzol a lenyomás helyétől a felengedés helyéig, és ott véget ér. A kattintások továbbra is láncot rajzolnak. Ki: a húzás a felengedés helyén pontot helyez el, ahogy a kattintás.",
"prefs.line_hover_tangent_arc":"Egy vonal utolsó pontján megállva váltás érintő ívre",
"prefs.line_hover_tangent_arc_note":"A Vonal eszközben, miután megrajzolt egy szakaszt, mozdítsa el a mutatót a lánc utolsó pontjától, térjen vissza, és tartsa mozdulatlanul rajta: a következő kattintás egy érintő ívet fejez be, ugyanez a mozdulat pedig visszavált vonalakra. Ki: az ott megállás nem csinál semmit.",
"prefs.linked_designs":"Kapcsolt tervek",
"prefs.live_input":"Élő bevitel",
"prefs.live_preview":"Élő előnézet",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Egérkiosztás",
"prefs.navigation":"Navigáció",
"prefs.navigation_note":"Hogyan mozgatja a nézetet az egér, az érintőpad és a 3D-egér.",
"prefs.navigator_fit":"A modell illesztése navigátornézet-váltás után",
"prefs.navigator_fit_note":"A nézetkocka egy lapja, sarka vagy nyila, illetve a gizmo egy tengelye a modell közepére is ránéz abból az egyetlen távolságból, amelyből minden oldalról belefér (a határoló gömbje). Amíg ez be van kapcsolva, a Kezdőnézet ugyanazt a nagyítást és középpontot használja, így az utána választott nézetek csak elfordulnak. Ki: a nézet a helyén fordul el, megtartva a célpontját és a nagyítását.",
"prefs.network_host_remove":"Eltávolítás",
"prefs.network_locations":"Hálózati helyek engedélyezése a tervekben",
"prefs.network_locations_note":"Ki: egy terv másik számítógépen lévő hivatkozott fájljai (\\\\server\\share) csak az itt felsorolt kiszolgálókról nyílnak meg, vagy miután kérdésre engedélyez egyet.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Elhelyezés",
"prefs.prefer_free_sketch_points":"Átfedő pontoknál a mozgatható vázlatpontok előnyben részesítése",
"prefs.preview_tint_new_faces":"Az új felület színezése az előnézetben",
"prefs.preview_tint_new_faces_help":"Egy testet módosító elem előnézete az általa hozzáadott felületet az előnézeti színnel rajzolhatja ki. Kikapcsolva a test önmagaként jelenik meg.",
"prefs.print_face_highlight":"Nyomtatási lap kiemelése",
"prefs.print_face_highlight_tip":"Milyen erősen színezi és körvonalazza a nézet a test nyomtatási lapját. 0 % esetén nincs kiemelés.",
"prefs.profile_active":"Aktív profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Korábbi geometriakeret használata a renderelési előnézethez",
"prefs.render_previous_geometry_budget_help":"A korábbi rögzített geometriakorlát visszaállítása (64 bites asztali gépen 512 MiB, máshol 128 MiB) az eszközalapú keret helyett.",
"prefs.reports_saved":"{n} mentve",
"prefs.ribbon_click_ends_tool":"A futó eszköz gombjára kattintva az eszköz befejeződik",
"prefs.ribbon_click_ends_tool_note":"A használatban lévő vázlateszköz kivilágított menüszalag-gombjára kattintva az eszköz befejeződik, így a nézetben a kattintások újra kijelölnek. Ki: a kattintás újra elindítja az eszközt.",
"prefs.ribbon_reveal":"Keresési találatok megmutatása a menüszalagon",
"prefs.ribbon_reveal_note":"Ha a Parancsok keresése egy találata fölé viszi a mutatót, megjelenik, hol található a parancs a menüszalagon: a füle, a gombja vagy a sora egy panel legördülő listájában. A keresésből indított parancs ott felvillan, a legördülő listából futó parancs pedig megjelöli a panelját.",
"prefs.right_click":"Jobb kattintás",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Visszatérés az előző nézethez",
"prefs.sketch_exit_view.unless_rotated":"Visszatérés, ha nem lett forgatva",
"prefs.sketch_exit_view_note":"Hová kerül a nézet a Vázlat befejezése, a Mégse vagy a dupla Esc után.",
"prefs.sketch_face_activates_part":"Ha egy alkatrész lapjára rajzol vázlatot, az az alkatrész aktív lesz",
"prefs.sketch_face_activates_part_note":"Egy másik komponens testének lapján indított vázlat előbb aktiválja azt a komponenst, így a vázlat ahhoz tartozik, és a böngészőben ennél az alkatrésznél marad. Az alkatrész utána is aktív marad. Ki: a vázlat az aktív komponenshez tartozik.",
"prefs.sketch_open_look_at":"Vázlat megnyitásakor a nézet a vázlatra fordul",
"prefs.sketch_open_look_at_note":"Ki: vázlat létrehozása vagy szerkesztése nem változtatja a nézetet. A Ránézés a vázlatra fordítja a nézetet, amikor szeretné.",
"prefs.sketch_recent_snap":"Automatikus illesztés a legutóbbi középpontokhoz és felezőpontokhoz",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Hiba",
"prefs.status_selected":"Kijelölve",
"prefs.status_warning":"Figyelmeztetés",
"prefs.structure.appearance":"Megjelenés",
"prefs.structure.appearance_note":"Színek, szöveg és kisegítő lehetőségek.",
"render.batch_empty":"Mentsen el egy felvételt, mielőtt az összes felvételt renderelné.",
"render.batch_limit":"Az összes felvétel renderelése legfeljebb 32 felvételre korlátozott.",
"render.batch_status":"{running} fut · {waiting} vár",
"render.bloom_enable":"Bloom megjelenítése",
"render.bloom_help":"Kreatív, csak a kimenetre vonatkozó fénykisugárzás a pozitív lineáris csúcsfényekből, három normalizált dobozszűrő-menettel szétterítve. A sugár kimeneti pixelben értendő. Lineáris megjelenítési fényhez adódik az sRGB előtt; nem lencsehatás, nem térfogati effektus és nem javítja a konvergenciát. A nyers EXR változatlan.",
"render.bloom_opaque":"A bloomhoz átlátszatlan kimenet szükséges. Az átlátszó PNG-t a program elutasítja, nem lapítja csendben.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Először válasszon stílust a Megjelenések között",
"ui.agent_chat_model_no_tools":"A(z) {model} nem tudja használni a SolidCraft eszközeit, ezért csak csevegni lehet vele. Válasszon eszköztámogatással rendelkező modellt.",
"ui.agent_chat_model_rejected":"Az ügynök nem fogadta el a(z) {model} modellt: {error}",
"ui.agent_chat_models_none":"A végpont nem listáz modelleket",
"ui.agent_chat_models_not_a_list":"A válasz nem modellek listája volt",
"ui.agent_chat_new":"Új csevegés",
"ui.agent_chat_new_confirm":"Új csevegést indít? A jelenlegi törlődik.",
"ui.agent_chat_next_picture":"Következő kép",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Jogosultságok",
"ui.ai_preset":"Előbeállítás",
"ui.ai_protocol":"Protokoll",
"ui.ai_reasoning_effort":"Gondolkodási szint",
"ui.ai_reasoning_effort_field_hint":"üres = a szolgáltató alapértelmezése",
"ui.ai_reasoning_effort_hint":"Nem kötelező. `reasoning_effort` néven kerül elküldésre a végpontnak; az elfogadott értékek szolgáltatónként eltérnek (például `low`, `high` vagy `max`). Az itt megadott értéket a SolidCraft soha nem cseréli le. Hagyja üresen, ha nem szeretne semmit küldeni, és meg szeretné tartani a szolgáltató alapértelmezését.",
"ui.ai_remove":"Eltávolítás",
"ui.ai_request_timed_out":"A modell nem válaszolt {seconds} s alatt. A kérés időkorlátját ehhez a végponthoz a Beállítások › Asszisztens alatt emelheti meg.",
"ui.ai_request_timeout":"Kérés időkorlátja",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Érintő: válasszon egy kört/ívet vagy nyitott spline-t/kúpgörbét, majd az érintési pontot (szabadformájú görbék: végpontok)",
"ui.construction.external_hint":"Érintő: válasszon egy kört vagy ívet, egy külső pontot, majd a kívánt megoldást",
"ui.construction.free_hint":"Szerkesztőegyenes: kattintson két pontra; jobb kattintással újrakezdheti",
"ui.construction.normal_needs_length":"A végtelen egyenes mindig szerkesztőegyenes: normál vonal rajzolásához adjon meg hosszt",
"ui.construction.point_hint":"Szerkesztőegyenes: kattintson arra a pontra, amelyen át kell haladnia",
"ui.construction.reference_hint":"Szerkesztőegyenes: válasszon egy egyenest, majd egy pontot; jobb kattintással módosíthatja a referenciát",
"ui.construction.ribbon_label":"Segédvonalak",
"ui.construction.side_hint":"Szerkesztőegyenes: kattintson arra az oldalra, amerre a vonal halad; jobb kattintással újrakezdheti",
"ui.emboss_wrap_note":"Az egyetlen támogatott hengerhez érintő, merőleges vonalprofilok automatikusan a henger köré tekerednek. Válasszon ki egy falat a cél kiválasztásához.",
"ui.end_radius":"Végi sugár",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Explicit",
"ui.equation_form":"Alak",
"ui.equation_note":"A változó egyszerű szám: a sin(t) radiánban értelmezi. A mértékegység nélküli eredmény a terv mértékegységében értendő.",
"ui.equation_note_range":"A változó hossz, ahogy a tartománya is: keverje hosszparaméterekkel, és a sin() előtt ossza el egy hosszal. A mértékegység nélküli eredmény a terv mértékegységében értendő.",
"ui.equation_parametric":"Parametrikus",
"ui.equation_variable_unit":"A változó a tartomány mértékegységét használja",
"ui.hide_origin_note":"Az új tervek az Origó mappa elrejtésével indulnak. A terv megtartja a saját Origó-beállítását, amint megjeleníti vagy elrejti.",
"ui.history_back":"Egy lépéssel vissza",
@@ -4619,6 +4757,7 @@
"ui.history_edge_hint":"kattintson duplán az élre",
"ui.history_toggle_names":"Elemnevek megjelenítése vagy elrejtése",
"ui.history_waits_for_editor":"A Visszavonás, a Mégis és az Előzmények addig várnak, amíg az elemszerkesztő meg nem nyílik",
"ui.hole":"Furat",
"ui.hole_tap_type":"Furat menettípusa",
"ui.hole_type":"Furat típusa",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"A(z) {name} nem mentett módosításokat tartalmaz, ezért a mentett fájlja lett beszúrva. Mentse el, majd a Kapcsolatok frissítése paranccsal hozza át a módosításokat.",
"ui.part_size_shared":"Újraépíti az alkatrészt, a hozzáadott elemeket lecserélve. A komponens minden előfordulása frissül.",
"ui.paste":"Beillesztés",
"ui.path":"Útvonal",
"ui.pattern_object_type_tip":"Testek: tömör alakzatok, a nézetben vagy a Böngészőben kijelölve; mindegyik egészében másolódik.\nElemek: az Előzmények lépései, például egy kihúzás vagy egy furat, az Előzményekben vagy az általuk létrehozott lapon kijelölve; a lépés megismétlődik.\nA vázlat egyik sem: a görbéit a vázlat saját Minta vagy Tükrözés parancsával ismételje, vagy húzza ki előbb.",
"ui.pattern_on_path":"Minta útvonalon",
"ui.perforate_margin_default":"az átmérőből",
"ui.perforate_pitch":"Osztás",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Sokszög",
"ui.preferences":"Beállítások",
"ui.press_a_key":"nyomjon meg egy billentyűt…",
"ui.print_face_body_not_sent":"Ennek a lapnak a teste nincs elküldve: előbb add hozzá a Testekhez",
"ui.print_face_cleared":"{body}: nyomtatási lap törölve",
"ui.print_face_input":"Nyomtatási lap",
"ui.print_face_one_body":"A nyomtatási lap egy testhez tartozik: a módosításhoz küldd el azt a testet egyedül",
"ui.print_face_pick":"Válassz ki egy tömör test egy sík lapját, hogy az legyen a nyomtatási lap",
"ui.print_face_set":"{body}: nyomtatási lap beállítva; a Küldés szeletelőnek erre a lapra fekteti a testet",
"ui.view_angles_convention":"Fok a felfelé mutató tengely körül. Az elfordulás 0° az elölnézet, 90° a bal oldali, −90° a jobb oldali, 180° a hátulnézet; a 90°-os billentés a felülnézet; a pozitív gördülés az óramutató járásával megegyező irányba forgatja a modellt.",
"ui.view_angles_help":"Megjeleníti a nézet billentését, elfordulását és gördülését fokban, valamint a vetítési módját a tájolásjelző alatt. Kattintson a kijelzőre a pontos szögek beírásához.",
"update.check_unavailable":"Ehhez a telepítéshez nem érhető el a frissítések keresése.",
"update.checking":"Keresés…",
"update.copy":"Másolás",
"update.dmg_opened":"A lemezkép meg van nyitva és ellenőrizve: húzza a SolidCraftot az Alkalmazások mappába, lecserélve a régi példányt, majd indítsa újra a SolidCraftot.",
"update.dmg_opened":"A lemezkép meg van nyitva és ellenőrizve: lépjen ki a SolidCraftból, húzza az új SolidCraftot az Alkalmazások mappába, lecserélve a régi példányt, majd nyissa meg újra a SolidCraftot.",
"update.download":"Letöltés",
"update.download_open":"Letöltés és megnyitás",
"update.downloading":"Letöltés és ellenőrzés… {done}/{total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Megnyitja a csatolt tervet?",
"web.open_link_confirm":"Mentetlen módosítások vannak. Megnyitja a csatolt tervet új fülön?",
"Sections (one sketch each)":"Penampang (satu sketsa per penampang)",
"Select Other":"Pilih Lainnya",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Select Other: tahan tombol kiri diam di model (atau klik kanan › Select Other…) untuk mendaftar semua yang ada di bawah kursor; klik lagi di titik yang sama untuk memilih benda berikutnya. Klik dua kali tombol tengah untuk ke Home (Preferensi › Navigasi).",
"color.gamma":"Menampilkan nilai warna dalam ruang gamma 0-255",
"color.green":"Hijau",
"color.hex":"Hex",
"color.hex_help":"Masukkan #rrggbb atau #rrggbbaa; enam digit mempertahankan opasitas",
"color.hex_hint":"#rrggbb",
"color.hue":"Rona",
"color.linear":"Menampilkan nilai warna dalam ruang linear 0-1",
"color.recent":"Warna terbaru",
"color.recent_help":"Warna yang Anda pilih di kolom warna mana pun muncul di sini",
"color.red":"Merah",
"color.saturation":"Saturasi (persen)",
"color.saturation_value":"Saturasi dan nilai",
"color.selected":"Warna terpilih",
"color.step_down":"Turunkan",
"color.step_up":"Naikkan",
"color.value":"Nilai, yaitu kecerahan (persen)",
"config.column_filter_empty":"Tidak ada kolom yang cocok",
"config.rule_parameter_columns":"Hanya parameter yang memiliki kolom di tabel yang dicantumkan. Tambahkan satu dengan Tambah Kolom (+) untuk memakainya di sini.",
"config.rule_suppression_columns":"Hanya fitur yang memiliki kolom Tekan di tabel yang dicantumkan. Tambahkan satu dengan Tambah Kolom (+) untuk mengendalikannya di sini.",
"contact.components_count":"{count} komponen",
"contact.enabled_label":"aktif",
"coupling.gear_1":"Roda Gigi 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Dimensi: {name}",
"dialog.edit_title":"EDIT {title}",
"dialog.no_shown_body":"Tidak ada bodi yang ditampilkan untuk diubah: tampilkan satu, atau pilih Bodi Baru",
"dialog.pattern_sketch_not_object":"Pilih bodi atau fitur: sketsa bukan keduanya. Ulangi kurvanya dengan Pola atau Cermin milik sketsa itu sendiri, atau ekstrusi dulu.",
"dialog.selection_guidance":"Pilih input untuk mengubahnya. Klik objek terpilih untuk menghapusnya; Ctrl/Cmd-klik juga mengalihkannya. Tinjau pratinjau, lalu tekan OK.",
"dialog.selection_midpoint":"Titik tengah · {id}",
"dialog.selection_step":"{step} dari {total}: Pilih {input}",
"dialog.step":"Langkah",
"document.changed_on_disk":"{name} berubah di disk",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Membuat sumbu konstruksi melalui dua titik, titik sudut, atau titik sketsa. Gunakan untuk sumbu yang membentang di antara dua posisi yang diketahui.",
"help.construct.plane.along_path":"Membuat bidang konstruksi tegak lurus terhadap sebuah tepi atau kurva, pada suatu posisi di sepanjangnya. Gunakan untuk menggambar sketsa profil bagi sweep atau penampang sebuah jalur.",
"help.construct.plane.at_angle":"Membuat bidang konstruksi yang diputar dengan suatu sudut dari sebuah bidang atau muka, terhadap sebuah sumbu atau tepi. Gunakan untuk sketsa miring, seperti braket bersudut.",
"help.construct.plane.axis_point":"Membuat bidang konstruksi yang memuat sebuah sumbu dan sebuah titik di luar sumbu itu. Pilih sebuah origin atau sumbu konstruksi, sebuah tepi lurus atau garis sketsa, lalu sebuah titik sudut, titik sketsa, atau titik konstruksi. Titik yang berada pada sumbu tidak dapat menentukan satu bidang yang unik.",
"help.construct.plane.midplane":"Membuat bidang konstruksi tepat di tengah antara dua bidang atau muka datar, atau membagi dua keduanya di tempat mereka bertemu pada suatu sudut. Gunakan sebagai bidang simetri untuk pencerminan.",
"help.construct.plane.offset":"Membuat bidang konstruksi yang sejajar dengan sebuah bidang atau muka datar, pada suatu jarak atau melalui sebuah titik. Gunakan untuk menggambar sketsa pada ketinggian tertentu di atas sebuah muka.",
"help.construct.plane.perpendicular":"Membuat bidang konstruksi yang memuat sebuah garis atau tepi dan berdiri tegak lurus terhadap sebuah bidang atau muka. Gunakan untuk menggambar sketsa tegak pada model sepanjang sebuah tepi.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Periksa tipe sambungan (misalnya Kaku), status ground, batas sambungan, dan nilai yang digerakkan parameter.",
"joint_move.blocked_title":"Tidak dapat memindahkan part ini",
"joint_move.coarse":"Langkah rotasi dekat sumbu (°)",
"joint_move.conflict":"Sebuah sambungan part ini berkonflik dengan yang lain: {joint}.",
"joint_move.conflict_hint":"Edit, tekan, atau hapus sambungan yang berkonflik agar sambungan lain dapat menempatkan part.",
"joint_move.distance":"Jarak dari awal",
"joint_move.done":"Selesai",
"joint_move.fine":"Langkah rotasi jauh dari sumbu (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Track {number}",
"nav.alias.help":"Shift+Alt+seret kiri memutar orbit, Shift+Alt+tombol tengah menggeser, Shift+Alt+klik kanan memperbesar/memperkecil; seret tombol tengah juga menggeser dan seret kanan memutar orbit",
"nav.blender.help":"Seret tombol tengah memutar orbit, Shift+tombol tengah menggeser, Ctrl+tombol tengah memperbesar/memperkecil; seret kanan tidak menggerakkan kamera",
"nav.creo.help":"Seret tombol tengah memutar orbit, Shift+tombol tengah menggeser, Ctrl+seret tombol tengah secara vertikal memperbesar/memperkecil (ke bawah untuk memperbesar); gulir roda untuk zoom",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Mouse dan mouse 3D berputar melewati kedua kutub dan mempertahankan roll. Penjepretan sumbu dengan Shift dinonaktifkan.",
"nav.free_orbit.label":"Orbit bebas",
"nav.free_orbit.snap_help":"Mouse dan mouse 3D berputar melewati kedua kutub dan mempertahankan roll. Tahan Shift saat menyeret orbit untuk menjepret arah tampilan dan roll.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+seret kiri menggeser, Shift+Alt+kiri memperbesar/memperkecil, Ctrl+seret kiri di area kosong mengorbit",
"nav.inventor.help":"Seret tombol tengah menggeser, Shift+tombol tengah memutar orbit, Ctrl+tombol tengah memperbesar/memperkecil, seret kanan memutar orbit",
"nav.maya.help":"Alt+seret kiri mengorbit, Alt+tengah menggeser, Alt+kanan memperbesar/memperkecil; seret tengah juga menggeser",
"nav.nx.help":"Seret tombol tengah memutar orbit, Shift+tombol tengah menggeser (tombol tengah + kanan di NX), Ctrl+tombol tengah memperbesar/memperkecil (tombol tengah + kiri di NX); seret kanan tidak menggerakkan kamera",
"nav.openscad.help":"Seret kiri di ruang kosong memutar orbit, Shift+seret kiri memilih dengan kotak, seret geometri sketsa mengeditnya; seret kanan atau tombol tengah menggeser, Shift+seret kanan atau Shift+seret tombol tengah memperbesar/memperkecil",
"nav.perspective.sketch":"Pengeditan sketsa memakai tampilan ortografis. Selesaikan sketsa untuk beralih ke perspektif.",
"nav.right_drag_orbits.help":"Mati: seret kanan tidak menggerakkan kamera dan tombol kanan hanya membuka menu konteks. Memilih pemetaan mouse SolidWorks akan mematikannya.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Sekrup kepala bulat (button head)",
"parts.family.dowel_pin":"Pin paralel (dowel)",
"parts.family.hex_bolt":"Baut / sekrup kepala segi enam",
"parts.family.hex_cap_screw_inch":"Sekrup kepala segi enam (cap screw, inci)",
"parts.family.hex_nut":"Mur segi enam",
"parts.family.hex_nut_inch":"Mur segi enam (inci)",
"parts.family.set_screw":"Sekrup set soket segi enam, ujung datar",
"parts.family.socket_head_cap_screw":"Sekrup kepala soket (cap screw)",
"parts.family.washer_uss":"Ring datar (washer), USS (lebar)",
"parts.holes":"Lubang (opsional)",
"parts.placement_hint":"pilih satu lubang atau lebih untuk menempatkan part di masing-masing, atau OK menempatkannya di origin",
"parts.system":"Sistem satuan",
"parts.system.inch":"Inci",
"parts.system.metric":"Metrik",
"pattern.alignment_2":"Perataan 2",
"pattern.alignment_hint":"Jumlah termasuk yang asli. Center menyeimbangkan salinan; Flip memilih sisi tambahan untuk total genap.",
"pattern.direction_1":"Arah 1",
@@ -2113,6 +2166,8 @@
"prefs.button_left":"Seret kiri",
"prefs.button_middle":"Seret tengah",
"prefs.button_right":"Seret kanan",
"prefs.carousel_next":"Berikutnya",
"prefs.carousel_previous":"Sebelumnya",
"prefs.choose_font":"Pilih file font…",
"prefs.click":"Klik",
"prefs.contact_shading":"Bayangan kontak lembut",
@@ -2125,6 +2180,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Permukaan melengkung",
"prefs.curves":"Permukaan melengkung",
"prefs.cut_preview_tint":"Tampilkan material yang dihilangkan dengan warna merah",
"prefs.cut_preview_tint_help":"Pratinjau mengisi material yang dihilangkan sebuah fitur, dan bentuk yang digantikannya, dengan bayangan merah tembus pandang. Jika mati, isian itu sepenuhnya transparan dan hanya garis luarnya yang digambar.",
"prefs.dark_parts_shading":"Pertahankan bentuk part yang gelap",
"prefs.dark_parts_shading_help":"Melakukan pewarnaan tampilan dalam cahaya linear dengan cahaya pengisi langit yang lembut, sehingga muka yang gelap tetap memiliki gradasi dan tidak menjadi hitam",
"prefs.dead_zone_note":"Pita berarsir adalah zona mati: gerakan di dalamnya diabaikan.",
"prefs.default":"default",
"prefs.design":"Default desain",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Tepi dan pewarnaan",
"prefs.extend":"Perpanjang",
"prefs.extra_navigation":"Ctrl+seret kiri pada ruang kosong untuk orbit; tahan Space untuk geser.",
"prefs.extrude_view_isometric":"Putar tampilan ke isometrik saat Ekstrusi dibuka",
"prefs.extrude_view_return":"Kembali ke tampilan sebelumnya saat Ekstrusi ditutup",
"prefs.follows_os":"Mengikuti OS",
"prefs.font":"Font",
"prefs.font_fallback":"Glif yang tidak dimiliki font pilihan akan memakai font bawaan, sehingga tidak ada label yang menampilkan kotak kosong.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Otomatis",
"prefs.graphics_card_missing":"Kartu grafis yang disimpan tidak tersedia; Otomatis dipakai.",
"prefs.graphics_card_restart":"Berlaku setelah SolidCraft dimulai ulang. WGPU_ADAPTER_NAME menggantikan pilihan ini.",
"prefs.graphics_card_unused":"Kartu grafis yang tersimpan tidak dipakai untuk jendela ini; kartu yang sedang dipakai ditampilkan di Bantuan › Tentang dan di bilah status. Coba Otomatis, atau atur WGPU_ADAPTER_NAME ke bagian unik dari nama kartu.",
"prefs.graphics_note":"Tukar kecepatan dengan kehalusan. Setiap pilihan menampilkan efeknya pada sebuah contoh.",
"prefs.graphics_presets_note":"Preset mengatur pilihan di bawah secara bersamaan.",
"prefs.hide_constraint_glyphs_zoomed_out":"Sembunyikan glif batasan saat zoom out",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Jika Sketsa diatur ke Di bawah fiturnya, Riwayat di sisi kiri mencantumkan setiap sketsa satu tingkat ke dalam, di bawah fitur pertama yang dibuat darinya, selama cukup lebar untuk menampilkan nama. Timeline di bagian bawah selalu mempertahankan urutan pembuatan.",
"prefs.history_sketches_under_feature":"Di bawah fiturnya",
"prefs.hold_stop_snapping":"Tahan untuk menghentikan snap",
"prefs.home_fit_size":"Ukuran Awal dan Pas",
"prefs.home_fit_size_note":"Seberapa besar bagian tampilan yang diisi model saat Awal, Pas, desain yang baru dibuka, atau perubahan tampilan lewat navigator tampilan membingkainya, baik pengaturan di bawah ini aktif maupun tidak. 100 %: mengisi tampilan di antara panel, kompas, dan bilah navigasi.",
"prefs.icons_only":"Hanya ikon",
"prefs.imported_file":"File yang diimpor",
"prefs.in_browser":"Di dalam penjelajah",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Bahasa antarmuka",
"prefs.interface_note":"Tampilan SolidCraft dan letak bagian-bagiannya.",
"prefs.interval_minutes":"{n} mnt",
"prefs.invert_curved_roll_arrows":"Balikkan panah roll melengkung",
"prefs.invert_curved_roll_arrows_note":"Dua panah melengkung di sudut kubus memutar (roll) tampilan di dalam bidang layar. Aktif: panah searah jarum jam memutar berlawanan arah jarum jam dan panah berlawanan arah jarum jam memutar searah jarum jam. Mati: tiap panah memutar tampilan sesuai arah lengkungannya.",
"prefs.invert_navigator_arrows_note":"Panah di sekeliling kubus memutar orbit kamera ke arah yang ditunjuknya, seperti di Fusion dan Inventor: panah di kiri menunjuk ke kanan dan mengayunkan kamera ke kanan. Mati: panah memutar kubus ke sisi tempatnya berada, sehingga panah kiri mengayunkan kamera ke kiri. Panah roll yang melengkung tidak terpengaruh.",
"prefs.keep_work_on_tab_switch":"Biarkan dialog dan alat tetap terbuka saat berpindah desain",
"prefs.keep_work_on_tab_switch_note":"Setiap tab desain mempertahankan dialog atau alat yang terbuka, beserta apa yang Anda pilih dan ketik di dalamnya, dan tab toolbar-nya. Semuanya kembali saat Anda kembali ke desain itu. Mati: berpindah desain membatalkannya dan menampilkan tab Model.",
"prefs.labels":"Label",
"prefs.language_system":"Sistem",
"prefs.layout":"Tata letak",
"prefs.layout_note":"Ringkas menempelkan panel ke tepi jendela. Translusensi penjelajah tersedia di Mengambang. Ubah sisi Asisten di halaman Asisten.",
"prefs.left":"Kiri",
"prefs.left_click":"Klik kiri",
"prefs.line_drag_draws_one":"Tekan dan seret menggambar satu garis",
"prefs.line_drag_draws_one_note":"Di alat Garis, menekan, menyeret, lalu melepas menggambar satu garis dari titik tekan hingga titik lepas, dan garis berakhir di sana. Klik tetap menggambar rantai. Mati: seretan menaruh titik di tempat dilepas, seperti klik.",
"prefs.line_hover_tangent_arc":"Diamkan penunjuk di titik terakhir garis untuk beralih ke busur tangen",
"prefs.line_hover_tangent_arc_note":"Di alat Garis, setelah satu segmen digambar, jauhkan penunjuk dari titik terakhir rantai, kembali, lalu diamkan penunjuk di titik itu: klik berikutnya menentukan ujung busur tangen, dan gerakan yang sama kembali ke garis. Mati: berdiam di sana tidak berpengaruh.",
"prefs.linked_designs":"Desain tertaut",
"prefs.live_input":"Input langsung",
"prefs.live_preview":"Pratinjau langsung",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Pemetaan mouse",
"prefs.navigation":"Navigasi",
"prefs.navigation_note":"Cara mouse, trackpad, dan mouse 3D menggerakkan tampilan.",
"prefs.navigator_fit":"Buat model pas di tampilan setelah perubahan tampilan lewat navigator",
"prefs.navigator_fit_note":"Sebuah muka, sudut, atau panah pada kubus tampilan, atau sumbu pada gizmo, juga menghadap ke tengah model dari satu jarak yang membuatnya pas dari segala sisi (bola pembatasnya). Awal memakai zoom dan pusat yang sama selama opsi ini aktif, sehingga tampilan yang dipilih setelahnya hanya berputar. Mati: tampilan berputar di tempat, dengan target dan zoom tetap.",
"prefs.network_host_remove":"Hapus",
"prefs.network_locations":"Izinkan lokasi jaringan di desain",
"prefs.network_locations_note":"Nonaktif: file tertaut sebuah desain di komputer lain (\\\\server\\share) hanya dibuka dari server yang tercantum di sini, atau setelah Anda mengizinkan salah satunya saat ditanya.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Penempatan",
"prefs.prefer_free_sketch_points":"Utamakan titik sketsa yang dapat digerakkan saat titik saling tumpang tindih",
"prefs.preview_choices":"Pratinjau pilihan Anda",
"prefs.preview_tint_new_faces":"Warnai permukaan baru di pratinjau",
"prefs.preview_tint_new_faces_help":"Pratinjau fitur yang mengubah sebuah bodi dapat menggambar permukaan yang ditambahkannya dengan warna pratinjau. Jika mati, bodi digambar apa adanya.",
"prefs.print_face_highlight":"Sorotan permukaan cetak",
"prefs.print_face_highlight_tip":"Seberapa kuat permukaan cetak sebuah bodi diwarnai dan diberi garis tepi di tampilan. 0 % tidak menampilkan sorotan.",
"prefs.render_previous_geometry_budget_help":"Pulihkan batas geometri tetap sebelumnya (512 MiB di desktop 64-bit, 128 MiB di tempat lain) alih-alih anggaran berbasis perangkat.",
"prefs.reports_saved":"{n} tersimpan",
"prefs.ribbon_click_ends_tool":"Mengklik tombol alat yang sedang berjalan mengakhirinya",
"prefs.ribbon_click_ends_tool_note":"Klik pada tombol ribbon yang menyala dari alat sketsa yang sedang dipakai mengakhiri alat itu, sehingga klik di tampilan kembali memilih. Mati: klik memulai alat itu lagi.",
"prefs.ribbon_reveal":"Tampilkan hasil pencarian di ribbon",
"prefs.ribbon_reveal_note":"Mengarahkan kursor ke hasil di Cari perintah menunjukkan letak perintah itu di ribbon: tab-nya, tombolnya, atau barisnya di dropdown panel. Perintah yang dimulai dari pencarian berkedip di sana, dan perintah yang berjalan dari dropdown menandai panelnya.",
"prefs.right_click":"Klik kanan",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Kembali ke tampilan sebelumnya",
"prefs.sketch_exit_view_note":"Ke mana tampilan beralih setelah Selesai Sketsa, Batal, atau Esc dua kali.",
"prefs.sketch_face_activates_part":"Menggambar sketsa di muka part membuat part itu aktif",
"prefs.sketch_face_activates_part_note":"Sketsa yang dimulai di muka bodi milik komponen lain mengaktifkan komponen itu lebih dulu, sehingga sketsa menjadi milik komponen tersebut dan tetap bersama part itu di penjelajah. Part itu tetap aktif setelahnya. Mati: sketsa menjadi milik komponen aktif.",
"prefs.sketch_open_look_at":"Putar untuk menghadap sketsa saat dibuka",
"prefs.sketch_open_look_at_note":"Mati: membuat atau mengedit sketsa membiarkan tampilan apa adanya. Look At menghadapkan tampilan ke sketsa saat Anda menginginkannya.",
"prefs.sketch_recent_snap":"Snap otomatis ke pusat dan titik tengah terbaru",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Error",
"prefs.status_selected":"Terpilih",
"prefs.status_warning":"Peringatan",
"prefs.structure.appearance":"Tampilan",
"prefs.structure.appearance_note":"Warna, teks, dan aksesibilitas.",
"render.batch_empty":"Simpan sebuah bidikan sebelum merender semua bidikan.",
"render.batch_limit":"Render Semua Bidikan dibatasi hingga 32 bidikan.",
"render.batch_status":"{running} berjalan · {waiting} menunggu",
"render.bloom_enable":"Tampilkan bloom",
"render.bloom_help":"Cahaya kreatif khusus keluaran dari sorotan linear positif, disebar dengan tiga lintasan kotak ternormalisasi. Radius dalam piksel keluaran. Ditambahkan dalam cahaya tampilan linear sebelum sRGB; bukan lensa, efek volumetrik, atau peningkatan konvergensi. EXR mentah tidak berubah.",
"render.bloom_opaque":"Bloom memerlukan keluaran opak. PNG transparan ditolak, tidak diratakan secara diam-diam.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Pilih look di Tampilan terlebih dahulu",
"ui.ai_reasoning_effort_hint":"Opsional. Dikirim ke endpoint sebagai `reasoning_effort`; nilai yang diterima berbeda untuk setiap penyedia (misalnya `low`, `high`, atau `max`). Nilai yang Anda atur di sini tidak pernah diganti oleh SolidCraft. Biarkan kosong agar tidak ada yang dikirim dan default penyedia tetap berlaku.",
"ui.ai_remove":"Hapus",
"ui.ai_request_timed_out":"Model membutuhkan waktu lebih dari {seconds} s. Anda dapat menaikkan batas waktu permintaan untuk endpoint ini di Preferensi › Asisten.",
"ui.ai_request_timeout":"Batas waktu permintaan",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Garis singgung: pilih lingkaran/busur atau spline/kurva konik terbuka, lalu titik singgung (kurva bentuk bebas: titik ujung)",
"ui.construction.external_hint":"Garis singgung: pilih lingkaran atau busur, sebuah titik luar, lalu solusi yang diinginkan",
"ui.construction.free_hint":"Garis bantu: klik dua titik; klik kanan untuk mengulang",
"ui.construction.normal_needs_length":"Garis tak hingga selalu berupa garis bantu: ketik panjang untuk menggambar garis normal",
"ui.construction.point_hint":"Garis bantu: klik titik yang akan dilalui",
"ui.construction.reference_hint":"Garis bantu: pilih garis lurus, lalu sebuah titik; klik kanan untuk mengganti referensi",
"ui.construction.ribbon_label":"Garis bantu",
"ui.construction.side_hint":"Garis bantu: klik sisi tempat garis mengarah; klik kanan untuk mengulang",
"ui.edit_sketch_empty":"Tidak ada sketsa untuk diedit",
"ui.ellipse":"Elips",
"ui.emboss_wrap_note":"Profil garis ortogonal yang tangen pada satu silinder yang didukung dibungkus otomatis. Pilih dinding untuk menentukan target.",
"ui.end_radius":"Radius Akhir",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Eksplisit",
"ui.equation_form":"Bentuk",
"ui.equation_note":"Variabelnya berupa angka biasa: sin(t) menganggapnya dalam radian. Hasil tanpa satuan memakai satuan desain.",
"ui.equation_note_range":"Variabelnya berupa panjang, seperti rentangnya: campurkan dengan parameter panjang, dan bagi dengan sebuah panjang untuk sin(). Hasil tanpa satuan memakai satuan desain.",
"ui.equation_parametric":"Parametrik",
"ui.equation_variable_unit":"Variabel memakai satuan rentang",
"ui.hide_origin_by_default":"Sembunyikan origin secara default",
"ui.hide_origin_note":"Desain baru dimulai dengan folder Origin tersembunyi. Desain mempertahankan pengaturan Origin-nya sendiri setelah Anda menampilkan atau menyembunyikannya.",
"ui.history_sketch_listed_under":"Terdaftar di bawah {feature}",
"ui.history_title":"Riwayat",
"ui.history_toggle_names":"Tampilkan atau sembunyikan nama fitur",
"ui.history_waits_for_editor":"Urungkan, Ulangi, dan Riwayat menunggu hingga editor fitur terbuka",
"ui.hole":"Lubang",
"ui.hole_tap_type":"Tipe Tap Lubang",
"ui.hole_type":"Tipe Lubang",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} memiliki perubahan yang belum disimpan, sehingga file tersimpannya yang disisipkan. Simpan desain itu, lalu jalankan Perbarui Tautan untuk memasukkan perubahannya.",
"ui.insert_design.unsaved":"Perubahan belum disimpan",
"ui.inspect":"Inspeksi",
"ui.instances":"Instans",
"ui.intersect":"Irisan",
"ui.isolate":"Isolasi",
"ui.join":"Gabung",
@@ -4655,12 +4797,14 @@
"ui.joints":"Sambungan",
"ui.keyboard_shortcuts":"Pintasan Keyboard",
"ui.language":"Bahasa",
"ui.lasso_select":"Lasso (seret lengkung tertutup bebas: memilih yang seluruhnya berada di dalam)",
"ui.layout_compact":"Ringkas",
"ui.layout_floating":"Mengambang",
"ui.length":"Panjang",
"ui.length_decimals":"Desimal panjang",
"ui.light":"Terang",
"ui.line":"Garis",
"ui.line_arc_hint":"Busur tangen: klik ujung busur. Diamkan lagi di titik terakhir untuk garis; klik kanan atau Esc untuk selesai",
"ui.link_copies":"Tautkan Salinan Identik",
"ui.link_copies_keep":"Pertahankan",
"ui.link_copies_link":"Tautkan",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Membangun ulang part, menggantikan fitur tambahan apa pun. Semua kemunculan komponen ini diperbarui.",
"ui.paste":"Tempel",
"ui.path":"Jalur",
"ui.pattern_object_type_tip":"Bodi: bentuk solid, dipilih di tampilan atau Penjelajah; masing-masing disalin utuh.\nFitur: langkah-langkah Riwayat, seperti ekstrusi atau lubang, dipilih di Riwayat atau pada muka yang dibuatnya; langkah itu diulang.\nSketsa bukan keduanya: ulangi kurvanya dengan Pola atau Cermin milik sketsa itu sendiri, atau ekstrusi dulu.",
"ui.pattern_on_path":"Pola pada Jalur",
"ui.perforate_margin_default":"dari diameter",
"ui.perforate_pitch":"Pitch",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Poligon",
"ui.preferences":"Preferensi",
"ui.press_a_key":"tekan tombol…",
"ui.print_face_body_not_sent":"Bodi permukaan itu tidak dikirim: tambahkan dulu ke Bodi",
"ui.print_face_cleared":"{body}: permukaan cetak dihapus",
"ui.print_face_input":"Permukaan cetak",
"ui.print_face_one_body":"Permukaan cetak milik satu bodi: kirim bodi itu sendiri untuk mengubahnya",
"ui.print_face_pick":"Pilih satu permukaan datar dari bodi padat untuk dijadikan permukaan cetak",
"ui.print_face_set":"{body}: permukaan cetak diatur; Kirim ke slicer meletakkan bodi di atasnya",
"ui.view_angles_convention":"Derajat terhadap sumbu atas. Yaw 0° adalah tampilan Depan, 90° Kiri, −90° Kanan, 180° Belakang; pitch 90° adalah tampilan Atas; roll positif memutar model searah jarum jam.",
"ui.view_angles_help":"Menampilkan pitch, yaw, dan roll tampilan dalam derajat serta proyeksinya di bawah gizmo orientasi. Klik pembacaan untuk mengetik sudut yang tepat.",
"ui.view_angles_lock":"Kunci {axis}",
"ui.view_angles_ortho":"Ortho",
"ui.view_angles_persp":"Persp",
"ui.view_angles_pitch":"Pitch",
"ui.view_angles_readout":"Pitch {pitch} · Yaw {yaw} · Roll {roll}",
"update.check_unavailable":"Pemeriksaan pembaruan tidak tersedia untuk instalasi ini.",
"update.checking":"Memeriksa…",
"update.copy":"Salin",
"update.dmg_opened":"Disk image terbuka dan terverifikasi: seret SolidCraft ke Applications, ganti salinan lama, lalu mulai ulang SolidCraft.",
"update.dmg_opened":"Disk image terbuka dan terverifikasi: keluar dari SolidCraft, seret SolidCraft yang baru ke Applications, ganti salinan lama, lalu buka SolidCraft lagi.",
"update.download":"Unduh",
"update.download_open":"Unduh dan buka",
"update.downloading":"Mengunduh dan memverifikasi… {done} dari {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Buka desain tertaut?",
"web.open_link_confirm":"Ada perubahan yang belum disimpan. Buka desain tertaut di tab baru?",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Seleziona altro: tieni premuto il pulsante sinistro senza muovere il puntatore sul modello (o fai clic destro › Seleziona altro…) per elencare gli oggetti sotto il cursore; fai di nuovo clic nello stesso punto per selezionare l'oggetto successivo. Fai doppio clic con il pulsante centrale per tornare alla vista iniziale (Preferenze › Navigazione).",
"config.rule_parameter_columns":"Sono elencati solo i parametri che hanno una colonna nella tabella. Aggiungine una con Aggiungi colonna (+) per usarla qui.",
"config.rule_suppression_columns":"Sono elencate solo le lavorazioni che hanno una colonna Sospendi nella tabella. Aggiungine una con Aggiungi colonna (+) per comandarle da qui.",
"contact.components_count":"{count} componenti",
"contact.enabled_label":"abilitato",
"coupling.gear_1":"Ruota dentata 1",
@@ -1341,9 +1370,14 @@
"dialog.dimension_name":"Quota: {name}",
"dialog.edit_title":"MODIFICA {title}",
"dialog.no_shown_body":"Nessun corpo visibile da modificare: mostrane uno o scegli Nuovo corpo",
"dialog.pattern_sketch_not_object":"Seleziona corpi o lavorazioni: uno schizzo non è nessuno dei due. Ripeti le sue curve con Ripetizione o Specchia dello schizzo stesso, oppure estrudilo prima.",
"dialog.selection_guidance":"Seleziona un dato di ingresso per modificarlo. Fai clic sugli oggetti selezionati per rimuoverli; anche Ctrl/Cmd-clic ne alterna la selezione. Controlla l'anteprima, poi premi OK.",
"dialog.selection_step":"{step} di {total}: seleziona {input}",
"dialog.step":"Passo",
"document.changed_on_disk":"{name} è stato modificato sul disco",
@@ -1426,6 +1460,7 @@
"help.construct.axis.two_points":"Crea un asse di costruzione passante per due punti, vertici o punti dello schizzo. Usalo per un asse che collega due posizioni note.",
"help.construct.plane.along_path":"Crea un piano di costruzione perpendicolare a uno spigolo o a una curva, in una posizione lungo di essa. Usalo per disegnare il profilo di uno sweep o una sezione di un percorso.",
"help.construct.plane.at_angle":"Crea un piano di costruzione ruotato di un angolo rispetto a un piano o a una faccia, attorno a un asse o a uno spigolo. Usalo per schizzi inclinati, ad esempio una staffa angolata.",
"help.construct.plane.axis_point":"Crea un piano di costruzione che contiene un asse e un punto esterno all'asse. Seleziona un'origine o un asse di costruzione, uno spigolo rettilineo o una linea dello schizzo, poi un vertice, un punto dello schizzo o un punto di costruzione. Un punto sull'asse non può definire un piano univoco.",
"help.construct.plane.midplane":"Crea un piano di costruzione a metà tra due piani o facce piane, oppure che li biseca dove si incontrano ad angolo. Usalo come piano di simmetria per specchiare.",
"help.construct.plane.offset":"Crea un piano di costruzione parallelo a un piano o a una faccia piana, a una certa distanza o passante per un punto. Usalo per disegnare a un'altezza stabilita sopra una faccia.",
"help.construct.plane.perpendicular":"Crea un piano di costruzione che contiene una linea o uno spigolo ed è perpendicolare a un piano o a una faccia. Usalo per disegnare in verticale sul modello lungo uno spigolo.",
@@ -1802,6 +1837,8 @@
"joint_move.blocked_hint":"Controlla il tipo di giunto (ad esempio Rigido), il fissaggio a terra, i limiti del giunto e i valori comandati da parametri.",
"joint_move.blocked_title":"Impossibile spostare questa parte",
"joint_move.coarse":"Passo di rotazione vicino all'asse (°)",
"joint_move.conflict":"Un giunto di questa parte è in conflitto con gli altri: {joint}.",
"joint_move.conflict_hint":"Modifica, sospendi o elimina il giunto in conflitto, così gli altri giunti potranno posizionare la parte.",
"joint_move.distance":"Distanza dall'inizio",
"joint_move.done":"Fatto",
"joint_move.fine":"Passo di rotazione lontano dall'asse (°)",
@@ -1901,6 +1938,8 @@
"motion.track_name":"Traccia {number}",
"nav.alias.help":"Shift+Alt+trascinamento sinistro orbita, Shift+Alt+centrale fa la panoramica, Shift+Alt+destro fa lo zoom; anche il trascinamento centrale fa la panoramica e il destro orbita",
"nav.blender.help":"Il trascinamento centrale orbita, Shift+centrale fa la panoramica, Ctrl+centrale fa lo zoom; il trascinamento destro lascia ferma la vista",
"nav.creo.help":"Il trascinamento centrale orbita, Shift+centrale fa la panoramica, il trascinamento verticale con Ctrl+centrale fa lo zoom (verso il basso per avvicinare); scorri la rotellina per fare lo zoom",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Mouse e mouse 3D ruotano oltre entrambi i poli e conservano il rollio. L'aggancio degli assi con Shift è disattivato.",
"nav.free_orbit.label":"Orbita libera",
"nav.free_orbit.snap_help":"Mouse e mouse 3D ruotano oltre entrambi i poli e conservano il rollio. Tieni premuto Shift durante il trascinamento dell'orbita per agganciare la direzione della vista e il rollio.",
@@ -1910,6 +1949,7 @@
"nav.hfss.help":"Alt+trascinamento con il pulsante sinistro esegue la panoramica, Shift+Alt+pulsante sinistro lo zoom, Ctrl+trascinamento con il pulsante sinistro su uno spazio vuoto orbita",
"nav.inventor.help":"Il trascinamento centrale fa la panoramica, Shift+centrale orbita, Ctrl+centrale fa lo zoom, il trascinamento destro orbita",
"nav.maya.help":"Alt+trascinamento con il pulsante sinistro orbita, Alt+pulsante centrale esegue la panoramica, Alt+pulsante destro lo zoom; anche il trascinamento con il pulsante centrale esegue la panoramica",
"nav.nx.help":"Il trascinamento centrale orbita, Shift+centrale fa la panoramica (centrale + destro di NX), Ctrl+centrale fa lo zoom (centrale + sinistro di NX); il trascinamento destro lascia ferma la vista",
"nav.openscad.help":"Il trascinamento sinistro nello spazio vuoto orbita, Shift+trascinamento sinistro seleziona con un riquadro, il trascinamento sulla geometria dello schizzo la modifica; il trascinamento destro o centrale fa la panoramica, Shift+destro o Shift+centrale fa lo zoom",
"nav.perspective.sketch":"La modifica dello schizzo usa la vista ortogonale. Termina lo schizzo per passare alla prospettiva.",
"nav.right_drag_orbits.help":"Disattivato: il trascinamento con il pulsante destro non muove la camera e il pulsante destro apre solo il menu contestuale. Scegliendo l'assegnazione del mouse SolidWorks l'opzione si disattiva.",
@@ -2052,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Vite a testa bombata con esagono incassato",
"parts.family.dowel_pin":"Spina cilindrica",
"parts.family.hex_bolt":"Vite a testa esagonale",
"parts.family.hex_cap_screw_inch":"Vite a testa esagonale (pollici)",
"parts.family.washer_uss":"Rondella piana, USS (larga)",
"parts.holes":"Fori (facoltativo)",
"parts.placement_hint":"scegli uno o più fori per alloggiare una parte in ciascuno, oppure OK la colloca nell'origine",
"parts.system":"Sistema di unità",
"parts.system.inch":"Pollici",
"parts.system.metric":"Metrico",
"pattern.alignment_2":"Allineamento 2",
"pattern.alignment_hint":"Il conteggio include l'originale. Centro distribuisce le copie sui due lati; Inverti sceglie il lato con la copia in più per totali pari.",
"prefs.browser_components_open_note":"Ogni componente nel browser inizia aperto, come prima, invece che chiuso finché non lo apri.",
"prefs.browser_eye_left":"Occhio accanto alla freccia di espansione",
"prefs.browser_eye_left_note":"Le righe della Struttura mostrano l'occhio mostra/nascondi accanto alla freccia di espansione, come prima, invece che in una colonna all'estremità destra delle righe.",
"prefs.browser_reveal_on_hover":"Mostra al passaggio del puntatore",
@@ -2119,6 +2168,8 @@
"prefs.button_left":"Trascinamento sinistro",
"prefs.button_middle":"Trascinamento centrale",
"prefs.button_right":"Trascinamento destro",
"prefs.carousel_next":"Successivo",
"prefs.carousel_previous":"Precedente",
"prefs.choose_font":"Scegli il file del carattere…",
"prefs.click":"Clic",
"prefs.contact_shading":"Ombreggiatura di contatto morbida",
@@ -2131,6 +2182,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Superfici curve",
"prefs.curves":"Superfici curve",
"prefs.cut_preview_tint":"Mostra in rosso il materiale rimosso",
"prefs.cut_preview_tint_help":"Un'anteprima riempie il materiale che una lavorazione rimuove, e la forma che sostituisce, con un fantasma rosso semitrasparente. Se disattivato, questi riempimenti sono completamente trasparenti e vengono disegnati solo i loro contorni.",
"prefs.dark_parts_shading":"Mantieni la forma delle parti scure",
"prefs.dark_parts_shading_help":"Ombreggia la vista in luce lineare con un morbido riempimento di luce dal cielo, così le facce scure mantengono una sfumatura invece di diventare nere",
"prefs.dead_zone_note":"La fascia tratteggiata è la zona morta: il movimento al suo interno viene ignorato.",
"prefs.default":"predefinito",
"prefs.design":"Impostazioni predefinite del progetto",
@@ -2145,6 +2200,8 @@
"prefs.edges":"Spigoli e ombreggiatura",
"prefs.extend":"Estendi",
"prefs.extra_navigation":"Ctrl+trascina con il sinistro sullo spazio vuoto per orbitare; tieni premuto Space per la panoramica.",
"prefs.extrude_view_isometric":"Porta la vista in isometrica all'apertura di Estrusione",
"prefs.extrude_view_return":"Torna alla vista precedente alla chiusura di Estrusione",
"prefs.follows_os":"Segue il sistema operativo",
"prefs.font":"Carattere",
"prefs.font_fallback":"I simboli che mancano nel carattere scelto passano a quello integrato, così nessuna etichetta mostra un riquadro vuoto.",
@@ -2160,6 +2217,7 @@
"prefs.graphics_card_auto":"Automatica",
"prefs.graphics_card_missing":"La scheda grafica salvata non è disponibile; viene usata Automatica.",
"prefs.graphics_card_restart":"Ha effetto dopo il riavvio di SolidCraft. WGPU_ADAPTER_NAME prevale su questa scelta.",
"prefs.graphics_card_unused":"La scheda grafica salvata non è stata usata per questa finestra; la scheda in uso è indicata in Aiuto › Informazioni su e nella barra di stato. Prova Automatica, oppure imposta WGPU_ADAPTER_NAME su una parte univoca del nome della scheda.",
"prefs.graphics_note":"Scegli tra velocità e fluidità dell'immagine. Ogni scelta mostra il suo effetto su un esempio.",
"prefs.graphics_presets_note":"Una preimpostazione regola insieme le scelte qui sotto.",
"prefs.hide_constraint_glyphs_zoomed_out":"Nascondi i simboli dei vincoli quando lo zoom è ridotto",
@@ -2174,6 +2232,8 @@
"prefs.history_sketches_note":"Con Schizzi impostato su Sotto la lavorazione, la Cronologia a sinistra elenca ogni schizzo rientrato di un livello, sotto la prima lavorazione creata a partire da esso, quando è abbastanza larga da mostrare i nomi. La cronologia in basso mantiene sempre l'ordine di creazione.",
"prefs.history_sketches_under_feature":"Sotto la lavorazione",
"prefs.hold_stop_snapping":"Tieni premuto per disattivare l'aggancio",
"prefs.home_fit_size":"Dimensione di Inizio e Adatta",
"prefs.home_fit_size_note":"Quanta parte della vista occupa il modello quando Inizio, Adatta, un progetto aperto o un cambio di vista dal navigatore della vista ne impostano l'inquadratura, sia o no attiva l'impostazione qui sotto. 100 %: riempie la vista tra i pannelli, la bussola e la barra di navigazione.",
"prefs.interface_note":"Aspetto di SolidCraft e disposizione dei suoi elementi.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Inverti le frecce curve di rollio",
"prefs.invert_curved_roll_arrows_note":"Le due frecce curve all'angolo del cubo fanno ruotare la vista nel piano dello schermo. Attivato: la freccia oraria ruota in senso antiorario e la freccia antioraria ruota in senso orario. Disattivato: ogni freccia ruota la vista nel verso in cui si curva.",
"prefs.invert_navigator_arrows":"Inverti le frecce di rotazione del cubo della vista",
"prefs.invert_navigator_arrows_note":"Le frecce attorno al cubo fanno orbitare la camera nella direzione in cui puntano, come in Fusion e Inventor: la freccia a sinistra punta a destra e sposta la camera a destra. Disattivato: una freccia ruota il cubo verso il lato in cui si trova, quindi la freccia sinistra sposta la camera a sinistra. Le frecce curve di rollio non sono interessate.",
"prefs.keep_work_on_tab_switch":"Mantieni aperti finestre di dialogo e strumenti quando cambi progetto",
"prefs.keep_work_on_tab_switch_note":"Ogni scheda di progetto conserva la finestra di dialogo o lo strumento aperto, con ciò che hai scelto e digitato, e la propria scheda della barra degli strumenti. Li ritrovi quando torni al progetto. Disattivato: cambiando progetto vengono annullati e compare la scheda Modella.",
"prefs.labels":"Etichette",
"prefs.language_system":"Sistema",
"prefs.layout":"Disposizione",
"prefs.layout_note":"Compatta: pannelli ancorati ai bordi della finestra. La trasparenza della Struttura è disponibile in Flottante. Cambia il lato dell'Assistente nella pagina Assistente.",
"prefs.left":"Sinistra",
"prefs.left_click":"Clic sinistro",
"prefs.line_drag_draws_one":"Premi e trascina per disegnare una linea",
"prefs.line_drag_draws_one_note":"Nello strumento Linea, premere, trascinare e rilasciare disegna una linea dal punto di pressione a quello di rilascio, e il disegno termina lì. I clic disegnano comunque una catena. Disattivato: un trascinamento posiziona un punto dove viene rilasciato, come un clic.",
"prefs.line_hover_tangent_arc":"Fermati sull'ultimo punto di una linea per passare a un arco tangente",
"prefs.line_hover_tangent_arc_note":"Nello strumento Linea, dopo aver disegnato un segmento, allontanati dall'ultimo punto della catena, torna indietro e tieni fermo il puntatore su di esso: il clic successivo termina un arco tangente, e lo stesso gesto riporta alle linee. Disattivato: fermarsi lì non fa nulla.",
"prefs.linked_designs":"Progetti collegati",
"prefs.live_input":"Input in tempo reale",
"prefs.live_preview":"Anteprima dal vivo",
@@ -2212,6 +2281,8 @@
"prefs.mouse_mapping":"Assegnazione del mouse",
"prefs.navigation":"Navigazione",
"prefs.navigation_note":"Come mouse, trackpad e mouse 3D spostano la vista.",
"prefs.navigator_fit":"Adatta il modello dopo un cambio di vista dal navigatore",
"prefs.navigator_fit_note":"Una faccia, un angolo o una freccia del cubo della vista, o un asse del gizmo, guarda anche il centro del modello dall'unica distanza che lo inquadra da ogni lato (la sua sfera di ingombro). Inizio usa lo stesso zoom e lo stesso centro finché questa opzione è attiva, quindi le viste scelte dopo si limitano a ruotare. Disattivato: la vista ruota sul posto, mantenendo punto di mira e zoom.",
"prefs.network_host_remove":"Rimuovi",
"prefs.network_locations":"Consenti posizioni di rete nei progetti",
"prefs.network_locations_note":"Disattivato: i file collegati di un progetto su un altro computer (\\\\server\\share) vengono aperti solo dai server elencati qui, o dopo che ne consenti uno quando richiesto.",
@@ -2232,6 +2303,8 @@
"prefs.placement":"Posizione",
"prefs.prefer_free_sketch_points":"Preferisci i punti dello schizzo mobili quando i punti si sovrappongono",
"prefs.preview_choices":"Anteprima delle tue scelte",
"prefs.preview_tint_new_faces":"Colora la nuova superficie in un'anteprima",
"prefs.preview_tint_new_faces_help":"L'anteprima di una lavorazione che modifica un corpo può disegnare la superficie aggiunta con il colore dell'anteprima. Se disattivato, il corpo viene disegnato com'è.",
"prefs.print_face_highlight":"Evidenziazione della faccia di stampa",
"prefs.print_face_highlight_tip":"Intensità della tinta e del contorno della faccia di stampa di un corpo nella vista. 0 % non mostra evidenziazione.",
"prefs.profile_active":"Profilo attivo",
@@ -2260,6 +2333,8 @@
"prefs.render_previous_geometry_budget":"Usa il budget di geometria precedente per l'anteprima di Rendering",
"prefs.render_previous_geometry_budget_help":"Ripristina il limite fisso di geometria precedente (512 MiB su desktop a 64 bit, 128 MiB altrove) invece del budget basato sul dispositivo.",
"prefs.reports_saved":"{n} salvati",
"prefs.ribbon_click_ends_tool":"Un clic sul pulsante dello strumento in uso lo termina",
"prefs.ribbon_click_ends_tool_note":"Un clic sul pulsante evidenziato nella barra multifunzione dello strumento di schizzo in uso termina lo strumento, così i clic nella vista tornano a selezionare. Disattivato: il clic avvia di nuovo lo strumento.",
"prefs.ribbon_reveal":"Mostra i risultati della ricerca nella barra multifunzione",
"prefs.ribbon_reveal_note":"Passando il puntatore su un risultato in Cerca comandi si vede dove si trova il comando nella barra multifunzione: la sua scheda, il suo pulsante o la sua riga nel menu a discesa di un pannello. Un comando avviato dalla ricerca lampeggia lì, e un comando in esecuzione da un menu a discesa ne evidenzia il pannello.",
"prefs.right_click":"Clic destro",
@@ -2289,6 +2364,8 @@
"prefs.sketch_exit_view.previous":"Torna alla vista precedente",
"prefs.sketch_exit_view.unless_rotated":"Torna, se non ruotata",
"prefs.sketch_exit_view_note":"Dove va la vista dopo Termina schizzo, Annulla o un doppio Esc.",
"prefs.sketch_face_activates_part":"Creare uno schizzo sulla faccia di una parte rende attiva quella parte",
"prefs.sketch_face_activates_part_note":"Uno schizzo avviato sulla faccia di un corpo di un altro componente attiva prima quel componente, così lo schizzo gli appartiene e resta con quella parte nella Struttura. In seguito la parte resta attiva. Disattivato: lo schizzo appartiene al componente attivo.",
"prefs.sketch_open_look_at":"Ruota la vista verso lo schizzo quando si apre",
"prefs.sketch_open_look_at_note":"Disattivato: creando o modificando uno schizzo la vista resta com'è. Vista normale orienta la vista sullo schizzo quando vuoi.",
"prefs.sketch_recent_snap":"Aggancia automaticamente ai centri e punti medi recenti",
@@ -2320,6 +2397,24 @@
"prefs.status_error":"Errore",
"prefs.status_selected":"Selezionato",
"prefs.status_warning":"Avviso",
"prefs.structure.appearance":"Aspetto",
"prefs.structure.appearance_note":"Colori, testo e accessibilità.",
"prefs.structure.in_profile":"Nel profilo",
"prefs.structure.layout":"Disposizione",
"prefs.structure.layout_note":"Dove si trovano le parti della finestra.",
"prefs.structure.look":"Aspetto visivo",
"prefs.structure.measure_pointer":"Misura e puntatore",
"prefs.structure.mouse3d":"Mouse 3D",
"prefs.structure.mouse3d_note":"SpaceMouse e SpaceNavigator.",
"prefs.structure.navigation_note":"Mouse e trackpad. Il mouse 3D ha una pagina propria.",
"prefs.structure.profile":"Profilo",
"prefs.structure.profile_edited":"Modificato dopo il salvataggio",
"prefs.structure.profile_hover":"Salvato nei profili delle impostazioni",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Schizzo",
"prefs.structure.tools":"Strumenti",
"prefs.structure.tools_note":"Come si comportano gli strumenti di modellazione.",
"prefs.structure.work":"Lavoro",
"prefs.supersampling_brief":"Disegna la vista più grande e poi la riduce con un filtro: molto nitida, ma più pesante.",
"prefs.tab_accent_note":"L'accento segue la scheda attiva",
"prefs.theme_file":"file del tema",
@@ -2507,6 +2602,10 @@
"render.base_color":"Colore di base · sRGB",
"render.base_metallic":"Frazione metallica",
"render.base_opaque_only":"Questo editor mantiene la semantica dei corpi opachi. Per la trasmissione ottica usa i controlli espliciti del vetro.",
"render.batch_all_shots":"Tutte le inquadrature ({count})",
"render.batch_empty":"Salva un'inquadratura prima di renderizzare tutte le inquadrature.",
"render.batch_limit":"Il rendering di tutte le inquadrature è limitato a 32 inquadrature.",
"render.batch_status":"{running} in corso · {waiting} in attesa",
"render.bloom_enable":"Bloom di visualizzazione",
"render.bloom_help":"Alone creativo solo in uscita, ricavato dalle alte luci lineari positive e diffuso con tre passate box normalizzate. Il raggio è in pixel di uscita. Viene aggiunto nella luce di visualizzazione lineare prima della conversione sRGB; non è un effetto di lente o volumetrico né un miglioramento della convergenza. L'EXR grezzo resta invariato.",
"render.bloom_opaque":"Il bloom richiede un'uscita opaca. Il PNG trasparente viene rifiutato, non appiattito in silenzio.",
@@ -2617,6 +2716,13 @@
"render.choose_look":"Scegli prima un aspetto in Aspetti",
"render.chromatic_offset":"Scostamento cromatico dei bordi",
"render.clear_stage":"Rimuovi la scenografia salvata",
"render.compare_divider":"Divisore del confronto",
"render.compare_live":"Live",
"render.compare_live_preview":"Anteprima dal vivo",
"ui.agent_chat_model_no_tools":"{model} non può usare gli strumenti di SolidCraft, quindi può solo chattare. Scegli un modello con supporto per gli strumenti.",
"ui.agent_chat_model_rejected":"L'agente non ha accettato {model}: {error}",
"ui.agent_chat_model_search":"Cerca modelli…",
"ui.agent_chat_model_tip":"Il modello usato dall'agente. La scelta viene memorizzata per questo agente.",
"ui.agent_chat_models_failed":"Impossibile elencare i modelli: {error}",
"ui.ai_reasoning_effort":"Livello di ragionamento",
"ui.ai_reasoning_effort_field_hint":"vuoto = predefinito del provider",
"ui.ai_reasoning_effort_hint":"Facoltativo. Inviato all'endpoint come `reasoning_effort`; i valori accettati differiscono da provider a provider (ad esempio `low`, `high` o `max`). Un valore impostato qui non viene mai sostituito da SolidCraft. Lascia vuoto per non inviare nulla e mantenere il valore predefinito del provider.",
"ui.ai_remove":"Rimuovi",
"ui.ai_request_timed_out":"Il modello ha impiegato più di {seconds} s. Puoi aumentare il timeout della richiesta per questo endpoint in Preferenze › Assistente.",
"ui.ai_request_timeout":"Timeout della richiesta",
@@ -4354,14 +4476,21 @@
"ui.construction.contact_hint":"Tangente: seleziona un cerchio/arco o una spline/conica aperta, poi il punto di contatto (curve a forma libera: estremi)",
"ui.construction.external_hint":"Tangente: seleziona un cerchio o un arco, un punto esterno, poi la soluzione desiderata",
"ui.construction.free_hint":"Retta di costruzione: fai clic su due punti; clic destro per ricominciare",
"ui.construction.normal_needs_length":"Una retta infinita è sempre di costruzione: digita una lunghezza per disegnare una linea normale",
"ui.construction.point_hint":"Retta di costruzione: fai clic sul punto di passaggio",
"ui.construction.reference_hint":"Retta di costruzione: seleziona una linea retta, poi un punto; clic destro per cambiare il riferimento",
"ui.construction.ribbon_label":"Linee aus.",
"ui.construction.side_hint":"Retta di costruzione: fai clic sul lato verso cui prosegue la retta; clic destro per ricominciare",
"ui.context_menu":"Menu contestuale",
"ui.continuity_crease":"Spigolo vivo",
"ui.continuity_curvature":"Curvatura",
"ui.continuity_curvature_change":"Variazione di curvatura",
"ui.continuity_g0":"G0 spigolo vivo",
"ui.continuity_g1":"G1 tangenza",
"ui.continuity_g2":"G2 curvatura",
"ui.continuity_gap":"Gioco",
"ui.continuity_position":"Posizione",
"ui.continuity_tangent":"Tangente",
"ui.copy":"Copia",
"ui.corner":"Angolo",
"ui.corners":"Angoli",
@@ -4384,6 +4513,7 @@
"ui.dark":"Scuro",
"ui.default_modelling_orientation":"Orientamento di modellazione predefinito",
"ui.delete":"Elimina",
"ui.delete_select_first":"Seleziona prima cosa eliminare: lavorazioni, corpi, componenti o geometria dello schizzo",
"ui.depth":"Profondità",
"ui.design":"Progettazione",
"ui.design_properties.author":"Autore",
@@ -4476,6 +4606,7 @@
"ui.edit_in_place_saved_elsewhere":"La parte è stata salvata in un altro file; l'assieme è ancora collegato a {name}",
"ui.edit_in_place_wait":"Attendi il termine di ciò che è in esecuzione nel progetto",
"ui.edit_section_analysis":"Modifica analisi in sezione",
"ui.edit_sketch_empty":"Nessuno schizzo da modificare",
"ui.ellipse":"Ellisse",
"ui.emboss_wrap_note":"I profili di linee ortogonali tangenti a un cilindro supportato si avvolgono automaticamente. Scegliere una parete per definire la destinazione.",
"ui.end_radius":"Raggio finale",
@@ -4486,7 +4617,9 @@
"ui.equation_explicit":"Esplicita",
"ui.equation_form":"Forma",
"ui.equation_note":"La variabile è un numero puro: sin(t) la interpreta in radianti. Un risultato senza unità è nell'unità del progetto.",
"ui.equation_note_range":"La variabile è una lunghezza, come il suo intervallo: combinala con parametri di lunghezza e dividila per una lunghezza per sin(). Un risultato senza unità è nell'unità del progetto.",
"ui.equation_parametric":"Parametrica",
"ui.equation_variable_unit":"La variabile ha l'unità dell'intervallo",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4618,6 +4751,7 @@
"ui.hideOrigin":"Nascondi origine",
"ui.hidePlanes":"Nascondi piani",
"ui.hideProfile":"Nascondi profilo",
"ui.hide_component_history":"Nascondi la sua cronologia",
"ui.hide_origin_by_default":"Nascondi l'origine per impostazione predefinita",
"ui.hide_origin_note":"I nuovi progetti partono con la cartella Origine nascosta. Un progetto conserva la propria impostazione dell'origine dopo che l'hai mostrata o nascosta.",
"ui.history_sketch_listed_under":"Elencato sotto {feature}",
"ui.history_title":"Cronologia",
"ui.history_toggle_names":"Mostra o nascondi i nomi delle lavorazioni",
"ui.history_waits_for_editor":"Annulla, Ripeti e Cronologia restano in attesa finché l'editor della lavorazione non si è aperto",
"ui.hole":"Foro",
"ui.hole_tap_type":"Tipo di maschiatura del foro",
"ui.hole_type":"Tipo di foro",
@@ -4653,6 +4790,7 @@
"ui.insert_design.saved_file":"{name} contiene modifiche non salvate, quindi è stato inserito il file salvato. Salvalo, poi usa Aggiorna collegamenti per includere le modifiche.",
"ui.insert_design.unsaved":"Modifiche non salvate",
"ui.inspect":"Esamina",
"ui.instances":"Istanze",
"ui.intersect":"Interseca",
"ui.isolate":"Isola",
"ui.join":"Unisci",
@@ -4661,12 +4799,14 @@
"ui.joints":"Giunti",
"ui.keyboard_shortcuts":"Scorciatoie da tastiera",
"ui.language":"Lingua",
"ui.lasso_select":"Lazo (trascina un anello a mano libera: prende ciò che sta interamente all'interno)",
"ui.layout_compact":"Compatta",
"ui.layout_floating":"Flottante",
"ui.length":"Lunghezza",
"ui.length_decimals":"Decimali delle lunghezze",
"ui.light":"Chiaro",
"ui.line":"Linea",
"ui.line_arc_hint":"Arco tangente: fai clic sulla fine dell'arco. Fermati di nuovo sull'ultimo punto per tornare alle linee; clic destro o Esc per terminare",
"ui.link_copies":"Collega copie identiche",
"ui.link_copies_keep":"Mantieni",
"ui.link_copies_link":"Collega",
@@ -4755,6 +4895,7 @@
"ui.part_size_shared":"Ricostruisce la parte, sostituendo le eventuali lavorazioni aggiunte. Si aggiornano tutte le occorrenze del componente.",
"ui.paste":"Incolla",
"ui.path":"Percorso",
"ui.pattern_object_type_tip":"Corpi: forme solide, selezionate nella vista o nella Struttura; ciascuno viene copiato per intero.\nLavorazioni: passaggi della Cronologia, come un'estrusione o un foro, selezionati nella Cronologia o su una faccia da essi creata; il passaggio viene ripetuto.\nUno schizzo non è nessuno dei due: ripeti le sue curve con Ripetizione o Specchia dello schizzo stesso, oppure estrudilo prima.",
"ui.pattern_on_path":"Ripetizione su percorso",
"ui.perforate_margin_default":"dal diametro",
"ui.perforate_pitch":"Passo",
@@ -4800,9 +4941,9 @@
"ui.polygon":"Poligono",
"ui.preferences":"Preferenze",
"ui.press_a_key":"premi un tasto…",
"ui.print_face_body_not_sent":"Il corpo di quella faccia non viene inviato: aggiungilo prima a Corpi",
"ui.print_face_cleared":"{body}: faccia di stampa rimossa",
"ui.print_face_input":"Faccia di stampa",
"ui.print_face_one_body":"Una faccia di stampa appartiene a un solo corpo: invia quel corpo da solo per cambiarla",
"ui.print_face_pick":"Seleziona una faccia piana di un corpo solido per renderla la faccia di stampa",
"ui.print_face_set":"{body}: faccia di stampa impostata; Invia allo slicer appoggia il corpo su di essa",
"ui.profile":"Profilo",
@@ -4914,6 +5055,7 @@
"ui.showDimension":"Mostra quota",
"ui.showOrigin":"Mostra origine",
"ui.showPlanes":"Mostra piani",
"ui.show_component_history":"Mostra la sua cronologia",
"ui.show_constraints":"Vincoli",
"ui.show_construction_geometries":"Geometrie di costruzione",
"ui.show_dimensions":"Quote",
@@ -5030,12 +5172,15 @@
"ui.view_angles":"Angoli della vista",
"ui.view_angles_convention":"Gradi attorno all'asse verticale. Imbardata 0° è la vista frontale, 90° sinistra, −90° destra, 180° posteriore; beccheggio 90° è la vista dall'alto; un rollio positivo ruota il modello in senso orario.",
"ui.view_angles_help":"Mostra il beccheggio, l'imbardata e il rollio della vista in gradi e la sua proiezione sotto il gizmo di orientamento. Fai clic sull'indicatore per digitare angoli esatti.",
"update.check_unavailable":"La verifica degli aggiornamenti non è disponibile per questa installazione.",
"update.checking":"Controllo…",
"update.copy":"Copia",
"update.dmg_opened":"L'immagine disco è aperta e verificata: trascina SolidCraft in Applicazioni sostituendo la copia precedente, poi riavvia SolidCraft.",
"update.dmg_opened":"L'immagine disco è aperta e verificata: esci da SolidCraft, trascina il nuovo SolidCraft in Applicazioni sostituendo la copia precedente, poi riapri SolidCraft.",
"update.download":"Scarica",
"update.download_open":"Scarica e apri",
"update.downloading":"Download e verifica… {done} di {total} MB",
@@ -5137,6 +5282,7 @@
"web.open_link":"Aprire il progetto collegato?",
"web.open_link_confirm":"Ci sono modifiche non salvate. Aprire il progetto collegato in una nuova scheda?",
"Move holes by clicking or dragging":"클릭 또는 드래그로 이동",
"Move later":"뒤로 이동",
"Move up":"위로 이동",
"Name":"Name",
@@ -407,6 +408,7 @@
"Recover unsaved design?":"저장되지 않은 디자인을 복구할까요?",
"Rectangular":"직사각형",
"Reference face":"참조 면",
"Reference plane":"참조 평면",
"Relief Depth":"릴리프 깊이",
"Relief Width":"릴리프 너비",
"Remove Tools":"공구 제거",
@@ -422,6 +424,8 @@
"Rename Feature":"피처 이름 바꾸기",
"Rename Folder":"폴더 이름 바꾸기",
"Render Stage":"렌더링 단계",
"Reopen the designs that were open when SolidCraft was last closed":"지난번에 열려 있던 디자인 다시 열기",
"Repair Part":"부품 복구",
"Replace existing library file":"기존 라이브러리 파일 바꾸기",
"Report a bug — review a screenshot and open a GitHub draft":"버그 신고 — 스크린샷을 검토하고 GitHub 초안 열기",
"Report text copied. Paste it into GitHub and submit your report there.":"보고서 텍스트를 복사했습니다. GitHub에 붙여넣고 그곳에서 보고서를 제출하세요.",
@@ -476,6 +480,7 @@
"Second point":"두 번째 점",
"Section":"단면",
"Section position":"단면 위치",
"Sections":"단면",
"Sections (one sketch each)":"단면 (각각 스케치 하나)",
"Select Other":"다른 항목 선택",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"다른 항목 선택: 모델 위에서 왼쪽 버튼을 가만히 누르고 있거나(또는 오른쪽 클릭 › 다른 항목 선택…) 커서 아래의 모든 항목을 나열합니다. 같은 위치를 다시 클릭하면 다음 항목이 선택됩니다. 가운데 버튼을 더블 클릭하면 홈으로 이동합니다(환경설정 › 탐색).",
@@ -501,7 +506,7 @@
"Show Agent Cursor":"에이전트 커서 표시",
"Show in folder":"폴더에서 보기",
"Show the pointer an AI agent moves (#35)":"AI 에이전트가 움직이는 포인터 표시 (#35)",
"Show tool at cursor":"커서 옆에 도구 표시",
"Show tool at cursor":"커서에 도구 표시",
"Signed axes":"부호 있는 축",
"Size":"크기",
"Sketch constraints":"스케치 구속 조건",
@@ -512,6 +517,7 @@
"Sketch points":"스케치 점",
"Slider":"슬라이더",
"Slot width":"슬롯 폭",
"Snap to face and edge centres":"중심에 스냅",
"SolidCraft closed before these designs were saved. Their last autosave can be opened.":"이 디자인들이 저장되기 전에 SolidCraft가 종료되었습니다. 마지막 자동 저장본을 열 수 있습니다.",
"Spacing 2 must be a non-zero number":"간격 2는 0이 아닌 숫자여야 합니다",
"Spacing must be a non-zero number":"간격은 0이 아닌 숫자여야 합니다",
@@ -637,26 +643,32 @@
"a picked edge is gone":"선택한 모서리가 더 이상 없습니다",
"a picked edge's body is gone":"선택한 모서리의 바디가 더 이상 없습니다",
"add a key for a joint first":"먼저 관절의 키를 추가하세요",
"ai.prefs.availability":"어시스턴트 제어",
"ai.prefs.background_commands":"에이전트 명령을 백그라운드에서 실행",
"ai.prefs.follow_camera":"카메라를 스케치로 돌리기",
"ai.prefs.allow_control":"AI 에이전트 연결 허용",
"ai.prefs.allow_control_note":"로컬 채널(MCP)입니다. 이 컴퓨터 밖으로 아무것도 나가지 않습니다.\n\n이 컴퓨터에서만 제어 채널을 엽니다(127.0.0.1, 포트 27878 또는 다음 빈 포트). 연결하는 프로그램은 시작할 때마다 새로 생성되며 현재 사용자 계정만 읽을 수 있는 비밀 토큰을 제시해야 합니다. SolidCraft를 다음에 시작할 때 적용됩니다. 끄면 --control로 실행하지 않는 한 아무것도 수신하지 않습니다.",
"ai.prefs.availability":"사용 설정",
"ai.prefs.background_commands":"느린 명령을 백그라운드에서 실행",
"ai.prefs.connect_apps":"AI 앱에 SolidCraft 추가",
"ai.prefs.connect_apps_note":"끄면 추가한 항목이 다시 제거됩니다.\n\nSolidCraft 시작 시 이 컴퓨터에서 찾은 AI 앱(OpenCode, Claude Desktop, Claude Code, Cursor, Codex, Gemini CLI, Copilot CLI, Windsurf, Zed, VS Code)에 MCP 서버로 추가합니다. solidcraft 항목만 추가하거나 경로를 갱신하며, 사용자가 변경한 항목은 그대로 두고 파일을 먼저 백업합니다. 끄면 추가했던 항목을 제거합니다. 도움말 > AI 어시스턴트 연결…에서 수동으로 실행할 수도 있습니다.",
"ai.prefs.connect_at_start":"시작할 때 마지막 에이전트 연결",
"ai.prefs.follow_camera":"카메라 따라가기",
"ai.prefs.follow_camera_off":"카메라 자동 따라가기가 꺼져 있습니다.",
"ai.prefs.follow_camera_on":"에이전트가 만드는 스케치를 향해 카메라가 회전합니다.",
"ai.prefs.intro":"에이전트, 권한, 그리고 작업이 표시되는 방식.",
"ai.prefs.make_default":"기본값으로 사용",
"ai.prefs.intro":"SolidCraft의 AI 에이전트.",
"ai.prefs.make_default":"기본값으로 설정",
"ai.prefs.no_agents":"아직 에이전트가 없습니다. 에이전트를 추가하거나 새로 고쳐서 설치된 에이전트를 찾으세요.",
"ai.prefs.no_saved_approvals":"저장된 승인이 없습니다.",
"ai.prefs.open_at_start":"시작할 때 채팅 열기",
"ai.prefs.override_all_warning":"이 에이전트는 묻지 않고 설계를 저장, 덮어쓰기, 내보내기 또는 교체할 수 있습니다.",
"ai.prefs.permission_all":"모두 허용",
"ai.prefs.permission_all_summary":"사용 가능한 SolidCraft 도구가 묻지 않고 실행됩니다.",
"ai.prefs.permission_ask":"변경 전에 묻기",
"ai.prefs.permission_ask_summary":"모든 설계 변경과 파일 작업을 승인합니다.",
"ai.prefs.permission_edits":"모델 편집 허용",
"ai.prefs.permission_edits_summary":"모델 편집은 실행되고, 파일 및 파괴적인 작업은 계속 묻습니다.",
"ai.prefs.permission_all":"모두 실행",
"ai.prefs.permission_all_summary":"묻지 않음",
"ai.prefs.permission_ask":"먼저 묻기",
"ai.prefs.permission_ask_summary":"모든 변경 전에 확인",
"ai.prefs.permission_edits":"편집 허용",
"ai.prefs.permission_edits_summary":"자유롭게 편집하고 나머지는 확인",
"ai.prefs.permission_scope":"SolidCraft 도구에만 적용됩니다. 에이전트의 셸과 파일 편집은 자체 권한을 사용합니다.",
"help.component.finish_edit":"제자리에서 편집 중인 부품을 저장하고 어셈블리로 돌아가 그 부품으로 어셈블리를 업데이트합니다. 연결된 부품의 변경을 마쳤을 때 사용하세요.",
"help.construct.plane.axis_point":"축과 축 위에 있지 않은 점을 포함하는 구성 평면을 만듭니다. 원점 축, 구성 축, 직선 모서리 또는 스케치 직선을 선택한 다음 꼭짓점, 스케치 점 또는 구성점을 선택합니다. 축 위의 점으로는 평면을 하나로 결정할 수 없습니다.",
"help.font_details":"인터페이스는 egui의 내장 글꼴을 사용합니다(Ubuntu Font Licence 및 MIT/Bitstream Vera 라이선스의 Ubuntu Light와 Hack, OFL 및 MIT의 Noto Emoji와 이모지 아이콘 글꼴). 스케치 텍스트는 Liberation Sans(SIL OFL 1.1)를 사용합니다. The Crafting Apps의 선택적 글꼴 팩 craft-fonts(BIZ UDPGothic, Shippori Mincho, BIZ UDMincho, Noto Sans CJK SC, Noto Sans Arabic; SIL OFL 1.1)는 SolidCraft 빌드에 포함되지 않습니다.",
"help.fonts":"글꼴",
"help.layout.apply":"저장된 레이아웃을 현재 작업 공간에 적용합니다. 유지 중인 편집기의 초안은 보존됩니다.",
"help.layout.get":"확정된 레이아웃과 등록된 작업 공간을 확인합니다.",
"help.layout.reset":"현재 작업 공간에 등록된 기본 레이아웃을 복원합니다. 사용자 사전 설정은 유지됩니다.",
"help.layout.save":"전체 레이아웃에 이름을 지정해 저장합니다. 사용자 사전 설정을 바꾸려면 명시적인 덮어쓰기 허용이 필요합니다.",
"help.layout.workspace.select":"등록된 레이아웃 작업 공간을 선택하고 이전 레이아웃을 기억합니다.",
"help.licences":"라이선스",
"help.mit":"MIT 라이선스",
"help.notice":"NOTICE",
"help.panel.activate":"키보드 초점을 요청하지 않고 열린 패널 탭을 선택합니다.",
"help.panel.close":"콘텐츠 수명 주기 검사를 거쳐 패널을 닫습니다. 배치는 기억됩니다.",
"prefs.line_drag_draws_one":"누른 채 드래그하면 선 하나 그리기",
@@ -1606,10 +1805,10 @@
"prefs.live_input":"실시간 입력",
"prefs.live_preview":"실시간 미리보기",
"prefs.max_file_size":"열 수 있는 최대 파일 크기",
"prefs.max_file_size_design":"디자인 파일",
"prefs.max_file_size_design":"열 파일의 최대 크기: 디자인",
"prefs.max_file_size_flag":"이번 실행은 --max-file-size {size}로 시작했으며 SolidCraft를 닫을 때까지 적용됩니다. 이 설정은 해당 옵션 없이 시작할 때 적용됩니다.",
"prefs.max_file_size_note":"기본값: 512 MB 및 256 MB, 최대 16 GB. 파일을 열려면 파일 크기의 몇 배에 달하는 메모리가 필요합니다. 큰 가져오기 데이터를 보관하는 디자인은 저장하고 다시 열기 위해 디자인 파일 한도를 높여야 할 수 있습니다.",
"prefs.max_file_size_step":"STEP 및 가져오기 파일",
"prefs.max_file_size_step":"열 파일의 최대 크기: STEP 및 가져오기",
"prefs.max_file_size_web":"웹 앱은 STEP 및 가져오기 파일을 512 MB까지, 디자인을 256 MB까지 엽니다. 브라우저 탭은 더 큰 파일을 담을 수 없습니다. 데스크톱 앱에서는 이 한도를 높일 수 있습니다.",
"prefs.megabytes":"MB",
"prefs.minutes":"분",
@@ -1618,9 +1817,17 @@
"prefs.mouse_heading":"마우스",
"prefs.mouse_mapping":"마우스 매핑",
"prefs.navigation":"탐색",
"prefs.navigation.axes_signed":"축",
"prefs.navigation.cube_compact":"큐브",
"prefs.navigation.device":"장치",
"prefs.navigation.free":"자유",
"prefs.navigation.orbit_style":"회전 방식",
"prefs.navigation.radial_help":"오른쪽 버튼을 길게 누르거나 튕겨 도구 링을 표시합니다.",
"prefs.navigation.turntable":"턴테이블",
"prefs.navigation_note":"마우스, 트랙패드, 3D 마우스로 뷰를 움직이는 방식입니다.",
"prefs.navigator_fit":"뷰 탐색기로 뷰를 바꾼 뒤 모델 맞춤",
"prefs.navigator_fit_note":"큐브의 면, 모서리, 화살표나 기즈모의 축을 클릭하면 어느 방향에서든 전체가 들어가는 한 거리(경계 구)에서 모델의 중심을 바라봅니다. 켜져 있는 동안 홈 뷰도 같은 확대/축소와 중심을 쓰므로 그 뒤에 고른 뷰는 방향만 바뀝니다. 끄면 뷰가 제자리에서 회전하며 대상과 확대/축소를 유지합니다.",
"prefs.network_locations_note":"파일 서버에 디자인을 보관하는 조직용입니다. 끄면 허용한 서버만 사용합니다.",
"prefs.not_on_gpu":"이 GPU에서는 사용할 수 없음",
"prefs.on":"켜짐",
"prefs.opaque":"불투명",
@@ -1629,12 +1836,23 @@
"prefs.origin_plane_names":"원점 평면 이름",
"prefs.origin_plane_names_note":"브라우저, 대화 상자, 목록에 표시되는 이름입니다. {top}은 XY, {front}는 XZ, {right}는 YZ이며 Z가 위쪽입니다. 명령, 스크립트, 저장된 디자인은 XY, XZ, YZ를 유지합니다.",
"prefs.overall_speed":"전체 속도",
"prefs.parameter_list_rows_tip":"빈 수식 상자에서 아래쪽 화살표로 표시할 매개변수의 최대 개수입니다.",
"prefs.persistent_ribbon_pressed":"활성 리본 명령 강조 표시",
"prefs.persistent_ribbon_pressed_help":"효과가 켜져 있는 동안 리본 명령을 강조 표시합니다. 끄면 이전의 중립적인 모양과 명령 도움말을 유지합니다.",
"prefs.perspective_fov":"시야각",
"prefs.plugins_enabled":"사용",
"prefs.plugins_installed":"설치됨",
"prefs.plugins_intro":"샌드박스 추가 기능.",
"prefs.plugins_show_folder":"플러그인 폴더 표시",
"prefs.preview_choices":"선택 항목 미리보기",
"prefs.preview_tint_new_faces":"미리 보기에서 새 면에 색 입히기",
"prefs.preview_tint_new_faces_help":"바디를 변경하는 피처의 미리 보기에서 추가되는 면을 미리 보기 색으로 그릴 수 있습니다. 끄면 바디가 원래 색으로 그려집니다.",
"prefs.print_face_highlight":"출력 바닥면 강조",
"prefs.print_face_highlight_tip":"뷰에서 바디의 출력 바닥면을 색칠하고 윤곽을 그리는 강도입니다. 0 %이면 강조하지 않습니다.",
"prefs.profile_export":"내보내기",
"prefs.profile_imported":"프로필을 가져왔습니다.",
"prefs.profile_operations":"작업 프로파일링",
"prefs.profile_operations_note":"SMLib 호출, 커널 작업, 피처, 명령, 가져오기에 걸리는 시간을 기록합니다. 에이전트는 diagnostics.profile로 읽습니다.",
"prefs.project_options_dialog":"Project 옵션 대화상자",
"prefs.project_options_dialog_note":"켜기: 투영 전에 지오메트리 또는 바디와 투영 링크를 선택합니다. 끄기: 기존 직접 선택 작업 흐름을 유지합니다.",
"prefs.quality_default":"기본값",
@@ -1642,10 +1860,11 @@
"prefs.quality_slowest":"가장 느림",
"prefs.quality_smoother":"더 부드럽게",
"prefs.reports_saved":"{n}개 저장됨",
"prefs.restore_page_defaults":"페이지 기본값 복원",
"prefs.ribbon_click_ends_tool":"실행 중인 도구의 버튼을 클릭하면 도구 종료",
"prefs.ribbon_click_ends_tool_note":"사용 중인 스케치 도구의 강조된 리본 버튼을 클릭하면 도구가 종료되어 뷰에서 클릭하면 다시 선택됩니다. 끄기: 클릭하면 도구가 다시 시작됩니다.",
"settings.display_quality_note":"세밀할수록 곡면과 모서리가 더 매끄럽게 표시되지만 메시 생성 시간이 늘어납니다. 뷰포트만 바뀌며 설계나 내보내기는 바뀌지 않습니다.",
"settings.double_click_components":"구성요소를 두 번 클릭하여 활성화하거나 연결된 구성 요소를 제자리에서 편집",
"settings.double_click_components":"구성요소를 두 번 클릭하여 활성화",
"settings.frame_rate_note":"뷰의 오른쪽 아래에 초당 프레임 수를 표시합니다.",
"settings.insert_lists_open_designs":"설계 삽입에서 다른 탭에 열린 설계를 먼저 표시",
"settings.measure_axis_distances":"X/Y/Z 거리 표시",
"settings.insert_lists_open_designs":"디자인 삽입에서 열린 디자인을 먼저 표시",
"settings.measure_axis_distances":"측정에서 축 거리 표시",
"settings.measure_axis_distances_help":"측정 대화상자가 열려 있는 동안 전체 거리와 함께 월드 축 방향 치수와 거리를 표시합니다.",
"settings.msaa_applies_on_restart":"안티앨리어싱은 다음에 SolidCraft를 시작할 때 적용됩니다",
"settings.msaa_reset":"{setting}: {requested}×는 이 그래픽 장치에서 지원되지 않아 {reset}×로 변경했습니다(지원: {supported}).",
@@ -2679,6 +2967,7 @@
"settings.reset_intro":"다음 설정은 이 컴퓨터에서 작동하지 않아 SolidCraft를 시작할 수 없게 하므로 변경되었습니다:",
"settings.reset_title":"설정이 변경되었습니다",
"settings.supersampling_note":"뷰를 더 높은 해상도로 그린 뒤 축소합니다. 4K 미만 화면에서 모서리, 선, 그리드가 더 매끄러워집니다. GPU 시간이 듭니다: 1.5×에서 약 2.25배, 2×에서 4배의 픽셀.",
"settings.update_changed_links":"탭으로 돌아올 때 변경된 링크 업데이트",
"sheet.flange_type_base":"베이스",
"sheet.flange_type_contour":"윤곽",
"sheet.flange_type_edge":"모서리",
@@ -2761,7 +3050,18 @@
"the section's profiles must be in one sketch":"단면의 프로파일은 하나의 스케치 안에 있어야 합니다",
"the two origins are on the same component":"두 원점이 같은 구성요소에 있습니다",
"thread.automatic_size":"자동 크기",
"thread.chamfer_depth_needed":"이 형상에 필요",
"thread.designation":"호칭",
"thread.drill_range":"탭 제조사의 드릴은 {drill} mm입니다. 암나사의 규격 골지름은 {minor} mm입니다. {low}~{high} mm 드릴을 사용할 수 있습니다.",
"thread.drill_range_custom":"드릴은 바깥지름에서 피치를 뺀 {drill} mm입니다. 암나사의 규격 골지름은 {minor} mm입니다. {low}~{high} mm 드릴을 사용할 수 있습니다.",
"thread.drill_range_taper":"탭 제조사의 드릴은 {drill} mm입니다. 나사 끝에서의 규격 골지름은 {minor} mm입니다. {low}~{high} mm 드릴을 사용할 수 있습니다.",
"thread.end_square":"직각",
"thread.fade_short":"1.25 P (ISO 3508)",
"thread.fade_standard":"2.5 P (ISO 3508)",
"thread.form_bspp":"관용 평행나사 G (ISO 228-1)",
"thread.form_bspt":"관용 테이퍼나사 R, Rc (ISO 7-1)",
"thread.form_npt":"관용 테이퍼나사 NPT (ASME B1.20.1)",
"thread.form_rp":"관용 평행 암나사 Rp (ISO 7-1)",
"thread.iso_metric":"ISO 미터",
"thread.select_size":"크기 선택",
"timeline.feature_hint":"두 번 클릭하여 편집 · 드래그하여 순서 변경 · 마우스 오른쪽 버튼을 클릭하여 더 보기",
@@ -2856,6 +3156,7 @@
"ui.3d_mouse_section":"3D 마우스",
"ui.3d_mouse_show_in_view":"3D 뷰에 3D 마우스 표시",
"ui.3d_mouse_show_in_view_tip":"왼쪽 아래에 3D 마우스 그림을 띄워 움직임을 따라 보여 줍니다.",
"ui.3d_mouse_sketch_orbit":"스케치 편집 중 뷰 회전",
"ui.3d_mouse_skip":"내 장치는 이 동작을 못 해요",
"ui.3d_mouse_skip_tip":"이 동작을 양방향 모두 건너뛰고 보정에서 뺍니다.",
"ui.3d_mouse_speed":"3D 마우스 속도",
@@ -2922,6 +3223,7 @@
"ui.agent_chat_auth_terminal":"터미널에서 이것을 실행한 뒤 다시 연결을 누르세요:",
"ui.agent_chat_auth_title":"에이전트에 로그인",
"ui.agent_chat_cancel":"취소",
"ui.agent_chat_cancel_timeout":"에이전트가 중지 요청에 응답하지 않아 연결이 끊어졌습니다. 계속하려면 다시 연결하세요.",
"ui.agent_chat_cannot_start":"설치되어 있지만 시작되지 않습니다: {error}",
"ui.agent_chat_changes":"변경 {n}개, 실행 취소 한 번",
"ui.agent_chat_changes_of":"변경 {n}/{limit}",
@@ -2929,6 +3231,7 @@
"ui.agent_chat_command":"에이전트 명령",
"ui.agent_chat_connect":"연결",
"ui.agent_chat_copy":"복사",
"ui.agent_chat_custom_heading":"사용자 지정 모델",
"ui.agent_chat_custom_hint":"표준 입출력으로 Agent Client Protocol을 사용하는 모든 프로그램. 셸 없이 실행됩니다.",
"ui.agent_chat_denied":"거부함",
"ui.agent_chat_deny":"거부",
@@ -2970,7 +3273,15 @@
"ui.agent_chat_mode_all":"모두",
"ui.agent_chat_mode_ask":"확인",
"ui.agent_chat_mode_edits":"편집",
"ui.agent_chat_model_custom":"직접 입력 사용: {model}",
"ui.agent_chat_model_rejected":"에이전트가 {model}을(를) 받아들이지 않았습니다: {error}",
"ui.agent_chat_model_search":"모델 검색…",
"ui.agent_chat_model_tip":"에이전트가 사용하는 모델입니다. 선택은 이 에이전트에 기억됩니다.",
"ui.agent_chat_models_failed":"모델 목록을 가져올 수 없습니다: {error}",
"ui.agent_chat_models_heading":"사용 가능한 모델",
"ui.agent_chat_models_listing":"모델 목록을 가져오는 중…",
"ui.agent_chat_models_none":"엔드포인트에 나열된 모델이 없습니다",
"ui.agent_chat_models_not_a_list":"응답이 모델 목록이 아닙니다",
"ui.agent_chat_new":"새 채팅",
"ui.agent_chat_new_confirm":"새 채팅을 시작할까요? 현재 채팅은 지워집니다.",
"ui.agent_chat_next_picture":"다음 이미지",
@@ -2978,6 +3289,7 @@
"ui.agent_chat_no_control":"에이전트 채팅 엔드포인트가 시작되지 않아 에이전트가 디자인에 접근할 수 없습니다.",
"ui.agent_chat_no_images":"이 에이전트는 이미지를 받지 않습니다",
"ui.agent_chat_no_picture":"클립보드에 이미지가 없습니다",
"ui.agent_chat_node_too_old":"Node.js {version}은 이 에이전트에 사용하기에는 너무 오래된 버전입니다. Node.js 20.10 이상을 설치한 후 새로 고침을 누르세요.",
"ui.agent_chat_none_found":"코딩 에이전트를 찾지 못했습니다. 다음 중 하나를 설치한 뒤 새로 고침을 누르세요:",
"ui.agent_chat_none_found_short":"에이전트를 찾지 못함",
"ui.agent_chat_not_installed":"설치되지 않음",
@@ -3012,7 +3324,7 @@
"ui.agent_chat_send_now_tip":"에이전트의 현재 단계를 중지하고 이것을 다음으로 보냅니다 (Ctrl+Enter)",
"ui.agent_chat_setup_body":"SolidCraft는 이 컴퓨터에 설치된 코딩 에이전트와 통신합니다. 환경 설정 › AI에서 에이전트를 선택하세요.",
"ui.agent_chat_setup_title":"어시스턴트 설정",
"ui.agent_chat_side":"에이전트 채팅 위치",
"ui.agent_chat_side":"채팅 도킹",
"ui.agent_chat_signed_in":"로그인됨",
"ui.agent_chat_state_auth":"로그인 필요",
"ui.agent_chat_state_busy":"작업 중…",
@@ -3029,7 +3341,7 @@
"ui.agent_chat_undone":"(취소됨)",
"ui.agent_chat_view_attached":"뷰 첨부됨",
"ui.agent_chat_waiting":"확인 대기 중",
"ui.agent_cursor":"에이전트 커서",
"ui.agent_cursor":"에이전트 포인터",
"ui.agent_cursor_speed":"에이전트 커서 속도",
"ui.agent_off_thread":"에이전트가 명령을 실행하는 동안 창 반응성 유지",
"ui.agent_off_thread_note":"에이전트의 느린 명령(AI 패널 또는 MCP 클라이언트에서 실행)은 창과 별도로 계산됩니다. 뷰를 계속 회전하며 살펴볼 수 있고, 뷰의 칩에서 하나씩 중지할 수 있습니다. 끄면 각 명령이 창의 스레드에서 실행되며, 창은 명령이 끝날 때까지 기다립니다.",
@@ -3072,14 +3384,14 @@
"ui.ai_key_needs_https":"키는 HTTPS를 통해서만, 또는 이 컴퓨터로만 전송됩니다.",
"ui.ai_key_note":"SolidCraft 설정이 아닌 시스템 키체인에 저장됩니다. 로컬 서버라면 비워 두세요.",
"ui.ai_mode_all_note":"묻지 않고 실행합니다. 충돌 보고서는 계속 제외되고 폴더 제한도 그대로 적용됩니다.",
"ui.ai_mode_all_warning":"에이전트가 묻지 않고 디자인을 저장, 덮어쓰기, 내보내기, 교체할 수 있습니다. 신뢰하는 에이전트와 저장된 디자인에서만 사용하세요.",
"ui.ai_mode_ask":"매번 묻기",
"ui.ai_mode_ask":"먼저 묻기",
"ui.ai_mode_ask_note":"디자인의 모든 변경과 파일 작업이 사용자의 허용을 기다립니다.",
"ui.ai_mode_edits":"모델 편집 자동 허용",
"ui.ai_mode_edits":"편집 허용",
"ui.ai_mode_edits_note":"모델링 명령은 묻지 않고 실행되며, 저장·열기·내보내기 등 파일 작업이나 파괴적인 작업은 계속 묻습니다.",
"ui.ai_mode_global":"위 설정 따름",
"ui.ai_mode_global":"위와 동일",
"ui.ai_model":"모델",
"ui.ai_model_hint":"qwen3:14b",
"ui.ai_modes_scope":"이 설정은 SolidCraft 도구에 적용됩니다. 에이전트 자체 도구(셸, 파일 편집)는 에이전트에 모드가 있을 때 채팅 패널 머리글에서 고르는 에이전트 자체 모드를 따릅니다.",
@@ -3098,7 +3410,7 @@
"ui.ai_save":"저장",
"ui.ai_settings":"AI 설정…",
"ui.ai_show_features":"AI 기능 표시",
"ui.ai_show_features_note":"에이전트 채팅: 이미 사용 중인 코딩 에이전트나 선택한 모델 엔드포인트가 열린 디자인을 다루는 패널입니다. 끄면 AI 버튼, 단축키, 메뉴 항목, 패널이 없고 아무것도 찾거나 시작하지 않습니다.",
"ui.ai_show_features_note":"끄면 모든 곳에서 어시스턴트를 숨기고 아무것도 시작하지 않습니다. 아래 항목이 모두 흐려집니다.\n\n에이전트 채팅: 이미 사용 중인 코딩 에이전트나 선택한 모델 엔드포인트가 열린 디자인을 다루는 패널입니다. 끄면 AI 버튼, 단축키, 메뉴 항목, 패널이 없고 아무것도 찾거나 시작하지 않습니다.",
"ui.ai_switch_tip":"이 대화의 에이전트 변경",
"ui.ai_test":"테스트",
"ui.ai_test_acp_ok":"응답: {agent}",
@@ -3112,7 +3424,7 @@
"ui.ai_tool_running":"실행 중",
"ui.ai_tool_unfold":"클릭하면 결과를 표시",
"ui.ai_tool_waiting":"대기 중",
"ui.ai_toolbar_button":"도구 모음에 버튼 표시",
"ui.ai_toolbar_button":"애플리케이션 바의 어시스턴트 버튼",
"ui.ai_toolbar_button_note":"도구 모음 오른쪽 끝의 AI 버튼. Ctrl+Shift+A와 보기 메뉴로도 패널을 열 수 있습니다.",
"ui.ai_undo_tip":"이 메시지에서 에이전트가 바꾼 모든 것을 한 번에 실행 취소",
"ui.ai_url_hint":"https://example.com/v1",
@@ -3184,10 +3496,16 @@
"ui.colour_vision_sample":"예시",
"ui.colour_vision_tritan":"청색각이상 (Tritan)",
"ui.colour_vision_tritan_tip":"파란색 감각이 약하거나 없는 경우",
"ui.comb_length":"빗 길이",
"ui.comb_length_tip":"빗살의 길이: 자동 길이의 배수입니다. 자동 길이에서는 가장 긴 빗살이 표시된 곡선 크기의 5분의 1이 됩니다.",
"ui.comb_teeth":"빗살 수",
"ui.comb_teeth_tip":"각 빗의 빗살 수이며, 곡선을 따라 같은 간격으로 놓입니다. 빗살이 많을수록 곡률이 어떻게 바뀌는지 더 자세히 보입니다.",
"ui.combine":"결합",
"ui.coming_later":"추후 지원 예정",
"ui.command_done":"{command} 완료",
"ui.command_palette_hint":"명령 입력(예: {example}) — 또는 S 키를 눌러 검색",
"ui.components_from_bodies_hint":"활성 구성요소 아래에 선택한 각 바디와 같은 이름의 구성요소를 만듭니다.",
"ui.components_from_bodies_required":"바디를 하나 이상 선택하세요.",
"ui.concentric":"동심",
"ui.cone":"원뿔",
"ui.conic_curve":"원뿔 곡선",
@@ -3200,15 +3518,30 @@
"ui.construction.contact_hint":"접선: 원/원호 또는 열린 스플라인/원뿔 곡선 선택 후 접점 선택 (자유 곡선은 끝점만)",
"ui.construction.external_hint":"접선: 원 또는 원호, 외부 점, 원하는 해를 차례로 선택",
"ui.construction.free_hint":"보조 직선: 두 점 클릭; 마우스 오른쪽 버튼으로 다시 시작",
"ui.construction.normal_needs_length":"무한 직선은 항상 보조선입니다. 일반 선을 그리려면 길이를 입력하세요",
"ui.construction.point_hint":"보조 직선: 통과할 점 클릭",
"ui.construction.reference_hint":"보조 직선: 직선 선택 후 점 선택; 마우스 오른쪽 버튼으로 참조 변경",
"ui.construction.ribbon_label":"보조선",
"ui.construction.side_hint":"보조 직선: 선이 뻗어 나갈 쪽 클릭; 마우스 오른쪽 버튼으로 다시 시작",
"ui.continuity_smooth_curvature_change_tip":"부드러운 곡률 변화(G4): 이음매에서 곡률이 변하는 방식까지 부드럽게 이어집니다.",
"ui.continuity_tangent":"접선",
"ui.continuity_tangent_tip":"접선(G1): 꺾임은 없지만, 이음매에서 곡률이 급변합니다.",
"ui.copy":"복사",
"ui.copy_details":"세부 정보 복사",
"ui.copy_details_tip":"찾아보거나 보고할 수 있도록 전체 메시지를 복사합니다.",
"ui.corner":"코너",
"ui.corners":"코너",
"ui.counterbore":"카운터보어",
@@ -3323,6 +3656,7 @@
"ui.edit_sketch_empty":"편집할 스케치가 없습니다",
"ui.ellipse":"타원",
"ui.emboss_wrap_note":"지원되는 원통에 접하는 직교 선 프로파일은 자동으로 감깁니다. 대상을 고르려면 벽을 선택하세요.",
"ui.end":"끝",
"ui.end_radius":"끝 반지름",
"ui.end_scale":"끝 배율",
"ui.entities":"요소",
@@ -3346,12 +3680,41 @@
"ui.extend":"연장",
"ui.extent_type":"범위 유형",
"ui.extrude":"돌출",
"ui.extrude_auto_to_object_tip":"면, 꼭짓점 또는 평행 평면을 선택하면 범위가 객체까지로 전환됩니다.",
"ui.factor":"배율",
"ui.fade":"페이드",
"ui.fade_length":"페이드 길이",
"ui.feature_history":"피처 기록",
"ui.feature_options":"피처 옵션",
"ui.features":"피처",
"ui.file":"파일",
"ui.fillet":"필렛",
"ui.fillet_corner_ball":"볼",
"ui.fillet_corner_ball_tip":"굴러가는 볼의 구면 일부로, 각 라운드에 접합니다(G1).",
"ui.fillet_corner_curvature_tip":"곡률(G2): 부드러운 패치. 코너를 각 모서리를 따라 셋백만큼(입력하지 않으면 반지름의 {factor}배) 물려 패치로 채우므로, 반사가 꺾임 없이 지나갑니다.",
"ui.fillet_corner_needs_constant":"부드러운 패치 코너(G2)에는 일정한 반지름과 정확한 반지름 맞춤이 필요합니다.",
"ui.fillet_corner_patch":"부드러운 패치",
"ui.fillet_corner_patch_tip":"곡률 연속(G2): 코너를 각 모서리를 따라 물려 패치로 채우므로, 반사가 꺾임 없이 지나갑니다.",
"ui.fillet_corner_tangent_tip":"접선(G1): 굴러가는 볼 코너. 굴러가는 볼의 구면 일부로, 각 라운드에 접합니다.",
"ui.fillet_error_corner":"여기에서는 부드러운 코너를 만들 수 없었습니다. 다른 셋백이나 접선 코너를 시도해 보세요.",
"ui.fillet_error_failed":"이 모서리들에 이 필렛을 만들 수 없었습니다. 다른 반지름을 시도하거나 한 번에 둥글게 하는 모서리 수를 줄여 보세요.",
"ui.fillet_error_setback_short":"이 코너의 패치에 비해 셋백이 너무 짧습니다. {least}부터 만들 수 있습니다. 더 긴 셋백을 시도해 보세요.",
"ui.fillet_error_too_large":"이 모서리 옆의 면에 비해 반지름이 너무 큽니다. 더 작은 반지름을 시도하거나 '면 경계'를 '최대 반지름'으로 설정하세요.",
"ui.fillet_fit":"면 경계",
"ui.fillet_fit_exact":"정확한 반지름",
"ui.fillet_fit_needs_constant":"반지름 맞춤에는 일정한 반지름이 필요합니다.",
"ui.fillet_fit_reduce":"최대 반지름",
"ui.fillet_fit_taper":"좁힌 반지름",
"ui.fillet_fit_tip":"반지름이 모서리 옆 면이 허용하는 것보다 클 때.\n정확한 반지름: 지정한 반지름 그대로, 또는 둥글게 하지 않고 이유를 알리는 메시지.\n최대 반지름: 모든 모서리를 들어가는 가장 큰 반지름으로 둥글게 합니다.\n좁힌 반지름: 반지름을 유지하고 면이 모자란 곳에서만 라운드를 좁힙니다.",
"ui.fillet_options_tip":"접선 체인: 선택한 모서리에서 부드럽게 이어지는 모서리도 둥글게 합니다.\n미리 보기: 편집하는 동안 결과를 뷰에 표시합니다.",
"ui.fillet_setback":"셋백",
"ui.fillet_setback_hint":"{factor} × 반지름",
"ui.fillet_setback_least":"{least}보다 크게",
"ui.fillet_setback_tip":"부드러운 코너 패치가 시작되는 위치: 코너에서 각 모서리를 따른 거리. 기본값은 반지름의 {factor}배. 최소 셋백(셋백 없이 라운드가 만나는 곳, 면이 서로 직각이면 반지름)보다 커야 합니다.",
"ui.fillet_smooth_radius":"반지름 부드럽게 변화",
"ui.fillet_type_choices_tip":"일정한 반지름: 모서리 전체에 하나의 반지름.\n현 길이: 면이 어떤 각도로 만나든 라운드의 폭이 같습니다.\n가변 반지름: 양 끝의 반지름과, 추가하면 모서리를 따라 더.\n곡률 연속: 평면과 만나는 곳에서 반사가 꺾이지 않는 단면(G2).\n스플라인: 모서리를 따라 반지름이 설정한 제어 반지름을 따릅니다.",
"ui.fillet_type_curvature":"곡률 연속",
"ui.fillet_type_tip":"모서리를 가로지르는 단면. 곡률 연속: 평면 사이의 곡률 연속(G2) 단면으로, 반사가 면에서 라운드로 꺾임 없이 이어집니다.",
"ui.filter_commands_or_keys":"명령 또는 키 필터",
"ui.findInTimeline":"타임라인에서 찾기",
"ui.findInWindow":"창에서 찾기",
@@ -3458,6 +3821,7 @@
"ui.hideOrigin":"원점 숨기기",
"ui.hidePlanes":"평면 숨기기",
"ui.hideProfile":"윤곽 숨기기",
"ui.hide_origin_by_default":"새 디자인에서 원점 폴더 숨기기",
"ui.history_back":"한 단계 뒤로",
"ui.history_below_browser":"브라우저 아래",
"ui.history_edge_hint":"가장자리를 더블클릭",
@@ -3489,6 +3853,7 @@
"ui.insert_design.saved_file":"{name}에 저장되지 않은 변경 사항이 있어 저장된 파일을 삽입했습니다. 저장한 다음 링크 업데이트로 변경 사항을 가져오세요.",
"ui.insert_design.unsaved":"저장되지 않은 변경 사항",
"ui.inspect":"검사",
"ui.instances":"인스턴스",
"ui.intersect":"교차",
"ui.isolate":"분리 표시",
"ui.join":"접합",
@@ -3546,6 +3911,7 @@
"ui.move":"이동",
"ui.multiple":"다중",
"ui.named_views":"명명된 뷰",
"ui.nav_bridge_tip":"장치의 내비게이션 브리지에 연결합니다. 요청하기 전에는 꺼져 있습니다. 3D 입력 장치 자체 프로그램(예: 직접 만든 3D 마우스 드라이버)이 뷰를 움직이며 마우스 포인터는 그대로 사용할 수 있습니다. 연결은 이 컴퓨터의 이 포트만 사용합니다.",
"ui.navigation":"탐색",
"ui.needs_design":"{command}: 먼저 디자인을 열어 주세요",
"ui.newSketchGroup":"새 스케치 그룹",
@@ -3583,6 +3949,7 @@
"ui.part_size_needs_a_part":"크기를 바꿀 삽입된 표준 부품(나사, 너트, 와셔 또는 핀)을 선택하십시오. 바디를 키우거나 줄이려면 축척을 사용하십시오.",
"ui.part_size_shared":"부품을 다시 빌드하며 추가된 피처는 모두 대체됩니다. 이 구성요소의 모든 인스턴스가 업데이트됩니다.",
"ui.paste":"붙여넣기",
"ui.patch_continuity_corner_tip":"패치는 각 변을 따라 주변 면과 선택한 연속성으로 이어집니다. 주변 면끼리 서로 다른 곡률로 만나는 모서리에서는 그곳에서 접선(G1)으로 유지됩니다.",
"ui.path":"경로",
"ui.pattern_object_type_tip":"바디: 뷰나 브라우저에서 선택하는 솔리드 형상이며, 각각 통째로 복사됩니다.\n피처: 돌출이나 구멍 같은 기록의 단계이며, 기록에서 또는 그 단계가 만든 면에서 선택합니다. 그 단계가 반복됩니다.\n스케치는 둘 다 아닙니다. 곡선은 스케치 안의 패턴이나 대칭 복사로 반복하거나, 먼저 돌출하세요.",
"ui.pattern_on_path":"경로 패턴",
@@ -3593,6 +3960,7 @@
"ui.pipe":"파이프",
"ui.pitch":"피치",
"ui.placement":"배치",
"ui.placement_handles_tip":"모델 위로 피처를 드래그하는 마커와 회전하는 링입니다.",
"ui.plane":"평면",
"ui.plane_at_angle":"각도 평면",
"ui.plugins":"플러그인",
@@ -3616,9 +3984,9 @@
"ui.polygon":"다각형",
"ui.preferences":"환경 설정",
"ui.press_a_key":"키를 누르세요…",
"ui.print_face_body_not_sent":"이 면의 바디는 보내지지 않습니다. 먼저 바디에 추가하십시오",
"ui.print_face_cleared":"{body}: 출력 바닥면을 해제했습니다",
"ui.print_face_input":"출력 바닥면",
"ui.print_face_one_body":"출력 바닥면은 바디마다 하나입니다. 변경하려면 그 바디만 보내십시오",
"ui.print_face_pick":"솔리드 바디의 평면 하나를 선택하면 출력 바닥면이 됩니다",
"ui.print_face_set":"{body}: 출력 바닥면을 설정했습니다. 슬라이서로 보내면 이 면이 아래로 놓입니다",
"Sections (one sketch each)":"Keratan (satu lakaran setiap satu)",
"Select Other":"Pilih Yang Lain",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Pilih Lain: tahan butang kiri pada model tanpa bergerak (atau klik kanan › Pilih Lain…) untuk senarai objek di bawah kursor. Klik tempat sama untuk objek seterusnya. Klik dua kali butang tengah untuk ke Utama (Tetapan › Navigasi).",
"cmd.timeline_rollback":"Alih Penanda Garis Masa",
"cmd.timeline_stop":"Hentikan Main Sejarah",
"cmd.timeline_suppress":"Nyahaktifkan Ciri",
"cmd.ui.assistant":"Togol Pembantu",
"cmd.view.render_browser":"Pelayar Render",
"cmd.view.render_dock":"Alih Dok Render",
"cmd.view.render_focus":"Pandangan Fokus Render",
@@ -1279,17 +1303,28 @@
"cmd.view_tool":"Alat navigasi",
"cmd.view_top":"Pandangan Atas",
"cmd.view_visual_style":"Gaya visual",
"color.blue":"Biru",
"color.copy":"Klik untuk menyalin nilai warna",
"color.edit":"Klik untuk menyunting warna",
"color.gamma":"Memaparkan nilai warna dalam ruang gamma 0-255",
"color.green":"Hijau",
"color.hex":"Heks",
"color.hex_help":"Masukkan #rrggbb atau #rrggbbaa; enam digit mengekalkan kelegapan",
"color.hex_hint":"#rrggbb",
"color.hue":"Rona",
"color.linear":"Memaparkan nilai warna dalam ruang linear 0-1",
"color.recent":"Warna terkini",
"color.recent_help":"Warna yang anda pilih dalam mana-mana medan warna dipaparkan di sini",
"color.red":"Merah",
"color.saturation":"Ketepuan (peratus)",
"color.saturation_value":"Ketepuan dan nilai",
"color.selected":"Warna dipilih",
"color.step_down":"Turunkan",
"color.step_up":"Naikkan",
"color.value":"Nilai, iaitu kecerahan (peratus)",
"config.column_filter_empty":"Tiada lajur yang sepadan",
"config.rule_parameter_columns":"Hanya parameter yang mempunyai lajur dalam jadual disenaraikan. Tambah satu dengan Tambah Lajur (+) untuk menggunakannya di sini.",
"config.rule_suppression_columns":"Hanya ciri yang mempunyai lajur Nyahaktifkan dalam jadual disenaraikan. Tambah satu dengan Tambah Lajur (+) untuk mengawalnya di sini.",
"contact.components_count":"{count} komponen",
"contact.enabled_label":"diaktifkan",
"coupling.gear_1":"Gear 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Dimensi: {name}",
"dialog.edit_title":"SUNTING {title}",
"dialog.no_shown_body":"Tiada jasad dipaparkan untuk diubah: paparkan satu, atau pilih Jasad Baharu",
"dialog.pattern_sketch_not_object":"Pilih jasad atau ciri: lakaran bukan kedua-duanya. Ulang lengkungnya dengan Corak atau Cermin milik lakaran itu sendiri, atau semperit dahulu.",
"dialog.selection_guidance":"Pilih input untuk diubah. Klik objek dipilih untuk nyahpilih; Ctrl/Cmd+klik juga menogol pilihan. Semak pratonton, kemudian tekan OK.",
"dialog.selection_midpoint":"Titik tengah · {id}",
"dialog.selection_step":"{step} daripada {total}: Pilih {input}",
"dialog.step":"Langkah",
"document.changed_on_disk":"{name} berubah pada cakera",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Mencipta paksi binaan melalui dua titik, bucu atau titik lakaran. Gunakan untuk paksi yang menghubungkan dua kedudukan yang diketahui.",
"help.construct.plane.along_path":"Mencipta satah binaan yang serenjang dengan tepi atau lengkung, pada satu kedudukan sepanjangnya. Gunakan untuk melakar profil bagi Sapu atau keratan sesuatu laluan.",
"help.construct.plane.at_angle":"Mencipta satah binaan yang dipusingkan pada satu sudut daripada satah atau muka, pada paksi atau tepi. Gunakan untuk lakaran condong, seperti braket bersudut.",
"help.construct.plane.axis_point":"Mencipta satah binaan yang mengandungi satu paksi dan satu titik di luar paksi itu. Pilih titik asal atau paksi binaan, tepi lurus atau garis lakaran, kemudian bucu, titik lakaran atau titik binaan. Titik pada paksi tidak dapat menentukan satu satah yang unik.",
"help.construct.plane.midplane":"Mencipta satah binaan di tengah-tengah antara dua satah atau muka rata, atau yang membahagi dua kedua-duanya di tempat ia bertemu pada satu sudut. Gunakan sebagai satah simetri untuk pencerminan.",
"help.construct.plane.offset":"Mencipta satah binaan yang selari dengan satah atau muka rata, pada satu jarak atau melalui satu titik. Gunakan untuk melakar pada ketinggian tertentu di atas sesuatu muka.",
"help.construct.plane.perpendicular":"Mencipta satah binaan yang memuatkan garis atau tepi dan berdiri serenjang dengan satah atau muka. Gunakan untuk melakar secara tegak pada model sepanjang tepi.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Semak jenis sendi (seperti Tegar), status tetap, had sendi dan nilai yang dipacu parameter.",
"joint_move.blocked_title":"Tidak dapat mengalihkan bahagian ini",
"joint_move.coarse":"Langkah putaran dekat paksi (°)",
"joint_move.conflict":"Satu sendi bagi bahagian ini bercanggah dengan yang lain: {joint}.",
"joint_move.conflict_hint":"Sunting, nyahaktifkan atau padam sendi yang bercanggah supaya sendi lain dapat meletakkan bahagian itu.",
"joint_move.distance":"Jarak dari mula",
"joint_move.done":"Selesai",
"joint_move.fine":"Langkah putaran jauh dari paksi (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Trek {number}",
"nav.alias.help":"Shift+Alt+seret kiri mengorbit, Shift+Alt+seret tengah menyorot, Shift+Alt+seret kanan menzum; seret tengah juga menyorot dan seret kanan mengorbit",
"nav.blender.help":"Seret tengah mengorbit, Shift+tengah menyorot, Ctrl+tengah menzum; seret kanan tidak menggerakkan kamera",
"nav.creo.help":"Seret tengah mengorbit, Shift+tengah menyorot, Ctrl+seret tengah secara menegak menzum (ke bawah untuk zum masuk); tatal roda untuk zum",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Tetikus dan tetikus 3D berputar melalui kedua-dua kutub dan mengekalkan gelek. Pelekapan paksi dengan Shift dilumpuhkan.",
"nav.free_orbit.label":"Orbit bebas",
"nav.free_orbit.snap_help":"Tetikus dan tetikus 3D berputar melalui kedua-dua kutub dan mengekalkan gelek. Tahan Shift semasa menyeret orbit untuk melekapkan arah pandangan dan gelek.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+seret kiri menyorot, Shift+Alt+seret kiri menzum, Ctrl+seret kiri pada ruang kosong mengorbit",
"nav.inventor.help":"Seret tengah menyorot, Shift+tengah mengorbit, Ctrl+tengah menzum, seret kanan mengorbit",
"nav.maya.help":"Alt+seret kiri mengorbit, Alt+seret tengah menyorot, Alt+seret kanan menzum; seret tengah juga menyorot",
"nav.nx.help":"Seret tengah mengorbit, Shift+tengah menyorot (tengah + kanan dalam NX), Ctrl+tengah menzum (tengah + kiri dalam NX); seret kanan tidak menggerakkan kamera",
"nav.openscad.help":"Seret kiri pada ruang kosong mengorbit, Shift+seret kiri memilih dengan kotak, seretan geometri lakaran menyunting; seret kanan atau tengah menyorot, Shift+seret kanan atau Shift+seret tengah menzum",
"nav.perspective.sketch":"Penyuntingan lakaran menggunakan pandangan ortografik. Siapkan lakaran untuk bertukar ke perspektif.",
"nav.right_drag_orbits.help":"Mati: seret kanan tidak menggerakkan kamera dan butang kanan hanya membuka menu konteks. Memilih pemetaan tetikus SolidWorks akan mematikannya.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Skru kepala butang",
"parts.family.dowel_pin":"Pin selari (dowel)",
"parts.family.hex_bolt":"Bolt / skru kepala heks",
"parts.family.hex_cap_screw_inch":"Skru kepala heks (cap screw, inci)",
"prefs.cut_preview_tint":"Papar bahan yang dibuang dalam warna merah",
"prefs.cut_preview_tint_help":"Pratonton mengisi bahan yang dibuang oleh sesuatu ciri, dan bentuk yang digantikannya, dengan bayang merah lut sinar. Apabila dimatikan, isian itu telus sepenuhnya dan hanya garis luarnya dilukis.",
"prefs.dark_parts_shading":"Kekalkan bentuk bahagian yang gelap",
"prefs.dark_parts_shading_help":"Lorekkan pandangan dalam cahaya linear dengan cahaya isian langit yang lembut, supaya muka yang gelap mengekalkan kecerunan dan tidak menjadi hitam",
"prefs.dead_zone_note":"Jalur berlorek ialah zon mati: gerakan di dalamnya diabaikan.",
"prefs.default":"lalai",
"prefs.design":"Lalai reka bentuk",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Tepi dan teduhan",
"prefs.extend":"Panjangkan",
"prefs.extra_navigation":"Seret kiri dengan Ctrl pada ruang kosong untuk mengorbit; tahan Space untuk menyorot.",
"prefs.extrude_view_isometric":"Putar pandangan ke isometrik apabila Semperit dibuka",
"prefs.extrude_view_return":"Kembali ke pandangan terdahulu apabila Semperit ditutup",
"prefs.follows_os":"Ikut OS",
"prefs.font":"Fon",
"prefs.font_fallback":"Glif yang tiada dalam fon pilihan akan beralih kepada fon terbina dalam, jadi tiada label yang memaparkan kotak kosong.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatik",
"prefs.graphics_card_missing":"Kad grafik yang disimpan tidak tersedia; Automatik digunakan.",
"prefs.graphics_card_restart":"Berkuat kuasa selepas SolidCraft dimulakan semula. WGPU_ADAPTER_NAME mengatasi pilihan ini.",
"prefs.graphics_card_unused":"Kad grafik yang disimpan tidak digunakan untuk tetingkap ini; kad yang sedang digunakan dipaparkan dalam Bantuan › Tentang dan dalam bar status. Cuba Automatik, atau tetapkan WGPU_ADAPTER_NAME kepada bahagian unik pada nama kad itu.",
"prefs.graphics_note":"Tukar kelajuan dengan kelicinan. Setiap pilihan menunjukkan kesannya pada contoh.",
"prefs.graphics_presets_note":"Pratetap menetapkan pilihan di bawah sekali gus.",
"prefs.hide_constraint_glyphs_zoomed_out":"Sembunyikan glif kekangan apabila dizum keluar",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Apabila Lakaran ditetapkan kepada Di bawah cirinya, Sejarah di sebelah kiri menyenaraikan setiap lakaran satu tahap ke dalam, di bawah ciri pertama yang dibina daripadanya, apabila ruangnya cukup lebar untuk nama. Garis masa di bahagian bawah sentiasa mengekalkan urutan penciptaan.",
"prefs.history_sketches_under_feature":"Di bawah cirinya",
"prefs.hold_stop_snapping":"Tahan untuk menghentikan pelekapan",
"prefs.home_fit_size":"Saiz Utama dan Muatkan",
"prefs.home_fit_size_note":"Seberapa banyak pandangan yang diisi oleh model apabila Utama, Muatkan, reka bentuk yang baru dibuka atau perubahan pandangan melalui kawalan pandangan membingkainya, sama ada tetapan di bawah dihidupkan atau tidak. 100 %: memenuhi pandangan di antara panel, kompas dan bar navigasi.",
"prefs.icons_only":"Ikon sahaja",
"prefs.imported_file":"Fail yang diimport",
"prefs.in_browser":"Dalam pelayar",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Bahasa antara muka",
"prefs.interface_note":"Rupa SolidCraft dan kedudukan bahagiannya.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Songsangkan anak panah gelek melengkung",
"prefs.invert_curved_roll_arrows_note":"Dua anak panah melengkung di sudut kubus menggelek pandangan dalam satah skrin. Hidup: anak panah ikut arah jam menggelek lawan arah jam dan anak panah lawan arah jam menggelek ikut arah jam. Mati: setiap anak panah menggelek pandangan mengikut arah lengkungannya.",
"prefs.invert_navigator_arrows":"Songsangkan anak panah putaran kubus pandangan",
"prefs.invert_navigator_arrows_note":"Anak panah di sekeliling kubus mengorbit kamera mengikut arah yang ditunjuknya, seperti dalam Fusion dan Inventor: anak panah di kiri menunjuk ke kanan dan mengayunkan kamera ke kanan. Mati: anak panah memutarkan kubus ke arah sisi tempat ia berada, jadi anak panah kiri mengayunkan kamera ke kiri. Anak panah gelek yang melengkung tidak terjejas.",
"prefs.keep_work_on_tab_switch":"Kekalkan dialog dan alat terbuka apabila menukar reka bentuk",
"prefs.keep_work_on_tab_switch_note":"Setiap tab reka bentuk mengekalkan dialog atau alat yang dibukanya, bersama apa yang anda pilih dan taip di dalamnya, serta tab bar alatnya. Semuanya ada semula apabila anda kembali ke reka bentuk itu. Mati: menukar reka bentuk membatalkannya dan menunjukkan tab Model.",
"prefs.labels":"Label",
"prefs.language_system":"Sistem",
"prefs.layout":"Susun atur",
"prefs.layout_note":"Padat melabuhkan panel pada tepi tetingkap. Kelutsinaran pelayar tersedia dalam Terapung. Tukar sisi Pembantu pada halaman Pembantu.",
"prefs.left":"Kiri",
"prefs.left_click":"Klik kiri",
"prefs.line_drag_draws_one":"Tekan dan seret melukis satu garis",
"prefs.line_drag_draws_one_note":"Dalam alat Garis, menekan, menyeret dan melepaskan melukis satu garis dari titik tekan hingga titik lepas, dan ia tamat di situ. Klik masih melukis rantaian. Mati: seretan meletakkan titik di tempat ia dilepaskan, seperti klik.",
"prefs.line_hover_tangent_arc":"Berhenti pada titik terakhir garis untuk bertukar kepada lengkok tangen",
"prefs.line_hover_tangent_arc_note":"Dalam alat Garis, selepas satu segmen dilukis, alihkan penuding menjauhi titik terakhir rantaian, kembali dan tahan penuding diam di situ: klik seterusnya menentukan hujung lengkok tangen, dan gerak isyarat yang sama kembali kepada garis. Mati: berhenti di situ tidak berbuat apa-apa.",
"prefs.linked_designs":"Reka bentuk terpaut",
"prefs.live_input":"Input langsung",
"prefs.live_preview":"Pratonton langsung",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Pemetaan tetikus",
"prefs.navigation":"Navigasi",
"prefs.navigation_note":"Cara tetikus, pad jejak dan tetikus 3D menggerakkan pandangan.",
"prefs.navigator_fit":"Muatkan model selepas perubahan pandangan navigator",
"prefs.navigator_fit_note":"Muka, sudut atau anak panah pada kubus pandangan, atau paksi pada gizmo, turut menghadap ke tengah model dari satu jarak yang memuatkannya dari semua sisi (sfera pembatasnya). Utama menggunakan zum dan pusat yang sama selagi ini dihidupkan, jadi pandangan yang dipilih selepasnya hanya berputar. Mati: pandangan berputar di tempat, dengan sasaran dan zumnya kekal.",
"prefs.network_host_remove":"Buang",
"prefs.network_locations":"Benarkan lokasi rangkaian dalam reka bentuk",
"prefs.network_locations_note":"Dimatikan: fail terpaut bagi reka bentuk pada komputer lain (\\\\server\\share) hanya dibuka daripada pelayan yang disenaraikan di sini, atau selepas anda membenarkannya apabila ditanya.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Penempatan",
"prefs.prefer_free_sketch_points":"Utamakan titik lakaran yang boleh digerakkan apabila titik bertindih",
"prefs.preview_choices":"Pratonton pilihan anda",
"prefs.preview_tint_new_faces":"Warnakan permukaan baharu dalam pratonton",
"prefs.preview_tint_new_faces_help":"Pratonton ciri yang mengubah sesuatu jasad boleh melukis permukaan yang ditambahnya dalam warna pratonton. Apabila dimatikan, jasad dilukis seperti biasa.",
"prefs.render_previous_geometry_budget_help":"Pulihkan had geometri tetap sebelumnya (512 MiB pada desktop 64-bit, 128 MiB di tempat lain) dan bukannya bajet berdasarkan peranti.",
"prefs.reports_saved":"{n} disimpan",
"prefs.ribbon_click_ends_tool":"Mengklik butang alat yang sedang berjalan menamatkannya",
"prefs.ribbon_click_ends_tool_note":"Satu klik pada butang reben yang menyala bagi alat lakaran yang sedang digunakan menamatkan alat itu, jadi klik dalam pandangan memilih semula. Mati: klik memulakan alat itu semula.",
"prefs.ribbon_reveal":"Tunjukkan hasil carian dalam reben",
"prefs.ribbon_reveal_note":"Melalukan kursor pada hasil dalam Cari arahan menunjukkan kedudukan arahan itu dalam reben: tabnya, butangnya atau barisnya dalam senarai juntai sesuatu panel. Arahan yang dimulakan daripada carian berkelip di situ, dan arahan yang sedang berjalan daripada senarai juntai menandakan panelnya.",
"prefs.right_click":"Klik kanan",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Kembali ke pandangan sebelumnya",
"prefs.sketch_exit_view_note":"Ke mana pandangan beralih selepas Siap Lakaran, Batal atau Esc dua kali.",
"prefs.sketch_face_activates_part":"Melakar pada muka sesuatu bahagian menjadikan bahagian itu aktif",
"prefs.sketch_face_activates_part_note":"Lakaran yang dimulakan pada muka jasad milik komponen lain mengaktifkan komponen itu terlebih dahulu, jadi lakaran itu menjadi milik komponen tersebut dan kekal bersama bahagian itu dalam pelayar. Bahagian itu kekal aktif selepas itu. Mati: lakaran menjadi milik komponen aktif.",
"prefs.sketch_open_look_at":"Putar menghadap lakaran apabila dibuka",
"prefs.sketch_open_look_at_note":"Mati: mencipta atau menyunting lakaran membiarkan pandangan seperti sedia ada. Pandang Tepat menghadapkan pandangan ke lakaran apabila anda mahu.",
"prefs.sketch_recent_snap":"Lekap auto pada pusat dan titik tengah terkini",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Ralat",
"prefs.status_selected":"Dipilih",
"prefs.status_warning":"Amaran",
"prefs.structure.appearance":"Penampilan",
"prefs.structure.appearance_note":"Warna, teks dan kebolehcapaian.",
"prefs.structure.measure_pointer":"Ukur dan penuding",
"prefs.structure.mouse3d":"Tetikus 3D",
"prefs.structure.mouse3d_note":"SpaceMouse dan SpaceNavigator.",
"prefs.structure.navigation_note":"Tetikus dan pad jejak. Tetikus 3D mempunyai halamannya sendiri.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Berubah sejak disimpan",
"prefs.structure.profile_hover":"Disimpan dalam profil tetapan",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Lakaran",
"prefs.structure.tools":"Alat",
"prefs.structure.tools_note":"Cara alat pemodelan berfungsi.",
"prefs.structure.work":"Kerja",
"prefs.supersampling_brief":"Melukis pandangan pada saiz lebih besar lalu menapisnya ke bawah: sangat tajam, tetapi lebih berat.",
"prefs.tab_accent_note":"Aksen mengikut tab aktif",
"prefs.theme_file":"fail tema",
@@ -2501,6 +2600,10 @@
"render.base_color":"Warna asas · sRGB",
"render.base_metallic":"Pecahan logam",
"render.base_opaque_only":"Penyunting ini mengekalkan semantik jasad legap. Gunakan kawalan kaca yang khusus untuk transmisi optik.",
"render.batch_all_shots":"Semua syot ({count})",
"render.batch_empty":"Simpan satu syot sebelum merender semua syot.",
"render.batch_limit":"Render Semua Syot dihadkan kepada 32 syot.",
"render.batch_status":"{running} sedang berjalan · {waiting} menunggu",
"render.bloom_enable":"Papar bloom",
"render.bloom_help":"Pendaran kreatif untuk keluaran sahaja daripada serlahan linear positif, disebarkan dengan tiga laluan kotak ternormal. Jejari dalam piksel keluaran. Ditambah dalam cahaya paparan linear sebelum sRGB; bukan kesan kanta, kesan volumetrik atau peningkatan penumpuan. EXR mentah tidak berubah.",
"render.bloom_opaque":"Bloom memerlukan keluaran legap. PNG telus ditolak, bukan diratakan secara senyap.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Pilih gaya dalam Penampilan dahulu",
"render.chromatic_offset":"Ofset tepi kromatik",
"render.clear_stage":"Buang pentas yang disimpan",
"ui.ai_reasoning_effort_hint":"Pilihan. Dihantar kepada titik akhir sebagai `reasoning_effort`; nilai yang diterima berbeza bagi setiap pembekal (contohnya `low`, `high` atau `max`). Nilai yang anda tetapkan di sini tidak sekali-kali diganti oleh SolidCraft. Biarkan kosong untuk tidak menghantar apa-apa dan mengekalkan lalai pembekal.",
"ui.ai_remove":"Buang",
"ui.ai_request_timed_out":"Model mengambil masa lebih daripada {seconds} s. Anda boleh menaikkan had masa permintaan untuk titik akhir ini dalam Tetapan › Pembantu.",
"ui.ai_request_timeout":"Had masa permintaan",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tangen: pilih bulatan/lengkok atau splin/lengkung kon terbuka, kemudian titik sentuh (lengkung bentuk bebas: titik hujung)",
"ui.construction.external_hint":"Tangen: pilih bulatan atau lengkok, satu titik luar, kemudian penyelesaian yang dikehendaki",
"ui.construction.free_hint":"Garis binaan: klik dua titik; klik kanan untuk mula semula",
"ui.construction.normal_needs_length":"Garis tak terhingga sentiasa garis binaan: taip panjang untuk melukis garis biasa",
"ui.construction.point_hint":"Garis binaan: klik titik yang akan dilalui",
"ui.construction.reference_hint":"Garis binaan: pilih garis lurus, kemudian satu titik; klik kanan untuk menukar rujukan",
"ui.construction.ribbon_label":"Garis bantu",
"ui.construction.side_hint":"Garis binaan: klik sisi yang dituju garis; klik kanan untuk mula semula",
"ui.edit_sketch_empty":"Tiada lakaran untuk disunting",
"ui.ellipse":"Elips",
"ui.emboss_wrap_note":"Profil garis ortogon yang tangen pada satu silinder yang disokong dibalut secara automatik. Pilih dinding untuk memilih sasaran.",
"ui.end_radius":"Jejari Akhir",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Eksplisit",
"ui.equation_form":"Bentuk",
"ui.equation_note":"Pemboleh ubah ialah nombor biasa: sin(t) mengambilnya dalam radian. Hasil tanpa unit adalah dalam unit reka bentuk.",
"ui.equation_note_range":"Pemboleh ubah ialah panjang, begitu juga julatnya: campurkannya dengan parameter panjang, dan bahagikannya dengan satu panjang untuk sin(). Hasil tanpa unit adalah dalam unit reka bentuk.",
"ui.equation_parametric":"Parametrik",
"ui.equation_variable_unit":"Pemboleh ubah menggunakan unit julat",
"ui.hide_origin_by_default":"Sembunyi titik asal secara lalai",
"ui.hide_origin_note":"Reka bentuk baharu bermula dengan folder Titik Asal disembunyikan. Sesuatu reka bentuk mengekalkan tetapan Titik Asalnya sendiri sebaik sahaja anda memaparkan atau menyembunyikannya.",
"ui.history_sketch_listed_under":"Disenaraikan di bawah {feature}",
"ui.history_title":"Sejarah",
"ui.history_toggle_names":"Papar atau sembunyikan nama ciri",
"ui.history_waits_for_editor":"Buat Asal, Buat Semula dan Sejarah menunggu sehingga penyunting ciri dibuka",
"ui.hole":"Lubang",
"ui.hole_tap_type":"Jenis Bebenang Lubang",
"ui.hole_type":"Jenis Lubang",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} mempunyai perubahan yang belum disimpan, jadi fail tersimpannya disisipkan. Simpan reka bentuk itu, kemudian gunakan Kemas Kini Pautan untuk membawa masuk perubahan.",
"ui.insert_design.unsaved":"Perubahan belum disimpan",
"ui.inspect":"Periksa",
"ui.instances":"Salinan",
"ui.intersect":"Silang",
"ui.isolate":"Asingkan",
"ui.join":"Cantum",
@@ -4655,12 +4797,14 @@
"ui.joints":"Sendi",
"ui.keyboard_shortcuts":"Pintasan Kekunci",
"ui.language":"Bahasa",
"ui.lasso_select":"Lasso (seret gelung bebas: memilih yang sepenuhnya berada di dalam)",
"ui.layout_compact":"Padat",
"ui.layout_floating":"Terapung",
"ui.length":"Panjang",
"ui.length_decimals":"Perpuluhan panjang",
"ui.light":"Cerah",
"ui.line":"Garis",
"ui.line_arc_hint":"Lengkok tangen: klik hujung lengkok. Berhenti lagi pada titik terakhir untuk garis; klik kanan atau Esc untuk selesai",
"ui.link_copies":"Pautkan Salinan Serupa",
"ui.link_copies_keep":"Kekalkan",
"ui.link_copies_link":"Pautkan",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Membina semula bahagian, menggantikan sebarang ciri yang ditambah. Semua kejadian komponen ini dikemas kini.",
"ui.paste":"Tampal",
"ui.path":"Laluan",
"ui.pattern_object_type_tip":"Jasad: bentuk pepejal, dipilih dalam pandangan atau Pelayar; setiap satu disalin keseluruhannya.\nCiri: langkah Sejarah, seperti semperit atau lubang, dipilih dalam Sejarah atau pada muka yang dihasilkannya; langkah itu diulang.\nLakaran bukan kedua-duanya: ulang lengkungnya dengan Corak atau Cermin milik lakaran itu sendiri, atau semperit dahulu.",
"ui.view_angles_convention":"Darjah pada paksi ke atas. Yaw 0° ialah pandangan Hadapan, 90° Kiri, −90° Kanan, 180° Belakang; pic 90° ialah pandangan Atas; gelek positif memutar model mengikut arah jam.",
"ui.view_angles_help":"Memaparkan pic, yaw dan gelek pandangan dalam darjah serta unjurannya di bawah gizmo orientasi. Klik bacaan untuk menaip sudut yang tepat.",
"ui.view_angles_lock":"Kunci {axis}",
"ui.view_angles_ortho":"Orto",
"ui.view_angles_persp":"Persp",
"ui.view_angles_pitch":"Pic",
"ui.view_angles_readout":"Pic {pitch} · Yaw {yaw} · Gelek {roll}",
"ui.view_angles_roll":"Gelek",
"ui.view_angles_unlock":"Buka kunci {axis}",
"ui.view_angles_yaw":"Yaw",
"ui.view_angles_zero":"Tetapkan {axis} kepada 0°",
"update.check_unavailable":"Semakan kemas kini tidak tersedia untuk pemasangan ini.",
"update.checking":"Menyemak…",
"update.copy":"Salin",
"update.dmg_opened":"Imej cakera telah dibuka dan disahkan: seret SolidCraft ke Applications untuk menggantikan salinan lama, kemudian mulakan semula SolidCraft.",
"update.dmg_opened":"Imej cakera telah dibuka dan disahkan: keluar dari SolidCraft, seret SolidCraft yang baharu ke Applications untuk menggantikan salinan lama, kemudian buka SolidCraft semula.",
"update.download":"Muat turun",
"update.download_open":"Muat turun dan buka",
"update.downloading":"Memuat turun dan mengesahkan… {done} daripada {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Buka reka bentuk yang dipautkan?",
"web.open_link_confirm":"Terdapat perubahan yang belum disimpan. Buka reka bentuk yang dipautkan dalam tab baharu?",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Velg annet: Hold venstre museknapp inne uten å flytte pekeren på modellen (eller høyreklikk › Velg annet…) for å vise alt under markøren. Klikk på samme sted igjen for å velge neste objekt. Dobbeltklikk med midtknappen for å gå til hjemvisningen (Innstillinger › Navigasjon).",
"config.rule_parameter_columns":"Bare parametere som har en kolonne i tabellen, er med i listen. Legg til en kolonne med Legg til kolonne (+) for å bruke parameteren her.",
"config.rule_suppression_columns":"Bare funksjoner som har en Undertrykk-kolonne i tabellen, er med i listen. Legg til en kolonne med Legg til kolonne (+) for å styre undertrykkingen her.",
"contact.components_count":"{count} komponenter",
"contact.enabled_label":"aktivert",
"coupling.gear_1":"Tannhjul 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Mål: {name}",
"dialog.edit_title":"REDIGER {title}",
"dialog.no_shown_body":"Ingen synlig kropp å endre: vis en, eller velg Ny kropp",
"dialog.pattern_sketch_not_object":"Velg kropper eller funksjoner: en skisse er ingen av delene. Gjenta kurvene med skissens eget Mønster eller Speil, eller ekstruder den først.",
"dialog.selection_guidance":"Velg et felt for å endre det. Klikk på valgte objekter for å fjerne dem fra utvalget; Ctrl/Cmd+klikk veksler også mellom valgt og ikke valgt. Se over forhåndsvisningen, og trykk deretter OK.",
"dialog.selection_step":"{step} av {total}: Velg {input}",
"dialog.step":"Trinn",
"document.changed_on_disk":"{name} er endret på disken",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Oppretter en hjelpeakse gjennom to punkter, hjørner eller skissepunkter. Bruk den til en akse mellom to kjente posisjoner.",
"help.construct.plane.along_path":"Oppretter et hjelpeplan vinkelrett på en kant eller kurve, på en posisjon langs den. Bruk det til å skisse en profil for en sweep eller et snitt av en bane.",
"help.construct.plane.at_angle":"Oppretter et hjelpeplan vridd med en vinkel fra et plan eller en flate, om en akse eller kant. Bruk det til skråstilte skisser, for eksempel en vinklet brakett.",
"help.construct.plane.axis_point":"Oppretter et hjelpeplan som inneholder en akse og et punkt utenfor aksen. Velg en origoakse eller hjelpeakse, en rett kant eller skisselinje, og deretter et hjørne, skissepunkt eller hjelpepunkt. Et punkt på aksen kan ikke definere et entydig plan.",
"help.construct.plane.midplane":"Oppretter et hjelpeplan midt mellom to plan eller plane flater, eller som halverer dem der de møtes i en vinkel. Bruk det som symmetriplan for speiling.",
"help.construct.plane.offset":"Oppretter et hjelpeplan parallelt med et plan eller en plan flate, i en avstand eller gjennom et punkt. Bruk det til å skisse i en bestemt høyde over en flate.",
"help.construct.plane.perpendicular":"Oppretter et hjelpeplan som inneholder en linje eller kant og står vinkelrett på et plan eller en flate. Bruk det til å skisse oppreist på en modell langs en kant.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Kontroller leddtypen (for eksempel Stiv), om posisjonen er festet, leddgrenser og parameterstyrte verdier.",
"joint_move.blocked_title":"Kan ikke flytte denne delen",
"joint_move.coarse":"Rotasjonstrinn nær aksen (°)",
"joint_move.conflict":"Et ledd på denne delen er i konflikt med de andre: {joint}.",
"joint_move.conflict_hint":"Rediger, undertrykk eller slett det konfliktende leddet, slik at de andre leddene kan plassere delen.",
"joint_move.distance":"Avstand fra start",
"joint_move.done":"Ferdig",
"joint_move.fine":"Rotasjonstrinn langt fra aksen (°)",
"nav.blender.help":"Midtdrag roterer, Shift+midtdrag panorerer, Ctrl+midtdrag zoomer; høyredrag lar kameraet stå i ro",
"nav.creo.help":"Midtdrag roterer, Shift+midtdrag panorerer, Ctrl+midtdrag vertikalt zoomer (ned for å zoome inn); rulling med hjulet zoomer",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Mus og 3D-mus roterer gjennom begge polene og bevarer rulling. Aksefangst med Shift er deaktivert.",
"nav.free_orbit.label":"Fri rotasjon",
"nav.free_orbit.snap_help":"Mus og 3D-mus roterer gjennom begge polene og bevarer rull. Hold Shift mens du drar for å rotere, så låses visningsretningen og rullen til faste trinn.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+venstredrag panorerer, Shift+Alt+venstredrag zoomer, Ctrl+venstredrag fra tomt område roterer",
"nav.nx.help":"Midtdrag roterer, Shift+midtdrag panorerer (i NX: midt + høyre), Ctrl+midtdrag zoomer (i NX: midt + venstre); høyredrag lar kameraet stå i ro",
"nav.openscad.help":"Venstredrag i tomt område roterer, Shift+venstredrag velger med ramme, dra i skissegeometri for å redigere; høyre- eller midtdrag panorerer, Shift+høyredrag eller Shift+midtdrag zoomer",
"nav.perspective.sketch":"Skisseredigering bruker ortografisk visning. Fullfør skissen for å bytte til perspektiv.",
"nav.right_drag_orbits.help":"Av: et høyredrag lar kameraet stå i ro, og høyre museknapp åpner bare kontekstmenyen. Når du velger SolidWorks-museoppsettet, slås dette av.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Linsehodeskrue med innvendig sekskant",
"parts.family.washer_uss":"Underlagsskive, USS (bred)",
"parts.holes":"Hull (valgfritt)",
"parts.placement_hint":"velg ett eller flere hull for å sette inn en del i hvert av dem, eller OK plasserer den ved origo",
"parts.system":"Enhetssystem",
"parts.system.inch":"Tommer",
"parts.system.metric":"Metrisk",
"pattern.alignment_2":"Justering 2",
"pattern.alignment_hint":"Antallet inkluderer originalen. Senter fordeler kopiene rundt originalen. Speil velger hvilken side som får en ekstra kopi når antallet er et partall.",
"prefs.cut_preview_tint":"Vis fjernet materiale i rødt",
"prefs.cut_preview_tint_help":"En forhåndsvisning fyller materialet en funksjon fjerner, og formen den erstatter, med et rødt, gjennomsiktig spøkelse. Når dette er av, er fyllene helt gjennomsiktige, og bare konturene tegnes.",
"prefs.dark_parts_shading":"Bevar formen på mørke deler",
"prefs.dark_parts_shading_help":"Skygger visningen i lineært lys med en myk himmelfylling, slik at mørke flater beholder en gradient i stedet for å bli svarte",
"prefs.dead_zone_note":"Det skraverte feltet er dødsonen: bevegelser innenfor den ignoreres.",
"prefs.default":"standard",
"prefs.design":"Standarder for design",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Kanter og skyggelegging",
"prefs.extend":"Utvid",
"prefs.extra_navigation":"Ctrl+venstredrag i tomt område roterer; hold mellomromstasten inne for å panorere.",
"prefs.extrude_view_isometric":"Drei visningen til isometrisk når Ekstrudering åpnes",
"prefs.extrude_view_return":"Gå tilbake til forrige visning når Ekstrudering lukkes",
"prefs.follows_os":"Følger operativsystemet",
"prefs.font":"Skrift",
"prefs.font_fallback":"Tegn som mangler i valgt skrift, hentes fra den innebygde skriften, slik at ingen etiketter viser tomme ruter.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatisk",
"prefs.graphics_card_missing":"Det lagrede grafikkortet er utilgjengelig. Automatisk brukes i stedet.",
"prefs.graphics_card_restart":"Trer i kraft etter at SolidCraft er startet på nytt. WGPU_ADAPTER_NAME overstyrer dette valget.",
"prefs.graphics_card_unused":"Det lagrede grafikkortet ble ikke brukt for dette vinduet. Kortet som er i bruk, vises i Hjelp › Om og i statuslinjen. Prøv Automatisk, eller sett WGPU_ADAPTER_NAME til en unik del av kortets navn.",
"prefs.graphics_note":"Velg mellom hastighet og jevnhet. Hvert valg viser effekten på et eksempel.",
"prefs.hide_constraint_glyphs_zoomed_out":"Skjul bindingssymboler når det er zoomet ut",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Når Skisser er satt til Under funksjonen sin, viser tidslinjen til venstre hver skisse ett nivå inn, under den første funksjonen som er bygget fra den, så lenge den er bred nok til å vise navn. Tidslinjen nederst beholder alltid opprettelsesrekkefølgen.",
"prefs.hold_stop_snapping":"Hold inne for å slå av punktfangst",
"prefs.home_fit_size":"Størrelse for Hjem og Tilpass",
"prefs.home_fit_size_note":"Hvor mye av visningen modellen fyller når Hjem, Tilpass, et åpnet design eller en visningsendring fra navigatoren rammer den inn, enten innstillingen under er på eller ikke. 100 %: fyller visningen mellom panelene, kompasset og navigasjonslinjen.",
"prefs.icons_only":"Bare ikoner",
"prefs.imported_file":"Importert fil",
"prefs.in_browser":"I modelltreet",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Grensesnittspråk",
"prefs.interface_note":"Hvordan SolidCraft ser ut, og hvor delene er plassert.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Inverter de krumme rullepilene",
"prefs.invert_curved_roll_arrows_note":"De to krumme pilene i hjørnet av kuben ruller visningen i skjermplanet. På: pilen med klokken ruller mot klokken, og pilen mot klokken ruller med klokken. Av: hver pil ruller visningen i den retningen den krummer seg.",
"prefs.invert_navigator_arrows":"Inverter rotasjonspilene på visningskuben",
"prefs.invert_navigator_arrows_note":"Pilene rundt kuben roterer kameraet i den retningen de peker, som i Fusion og Inventor: pilen til venstre peker mot høyre og svinger kameraet mot høyre. Av: en pil roterer kuben mot siden den står på, så venstre pil svinger kameraet mot venstre. De krumme rullepilene påvirkes ikke.",
"prefs.keep_work_on_tab_switch":"Behold dialoger og verktøy åpne når du bytter design",
"prefs.keep_work_on_tab_switch_note":"Hver designfane beholder sin åpne dialog eller sitt åpne verktøy, med det du har valgt og skrevet i den, og sin fane på båndet. De er der igjen når du kommer tilbake til designet. Av: å bytte design avbryter dem og viser fanen Modell.",
"prefs.labels":"Etiketter",
"prefs.language_system":"System",
"prefs.layout":"Oppsett",
"prefs.layout_note":"Kompakt fester panelene til vinduskantene. Gjennomsiktig modelltre er tilgjengelig i Flytende. Endre siden for assistenten på assistentsiden.",
"prefs.left":"Venstre",
"prefs.left_click":"Venstreklikk",
"prefs.line_drag_draws_one":"Trykk og dra tegner én linje",
"prefs.line_drag_draws_one_note":"I Linje-verktøyet tegner trykk, dra og slipp én linje fra der du trykket til der du slapp, og linjen avsluttes der. Klikk tegner fortsatt en kjede. Av: et drag plasserer et punkt der det slippes, slik et klikk gjør.",
"prefs.line_hover_tangent_arc":"Hvil på det siste punktet på en linje for å bytte til en tangentbue",
"prefs.line_hover_tangent_arc_note":"I Linje-verktøyet: når et segment er tegnet, beveg pekeren bort fra det siste punktet i kjeden, kom tilbake og hold pekeren i ro på det: neste klikk avslutter en tangentbue, og samme bevegelse går tilbake til linjer. Av: å hvile der gjør ingenting.",
"prefs.linked_designs":"Koblede design",
"prefs.live_input":"Direkte inndata",
"prefs.live_preview":"Direkte forhåndsvisning",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Museoppsett",
"prefs.navigation":"Navigasjon",
"prefs.navigation_note":"Hvordan mus, styreflate og 3D-mus beveger visningen.",
"prefs.navigator_fit":"Tilpass modellen etter en visningsendring fra navigatoren",
"prefs.navigator_fit_note":"En flate, et hjørne eller en pil på visningskuben, eller en akse på orienteringsindikatoren, ser også mot midten av modellen fra den ene avstanden som får den til å passe fra alle sider (den omsluttende kulen). Hjem bruker samme zoom og senter mens dette er på, så visninger som velges etterpå bare dreier. Av: visningen dreier på stedet og beholder målpunktet og zoomen sin.",
"prefs.network_host_remove":"Fjern",
"prefs.network_locations":"Tillat nettverksplasseringer i design",
"prefs.network_locations_note":"Av: lenkede filer i et design på en annen datamaskin (\\\\server\\share) åpnes bare fra serverne som er oppført her, eller etter at du har tillatt en når du blir spurt.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Plassering",
"prefs.prefer_free_sketch_points":"Foretrekk flyttbare skissepunkter når punkter overlapper",
"prefs.preview_choices":"Forhåndsvisning av valgene dine",
"prefs.preview_tint_new_faces":"Fargelegg ny overflate i en forhåndsvisning",
"prefs.preview_tint_new_faces_help":"En forhåndsvisning av en funksjon som endrer en kropp, kan tegne overflaten den legger til i forhåndsvisningsfargen. Når dette er av, tegnes kroppen som seg selv.",
"prefs.print_face_highlight":"Utheving av utskriftsflate",
"prefs.print_face_highlight_tip":"Hvor sterkt et legemes utskriftsflate fargelegges og omrisses i visningen. 0 % viser ingen utheving.",
"prefs.profile_active":"Aktiv profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Bruk forrige geometribudsjett for rendringsforhåndsvisning",
"prefs.render_previous_geometry_budget_help":"Gjenopprett den forrige faste geometrigrensen (512 MiB på 64-biters skrivebordsmaskiner, 128 MiB ellers) i stedet for budsjettet som er basert på enheten.",
"prefs.reports_saved":"{n} lagret",
"prefs.ribbon_click_ends_tool":"Å klikke på knappen til verktøyet som kjører, avslutter det",
"prefs.ribbon_click_ends_tool_note":"Et klikk på den lysende båndknappen til skisseverktøyet som er i bruk, avslutter verktøyet, så klikk i visningen velger igjen. Av: klikket starter verktøyet på nytt.",
"prefs.ribbon_reveal":"Vis søkeresultater på båndet",
"prefs.ribbon_reveal_note":"Når pekeren holdes over et resultat i Søk i kommandoer, vises hvor kommandoen ligger på båndet: fanen, knappen eller raden i et panels nedtrekksmeny. En kommando som startes fra søket, blinker der, og en kjørende kommando fra en nedtrekksmeny markerer panelet sitt.",
"prefs.right_click":"Høyreklikk",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Gå tilbake til forrige visning",
"prefs.sketch_exit_view.unless_rotated":"Gå tilbake med mindre visningen er rotert",
"prefs.sketch_exit_view_note":"Hvor visningen går etter Fullfør skisse, Avbryt eller dobbelt Esc.",
"prefs.sketch_face_activates_part":"Skissering på flaten til en del gjør delen aktiv",
"prefs.sketch_face_activates_part_note":"En skisse som startes på en flate av kroppen til en annen komponent, aktiverer først den komponenten, så skissen tilhører den og blir hos den delen i modelltreet. Delen forblir aktiv etterpå. Av: skissen tilhører den aktive komponenten.",
"prefs.sketch_open_look_at":"Orienter mot skissen når den åpnes",
"prefs.sketch_open_look_at_note":"Av: å opprette eller redigere en skisse lar visningen stå som den er. Orienter mot vender visningen mot skissen når du vil.",
"prefs.sketch_recent_snap":"Fang automatisk til nylige sentre og midtpunkter",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Feil",
"prefs.status_selected":"Valgt",
"prefs.status_warning":"Advarsel",
"prefs.structure.appearance":"Utseende",
"prefs.structure.appearance_note":"Farger, tekst og tilgjengelighet.",
"prefs.structure.in_profile":"I profilen",
"prefs.structure.layout":"Oppsett",
"prefs.structure.layout_note":"Hvor delene av vinduet plasseres.",
"prefs.structure.look":"Stil",
"prefs.structure.measure_pointer":"Mål og peker",
"prefs.structure.mouse3d":"3D-mus",
"prefs.structure.mouse3d_note":"SpaceMouse og SpaceNavigator.",
"prefs.structure.navigation_note":"Mus og styreflate. 3D-musen har sin egen side.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Endret siden den ble lagret",
"prefs.structure.profile_hover":"Lagret i innstillingsprofiler",
"prefs.supersampling_brief":"Tegner visningen større og skalerer den ned: svært skarpt, og mer krevende.",
"prefs.tab_accent_note":"Aksentfargen følger den aktive fanen",
"prefs.theme_file":"temafil",
@@ -2501,6 +2600,10 @@
"render.base_color":"Grunnfarge · sRGB",
"render.base_metallic":"Metallfraksjon",
"render.base_opaque_only":"Denne redigeringen bevarer semantikken for ugjennomsiktige kropper. Bruk de eksplisitte glasskontrollene for optisk transmisjon.",
"render.batch_all_shots":"Alle opptak ({count})",
"render.batch_empty":"Lagre et opptak før alle opptak rendres.",
"render.batch_limit":"Å rendre alle opptak er begrenset til 32 opptak.",
"render.bloom_help":"Kreativ glød kun i utdata, fra positive lineære høylys, spredt med tre normaliserte boksfilterpasseringer. Radius er i utdatapiksler. Legges til i lineært visningslys før sRGB; ikke en linse- eller volumeffekt eller en forbedring av konvergens. Rå EXR er uendret.",
"render.bloom_opaque":"Bloom krever ugjennomsiktig utdata. Gjennomsiktig PNG avvises og flates ikke ut i det stille.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Velg en stil i Utseender først",
"ui.agent_chat_models_none":"Endepunktet viser ingen modeller",
"ui.agent_chat_models_not_a_list":"Svaret var ikke en modellliste",
"ui.agent_chat_new":"Ny chat",
"ui.agent_chat_new_confirm":"Starte en ny chat? Den nåværende tømmes.",
"ui.agent_chat_next_picture":"Neste bilde",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Tillatelser",
"ui.ai_preset":"Forhåndsinnstilling",
"ui.ai_protocol":"Protokoll",
"ui.ai_reasoning_effort":"Resonneringsinnsats",
"ui.ai_reasoning_effort_field_hint":"tom = standard fra leverandøren",
"ui.ai_reasoning_effort_hint":"Valgfritt. Sendes til endepunktet som `reasoning_effort`; godkjente verdier varierer fra leverandør til leverandør (for eksempel `low`, `high` eller `max`). En verdi du angir her, blir aldri erstattet av SolidCraft. La feltet stå tomt for å ikke sende noe og beholde leverandørens standard.",
"ui.ai_remove":"Fjern",
"ui.ai_request_timed_out":"Modellen brukte lenger tid enn {seconds} s. Du kan øke tidsavbruddet for forespørsler til dette endepunktet i Innstillinger › Assistent.",
"ui.ai_request_timeout":"Tidsavbrudd for forespørsel",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tangent: velg en sirkel/bue eller åpen spline/kjeglesnittkurve, og deretter berøringspunktet (frie kurver: endepunkter)",
"ui.construction.external_hint":"Tangent: velg en sirkel eller bue, et eksternt punkt, og deretter ønsket løsning",
"ui.construction.free_hint":"Hjelpelinje: klikk på to punkter; høyreklikk for å starte på nytt",
"ui.construction.normal_needs_length":"En uendelig linje er alltid en hjelpelinje: skriv inn en lengde for å tegne en normal linje",
"ui.construction.point_hint":"Hjelpelinje: klikk på punktet linjen skal gå gjennom",
"ui.construction.reference_hint":"Hjelpelinje: velg en rett linje, og deretter et punkt; høyreklikk for å bytte referanse",
"ui.construction.ribbon_label":"Hjelpelinjer",
"ui.construction.side_hint":"Hjelpelinje: klikk på siden linjen går mot; høyreklikk for å starte på nytt",
"ui.edit_sketch_empty":"Ingen skisser å redigere",
"ui.ellipse":"Ellipse",
"ui.emboss_wrap_note":"Ortogonale linjeprofiler som tangerer én støttet sylinder, legges automatisk rundt den. Velg en vegg for å velge et mål.",
"ui.end_radius":"Sluttradius",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Eksplisitt",
"ui.equation_form":"Form",
"ui.equation_note":"Variabelen er et rent tall: sin(t) tolker det i radianer. Et resultat uten enhet er i designets enhet.",
"ui.equation_note_range":"Variabelen er en lengde, slik intervallet er: kombiner den med lengdeparametere, og del den på en lengde for sin(). Et resultat uten enhet er i designets enhet.",
"ui.equation_parametric":"Parametrisk",
"ui.equation_variable_unit":"Variabelen har intervallets enhet",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4612,6 +4749,7 @@
"ui.hideOrigin":"Skjul origo",
"ui.hidePlanes":"Skjul plan",
"ui.hideProfile":"Skjul profil",
"ui.hide_component_history":"Skjul dens tidslinje",
"ui.hide_origin_by_default":"Skjul origo som standard",
"ui.hide_origin_note":"Nye design starter med Origo-mappen skjult. Et design beholder sin egen Origo-innstilling når du har vist eller skjult den.",
"ui.history_sketch_listed_under":"Oppført under {feature}",
"ui.history_title":"Tidslinje",
"ui.history_toggle_names":"Vis eller skjul funksjonsnavn",
"ui.history_waits_for_editor":"Angre, Gjør om og Tidslinje venter til funksjonsredigeringen er åpnet",
"ui.hole":"Hull",
"ui.hole_tap_type":"Type gjenging",
"ui.hole_type":"Hulltype",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} har ulagrede endringer, så den lagrede filen ble satt inn. Lagre den, og bruk deretter Oppdater koblinger for å hente inn endringene.",
"ui.insert_design.unsaved":"Ulagrede endringer",
"ui.inspect":"Inspiser",
"ui.instances":"Forekomster",
"ui.intersect":"Snitt",
"ui.isolate":"Isoler",
"ui.join":"Slå sammen",
@@ -4655,12 +4797,14 @@
"ui.joints":"Ledd",
"ui.keyboard_shortcuts":"Tastatursnarveier",
"ui.language":"Språk",
"ui.lasso_select":"Lasso (dra en frihåndssløyfe: velger alt som ligger helt innenfor)",
"ui.layout_compact":"Kompakt",
"ui.layout_floating":"Flytende",
"ui.length":"Lengde",
"ui.length_decimals":"Lengdedesimaler",
"ui.light":"Lys",
"ui.line":"Linje",
"ui.line_arc_hint":"Tangentbue: klikk på enden av buen. Hvil på det siste punktet igjen for linjer; høyreklikk eller Esc for å avslutte",
"ui.link_copies":"Lenk identiske kopier",
"ui.link_copies_keep":"Behold",
"ui.link_copies_link":"Lenk",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Bygger delen på nytt og erstatter eventuelle funksjoner som er lagt til. Alle forekomster av denne komponenten oppdateres.",
"ui.paste":"Lim inn",
"ui.path":"Bane",
"ui.pattern_object_type_tip":"Kropper: volumformer, valgt i visningen eller modelltreet; hver kopieres hel.\nFunksjoner: trinn i tidslinjen, som en ekstrudering eller et hull, valgt i tidslinjen eller på en flate de har laget; trinnet gjentas.\nEn skisse er ingen av delene: gjenta kurvene med skissens eget Mønster eller Speil, eller ekstruder den først.",
"ui.pattern_on_path":"Mønster på bane",
"ui.perforate_margin_default":"fra diameteren",
"ui.perforate_pitch":"Senteravstand",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Mangekant",
"ui.preferences":"Innstillinger",
"ui.press_a_key":"trykk på en tast…",
"ui.print_face_body_not_sent":"Legemet til den flaten sendes ikke: legg det til i Kropper først",
"ui.view_angles_convention":"Grader om oppaksen. Giring 0° er frontvisningen, 90° venstre, −90° høyre, 180° bak; helning 90° er toppvisningen; positiv rull dreier modellen med klokken.",
"ui.view_angles_help":"Viser visningens helning, giring og rull i grader og projeksjonen under orienteringsindikatoren. Klikk på avlesningen for å skrive inn nøyaktige vinkler.",
"ui.viewport_status_clear_hint":"Slå av {name} · Esc",
@@ -5087,7 +5236,7 @@
"update.check_unavailable":"Søk etter oppdateringer er ikke tilgjengelig for denne installasjonen.",
"update.checking":"Sjekker…",
"update.copy":"Kopier",
"update.dmg_opened":"Diskbildet er åpent og verifisert: dra SolidCraft til Applications, erstatt den gamle kopien, og start deretter SolidCraft på nytt.",
"update.dmg_opened":"Diskbildet er åpent og verifisert: avslutt SolidCraft, dra det nye SolidCraft til Applications, erstatt den gamle kopien, og åpne deretter SolidCraft igjen.",
"update.download":"Last ned",
"update.download_open":"Last ned og åpne",
"update.downloading":"Laster ned og verifiserer… {done} av {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Åpne lenket design?",
"web.open_link_confirm":"Det finnes ulagrede endringer. Åpne det lenkede designet i en ny fane?",
"Sections (one sketch each)":"Doorsneden (één schets per doorsnede)",
"Select Other":"Overige selecteren",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Overige selecteren: houd de linkermuisknop stil op het model (of klik met rechts › Overige selecteren…) om alles onder de cursor weer te geven; klik opnieuw op dezelfde plek om het volgende item daar te selecteren. Dubbelklik met de middelste knop om naar Home te gaan (Voorkeuren › Navigatie).",
"config.rule_parameter_columns":"Alleen parameters met een kolom in de tabel worden weergegeven. Voeg een kolom toe met Kolom toevoegen (+) om de parameter hier te gebruiken.",
"config.rule_suppression_columns":"Alleen kenmerken met een kolom Onderdrukken in de tabel worden weergegeven. Voeg een kolom toe met Kolom toevoegen (+) om de onderdrukking hier aan te sturen.",
"contact.components_count":"{count} componenten",
"contact.enabled_label":"ingeschakeld",
"coupling.gear_1":"Tandwiel 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Maat: {name}",
"dialog.edit_title":"{title} BEWERKEN",
"dialog.no_shown_body":"Geen zichtbaar lichaam om te wijzigen: toon er een of kies Nieuw lichaam",
"dialog.pattern_sketch_not_object":"Kies lichamen of kenmerken: een schets is geen van beide. Herhaal de curven ervan met het eigen Patroon of Spiegelen van de schets, of extrudeer de schets eerst.",
"dialog.selection_guidance":"Selecteer een invoer om deze te wijzigen. Klik op geselecteerde objecten om ze te verwijderen; Ctrl/Cmd-klik schakelt ze ook om. Controleer het voorbeeld en druk daarna op OK.",
"dialog.selection_step":"{step} van {total}: {input} selecteren",
"dialog.step":"Stap",
"document.changed_on_disk":"{name} is op schijf gewijzigd",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Maakt een constructieas door twee punten, hoekpunten of schetspunten. Gebruik dit voor een as die tussen twee bekende posities loopt.",
"help.construct.plane.along_path":"Maakt een constructievlak loodrecht op een rand of curve, op een positie erlangs. Gebruik dit om een profiel voor een sweep of een doorsnede van een pad te schetsen.",
"help.construct.plane.at_angle":"Maakt een constructievlak dat onder een hoek is gedraaid ten opzichte van een vlak, om een as of rand. Gebruik dit voor schuine schetsen, zoals een hoekbeugel.",
"help.construct.plane.axis_point":"Maakt een constructievlak dat een as en een punt buiten die as bevat. Kies een as van de oorsprong of een constructieas, een rechte rand of schetslijn, en daarna een hoekpunt, schetspunt of constructiepunt. Een punt op de as kan geen eenduidig vlak bepalen.",
"help.construct.plane.midplane":"Maakt een constructievlak halverwege twee vlakken, of dat de hoek tussen twee vlakken halveert waar ze onder een hoek samenkomen. Gebruik dit als symmetrievlak om te spiegelen.",
"help.construct.plane.offset":"Maakt een constructievlak evenwijdig aan een vlak, op een afstand of door een punt. Gebruik dit om op een vaste hoogte boven een vlak te schetsen.",
"help.construct.plane.perpendicular":"Maakt een constructievlak dat een lijn of rand bevat en loodrecht op een vlak staat. Gebruik dit om rechtop op een model te schetsen, langs een rand.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Controleer het verbindingstype (zoals Star), het vastzetten, de verbindingslimieten en door parameters aangestuurde waarden.",
"joint_move.blocked_title":"Dit onderdeel kan niet worden verplaatst",
"joint_move.coarse":"Rotatiestap dicht bij de as (°)",
"joint_move.conflict":"Een verbinding van dit onderdeel conflicteert met de andere: {joint}.",
"joint_move.conflict_hint":"Bewerk, onderdruk of verwijder de conflicterende verbinding zodat de andere verbindingen het onderdeel kunnen plaatsen.",
"joint_move.distance":"Afstand vanaf het begin",
"joint_move.done":"Gereed",
"joint_move.fine":"Rotatiestap ver van de as (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Spoor {number}",
"nav.alias.help":"Shift+Alt+linkerknop slepen draait, Shift+Alt+middenknop slepen pant, Shift+Alt+rechterknop slepen zoomt; middenknop slepen pant ook en rechterknop slepen draait",
"nav.blender.help":"Middenknop slepen draait, Shift+middenknop pant, Ctrl+middenknop zoomt; rechterknop slepen heeft geen invloed op de camera",
"nav.creo.help":"Middenknop slepen draait, Shift+middenknop pant, Ctrl+middenknop verticaal slepen zoomt (omlaag om in te zoomen); scrollen met het wiel zoomt",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Muis en 3D-muis draaien door beide polen heen en behouden de rolhoek. Het snappen op assen met Shift is uitgeschakeld.",
"nav.free_orbit.label":"Vrij draaien",
"nav.free_orbit.snap_help":"Muis en 3D-muis draaien door beide polen heen en behouden de rolhoek. Houd Shift ingedrukt tijdens het slepen om de kijkrichting en de rolhoek te snappen.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+linkerknop slepen pant, Shift+Alt+linkerknop zoomt, Ctrl+linkerknop slepen op lege ruimte draait",
"nav.nx.help":"Middenknop slepen draait, Shift+middenknop pant (middelste + rechterknop in NX), Ctrl+middenknop zoomt (middelste + linkerknop in NX); rechterknop slepen heeft geen invloed op de camera",
"nav.openscad.help":"Linkerknop slepen op lege ruimte draait, Shift+linkerknop slepen selecteert met een kader, schetsgeometrie slepen bewerkt die; rechter- of middenknop slepen pant, Shift+rechter- of Shift+middenknop slepen zoomt",
"nav.perspective.sketch":"Schetsbewerking gebruikt een orthografische weergave. Rond de schets af om naar perspectief te schakelen.",
"nav.right_drag_orbits.help":"Uit: rechts slepen laat de camera met rust en de rechtermuisknop opent alleen het contextmenu. Het kiezen van de SolidWorks-muistoewijzing schakelt dit uit.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Bolkopschroef met inbus",
"prefs.cut_preview_tint_help":"Een voorbeeld vult het materiaal dat een kenmerk verwijdert, en de vorm die het vervangt, met een rood doorschijnend spookbeeld. Als dit uit staat, zijn die vullingen volledig transparant en worden alleen hun contouren getekend.",
"prefs.dark_parts_shading":"Vorm van donkere onderdelen behouden",
"prefs.dark_parts_shading_help":"Schaduw de weergave in lineair licht met een zachte hemelvulling, zodat donkere vlakken een verloop houden in plaats van zwart te worden",
"prefs.dead_zone_note":"De gearceerde band is de dode zone: beweging daarbinnen wordt genegeerd.",
"prefs.default":"standaard",
"prefs.design":"Standaardwaarden voor ontwerpen",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Randen en schaduwing",
"prefs.extend":"Verlengen",
"prefs.extra_navigation":"Ctrl+linkerknop slepen op lege ruimte roteert; houd Space ingedrukt om te pannen.",
"prefs.extrude_view_return":"Terug naar de eerdere weergave wanneer Extruderen sluit",
"prefs.follows_os":"Volgt het besturingssysteem",
"prefs.font":"Lettertype",
"prefs.font_fallback":"Tekens die het gekozen lettertype mist, vallen terug op het ingebouwde lettertype, zodat geen enkel label een leeg vakje toont.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatisch",
"prefs.graphics_card_missing":"De opgeslagen grafische kaart is niet beschikbaar; Automatisch wordt gebruikt.",
"prefs.graphics_card_restart":"Wordt van kracht na het opnieuw starten van SolidCraft. WGPU_ADAPTER_NAME heeft voorrang op deze keuze.",
"prefs.graphics_card_unused":"De opgeslagen grafische kaart is niet gebruikt voor dit venster; de kaart die wel in gebruik is, staat in Help › Over SolidCraft en in de statusbalk. Probeer Automatisch, of stel WGPU_ADAPTER_NAME in op een uniek deel van de kaartnaam.",
"prefs.graphics_note":"Wissel snelheid in voor een gladder beeld. Elke keuze toont het effect op een voorbeeld.",
"prefs.graphics_presets_note":"Voorinstellingen stellen de onderstaande keuzes samen in.",
"prefs.hide_constraint_glyphs_zoomed_out":"Beperkingssymbolen verbergen bij uitzoomen",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Als Schetsen op Onder hun kenmerk staat, toont de geschiedenis links elke schets een niveau ingesprongen, onder het eerste kenmerk dat erop is gebouwd, zodra die breed genoeg is voor namen. De tijdlijn onderaan houdt altijd de aanmaakvolgorde aan.",
"prefs.history_sketches_under_feature":"Onder hun kenmerk",
"prefs.hold_stop_snapping":"Ingedrukt houden om snappen te stoppen",
"prefs.home_fit_size":"Grootte bij Beginweergave en Passend",
"prefs.home_fit_size_note":"Hoeveel van de weergave het model vult wanneer Beginweergave, Passend, een geopend ontwerp of een wijziging van de navigatorweergave het model in beeld brengt, ongeacht of de instelling hieronder aan staat. 100 %: vult de weergave tussen de panelen, het kompas en de navigatiebalk.",
"prefs.icons_only":"Alleen pictogrammen",
"prefs.imported_file":"Geïmporteerd bestand",
"prefs.in_browser":"In de browser",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Interfacetaal",
"prefs.interface_note":"Hoe SolidCraft eruitziet en waar de onderdelen staan.",
"prefs.invert_curved_roll_arrows_note":"De twee gebogen pijlen op de hoek van de kubus laten de weergave in het schermvlak rollen. Aan: de pijl met de klok mee rolt tegen de klok in en de pijl tegen de klok in rolt met de klok mee. Uit: elke pijl rolt de weergave in de richting waarin hij krult.",
"prefs.invert_navigator_arrows":"De rotatiepijlen van de weergavekubus omkeren",
"prefs.invert_navigator_arrows_note":"De pijlen rond de kubus laten de camera roteren in de richting waarin ze wijzen, zoals in Fusion en Inventor: de pijl links wijst naar rechts en zwaait de camera naar rechts. Uit: een pijl draait de kubus naar de kant waar hij staat, dus de linkerpijl zwaait de camera naar links. De gebogen rolpijlen worden hierdoor niet beïnvloed.",
"prefs.keep_work_on_tab_switch":"Dialoogvensters en gereedschappen open houden bij het wisselen van ontwerp",
"prefs.keep_work_on_tab_switch_note":"Elk ontwerptabblad behoudt zijn geopende dialoogvenster of gereedschap, met wat je erin hebt gekozen en getypt, en zijn lint-tabblad. Ze zijn er weer als je terugkeert naar het ontwerp. Uit: wisselen van ontwerp breekt ze af en toont het tabblad Model.",
"prefs.labels":"Labels",
"prefs.language_system":"Systeem",
"prefs.layout":"Indeling",
"prefs.layout_note":"Compact plaatst panelen vast aan de vensterranden. Doorschijnendheid van de browser is beschikbaar in Zwevend. Wijzig de kant van de Assistent op de pagina Assistent.",
"prefs.left":"Links",
"prefs.left_click":"Linksklik",
"prefs.line_drag_draws_one":"Indrukken en slepen tekent één lijn",
"prefs.line_drag_draws_one_note":"In het lijngereedschap tekent indrukken, slepen en loslaten één lijn van het indrukpunt tot het loslaatpunt, en daar eindigt de lijn. Klikken tekent nog steeds een keten. Uit: slepen zet, net als een klik, een punt waar losgelaten wordt.",
"prefs.line_hover_tangent_arc":"Op het laatste punt van een lijn stilstaan om naar een tangentiële boog te wisselen",
"prefs.line_hover_tangent_arc_note":"Als je in het lijngereedschap een segment hebt getekend, beweeg je weg van het laatste punt van de keten, kom je terug en houd je de aanwijzer er stil: de volgende klik beëindigt een tangentiële boog, en hetzelfde gebaar schakelt terug naar lijnen. Uit: daar stilstaan doet niets.",
"prefs.linked_designs":"Gekoppelde ontwerpen",
"prefs.live_input":"Live invoer",
"prefs.live_preview":"Live voorbeeld",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Muistoewijzing",
"prefs.navigation":"Navigatie",
"prefs.navigation_note":"Hoe de muis, het trackpad en de 3D-muis de weergave verplaatsen.",
"prefs.navigator_fit":"Het model passend in beeld brengen na een wijziging van de navigatorweergave",
"prefs.navigator_fit_note":"Een vlak, hoek of pijl van de weergavekubus, of een as van de gizmo, kijkt ook naar het midden van het model, vanaf de ene afstand waarop het van alle kanten in beeld past (de omsluitende bol). Beginweergave gebruikt dezelfde zoom en hetzelfde middelpunt zolang dit aan staat, zodat weergaven die je daarna kiest alleen draaien. Uit: de weergave draait ter plaatse en behoudt het richtpunt en de zoom.",
"prefs.network_host_remove":"Verwijderen",
"prefs.network_locations":"Netwerklocaties in ontwerpen toestaan",
"prefs.network_locations_note":"Uit: gekoppelde bestanden van een ontwerp op een andere computer (\\\\server\\share) worden alleen geopend vanaf de servers in deze lijst, of nadat je er een toestaat wanneer erom wordt gevraagd.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Plaatsing",
"prefs.prefer_free_sketch_points":"Verplaatsbare schetspunten voorrang geven als punten overlappen",
"prefs.preview_choices":"Voorbeeld van je keuzes",
"prefs.preview_tint_new_faces":"Nieuw oppervlak in een voorbeeld inkleuren",
"prefs.preview_tint_new_faces_help":"Een voorbeeld van een kenmerk dat een lichaam wijzigt, kan het oppervlak dat het toevoegt in de voorbeeldkleur tekenen. Als dit uit staat, wordt het lichaam als zichzelf getekend.",
"prefs.print_face_highlight":"Markering van het printvlak",
"prefs.print_face_highlight_tip":"Hoe sterk het printvlak van een lichaam in de weergave wordt gekleurd en omlijnd. 0 % toont geen markering.",
"prefs.profile_active":"Actief profiel",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Vorig geometriebudget voor het rendervoorbeeld gebruiken",
"prefs.render_previous_geometry_budget_help":"De vorige vaste geometrielimiet herstellen (512 MiB op 64-bits desktops, elders 128 MiB) in plaats van het budget op basis van het apparaat.",
"prefs.reports_saved":"{n} opgeslagen",
"prefs.ribbon_click_ends_tool":"Klikken op de knop van het actieve gereedschap beëindigt het",
"prefs.ribbon_click_ends_tool_note":"Een klik op de verlichte lintknop van het schetsgereedschap dat in gebruik is, beëindigt het gereedschap, zodat klikken in de weergave weer selecteert. Uit: de klik start het gereedschap opnieuw.",
"prefs.ribbon_reveal":"Zoekresultaten in het lint tonen",
"prefs.ribbon_reveal_note":"Als je de aanwijzer op een resultaat in Opdrachten zoeken houdt, zie je waar de opdracht in het lint staat: het tabblad, de knop of de rij in de vervolgkeuzelijst van een paneel. Een opdracht die vanuit de zoekfunctie is gestart, knippert daar, en een actieve opdracht uit een vervolgkeuzelijst markeert het paneel.",
"prefs.right_click":"Rechtsklik",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Terug naar de vorige weergave",
"prefs.sketch_exit_view_note":"Waar de weergave naartoe gaat na Schets afronden, Annuleren of een dubbele Esc.",
"prefs.sketch_face_activates_part":"Schetsen op het vlak van een onderdeel maakt dat onderdeel actief",
"prefs.sketch_face_activates_part_note":"Een schets die op een vlak van het lichaam van een andere component wordt gestart, activeert eerst die component, zodat de schets erbij hoort en in de browser bij dat onderdeel blijft. Het onderdeel blijft daarna actief. Uit: de schets hoort bij de actieve component.",
"prefs.sketch_open_look_at":"Naar een schets toe draaien wanneer die wordt geopend",
"prefs.sketch_open_look_at_note":"Uit: een schets maken of bewerken laat de weergave zoals die is. Kijken naar richt de weergave op de schets wanneer je dat wilt.",
"prefs.sketch_recent_snap":"Automatisch snappen op recente cirkelmiddens en middelpunten",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Fout",
"prefs.status_selected":"Geselecteerd",
"prefs.status_warning":"Waarschuwing",
"prefs.structure.appearance":"Uiterlijk",
"prefs.structure.appearance_note":"Kleuren, tekst en toegankelijkheid.",
"prefs.structure.in_profile":"In profiel",
"prefs.structure.layout":"Indeling",
"prefs.structure.layout_note":"Waar de onderdelen van het venster staan.",
"prefs.structure.look":"Vormgeving",
"prefs.structure.measure_pointer":"Meten en aanwijzer",
"prefs.structure.mouse3d":"3D-muis",
"prefs.structure.mouse3d_note":"SpaceMouse en SpaceNavigator.",
"prefs.structure.navigation_note":"Muis en trackpad. De 3D-muis heeft een eigen pagina.",
"prefs.structure.profile":"Profiel",
"prefs.structure.profile_edited":"Gewijzigd sinds opslaan",
"prefs.structure.profile_hover":"Opgeslagen in instellingenprofielen",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Schets",
"prefs.structure.tools":"Gereedschappen",
"prefs.structure.tools_note":"Hoe modelleergereedschappen zich gedragen.",
"prefs.structure.work":"Werk",
"prefs.supersampling_brief":"Tekent de weergave groter en filtert die omlaag: zeer scherp, maar zwaarder.",
"prefs.tab_accent_note":"De accentkleur volgt het actieve tabblad",
"prefs.theme_file":"themabestand",
@@ -2501,6 +2600,10 @@
"render.base_color":"Basiskleur · sRGB",
"render.base_metallic":"Metaalfractie",
"render.base_opaque_only":"Deze editor behoudt de semantiek van ondoorzichtige lichamen. Gebruik de expliciete glasbesturing voor optische transmissie.",
"render.bloom_help":"Creatieve gloed, alleen in de uitvoer, afkomstig van positieve lineaire highlights en verspreid met drie genormaliseerde boxpassen. De straal is in uitvoerpixels. Toegevoegd in lineair weergavelicht vóór sRGB; geen lens- of volumetrisch effect en geen verbetering van de convergentie. De ruwe EXR blijft ongewijzigd.",
"render.bloom_opaque":"Bloom vereist ondoorzichtige uitvoer. Transparante PNG wordt geweigerd, niet stilzwijgend afgevlakt.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Kies eerst een uiterlijk in Uiterlijken",
"sketch_text.no_bold":"Het ingebouwde lettertype heeft geen vette variant: kies een geïnstalleerd lettertype",
"sketch_text.on_path":"De tekst volgt zijn pad: de curve plaatst hem",
"sketch_text.path_clear":"De tekst van zijn curve halen",
"sketch_text.path_hint":"Een curve van de schets die de tekst volgt: klik hier en daarna op de curve",
@@ -3842,10 +3957,7 @@
"the two origins are on the same component":"de twee oorsprongen liggen op hetzelfde component",
"thread.automatic_size":"Automatische grootte",
"thread.designation":"Aanduiding",
"thread.direction":"Richting van schroefdraad",
"thread.iso_metric":"ISO metrisch",
"thread.left_hand":"Linksdraaiend",
"thread.right_hand":"Rechtsdraaiend",
"thread.select_size":"Grootte selecteren",
"timeline.delete_after_marker_one":"1 kenmerk na geschiedenismarkering verwijderen",
"timeline.delete_after_marker_other":"{count} kenmerken na geschiedenismarkering verwijderen",
@@ -4019,6 +4131,7 @@
"ui.agent_chat_auth_terminal":"Voer dit uit in een terminal en druk daarna opnieuw op Verbinden:",
"ui.agent_chat_auth_title":"Aanmelden bij de agent",
"ui.agent_chat_cancel":"Annuleren",
"ui.agent_chat_cancel_timeout":"De agent reageerde niet op Stoppen en is losgekoppeld. Verbind opnieuw om door te gaan.",
"ui.agent_chat_cannot_start":"Geïnstalleerd, maar start niet: {error}",
"ui.agent_chat_changes":"Wijzigingen: {n}, één stap ongedaan maken",
"ui.agent_chat_changes_n":"{n} wijzigingen",
@@ -4028,11 +4141,13 @@
"ui.agent_chat_command":"Agentopdracht",
"ui.agent_chat_connect":"Verbinden",
"ui.agent_chat_copy":"Kopiëren",
"ui.agent_chat_copy_message":"Bericht kopiëren",
"ui.agent_chat_ctx_bodies":"Lichamen",
"ui.agent_chat_ctx_elements":"Elementen",
"ui.agent_chat_ctx_features":"Kenmerken",
"ui.agent_chat_ctx_more":"+{n} meer",
"ui.agent_chat_ctx_other":"Overig",
"ui.agent_chat_custom_heading":"Eigen model",
"ui.agent_chat_custom_hint":"Elk programma dat het Agent Client Protocol spreekt via stdin en stdout. Er wordt geen shell gebruikt.",
"ui.agent_chat_denied":"Geweigerd",
"ui.agent_chat_deny":"Weigeren",
@@ -4076,8 +4191,16 @@
"ui.agent_chat_mode_all":"Alles",
"ui.agent_chat_mode_ask":"Vragen",
"ui.agent_chat_mode_edits":"Bewerken",
"ui.agent_chat_model_custom":"Eigen model gebruiken: {model}",
"ui.agent_chat_model_no_tools":"{model} kan de gereedschappen van SolidCraft niet gebruiken en kan dus alleen chatten. Kies een model met ondersteuning voor gereedschappen.",
"ui.ai_reasoning_effort_field_hint":"leeg = standaard van de provider",
"ui.ai_reasoning_effort_hint":"Optioneel. Wordt als `reasoning_effort` naar het eindpunt gestuurd; toegestane waarden verschillen per provider (bijvoorbeeld `low`, `high` of `max`). Een waarde die je hier instelt, wordt nooit door SolidCraft vervangen. Laat het veld leeg om niets te sturen en de standaard van de provider te behouden.",
"ui.ai_remove":"Verwijderen",
"ui.ai_request_timed_out":"Het model deed er langer dan {seconds} s over. Je kunt de time-out voor aanvragen van dit eindpunt verhogen in Voorkeuren › Assistent.",
"ui.ai_request_timeout":"Time-out voor aanvragen",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Raaklijn: kies een cirkel/boog of open spline/kegelsnede en dan het raakpunt (vrije krommen: eindpunten)",
"ui.construction.external_hint":"Raaklijn: kies een cirkel of boog, een extern punt en dan de gewenste oplossing",
"ui.construction.free_hint":"Constructielijn: klik op twee punten; klik met rechts om opnieuw te beginnen",
"ui.construction.normal_needs_length":"Een oneindige lijn is altijd een constructielijn: typ een lengte om een normale lijn te tekenen",
"ui.construction.point_hint":"Constructielijn: klik op het punt waar de lijn doorheen moet",
"ui.construction.reference_hint":"Constructielijn: kies een rechte lijn en dan een punt; klik met rechts om de referentie te wijzigen",
"ui.construction.ribbon_label":"Hulplijnen",
"ui.construction.side_hint":"Constructielijn: klik op de zijde waarheen de lijn loopt; klik met rechts om opnieuw te beginnen",
"ui.edit_sketch_empty":"Geen schetsen om te bewerken",
"ui.ellipse":"Ellips",
"ui.emboss_wrap_note":"Orthogonale lijnprofielen die raken aan één ondersteunde cilinder worden automatisch omwikkeld. Kies een wand om een doel te kiezen.",
"ui.end_radius":"Eindstraal",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Expliciet",
"ui.equation_form":"Vorm",
"ui.equation_note":"De variabele is een gewoon getal: sin(t) neemt het in radialen. Een resultaat zonder eenheid is in de eenheid van het ontwerp.",
"ui.equation_note_range":"De variabele is een lengte, net als haar bereik: combineer haar met lengteparameters en deel haar voor sin() door een lengte. Een resultaat zonder eenheid is in de eenheid van het ontwerp.",
"ui.equation_parametric":"Parametrisch",
"ui.equation_variable_unit":"Variabele heeft de eenheid van het bereik",
"ui.hide_origin_note":"Nieuwe ontwerpen beginnen met de map Oorsprong verborgen. Een ontwerp behoudt zijn eigen instelling voor Oorsprong zodra je die toont of verbergt.",
"ui.history_sketch_listed_under":"Vermeld onder {feature}",
"ui.history_title":"Geschiedenis",
"ui.history_toggle_names":"Kenmerknamen tonen of verbergen",
"ui.history_waits_for_editor":"Ongedaan maken, Opnieuw en Geschiedenis wachten tot de kenmerkeditor is geopend",
"ui.hole":"Gat",
"ui.hole_tap_type":"Type tapgat",
"ui.hole_type":"Gattype",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} heeft niet-opgeslagen wijzigingen, dus is het opgeslagen bestand ingevoegd. Sla het op en gebruik daarna Koppelingen bijwerken om de wijzigingen over te nemen.",
"ui.lasso_select":"Lasso (sleep een lus uit de vrije hand: neemt alles wat er helemaal binnen valt)",
"ui.layout_compact":"Compact",
"ui.layout_floating":"Zwevend",
"ui.length":"Lengte",
"ui.length_decimals":"Lengtedecimalen",
"ui.light":"Licht",
"ui.line":"Lijn",
"ui.line_arc_hint":"Tangentiële boog: klik op het eindpunt van de boog. Blijf opnieuw stilstaan op het laatste punt voor lijnen; klik met rechts of druk op Esc om te voltooien",
"ui.link_copies":"Identieke kopieën koppelen",
"ui.link_copies_keep":"Behouden",
"ui.link_copies_link":"Koppelen",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Bouwt het onderdeel opnieuw op en vervangt alle toegevoegde kenmerken. Alle voorkomens van dit component worden bijgewerkt.",
"ui.paste":"Plakken",
"ui.path":"Pad",
"ui.pattern_object_type_tip":"Lichamen: massieve vormen, gekozen in de weergave of de Browser; elk wordt in zijn geheel gekopieerd.\nKenmerken: stappen van de Geschiedenis, zoals een extrusie of een gat, gekozen in de Geschiedenis of op een vlak dat ze hebben gemaakt; de stap wordt herhaald.\nEen schets is geen van beide: herhaal de curven ervan met het eigen Patroon of Spiegelen van de schets, of extrudeer de schets eerst.",
"ui.pattern_on_path":"Patroon op pad",
"ui.perforate_margin_default":"vanaf de diameter",
"ui.perforate_pitch":"Steek",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Veelhoek",
"ui.preferences":"Voorkeuren",
"ui.press_a_key":"druk op een toets…",
"ui.print_face_body_not_sent":"Het lichaam van dat vlak wordt niet verstuurd: voeg het eerst toe aan Lichamen",
"ui.view_angles_convention":"Graden rond de verticale as. Gieren 0° is het vooraanzicht, 90° het linkeraanzicht, −90° het rechteraanzicht, 180° het achteraanzicht; kanteling 90° is het bovenaanzicht; een positieve rol draait het model met de klok mee.",
"ui.view_angles_help":"Toont de stamp-, gier- en rolhoek van de weergave in graden en de projectie ervan onder de oriëntatiegizmo. Klik op de uitlezing om exacte hoeken in te typen.",
"update.check_unavailable":"Controleren op updates is niet beschikbaar voor deze installatie.",
"update.checking":"Controleren…",
"update.copy":"Kopiëren",
"update.dmg_opened":"Het schijfkopie is geopend en geverifieerd: sleep SolidCraft naar Programma's, vervang de oude kopie en start SolidCraft daarna opnieuw.",
"update.dmg_opened":"Het schijfkopie is geopend en geverifieerd: stop SolidCraft, sleep de nieuwe SolidCraft naar Programma's, vervang de oude kopie en open SolidCraft daarna opnieuw.",
"update.download":"Downloaden",
"update.download_open":"Downloaden en openen",
"update.downloading":"Downloaden en verifiëren… {done} van {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Gekoppeld ontwerp openen?",
"web.open_link_confirm":"Er zijn niet-opgeslagen wijzigingen. Het gekoppelde ontwerp in een nieuw tabblad openen?",
"ui.insert_design.saved_file":"{name} ma niezapisane zmiany, więc wstawiono jego zapisany plik. Zapisz go, a potem użyj Aktualizuj łącza, aby wprowadzić zmiany.",
"ui.insert_design.unsaved":"Niezapisane zmiany",
"ui.inspect":"Sprawdź",
"ui.instances":"Wystąpienia",
"ui.intersect":"Przytnij",
"ui.isolate":"Izoluj",
"ui.join":"Połącz",
@@ -3140,9 +3144,9 @@
"ui.polygon":"Wielokąt",
"ui.preferences":"Preferencje",
"ui.press_a_key":"naciśnij klawisz…",
"ui.print_face_body_not_sent":"Bryła tej powierzchni nie jest wysyłana: najpierw dodaj ją do Bryły",
"ui.print_face_cleared":"{body}: usunięto powierzchnię druku",
"ui.print_face_input":"Powierzchnia druku",
"ui.print_face_one_body":"Powierzchnia druku należy do jednej bryły: wyślij tę bryłę osobno, aby ją zmienić",
"ui.print_face_pick":"Wybierz płaską powierzchnię bryły, aby ustawić ją jako powierzchnię druku",
"ui.print_face_set":"{body}: ustawiono powierzchnię druku; Wyślij do slicera kładzie bryłę na niej",
"ui.profile":"Profil",
@@ -3416,7 +3420,7 @@
"update.check_unavailable":"Sprawdzanie aktualizacji nie jest dostępne dla tej instalacji.",
"update.checking":"Sprawdzanie…",
"update.copy":"Kopiuj",
"update.dmg_opened":"Obraz dysku jest otwarty i zweryfikowany: przeciągnij SolidCraft do folderu Aplikacje, zastępując starą kopię, a następnie uruchom SolidCraft ponownie.",
"update.dmg_opened":"Obraz dysku jest otwarty i zweryfikowany: zakończ SolidCraft, przeciągnij nowy SolidCraft do folderu Aplikacje, zastępując starą kopię, a następnie ponownie otwórz SolidCraft.",
"update.download":"Pobierz",
"update.download_open":"Pobierz i otwórz",
"update.downloading":"Pobieranie i weryfikacja… {done} z {total} MB",
"prefs.browser_components_open_note":"Cada componente no navegador começa aberto, como antes, em vez de fechado até que você o abra.",
"prefs.built_in":"Integrado",
"prefs.button_left":"Arrastar com o esquerdo",
"prefs.button_middle":"Arrastar com o meio",
@@ -1883,10 +1885,15 @@
"ui.construction":"Construção",
"ui.construction.ribbon_label":"Linhas aux.",
"ui.context_menu":"Menu de contexto",
"ui.continuity_crease":"Vinco",
"ui.continuity_curvature":"Curvatura",
"ui.continuity_curvature_change":"Variação de curvatura",
"ui.continuity_g0":"G0 vinco",
"ui.continuity_g1":"G1 tangente",
"ui.continuity_g2":"G2 curvatura",
"ui.continuity_gap":"Folga",
"ui.continuity_position":"Posição",
"ui.continuity_tangent":"Tangente",
"ui.copy":"Copiar",
"ui.corner":"Canto",
"ui.corners":"Cantos",
@@ -2092,6 +2099,7 @@
"ui.infinite":"Infinita",
"ui.insert":"Inserir",
"ui.inspect":"Inspecionar",
"ui.instances":"Instâncias",
"ui.intersect":"Interseção",
"ui.isolate":"Isolar",
"ui.join":"Unir",
@@ -2205,9 +2213,9 @@
"ui.polygon":"Polígono",
"ui.preferences":"Preferências",
"ui.press_a_key":"pressione uma tecla…",
"ui.print_face_body_not_sent":"O corpo dessa face não está sendo enviado: adicione-o primeiro a Corpos",
"ui.print_face_cleared":"{body}: face de impressão removida",
"ui.print_face_input":"Face de impressão",
"ui.print_face_one_body":"Uma face de impressão pertence a um único corpo: envie esse corpo sozinho para alterá-la",
"ui.print_face_pick":"Selecione uma face plana de um corpo sólido para torná-la a face de impressão",
"ui.print_face_set":"{body}: face de impressão definida; Enviar ao fatiador apoia o corpo sobre ela",
"ui.profile":"Perfil",
@@ -2405,7 +2413,7 @@
"update.check_unavailable":"A verificação de atualizações não está disponível para esta instalação.",
"update.checking":"Verificando…",
"update.copy":"Copiar",
"update.dmg_opened":"A imagem de disco está aberta e verificada: arraste o SolidCraft para Aplicativos, substituindo a cópia antiga, e reinicie o SolidCraft.",
"update.dmg_opened":"A imagem de disco está aberta e verificada: encerre o SolidCraft, arraste o novo SolidCraft para Aplicativos, substituindo a cópia antiga, e abra o SolidCraft novamente.",
"update.download":"Baixar",
"update.download_open":"Baixar e abrir",
"update.downloading":"Baixando e verificando… {done} de {total} MB",
"Sections (one sketch each)":"Secțiuni (câte o schiță)",
"Select Other":"Selectează altul",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Selectează altul: țineți apăsat butonul stâng nemișcat pe model (sau clic dreapta › Selectează altul…) pentru a lista tot ce se află sub cursor; faceți clic din nou în același loc pentru a selecta următorul element. Dublu clic pe butonul din mijloc pentru a merge Acasă (Preferințe › Navigare).",
"config.rule_parameter_columns":"Sunt listați doar parametrii care au o coloană în tabel. Adăugați una cu Adaugă coloană (+) ca să o folosiți aici.",
"config.rule_suppression_columns":"Sunt listate doar operațiile care au o coloană Suprimă în tabel. Adăugați una cu Adaugă coloană (+) ca să le controlați de aici.",
"contact.components_count":"{count} componente",
"contact.enabled_label":"activat",
"coupling.gear_1":"Roată dințată 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Cotă: {name}",
"dialog.edit_title":"EDITARE {title}",
"dialog.no_shown_body":"Niciun corp afișat de modificat: afișați unul sau alegeți Corp nou",
"dialog.pattern_sketch_not_object":"Alegeți corpuri sau operații: o schiță nu este niciuna dintre ele. Repetați curbele ei cu Matrice sau Oglindire din schiță, ori extrudați-o mai întâi.",
"dialog.selection_guidance":"Selectați o intrare pentru a o modifica. Faceți clic pe obiectele selectate pentru a le elimina; Ctrl/Cmd-clic le comută de asemenea. Verificați previzualizarea, apoi apăsați OK.",
"dialog.selection_midpoint":"Punct de mijloc · {id}",
"dialog.selection_step":"{step} din {total}: Selectați {input}",
"dialog.step":"Pas",
"document.changed_on_disk":"{name} a fost modificat pe disc",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Creează o axă de construcție prin două puncte, vârfuri sau puncte de schiță. Folosiți-o pentru o axă care trece între două poziții cunoscute.",
"help.construct.plane.along_path":"Creează un plan de construcție perpendicular pe o muchie sau o curbă, într-o poziție de-a lungul ei. Folosiți-l pentru a schița un profil de baleiere sau o secțiune prin traseu.",
"help.construct.plane.at_angle":"Creează un plan de construcție rotit cu un unghi față de un plan sau o față, în jurul unei axe sau muchii. Folosiți-l pentru schițe înclinate, de exemplu un suport în unghi.",
"help.construct.plane.axis_point":"Creează un plan de construcție care conține o axă și un punct din afara axei. Alegeți o origine sau o axă de construcție, o muchie dreaptă sau o linie de schiță, apoi un vârf, un punct de schiță sau un punct de construcție. Un punct situat pe axă nu poate defini un plan unic.",
"help.construct.plane.midplane":"Creează un plan de construcție la jumătatea distanței dintre două plane sau fețe plane ori care le bisectează acolo unde se întâlnesc sub un unghi. Folosiți-l ca plan de simetrie pentru oglindire.",
"help.construct.plane.offset":"Creează un plan de construcție paralel cu un plan sau o față plană, la o distanță sau printr-un punct. Folosiți-l pentru a schița la o înălțime stabilită deasupra unei fețe.",
"help.construct.plane.perpendicular":"Creează un plan de construcție care conține o linie sau o muchie și este perpendicular pe un plan sau o față. Folosiți-l pentru a schița vertical pe un model, de-a lungul unei muchii.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Verificați tipul îmbinării (de exemplu Rigidă), fixarea, limitele îmbinării și valorile conduse de parametri.",
"joint_move.blocked_title":"Această piesă nu poate fi mutată",
"joint_move.coarse":"Pas de rotire lângă axă (°)",
"joint_move.conflict":"O îmbinare a acestei piese este în conflict cu celelalte: {joint}.",
"joint_move.conflict_hint":"Editați, suprimați sau ștergeți îmbinarea în conflict, ca celelalte îmbinări să poată poziționa piesa.",
"joint_move.distance":"Distanță față de start",
"joint_move.done":"Gata",
"joint_move.fine":"Pas de rotire departe de axă (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Pista {number}",
"nav.alias.help":"Shift+Alt+tragere cu stânga orbitează, Shift+Alt+tragere cu mijlocul panoramează, Shift+Alt+tragere cu dreapta face zoom; tragerea cu mijlocul panoramează și ea, iar tragerea cu dreapta orbitează",
"nav.blender.help":"Tragerea cu mijlocul orbitează, Shift+mijloc panoramează, Ctrl+mijloc face zoom; tragerea cu dreapta nu mișcă camera",
"nav.creo.help":"Tragerea cu mijlocul orbitează, Shift+mijloc panoramează, tragerea verticală cu Ctrl+mijloc face zoom (în jos pentru apropiere); rotița mouse-ului face zoom",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Mouse-ul și mouse-ul 3D rotesc vizualizarea prin ambii poli și păstrează ruliul. Agățarea pe axe cu Shift este dezactivată.",
"nav.free_orbit.label":"Orbitare liberă",
"nav.free_orbit.snap_help":"Mouse-ul și mouse-ul 3D rotesc vizualizarea prin ambii poli și păstrează ruliul. Țineți apăsat Shift în timpul tragerii de orbitare pentru a agăța direcția de privire și ruliul.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+tragere cu butonul stâng: panoramare, Shift+Alt+tragere cu butonul stâng: zoom, Ctrl+tragere cu butonul stâng pe spațiu gol: orbitare",
"nav.inventor.help":"Tragerea cu mijlocul panoramează, Shift+mijloc orbitează, Ctrl+mijloc face zoom, tragerea cu dreapta orbitează",
"nav.maya.help":"Alt+tragere cu butonul stâng: orbitare, Alt+butonul din mijloc: panoramare, Alt+butonul drept: zoom; tragerea cu butonul din mijloc face de asemenea panoramare",
"nav.nx.help":"Tragerea cu mijlocul orbitează, Shift+mijloc panoramează (mijloc + dreapta în NX), Ctrl+mijloc face zoom (mijloc + stânga în NX); tragerea cu dreapta nu mișcă camera",
"nav.openscad.help":"Tragerea cu stânga pe spațiu gol orbitează, Shift+tragere cu stânga selectează cu casetă, tragerea geometriei schiței o editează; tragerea cu dreapta sau cu mijlocul panoramează, Shift+tragere cu dreapta sau Shift+tragere cu mijlocul face zoom",
"nav.perspective.sketch":"Editarea schiței folosește vizualizarea ortografică. Finalizați schița pentru a comuta la perspectivă.",
"nav.right_drag_orbits.help":"Dezactivat: tragerea cu dreapta nu mișcă camera, iar butonul drept doar deschide meniul contextual. Alegerea mapării de mouse SolidWorks dezactivează această opțiune.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Șurub cu cap bombat și locaș hexagonal",
"parts.family.dowel_pin":"Știft cilindric (de centrare)",
"parts.family.hex_bolt":"Șurub / bolț cu cap hexagonal",
"parts.family.hex_cap_screw_inch":"Șurub cu cap hexagonal (inci)",
"parts.family.washer_uss":"Șaibă plată, USS (lată)",
"parts.holes":"Găuri (opțional)",
"parts.placement_hint":"alegeți una sau mai multe găuri pentru a așeza câte o piesă în fiecare, sau OK plasează piesa în origine",
"parts.system":"Sistem de unități",
"parts.system.inch":"Inci",
"parts.system.metric":"Metric",
"pattern.alignment_2":"Aliniere 2",
"pattern.alignment_hint":"Numărul include originalul. Centrat echilibrează copiile; Inversare alege partea suplimentară pentru totaluri pare.",
"pattern.direction_1":"Direcția 1",
@@ -2113,6 +2166,8 @@
"prefs.button_left":"Tragere cu butonul stâng",
"prefs.button_middle":"Tragere cu butonul din mijloc",
"prefs.button_right":"Tragere cu butonul drept",
"prefs.carousel_next":"Următorul",
"prefs.carousel_previous":"Anteriorul",
"prefs.choose_font":"Alegeți fișierul de font…",
"prefs.click":"Clic",
"prefs.contact_shading":"Umbrire de contact moale",
@@ -2125,6 +2180,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Suprafețe curbe",
"prefs.curves":"Suprafețe curbe",
"prefs.cut_preview_tint":"Afișează materialul îndepărtat în roșu",
"prefs.cut_preview_tint_help":"O previzualizare umple materialul pe care îl îndepărtează o operație, și forma pe care o înlocuiește, cu o fantomă roșie transparentă. Dezactivat, aceste umpleri sunt complet transparente și se desenează doar contururile lor.",
"prefs.dark_parts_shading":"Păstrează forma pieselor întunecate",
"prefs.dark_parts_shading_help":"Umbrește vizualizarea în lumină liniară, cu o lumină de umplere moale de la cer, astfel încât fețele întunecate să păstreze un gradient în loc să devină negre",
"prefs.dead_zone_note":"Banda hașurată este zona moartă: mișcarea din interiorul ei este ignorată.",
"prefs.default":"implicit",
"prefs.design":"Valori implicite ale proiectului",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Muchii și umbrire",
"prefs.extend":"Prelungește",
"prefs.extra_navigation":"Ctrl+tragere cu butonul stâng pe un spațiu gol orbitează; țineți apăsat Space pentru panoramare.",
"prefs.extrude_view_isometric":"Treci la vizualizarea izometrică la deschiderea Extrudării",
"prefs.extrude_view_return":"Revino la vizualizarea anterioară la închiderea Extrudării",
"prefs.follows_os":"Urmează sistemul de operare",
"prefs.font":"Font",
"prefs.font_fallback":"Glifele care lipsesc din fontul ales trec la fontul încorporat, astfel încât nicio etichetă să nu afișeze un pătrat gol.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automat",
"prefs.graphics_card_missing":"Placa video salvată nu este disponibilă; se folosește Automat.",
"prefs.graphics_card_restart":"Intră în vigoare după repornirea SolidCraft. WGPU_ADAPTER_NAME suprascrie această alegere.",
"prefs.graphics_card_unused":"Placa video salvată nu a fost folosită pentru această fereastră; placa în uz este afișată în Ajutor › Despre și în bara de stare. Încercați Automat sau setați WGPU_ADAPTER_NAME la o parte unică din numele plăcii.",
"prefs.graphics_note":"Alegeți între viteză și netezime. Fiecare opțiune își arată efectul pe un eșantion.",
"prefs.graphics_presets_note":"Presetările stabilesc împreună opțiunile de mai jos.",
"prefs.hide_constraint_glyphs_zoomed_out":"Ascunde simbolurile de constrângere la micșorare",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Cu Schițe setat la Sub operația lor, Istoricul din stânga listează fiecare schiță cu un nivel mai în interior, sub prima operație construită din ea, ori de câte ori este suficient de lat pentru nume. Cronologia din partea de jos păstrează întotdeauna ordinea creării.",
"prefs.hold_stop_snapping":"Țineți apăsat pentru a opri agățarea",
"prefs.home_fit_size":"Dimensiunea pentru Acasă și Potrivire",
"prefs.home_fit_size_note":"Cât din vizualizare umple modelul când Acasă, Potrivire, un proiect deschis sau o schimbare de vizualizare din navigatorul de vizualizare îi stabilește încadrarea, indiferent dacă setarea de mai jos este activată sau nu. 100 %: umple vizualizarea dintre panouri, busolă și bara de navigare.",
"prefs.icons_only":"Doar pictograme",
"prefs.imported_file":"Fișier importat",
"prefs.in_browser":"În navigator",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Limba interfeței",
"prefs.interface_note":"Cum arată SolidCraft și unde sunt așezate elementele sale.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Inversează săgețile curbe de ruliu",
"prefs.invert_curved_roll_arrows_note":"Cele două săgeți curbe din colțul cubului rotesc vizualizarea în planul ecranului. Activat: săgeata în sens orar rotește în sens antiorar, iar săgeata în sens antiorar rotește în sens orar. Dezactivat: fiecare săgeată rotește vizualizarea în direcția în care se curbează.",
"prefs.invert_navigator_arrows":"Inversează săgețile de rotație ale cubului de vizualizare",
"prefs.invert_navigator_arrows_note":"Săgețile din jurul cubului rotesc camera în jurul modelului în direcția în care indică, ca în Fusion și Inventor: săgeata din stânga indică spre dreapta și rotește camera spre dreapta. Dezactivat: o săgeată rotește cubul spre partea pe care se află, deci săgeata din stânga rotește camera spre stânga. Săgețile curbe de ruliu nu sunt afectate.",
"prefs.keep_work_on_tab_switch":"Păstrează deschise dialogurile și instrumentele la schimbarea proiectului",
"prefs.keep_work_on_tab_switch_note":"Fiecare filă de proiect își păstrează dialogul sau instrumentul deschis, cu ce ați ales și ați tastat în el, și fila ei din bara de instrumente. Le regăsiți când reveniți la proiect. Dezactivat: schimbarea proiectului le anulează și afișează fila Model.",
"prefs.labels":"Etichete",
"prefs.language_system":"Sistem",
"prefs.layout":"Dispunere",
"prefs.layout_note":"Compact fixează panourile la marginile ferestrei. Transparența navigatorului este disponibilă în modul Plutitor. Schimbați partea Asistentului în pagina Asistent.",
"prefs.left":"Stânga",
"prefs.left_click":"Clic stânga",
"prefs.line_drag_draws_one":"Apăsarea și tragerea desenează o singură linie",
"prefs.line_drag_draws_one_note":"În instrumentul Linie, apăsarea, tragerea și eliberarea desenează o singură linie de la punctul apăsării la cel al eliberării, iar linia se termină acolo. Clicurile desenează în continuare un lanț. Dezactivat: o tragere plasează un punct acolo unde este eliberată, la fel ca un clic.",
"prefs.line_hover_tangent_arc":"Oprește indicatorul pe ultimul punct al unei linii pentru a trece la un arc tangent",
"prefs.line_hover_tangent_arc_note":"În instrumentul Linie, după ce a fost desenat un segment, îndepărtați-vă de ultimul punct al lanțului, reveniți și țineți indicatorul nemișcat pe el: următorul clic încheie un arc tangent, iar același gest revine la linii. Dezactivat: oprirea acolo nu face nimic.",
"prefs.linked_designs":"Proiecte legate",
"prefs.live_input":"Intrare în timp real",
"prefs.live_preview":"Previzualizare în timp real",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Mapare mouse",
"prefs.navigation":"Navigare",
"prefs.navigation_note":"Cum mută vizualizarea mouse-ul, trackpadul și mouse-ul 3D.",
"prefs.navigator_fit":"Potrivește modelul după o schimbare de vizualizare din navigator",
"prefs.navigator_fit_note":"O față, un colț sau o săgeată a cubului de vizualizare ori o axă a reperului de orientare privește și spre mijlocul modelului, de la singura distanță care îl cuprinde din toate părțile (sfera lui de încadrare). Acasă folosește același zoom și același centru cât timp opțiunea este activată, așa că vizualizările alese după aceea doar se rotesc. Dezactivat: vizualizarea se rotește pe loc, păstrându-și ținta și zoomul.",
"prefs.network_host_remove":"Elimină",
"prefs.network_locations":"Permite locațiile de rețea în proiecte",
"prefs.network_locations_note":"Dezactivat: fișierele legate ale unui proiect aflate pe alt computer (\\\\server\\share) se deschid doar de pe serverele listate aici sau după ce permiteți unul, când vi se cere.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Plasare",
"prefs.prefer_free_sketch_points":"Preferă punctele de schiță mobile când punctele se suprapun",
"prefs.preview_tint_new_faces":"Colorează suprafața nouă într-o previzualizare",
"prefs.preview_tint_new_faces_help":"Previzualizarea unei operații care modifică un corp poate desena suprafața adăugată în culoarea previzualizării. Dezactivat, corpul este desenat ca atare.",
"prefs.print_face_highlight":"Evidențierea feței de imprimare",
"prefs.print_face_highlight_tip":"Cât de puternic este colorată și conturată fața de imprimare a unui corp în vizualizare. 0 % nu afișează evidențiere.",
"prefs.profile_active":"Profil activ",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Folosește bugetul anterior de geometrie pentru previzualizarea din Randare",
"prefs.render_previous_geometry_budget_help":"Restabilește limita fixă anterioară de geometrie (512 MiB pe desktop pe 64 de biți, 128 MiB în rest) în locul bugetului bazat pe dispozitiv.",
"prefs.reports_saved":"{n} salvate",
"prefs.ribbon_click_ends_tool":"Un clic pe butonul instrumentului în uz îl încheie",
"prefs.ribbon_click_ends_tool_note":"Un clic pe butonul evidențiat din panglică al instrumentului de schiță în uz încheie instrumentul, astfel încât clicurile din vizualizare selectează din nou. Dezactivat: clicul pornește din nou instrumentul.",
"prefs.ribbon_reveal":"Afișează rezultatele căutării în panglică",
"prefs.ribbon_reveal_note":"Trecerea cursorului peste un rezultat din Caută comenzi arată unde se află comanda în panglică: fila, butonul sau rândul ei din lista derulantă a unui panou. O comandă pornită din căutare clipește acolo, iar o comandă în curs pornită dintr-o listă derulantă îi marchează panoul.",
"prefs.right_click":"Clic dreapta",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Revino la vizualizarea anterioară",
"prefs.sketch_exit_view.unless_rotated":"Revino, dacă nu a fost rotită",
"prefs.sketch_exit_view_note":"Unde ajunge vizualizarea după Finalizează schița, Anulează sau un dublu Esc.",
"prefs.sketch_face_activates_part":"Schițarea pe fața unei piese activează acea piesă",
"prefs.sketch_face_activates_part_note":"O schiță începută pe fața unui corp al altei componente activează mai întâi acea componentă, astfel încât schița îi aparține și rămâne cu acea piesă în Navigator. Piesa rămâne activă după aceea. Dezactivat: schița aparține componentei active.",
"prefs.sketch_open_look_at":"Rotește vizualizarea spre schiță la deschiderea ei",
"prefs.sketch_open_look_at_note":"Dezactivat: crearea sau editarea unei schițe lasă vizualizarea neschimbată. Comanda Privește spre orientează vizualizarea spre schiță atunci când doriți.",
"prefs.sketch_recent_snap":"Agățare automată la centrele și punctele de mijloc recente",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Eroare",
"prefs.status_selected":"Selectat",
"prefs.status_warning":"Avertisment",
"prefs.structure.appearance":"Aspect",
"prefs.structure.appearance_note":"Culori, text și accesibilitate.",
"prefs.structure.in_profile":"În profil",
"prefs.structure.layout":"Dispunere",
"prefs.structure.layout_note":"Unde se află părțile ferestrei.",
"prefs.structure.look":"Stil",
"prefs.structure.measure_pointer":"Măsurare și indicator",
"prefs.structure.mouse3d":"Mouse 3D",
"prefs.structure.mouse3d_note":"SpaceMouse și SpaceNavigator.",
"prefs.structure.navigation_note":"Mouse și trackpad. Mouse-ul 3D are propria pagină.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Modificat de la salvare",
"prefs.structure.profile_hover":"Salvat în profilurile de setări",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Schiță",
"prefs.structure.tools":"Instrumente",
"prefs.structure.tools_note":"Cum se comportă instrumentele de modelare.",
"prefs.structure.work":"Lucru",
"prefs.supersampling_brief":"Desenează vizualizarea mai mare și o filtrează la dimensiunea finală: foarte clar, dar mai solicitant.",
"render.batch_empty":"Salvați un cadru înainte de a randa toate cadrele.",
"render.batch_limit":"Randarea tuturor cadrelor este limitată la 32 de cadre.",
"render.batch_status":"{running} în desfășurare · {waiting} în așteptare",
"render.bloom_enable":"Afișează bloom",
"render.bloom_help":"Strălucire creativă, doar la ieșire, provenită din zonele luminoase liniare pozitive și răspândită prin trei treceri box normalizate. Raza este în pixeli de ieșire. Se adaugă în lumina de afișare liniară, înainte de sRGB; nu este un efect de lentilă, un efect volumetric sau o îmbunătățire a convergenței. EXR-ul brut rămâne neschimbat.",
"render.bloom_opaque":"Bloom necesită ieșire opacă. PNG-ul transparent este refuzat, nu aplatizat în tăcere.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Alegeți mai întâi un stil în Aspecte",
"render.chromatic_offset":"Decalaj cromatic al marginilor",
"render.clear_stage":"Elimină decorul salvat",
"render.compare_divider":"Separator de comparație",
"render.compare_live":"Live",
"render.compare_live_preview":"Previzualizare în timp real",
"ui.agent_chat_model_no_tools":"{model} nu poate folosi instrumentele SolidCraft, deci poate doar să converseze. Alegeți un model cu suport pentru instrumente.",
"ui.agent_chat_model_rejected":"Agentul nu a acceptat {model}: {error}",
"ui.agent_chat_model_search":"Caută modele…",
"ui.agent_chat_model_tip":"Modelul folosit de agent. Alegerea dumneavoastră este reținută pentru acest agent.",
"ui.agent_chat_models_failed":"Nu s-au putut lista modelele: {error}",
"ui.ai_reasoning_effort_field_hint":"gol = valoarea implicită a furnizorului",
"ui.ai_reasoning_effort_hint":"Opțional. Trimis către endpoint ca `reasoning_effort`; valorile acceptate diferă în funcție de furnizor (de exemplu `low`, `high` sau `max`). O valoare setată aici nu este niciodată înlocuită de SolidCraft. Lăsați gol pentru a nu trimite nimic și a păstra valoarea implicită a furnizorului.",
"ui.ai_remove":"Elimină",
"ui.ai_request_timed_out":"Modelul a durat mai mult de {seconds} s. Puteți mări timpul de expirare pentru acest endpoint în Preferințe › Asistent.",
"ui.ai_request_timeout":"Timp de expirare a cererii",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tangentă: alegeți un cerc/arc sau un spline/o curbă conică deschisă, apoi punctul de tangență (curbe de formă liberă: capetele)",
"ui.construction.external_hint":"Tangentă: alegeți un cerc sau un arc, un punct exterior, apoi soluția dorită",
"ui.construction.free_hint":"Dreaptă de construcție: clic pe două puncte; clic dreapta pentru a relua",
"ui.construction.normal_needs_length":"O dreaptă infinită este întotdeauna de construcție: introduceți o lungime pentru a desena o linie normală",
"ui.construction.point_hint":"Dreaptă de construcție: clic pe punctul prin care trece",
"ui.construction.reference_hint":"Dreaptă de construcție: alegeți o linie dreaptă, apoi un punct; clic dreapta pentru a schimba referința",
"ui.construction.ribbon_label":"Linii aux.",
"ui.construction.side_hint":"Dreaptă de construcție: faceți clic pe partea spre care merge linia; clic dreapta pentru a relua",
"ui.emboss_wrap_note":"Profilurile din linii ortogonale, tangente la un cilindru acceptat, se înfășoară automat. Alegeți un perete pentru a alege o țintă.",
"ui.end_radius":"Rază finală",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Explicită",
"ui.equation_form":"Formă",
"ui.equation_note":"Variabila este un număr simplu: sin(t) o primește în radiani. Un rezultat fără unitate este în unitatea proiectului.",
"ui.equation_note_range":"Variabila este o lungime, la fel ca intervalul ei: combinați-o cu parametri de lungime și împărțiți-o la o lungime pentru sin(). Un rezultat fără unitate este în unitatea proiectului.",
"ui.equation_parametric":"Parametrică",
"ui.equation_variable_unit":"Variabila are unitatea intervalului",
"ui.hide_origin_note":"Proiectele noi încep cu dosarul Origine ascuns. Un proiect își păstrează propria setare Origine după ce îl afișați sau îl ascundeți.",
"ui.history_back":"Un pas înapoi",
@@ -4619,6 +4757,7 @@
"ui.history_edge_hint":"faceți dublu clic pe muchie",
"ui.history_sketch_listed_under":"Listată sub {feature}",
"ui.history_title":"Istoric",
"ui.history_toggle_names":"Afișează sau ascunde numele operațiilor",
"ui.history_waits_for_editor":"Anulează, Refă și Istoric așteaptă până se deschide editorul operației",
"ui.hole":"Gaură",
"ui.hole_tap_type":"Tip de filetare gaură",
"ui.hole_type":"Tip de gaură",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} are modificări nesalvate, așa că a fost inserat fișierul său salvat. Salvați-l, apoi folosiți Actualizează legăturile pentru a aduce modificările.",
"ui.keyboard_shortcuts":"Scurtături de tastatură",
"ui.language":"Limbă",
"ui.lasso_select":"Lasou (trageți o buclă liberă: preia tot ce se află în întregime înăuntru)",
"ui.layout_compact":"Compact",
"ui.layout_floating":"Plutitor",
"ui.length":"Lungime",
"ui.length_decimals":"Zecimale lungime",
"ui.light":"Luminos",
"ui.line":"Linie",
"ui.line_arc_hint":"Arc tangent: faceți clic pe capătul arcului. Opriți-vă din nou pe ultimul punct pentru linii; clic dreapta sau Esc pentru a finaliza",
"ui.link_copies":"Leagă copiile identice",
"ui.link_copies_keep":"Păstrează",
"ui.link_copies_link":"Leagă",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Reconstruiește piesa, înlocuind orice operații adăugate. Toate aparițiile acestei componente se actualizează.",
"ui.paste":"Lipește",
"ui.path":"Traseu",
"ui.pattern_object_type_tip":"Corpuri: forme solide, alese în vizualizare sau în Navigator; fiecare este copiat întreg.\nOperații: pași ai Istoricului, de exemplu o extrudare sau o gaură, alese în Istoric sau pe o față creată de ei; pasul este repetat.\nO schiță nu este niciuna dintre ele: repetați curbele ei cu Matrice sau Oglindire din schiță, ori extrudați-o mai întâi.",
"ui.pattern_on_path":"Matrice pe traseu",
"ui.perforate_margin_default":"din diametru",
"ui.perforate_pitch":"Pas",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Poligon",
"ui.preferences":"Preferințe",
"ui.press_a_key":"apăsați o tastă…",
"ui.print_face_body_not_sent":"Corpul acelei fețe nu este trimis: adăugați-l mai întâi la Corpuri",
"ui.print_face_cleared":"{body}: fața de imprimare a fost ștearsă",
"ui.print_face_input":"Față de imprimare",
"ui.print_face_one_body":"O față de imprimare aparține unui singur corp: trimiteți acel corp singur pentru a o schimba",
"ui.print_face_pick":"Selectați o față plană a unui corp solid pentru a o face fața de imprimare",
"ui.print_face_set":"{body}: fața de imprimare a fost setată; Trimite la slicer așază corpul pe ea",
"ui.show_construction_geometries":"Geometrii de construcție",
"ui.show_dimensions":"Cote",
@@ -5024,12 +5170,15 @@
"ui.view_angles":"Unghiuri de vizualizare",
"ui.view_angles_convention":"Grade în jurul axei verticale. Girația 0° este vizualizarea din față, 90° din stânga, −90° din dreapta, 180° din spate; înclinarea 90° este vizualizarea de sus; un ruliu pozitiv rotește modelul în sens orar.",
"ui.view_angles_help":"Afișează înclinarea, girația și ruliul vizualizării în grade, plus proiecția ei, sub reperul de orientare. Faceți clic pe valori pentru a introduce unghiuri exacte.",
"update.check_unavailable":"Căutarea actualizărilor nu este disponibilă pentru această instalare.",
"update.checking":"Se verifică…",
"update.copy":"Copiază",
"update.dmg_opened":"Imaginea de disc este deschisă și verificată: trageți SolidCraft în Applications, înlocuind copia veche, apoi reporniți SolidCraft.",
"update.dmg_opened":"Imaginea de disc este deschisă și verificată: ieșiți din SolidCraft, trageți noul SolidCraft în Applications, înlocuind copia veche, apoi deschideți din nou SolidCraft.",
"update.download":"Descarcă",
"update.download_open":"Descarcă și deschide",
"update.downloading":"Se descarcă și se verifică… {done} din {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Deschideți proiectul legat?",
"web.open_link_confirm":"Există modificări nesalvate. Deschideți proiectul legat într-o filă nouă?",
"Sections (one sketch each)":"Сечения (по одному эскизу)",
"Select Other":"Выбрать другое",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Выбрать другое: удерживайте левую кнопку на модели (или правый щелчок › Выбрать другое…), чтобы увидеть всё под курсором; повторный щелчок в том же месте выбирает следующий объект. Двойной щелчок средней кнопкой — «Главная» (Настройки › Навигация).",
@@ -775,6 +777,8 @@
"at the face":"у грани",
"bom.group_children":"Вложенные детали в строке своей детали",
"browser.body_name":"Тело{number}",
"browser.calibrate_click_a":"Щёлкните по изображению, чтобы задать точку A, или введите её координаты.",
"browser.calibrate_click_b":"Щёлкните по изображению, чтобы задать точку B, или введите её координаты.",
"browser.calibrate_title":"Калибровка: {name}",
"browser.capture_many":"Компоненты ({count}) перемещены, но их положения не зафиксированы.",
"browser.capture_note":"«Зафиксировать положение» сохраняет новое положение; «Вернуть положение» восстанавливает прежнее.",
"config.rule_parameter_columns":"Показаны только параметры, у которых есть столбец в таблице. Добавьте столбец кнопкой «Добавить столбец» (+), чтобы использовать параметр здесь.",
"config.rule_suppression_columns":"Показаны только операции, у которых в таблице есть столбец «Подавить». Добавьте столбец кнопкой «Добавить столбец» (+), чтобы управлять операцией здесь.",
"dialog.dimension_insert_hint":"Дважды щёлкните другой управляющий размер, чтобы вставить его имя",
"dialog.dimension_name":"Размер: {name}",
"dialog.edit_title":"ИЗМЕНИТЬ: {title}",
"dialog.pattern_sketch_not_object":"Выберите тела или операции: эскиз — ни то, ни другое. Повторите его кривые собственным инструментом «Массив» или «Зеркало» в эскизе либо сначала выдавите его.",
"dialog.selection_guidance":"Щёлкните поле ввода, чтобы изменить его. Щелчок по выделенному объекту убирает его; Ctrl/Cmd+щелчок тоже переключает. Проверьте предпросмотр и нажмите OK.",
"dialog.selection_step":"{step} из {total}: Выберите {input}",
"dialog.step":"Шаг",
"document.changed_on_disk":"Файл {name} изменён на диске",
@@ -1404,6 +1446,7 @@
"help.construct.axis.two_points":"Создаёт вспомогательную ось через две точки, вершины или точки эскиза. Используйте для оси, идущей между двумя известными положениями.",
"help.construct.plane.along_path":"Создаёт вспомогательную плоскость, перпендикулярную ребру или кривой, в выбранном месте вдоль неё. Используйте, чтобы нарисовать профиль для операции «Сдвиг» или сечение траектории.",
"help.construct.plane.at_angle":"Создаёт вспомогательную плоскость, повёрнутую на угол от плоскости или грани вокруг оси или ребра. Используйте для наклонных эскизов, например для кронштейна под углом.",
"help.construct.plane.axis_point":"Создаёт вспомогательную плоскость, содержащую ось и точку вне этой оси. Выберите ось начала координат или вспомогательную ось, прямое ребро или линию эскиза, затем вершину, точку эскиза или вспомогательную точку. Точка на оси не задаёт единственную плоскость.",
"help.construct.plane.midplane":"Создаёт вспомогательную плоскость посередине между двумя плоскостями или плоскими гранями либо делящую пополам угол между ними. Используйте как плоскость симметрии для зеркального отражения.",
"help.construct.plane.offset":"Создаёт вспомогательную плоскость, параллельную плоскости или плоской грани, на заданном расстоянии или через точку. Используйте, чтобы рисовать на заданной высоте над гранью.",
"help.construct.plane.perpendicular":"Создаёт вспомогательную плоскость, содержащую линию или ребро и перпендикулярную плоскости или грани. Используйте, чтобы рисовать на модели вертикально вдоль ребра.",
@@ -1537,6 +1580,16 @@
"help.sketch.constraint.symmetry":"Делает две точки или кривые зеркальными друг для друга относительно линии или центральной точки. Используйте, чтобы профиль оставался симметричным при изменении одной стороны.",
"help.sketch.constraint.tangent":"Заставляет две кривые касаться, например линию и дугу. Используйте для плавных стыков без излома.",
"help.sketch.construction":"Переключает кривые между обычной и вспомогательной геометрией, которую профили не учитывают. Используйте вспомогательные кривые как помощники для разметки, ориентиры и размеры.",
"help.sketch.construction_line":"Создайте бесконечную вспомогательную прямую через две точки. С её помощью можно разметить эскиз, не разделяя профили.",
"help.sketch.construction_line.angle":"Создайте бесконечную вспомогательную прямую под углом к оси X эскиза. Укажите точку и введите угол либо задайте направление.",
"help.sketch.construction_line.bisector":"Выберите две пересекающиеся прямые эскиза, затем одну из двух биссектрис. Результат изменяется вместе с исходными прямыми.",
"help.sketch.construction_line.horizontal":"Создайте бесконечную горизонтальную вспомогательную прямую через точку. Её горизонтальное ограничение сохраняется при последующих изменениях.",
"help.sketch.construction_line.parallel":"Выберите прямую эскиза, затем разместите параллельную бесконечную вспомогательную прямую. Щелчок правой кнопкой — выбрать другую исходную прямую.",
"help.sketch.construction_line.perpendicular":"Выберите прямую эскиза, затем разместите перпендикулярную бесконечную вспомогательную прямую. Щелчок правой кнопкой — выбрать другую исходную прямую.",
"help.sketch.construction_line.tangent_at":"Создайте касательную в точке окружности или дуги окружности либо в конечной точке открытого сплайна или коники. Выберите кривую, затем точку касания.",
"help.sketch.construction_line.tangent_external":"Выберите окружность или дугу, затем внешнюю точку и решение для касательной. В предпросмотре показаны только точки касания на нарисованной дуге.",
"help.sketch.construction_line.tangent_two":"Выберите две окружности или дуги, затем в предпросмотре выберите общую касательную. Точки касания должны лежать на нарисованных кривых.",
"help.sketch.construction_line.vertical":"Создайте бесконечную вертикальную вспомогательную прямую через точку. Её вертикальное ограничение сохраняется при последующих изменениях.",
"help.sketch.copy":"Копирует выбранные кривые и точки эскиза вместе с ограничениями и размерами между ними. Вставьте их в этот эскиз или в другой.",
"help.sketch.create":"Начинает новый 2D-эскиз на плоскости или плоской грани модели. Каждое «Выдавливание», «Вращение» и «Сдвиг» начинается с эскиза.",
"help.sketch.cut":"Копирует выбранную геометрию эскиза и удаляет её из эскиза одним шагом отмены. Вставьте её в другое место этого эскиза или в другой эскиз.",
@@ -1767,6 +1820,8 @@
"joint_move.blocked_hint":"Проверьте тип сопряжения (например, «Жёсткое»), закрепление, ограничения сопряжения и значения, заданные параметрами.",
"joint_move.blocked_title":"Эту деталь нельзя переместить",
"joint_move.coarse":"Шаг поворота вблизи оси (°)",
"joint_move.conflict":"Одно из сопряжений этой детали конфликтует с остальными: {joint}.",
"joint_move.conflict_hint":"Измените, подавите или удалите конфликтующее сопряжение, чтобы остальные сопряжения могли расположить деталь.",
"joint_move.distance":"Расстояние от начала",
"joint_move.done":"Готово",
"joint_move.fine":"Шаг поворота вдали от оси (°)",
@@ -1866,6 +1921,8 @@
"motion.track_name":"Дорожка {number}",
"nav.alias.help":"Shift+Alt+перетаскивание левой кнопкой вращает, Shift+Alt+средней панорамирует, Shift+Alt+правой меняет масштаб; перетаскивание средней кнопкой тоже панорамирует, правой — вращает",
"nav.blender.help":"Перетаскивание средней кнопкой вращает, Shift+средняя панорамирует, Ctrl+средняя меняет масштаб; перетаскивание правой кнопкой камеру не двигает",
"nav.creo.help":"Перетаскивание средней кнопкой вращает, Shift+средняя панорамирует, Ctrl+перетаскивание средней кнопкой по вертикали меняет масштаб (вниз — приблизить); колесо прокрутки тоже меняет масштаб",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Мышь и 3D-мышь вращают вид через оба полюса и сохраняют крен. Привязка к осям по Shift отключена.",
"nav.free_orbit.label":"Свободная орбита",
"nav.free_orbit.snap_help":"Мышь и 3D-мышь вращают вид через оба полюса и сохраняют крен. Удерживайте Shift при вращении, чтобы привязать направление вида и крен к осям.",
@@ -1875,6 +1932,7 @@
"nav.hfss.help":"Alt+перетаскивание левой кнопкой панорамирует, Shift+Alt+левая кнопка меняет масштаб, Ctrl+перетаскивание левой кнопкой по пустому месту вращает",
"nav.inventor.help":"Перетаскивание средней кнопкой панорамирует, Shift+средняя вращает, Ctrl+средняя меняет масштаб, перетаскивание правой кнопкой вращает",
"nav.maya.help":"Alt+перетаскивание левой кнопкой вращает, Alt+средняя кнопка панорамирует, Alt+правая кнопка меняет масштаб; перетаскивание средней кнопкой тоже панорамирует",
"nav.nx.help":"Перетаскивание средней кнопкой вращает, Shift+средняя панорамирует (в NX — средняя + правая), Ctrl+средняя меняет масштаб (в NX — средняя + левая); перетаскивание правой кнопкой камеру не двигает",
"nav.openscad.help":"Перетаскивание левой кнопкой по пустому месту вращает, Shift+левая выделяет рамкой, перетаскивание геометрии эскиза изменяет её; правая или средняя кнопка панорамирует, Shift+правая или Shift+средняя меняет масштаб",
"nav.perspective.sketch":"При редактировании эскиза используется ортогональный вид. Завершите эскиз, чтобы включить перспективу.",
"nav.right_drag_orbits.help":"Выкл.: перетаскивание правой кнопкой не двигает камеру, а правая кнопка только открывает контекстное меню. Выбор назначения кнопок мыши SolidWorks отключает этот параметр.",
@@ -2017,12 +2075,19 @@
"parts.family.button_head_cap_screw":"Винт с полукруглой головкой и внутренним шестигранником",
"parts.family.dowel_pin":"Цилиндрический штифт",
"parts.family.hex_bolt":"Болт / винт с шестигранной головкой",
"parts.family.hex_cap_screw_inch":"Винт с шестигранной головкой (дюймовый)",
"parts.family.washer_uss":"Плоская шайба, USS (широкая)",
"parts.holes":"Отверстия (необязательно)",
"parts.placement_hint":"выберите одно или несколько отверстий, чтобы посадить деталь в каждое, или OK поместит её в начало координат",
"parts.system":"Система единиц",
"parts.system.inch":"Дюймовая",
"parts.system.metric":"Метрическая",
"pattern.alignment_2":"Выравнивание 2",
"pattern.alignment_hint":"Количество включает оригинал. Центрирование распределяет копии по обе стороны; при чётном количестве смена направления выбирает сторону с дополнительной копией.",
"pattern.direction_1":"Направление 1",
@@ -2071,6 +2136,8 @@
"prefs.bodies_folders_several":"Только если тел несколько",
"prefs.bottom":"Снизу",
"prefs.browser":"Браузер",
"prefs.browser_components_open":"Компоненты развёрнуты с начала",
"prefs.browser_components_open_note":"Каждый компонент в браузере сразу развёрнут, как раньше, а не свёрнут, пока вы его не развернёте.",
"prefs.browser_eye_left":"Глаз рядом со стрелкой свёртывания",
"prefs.browser_eye_left_note":"Строки браузера показывают глаз показа/скрытия рядом со стрелкой свёртывания, как раньше, а не в столбце на правом конце строк.",
"prefs.browser_reveal_on_hover":"Появляется при наведении",
@@ -2080,6 +2147,8 @@
"prefs.button_left":"Перетаскивание левой кнопкой",
"prefs.button_middle":"Перетаскивание средней кнопкой",
"prefs.button_right":"Перетаскивание правой кнопкой",
"prefs.cut_preview_tint":"Показывать удаляемый материал красным",
"prefs.cut_preview_tint_help":"В предпросмотре материал, который удаляет операция, и форма, которую она заменяет, закрашиваются красным полупрозрачным призраком. Если выключено, эти заливки полностью прозрачны и рисуются только их контуры.",
"prefs.dark_parts_shading":"Сохранять форму тёмных деталей",
"prefs.dark_parts_shading_help":"Затенять вид в линейном свете с мягкой заполняющей подсветкой неба, чтобы тёмные грани сохраняли градиент, а не становились чёрными",
"prefs.dead_zone_note":"Заштрихованная полоса — мёртвая зона: движение внутри неё игнорируется.",
"prefs.default":"по умолчанию",
"prefs.design":"Параметры дизайна по умолчанию",
@@ -2106,6 +2179,8 @@
"prefs.edges":"Рёбра и затенение",
"prefs.extend":"Удлинить",
"prefs.extra_navigation":"Ctrl+перетаскивание левой кнопкой по пустому месту вращает вид; удерживайте Space для панорамирования.",
"prefs.extrude_view_isometric":"Поворачивать вид в изометрию при открытии «Выдавливания»",
"prefs.extrude_view_return":"Возвращать прежний вид при закрытии «Выдавливания»",
"prefs.follows_os":"Как в системе",
"prefs.font":"Шрифт",
"prefs.font_fallback":"Символы, которых нет в выбранном шрифте, берутся из встроенного шрифта, поэтому ни одна подпись не показывает пустой квадрат.",
@@ -2121,6 +2196,7 @@
"prefs.graphics_card_auto":"Автоматически",
"prefs.graphics_card_missing":"Сохранённая видеокарта недоступна; используется «Автоматически».",
"prefs.graphics_card_restart":"Вступит в силу после перезапуска SolidCraft. WGPU_ADAPTER_NAME переопределяет этот выбор.",
"prefs.graphics_card_unused":"Сохранённая видеокарта для этого окна не использовалась; используемая видеокарта показана в меню Справка › О SolidCraft и в строке состояния. Попробуйте «Автоматически» или задайте для WGPU_ADAPTER_NAME уникальную часть названия видеокарты.",
"prefs.graphics_note":"Выбирайте между скоростью и плавностью изображения. Каждый вариант показывает свой эффект на образце.",
"prefs.graphics_presets_note":"Пресеты задают сразу все настройки ниже.",
"prefs.hide_constraint_glyphs_zoomed_out":"Скрывать знаки ограничений при уменьшении масштаба",
@@ -2135,6 +2211,8 @@
"prefs.history_sketches_note":"Если для эскизов выбрано «Под своей операцией», История слева показывает каждый эскиз на один уровень глубже, под первой операцией, построенной по нему, когда она достаточно широкая для названий. Шкала внизу всегда сохраняет порядок создания.",
"prefs.history_sketches_under_feature":"Под своей операцией",
"prefs.hold_stop_snapping":"Удерживайте, чтобы отключить привязку",
"prefs.home_fit_size":"Размер для «Главная» и «Вписать»",
"prefs.home_fit_size_note":"Какую часть вида занимает модель, когда её кадрируют «Главная», «Вписать», открытый дизайн или смена вида в навигаторе, независимо от того, включён ли параметр ниже. 100 %: заполняет вид между панелями, компасом и панелью навигации.",
"prefs.icons_only":"Только значки",
"prefs.imported_file":"Импортированный файл",
"prefs.input":"Ввод",
@@ -2142,13 +2220,22 @@
"prefs.interface_language":"Язык интерфейса",
"prefs.interface_note":"Как выглядит SolidCraft и где расположены его части.",
"prefs.invert_curved_roll_arrows_note":"Две изогнутые стрелки в углу куба поворачивают вид в плоскости экрана. Вкл.: стрелка по часовой стрелке поворачивает вид против часовой, а стрелка против часовой — по часовой. Выкл.: каждая стрелка поворачивает вид в ту сторону, куда она изогнута.",
"prefs.invert_navigator_arrows_note":"Стрелки вокруг куба вращают камеру в ту сторону, куда указывают, как в Fusion и Inventor: стрелка слева указывает вправо и поворачивает камеру вправо. Выкл.: стрелка поворачивает куб в сторону, где она расположена, поэтому левая стрелка поворачивает камеру влево. Изогнутые стрелки крена не затрагиваются.",
"prefs.keep_work_on_tab_switch":"Сохранять открытые диалоги и инструменты при переключении между дизайнами",
"prefs.keep_work_on_tab_switch_note":"Каждая вкладка дизайна сохраняет свой открытый диалог или инструмент вместе с тем, что вы в нём выбрали и ввели, а также свою вкладку панели инструментов. Они снова на месте, когда вы возвращаетесь к дизайну. Выкл.: при переключении дизайнов они отменяются, и показывается вкладка «Модель».",
"prefs.labels":"Подписи",
"prefs.language_system":"Системный",
"prefs.layout":"Расположение",
"prefs.layout_note":"«Компактная» прикрепляет панели к краям окна. Прозрачность браузера доступна в режиме «Плавающая». Сторону ассистента можно изменить на странице «Ассистент».",
"prefs.left":"Слева",
"prefs.left_click":"Щелчок левой кнопкой",
"prefs.line_drag_draws_one":"Нажатие и перетаскивание рисует одну линию",
"prefs.line_drag_draws_one_note":"В инструменте «Линия» нажатие, перетаскивание и отпускание рисуют одну линию от места нажатия до места отпускания, и на этом она заканчивается. Щелчки по-прежнему рисуют цепочку. Выкл.: перетаскивание ставит точку там, где его отпустили, как и щелчок.",
"prefs.line_hover_tangent_arc":"Задержаться на последней точке линии, чтобы перейти к касательной дуге",
"prefs.line_hover_tangent_arc_note":"В инструменте «Линия» после того, как сегмент нарисован, отведите указатель от последней точки цепочки, вернитесь и удерживайте его на ней неподвижно: следующий щелчок завершит касательную дугу, а тот же жест вернёт к линиям. Выкл.: задержка там ничего не делает.",
"prefs.linked_designs":"Связанные дизайны",
"prefs.live_input":"Ввод в реальном времени",
"prefs.live_preview":"Предпросмотр в реальном времени",
@@ -2172,6 +2259,8 @@
"prefs.mouse_mapping":"Назначение кнопок мыши",
"prefs.navigation":"Навигация",
"prefs.navigation_note":"Как мышь, тачпад и 3D-мышь двигают вид.",
"prefs.navigator_fit":"Вписывать модель после смены вида в навигаторе",
"prefs.navigator_fit_note":"Грань, угол или стрелка куба видов либо ось гизмо также направляет взгляд на середину модели с единственного расстояния, с которого она целиком видна со всех сторон (её габаритная сфера). «Главная» при включённом параметре использует тот же масштаб и центр, поэтому выбранные после неё виды только поворачиваются. Выкл.: вид поворачивается на месте, сохраняя свою цель и масштаб.",
"prefs.network_host_remove":"Убрать",
"prefs.network_locations":"Разрешить сетевые расположения в дизайнах",
"prefs.network_locations_note":"Выкл.: связанные файлы дизайна на другом компьютере (\\\\server\\share) открываются только с перечисленных здесь серверов или после того, как вы разрешите сервер по запросу.",
@@ -2186,10 +2275,14 @@
"prefs.overall_speed":"Общая скорость",
"prefs.parameter_list_rows":"Строк в списке параметров",
"prefs.parameter_list_rows_tip":"Стрелка вниз в пустом поле значения открывает список параметров, сначала избранные, не больше этого числа. Меньшее число делает список лёгким в большом дизайне.",
"prefs.persistent_ribbon_pressed":"Подсвечивать активные команды на ленте",
"prefs.persistent_ribbon_pressed_help":"Подсвечивает команды на ленте, пока их действие включено. Отключите, чтобы сохранить прежний нейтральный вид и справку по командам.",
"prefs.perspective_fov":"Угол обзора",
"prefs.placement":"Размещение",
"prefs.prefer_free_sketch_points":"Предпочитать подвижные точки эскиза, когда точки перекрываются",
"prefs.preview_tint_new_faces":"Подкрашивать новую поверхность в предпросмотре",
"prefs.preview_tint_new_faces_help":"Предпросмотр операции, изменяющей тело, может рисовать добавляемую ею поверхность цветом предпросмотра. Если выключено, тело рисуется как есть.",
"prefs.print_face_highlight_tip":"Насколько сильно грань печати тела окрашивается и обводится в виде. 0 % — без подсветки.",
"prefs.profile_active":"Активный профиль",
@@ -2218,6 +2311,8 @@
"prefs.render_previous_geometry_budget":"Использовать прежний бюджет геометрии предпросмотра рендера",
"prefs.render_previous_geometry_budget_help":"Вернуть прежний фиксированный предел геометрии (512 МиБ на 64-разрядном настольном компьютере, 128 МиБ на остальных устройствах) вместо бюджета, зависящего от устройства.",
"prefs.reports_saved":"Сохранено: {n}",
"prefs.ribbon_click_ends_tool":"Щелчок по кнопке работающего инструмента завершает его",
"prefs.ribbon_click_ends_tool_note":"Щелчок по подсвеченной кнопке используемого инструмента эскиза на ленте завершает инструмент, и щелчки в виде снова выделяют объекты. Выкл.: щелчок снова запускает инструмент.",
"prefs.ribbon_reveal":"Показывать результаты поиска на ленте",
"prefs.ribbon_reveal_note":"Наведение на результат в «Поиске команд» показывает, где команда находится на ленте: её вкладку, кнопку или строку в раскрывающемся списке панели. Команда, запущенная из поиска, мигает там, а выполняемая команда из раскрывающегося списка отмечает свою панель.",
"prefs.right_click":"Правый щелчок",
@@ -2245,6 +2340,10 @@
"prefs.sketch_exit_view.previous":"Вернуться к прежнему виду",
"prefs.sketch_exit_view.unless_rotated":"Вернуться, если вид не повёрнут",
"prefs.sketch_exit_view_note":"Куда переходит вид после «Завершить эскиз», «Отмена» или двойного Esc.",
"prefs.sketch_face_activates_part":"Эскиз на грани детали делает эту деталь активной",
"prefs.sketch_face_activates_part_note":"Эскиз, начатый на грани тела другого компонента, сначала активирует этот компонент, поэтому эскиз принадлежит ему и в браузере остаётся с этой деталью. После этого деталь остаётся активной. Выкл.: эскиз принадлежит активному компоненту.",
"prefs.sketch_open_look_at":"Поворачивать камеру к эскизу при его открытии",
"prefs.sketch_open_look_at_note":"Выкл.: при создании или редактировании эскиза вид не меняется. «Взгляд на» поворачивает вид к эскизу, когда это нужно.",
"prefs.sketch_recent_snap":"Автопривязка к недавним центрам и серединам",
"prefs.sketch_recent_snap_note":"При рисовании курсор привязывается к месту пересечения направляющих двух последних центров окружностей или середин прямых отрезков. Выкл.: эти направляющие остаются только визуальными, а курсор не смещается.",
"prefs.sketch_selection":"Эскиз и выделение",
@@ -2267,6 +2366,24 @@
"prefs.status_error":"Ошибка",
"prefs.status_selected":"Выбрано",
"prefs.status_warning":"Предупреждение",
"prefs.structure.appearance":"Внешний вид",
"prefs.structure.appearance_note":"Цвета, текст и специальные возможности.",
"prefs.structure.in_profile":"В профиле",
"prefs.structure.layout":"Расположение",
"prefs.structure.layout_note":"Где находятся части окна.",
"prefs.structure.look":"Оформление",
"prefs.structure.measure_pointer":"Измерение и указатель",
"prefs.structure.mouse3d":"3D-мышь",
"prefs.structure.mouse3d_note":"SpaceMouse и SpaceNavigator.",
"prefs.structure.navigation_note":"Мышь и тачпад. У 3D-мыши есть своя страница.",
"prefs.structure.profile":"Профиль",
"prefs.structure.profile_edited":"Изменено после сохранения",
"prefs.structure.profile_hover":"Сохранено в профилях настроек",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Эскиз",
"prefs.structure.tools":"Инструменты",
"prefs.structure.tools_note":"Как ведут себя инструменты моделирования.",
"prefs.structure.work":"Работа",
"prefs.supersampling_brief":"Рисует вид в большем размере и уменьшает его: очень чётко, но тяжелее.",
"prefs.tab_accent_note":"Акцентный цвет следует за активной вкладкой",
"render.base_opaque_only":"Этот редактор сохраняет семантику непрозрачного тела. Для оптического пропускания света используйте отдельные элементы управления стеклом.",
"render.batch_all_shots":"Все кадры ({count})",
"render.batch_empty":"Сохраните кадр, прежде чем рендерить все кадры.",
"render.batch_limit":"Рендер всех кадров ограничен 32 кадрами.",
"render.bloom_help":"Творческое свечение только на выводе от положительных линейных ярких участков, размытое тремя нормированными блочными проходами. Радиус задан в пикселях вывода. Добавляется в линейном свете дисплея до sRGB; это не эффект объектива, не объёмный эффект и не улучшение сходимости. Необработанный EXR не меняется.",
"render.bloom_opaque":"Свечение требует непрозрачного вывода. Прозрачный PNG отклоняется, а не молча сводится к непрозрачному изображению.",
@@ -2556,6 +2681,13 @@
"render.choose_look":"Сначала выберите внешний вид в разделе «Внешние виды»",
"ui.agent_chat_custom_hint":"Любая программа, поддерживающая Agent Client Protocol через stdin и stdout. Оболочка для запуска не используется.",
"ui.agent_chat_denied":"Отклонено",
"ui.agent_chat_deny":"Отклонить",
@@ -3980,8 +4117,16 @@
"ui.agent_chat_mode_all":"Всё",
"ui.agent_chat_mode_ask":"Спросить",
"ui.agent_chat_mode_edits":"Правки",
"ui.agent_chat_model_custom":"Использовать свою модель: {model}",
"ui.agent_chat_model_no_tools":"{model} не может использовать инструменты SolidCraft, поэтому может только вести чат. Выберите модель с поддержкой инструментов.",
"ui.agent_chat_model_rejected":"Агент не принял {model}: {error}",
"ui.agent_chat_model_search":"Поиск моделей…",
"ui.agent_chat_model_tip":"Модель, которую использует агент. Ваш выбор запоминается для этого агента.",
"ui.agent_chat_models_failed":"Не удалось получить список моделей: {error}",
"ui.ai_reasoning_effort_field_hint":"пусто = значение поставщика по умолчанию",
"ui.ai_reasoning_effort_hint":"Необязательно. Отправляется на конечную точку как `reasoning_effort`; допустимые значения зависят от поставщика (например, `low`, `high` или `max`). Заданное здесь значение SolidCraft никогда не заменяет. Оставьте поле пустым, чтобы ничего не отправлять и сохранить значение поставщика по умолчанию.",
"ui.ai_remove":"Удалить",
"ui.ai_request_timed_out":"Модель отвечала дольше {seconds} с. Тайм-аут запроса для этой конечной точки можно увеличить в Настройки › Ассистент.",
"ui.ai_request_timeout":"Тайм-аут запроса",
@@ -4250,14 +4398,21 @@
"ui.construction.contact_hint":"Касательная: выберите окружность/дугу или открытый сплайн/конику, затем точку касания (для сплайна/коники — конец)",
"ui.construction.external_hint":"Касательная: выберите окружность или дугу, внешнюю точку, затем нужное решение",
"ui.construction.free_hint":"Вспомогательная прямая: укажите две точки; правая кнопка — начать заново",
"ui.construction.normal_needs_length":"Бесконечная прямая всегда вспомогательная: введите длину, чтобы нарисовать обычную линию",
"ui.default_modelling_orientation":"Ориентация моделирования по умолчанию",
"ui.delete":"Удалить",
"ui.delete_select_first":"Сначала выберите, что удалить: операции, тела, компоненты или геометрию эскиза",
"ui.depth":"Глубина",
"ui.design":"Дизайн",
"ui.design_properties.author":"Автор",
@@ -4372,6 +4528,7 @@
"ui.edit_in_place_saved_elsewhere":"Деталь сохранена в другой файл; сборка по-прежнему связана с {name}",
"ui.edit_in_place_wait":"Дождитесь завершения того, что выполняется в дизайне",
"ui.edit_section_analysis":"Изменить анализ сечения",
"ui.edit_sketch_empty":"Нет эскизов для редактирования",
"ui.ellipse":"Эллипс",
"ui.emboss_wrap_note":"Профили из ортогональных линий, касательные к одному поддерживаемому цилиндру, оборачиваются автоматически. Выберите стенку, чтобы задать цель.",
"ui.end_radius":"Конечный радиус",
@@ -4382,7 +4539,9 @@
"ui.equation_explicit":"Явная",
"ui.equation_form":"Форма",
"ui.equation_note":"Переменная — обычное число: sin(t) принимает её в радианах. Результат без единицы измерения задаётся в единицах дизайна.",
"ui.equation_note_range":"Переменная — длина, как и её диапазон: сочетайте её с параметрами длины, а для sin() делите её на длину. Результат без единицы измерения задаётся в единицах дизайна.",
"ui.equation_parametric":"Параметрическая",
"ui.equation_variable_unit":"Переменная имеет единицу измерения диапазона",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4514,6 +4673,7 @@
"ui.hideOrigin":"Скрыть начало координат",
"ui.hidePlanes":"Скрыть плоскости",
"ui.hideProfile":"Скрыть профиль",
"ui.hide_component_history":"Скрыть его историю",
"ui.hide_origin_by_default":"Скрывать начало координат по умолчанию",
"ui.hide_origin_note":"Новые дизайны создаются со скрытой папкой «Начало координат». Как только вы покажете или скроете её, дизайн запоминает собственную настройку.",
"ui.history_back":"На один шаг назад",
@@ -4521,6 +4681,7 @@
"ui.history_edge_hint":"двойной щелчок по границе",
"ui.history_sketch_listed_under":"Показан под операцией {feature}",
"ui.history_title":"История",
"ui.history_toggle_names":"Показать или скрыть имена операций",
"ui.history_waits_for_editor":"«Отменить», «Повторить» и «История» ждут, пока откроется редактор операции",
"ui.hole":"Отверстие",
"ui.hole_tap_type":"Тип резьбы отверстия",
"ui.hole_type":"Тип отверстия",
@@ -4549,6 +4712,7 @@
"ui.insert_design.saved_file":"В {name} есть несохранённые изменения, поэтому вставлен его сохранённый файл. Сохраните его, затем выполните «Обновить связи», чтобы подтянуть изменения.",
"ui.lasso_select":"Лассо (перетащите произвольный контур: выделяет всё, что целиком внутри)",
"ui.layout_compact":"Компактная",
"ui.layout_floating":"Плавающая",
"ui.length":"Длина",
"ui.length_decimals":"Знаков после запятой (длины)",
"ui.light":"Светлая",
"ui.line":"Линия",
"ui.line_arc_hint":"Касательная дуга: щёлкните в конце дуги. Снова задержитесь на последней точке, чтобы вернуться к линиям; щёлкните правой кнопкой или нажмите Esc, чтобы завершить",
"ui.link_copies":"Связать одинаковые копии",
"ui.link_copies_keep":"Оставить",
"ui.link_copies_link":"Связать",
@@ -4651,6 +4817,7 @@
"ui.part_size_shared":"Перестраивает деталь, заменяя все добавленные операции. Обновляются все вхождения этого компонента.",
"ui.paste":"Вставить",
"ui.path":"Траектория",
"ui.pattern_object_type_tip":"Тела: твёрдые формы, выбираемые в виде или в браузере; каждое копируется целиком.\nОперации: шаги Истории, например выдавливание или отверстие, выбираемые в Истории или на созданной ими грани; шаг повторяется.\nЭскиз — ни то, ни другое: повторите его кривые собственным инструментом «Массив» или «Зеркало» в эскизе либо сначала выдавите его.",
"ui.pattern_on_path":"Массив по траектории",
"ui.perforate_margin_default":"от диаметра",
"ui.perforate_pitch":"Шаг",
@@ -4687,9 +4854,9 @@
"ui.polygon":"Многоугольник",
"ui.preferences":"Настройки",
"ui.press_a_key":"нажмите клавишу…",
"ui.print_face_body_not_sent":"Тело этой грани не отправляется: сначала добавьте его в Тела",
"ui.print_face_cleared":"{body}: грань печати сброшена",
"ui.print_face_input":"Грань печати",
"ui.print_face_one_body":"Грань печати относится к одному телу: отправьте это тело отдельно, чтобы изменить её",
"ui.print_face_pick":"Выберите плоскую грань твёрдого тела, чтобы сделать её гранью печати",
"ui.print_face_set":"{body}: грань печати задана; «Отправить в слайсер» кладёт тело на неё",
"ui.profile":"Профиль",
@@ -4799,6 +4966,7 @@
"ui.showDimension":"Показать размер",
"ui.showOrigin":"Показать начало координат",
"ui.showPlanes":"Показать плоскости",
"ui.show_component_history":"Показать его историю",
"ui.view_angles_convention":"Градусы вокруг вертикальной оси. Рыскание 0° — вид спереди, 90° — слева, −90° — справа, 180° — сзади; тангаж 90° — вид сверху; положительный крен поворачивает модель по часовой стрелке.",
"ui.view_angles_help":"Показывает тангаж, рыскание и крен вида в градусах, а также его проекцию под гизмо ориентации. Щёлкните по показанию, чтобы ввести точные углы.",
"update.check_unavailable":"Проверка обновлений недоступна для этой установки.",
"update.checking":"Проверка…",
"update.copy":"Копировать",
"update.dmg_opened":"Образ диска открыт и проверен: перетащите SolidCraft в «Программы», заменив старую копию, затем перезапустите SolidCraft.",
"update.dmg_opened":"Образ диска открыт и проверен: завершите SolidCraft, перетащите новый SolidCraft в «Программы», заменив старую копию, затем снова откройте SolidCraft.",
"update.download":"Скачать",
"update.download_open":"Скачать и открыть",
"update.downloading":"Загрузка и проверка… {done} из {total} МБ",
@@ -5020,6 +5191,7 @@
"web.open_link":"Открыть связанный дизайн?",
"web.open_link_confirm":"Есть несохранённые изменения. Открыть связанный дизайн в новой вкладке?",
"Sections (one sketch each)":"Пресеци (по једна скица)",
"Select Other":"Изабери друго",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Изабери друго: држите лево дугме мирно на моделу (или десни клик › Изабери друго…) да прикажете све испод показивача; поново кликните на исто место да изаберете следећи елемент. Двапут кликните средњим дугметом за Почетни приказ (Подешавања › Навигација).",
"config.rule_parameter_columns":"Приказани су само параметри који имају колону у табели. Додајте колону помоћу Додај колону (+) да бисте параметар користили овде.",
"config.rule_suppression_columns":"Приказане су само операције које имају колону Потисни у табели. Додајте колону помоћу Додај колону (+) да бисте овде могли да управљате операцијом.",
"contact.components_count":"Компоненте: {count}",
"contact.enabled_label":"омогућено",
"coupling.gear_1":"Зупчаник 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Кота: {name}",
"dialog.edit_title":"ИЗМЕНИ {title}",
"dialog.no_shown_body":"Нема приказаног тела за измену: прикажите једно или изаберите Ново тело",
"dialog.pattern_sketch_not_object":"Изаберите тела или операције: скица није ни једно ни друго. Поновите њене криве помоћу алата Низ или Пресликај у самој скици или је прво екструдирајте.",
"dialog.selection_guidance":"Изаберите улаз да га промените. Кликните изабране објекте да их уклоните; Ctrl/Cmd-клик их такође укључује и искључује. Погледајте преглед, а затим притисните У реду.",
"dialog.selection_step":"{step} од {total}: Изаберите {input}",
"dialog.step":"Корак",
"document.changed_on_disk":"{name} је промењен на диску",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Прави помоћну осу кроз две тачке, врхове или тачке скице. Користите је за осу која пролази кроз два позната положаја.",
"help.construct.plane.along_path":"Прави помоћну раван окомиту на ивицу или криву, на положају дуж ње. Користите је да скицирате профил за повлачење или попречни пресек путање.",
"help.construct.plane.at_angle":"Прави помоћну раван заокренуту под углом у односу на раван или лице, око осе или ивице. Користите је за нагнуте скице, на пример за угаони носач.",
"help.construct.plane.axis_point":"Прави помоћну раван која садржи осу и тачку изван те осе. Изаберите осу исходишта или помоћну осу, праву ивицу или линију скице, па врх, тачку скице или помоћну тачку. Тачка на оси не може да одреди јединствену раван.",
"help.construct.plane.midplane":"Прави помоћну раван на половини између две равни или равна лица, или раван која полови угао под којим се састају. Користите је као раван симетрије за пресликавање.",
"help.construct.plane.offset":"Прави помоћну раван паралелну равни или равном лицу, на задатом растојању или кроз тачку. Користите је да скицирате на одређеној висини изнад лица.",
"help.construct.plane.perpendicular":"Прави помоћну раван која садржи линију или ивицу и стоји окомито на раван или лице. Користите је да скицирате усправно на моделу дуж ивице.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Проверите врсту споја (на пример Круто), учвршћивање, границе споја и вредности које покрећу параметри.",
"joint_move.blocked_title":"Овај део се не може померити",
"joint_move.coarse":"Корак ротације близу осе (°)",
"joint_move.conflict":"Један спој овог дела је у сукобу са осталима: {joint}.",
"joint_move.conflict_hint":"Измените, потисните или избришите спој који је у сукобу да би остали спојеви могли да поставе део.",
"joint_move.distance":"Растојање од почетка",
"joint_move.done":"Готово",
"joint_move.fine":"Корак ротације далеко од осе (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Стаза {number}",
"nav.alias.help":"Shift+Alt+превлачење левим дугметом орбитира, Shift+Alt+средњим помера, Shift+Alt+десним зумира; превлачење средњим дугметом такође помера, а десним орбитира",
"nav.creo.help":"Превлачење средњим дугметом орбитира, Shift+средње помера, Ctrl+средње уз вертикално превлачење зумира (надоле за приближавање); точкић такође зумира",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Миш и 3D миш ротирају кроз оба пола и чувају нагиб. Привлачење оса тастером Shift је искључено.",
"nav.free_orbit.label":"Слободно орбитирање",
"nav.free_orbit.snap_help":"Миш и 3D миш ротирају кроз оба пола и чувају нагиб. Држите Shift током превлачења за орбитирање да привучете смер погледа и нагиб.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+превлачење левим тастером помера, Shift+Alt+леви зумира, Ctrl+превлачење левим на празном простору орбитира",
"nav.nx.help":"Превлачење средњим дугметом орбитира, Shift+средње помера (у NX-у средње + десно), Ctrl+средње зумира (у NX-у средње + лево); превлачење десним дугметом не дира камеру",
"nav.openscad.help":"Превлачење левим дугметом по празном простору орбитира, Shift+превлачење левим бира оквиром, превлачење геометрије скице је мења; превлачење десним или средњим дугметом помера, Shift+десно или Shift+средње зумира",
"nav.perspective.sketch":"Измена скице користи ортографски приказ. Завршите скицу да пребаците на перспективу.",
"nav.right_drag_orbits.help":"Искључено: превлачење десним дугметом не дира камеру, а десно дугме само отвара контекстни мени. Избор SolidWorks мапирања миша га искључује.",
@@ -2046,12 +2092,19 @@
"parts.family.button_head_cap_screw":"Завртањ са полуоблом главом и унутрашњим шестоугаоником",
"prefs.cut_preview_tint":"Прикажи уклоњени материјал у црвеној боји",
"prefs.cut_preview_tint_help":"Преглед испуњава материјал који операција уклања и облик који замењује црвеном провидном сенком. Када је искључено, те испуне су потпуно провидне и цртају се само њихови обриси.",
"prefs.dark_parts_shading":"Задржи облик тамних делова",
"prefs.dark_parts_shading_help":"Сенчи приказ у линеарном светлу уз меко допунско светло неба, тако да тамна лица задрже градијент уместо да поцрне",
"prefs.dead_zone_note":"Шрафирана трака је мртва зона: кретање унутар ње се занемарује.",
"prefs.extra_navigation":"Ctrl + превлачење левим дугметом по празном простору орбитира; држите размакницу за померање.",
"prefs.extrude_view_isometric":"Окрени приказ у изометријски када се отвори Екструдирај",
"prefs.extrude_view_return":"Врати се на претходни приказ када се Екструдирај затвори",
"prefs.follows_os":"Прати оперативни систем",
"prefs.font":"Фонт",
"prefs.font_fallback":"Знакови који недостају изабраном фонту приказују се уграђеним фонтом, тако да ниједна ознака не приказује празан квадрат.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Аутоматски",
"prefs.graphics_card_missing":"Сачувана графичка картица није доступна; користи се Аутоматски.",
"prefs.graphics_card_restart":"Ступа на снагу након поновног покретања SolidCraft-а. WGPU_ADAPTER_NAME има предност над овим избором.",
"prefs.graphics_card_unused":"Сачувана графичка картица није коришћена за овај прозор; картица која се користи приказана је у Помоћ › О програму и у статусној траци. Покушајте са опцијом Аутоматски или поставите WGPU_ADAPTER_NAME на јединствени део назива картице.",
"prefs.graphics_note":"Жртвујте брзину за глаткоћу. Сваки избор показује свој учинак на примеру.",
"prefs.graphics_presets_note":"Унапред подешене вредности подешавају све изборе испод одједном.",
"prefs.hide_constraint_glyphs_zoomed_out":"Сакриј симболе ограничења када је приказ умањен",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Када је Скице подешено на Испод своје операције, временска трака лево приказује сваку скицу један ниво увучено, испод прве операције направљене из ње, кад год је довољно широка за називе. Временска трака на дну увек задржава редослед настанка.",
"prefs.history_sketches_under_feature":"Испод своје операције",
"prefs.hold_stop_snapping":"Држите да искључите привлачење",
"prefs.home_fit_size":"Величина за Почетни приказ и Уклопи",
"prefs.home_fit_size_note":"Колики део приказа модел испуњава када га уоквири Почетни приказ, Уклопи, отварање дизајна или промена приказа у навигатору, без обзира на то да ли је подешавање испод укључено. 100 %: испуњава приказ између панела, компаса и навигационе траке.",
"prefs.icons_only":"Само иконе",
"prefs.imported_file":"Увезена датотека",
"prefs.in_browser":"У стаблу модела",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Језик интерфејса",
"prefs.interface_note":"Како SolidCraft изгледа и где су његови делови.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Обрни закривљене стрелице за ваљање",
"prefs.invert_curved_roll_arrows_note":"Две закривљене стрелице у углу коцке ваљају приказ унутар равни екрана. Укључено: стрелица у смеру казаљке на сату ваља приказ супротно од смера казаљке на сату, а стрелица супротно од смера казаљке на сату ваља га у смеру казаљке на сату. Искључено: свака стрелица ваља приказ онако како је закривљена.",
"prefs.invert_navigator_arrows":"Обрни стрелице за ротацију коцке приказа",
"prefs.invert_navigator_arrows_note":"Стрелице око коцке орбитирају камеру у смеру у којем показују, као у програмима Fusion и Inventor: стрелица са леве стране показује удесно и закреће камеру удесно. Искључено: стрелица окреће коцку ка страни на којој се налази, па лева стрелица закреће камеру улево. Подешавање не утиче на закривљене стрелице за ваљање.",
"prefs.keep_work_on_tab_switch":"Задржи дијалоге и алате отвореним при пребацивању између дизајна",
"prefs.keep_work_on_tab_switch_note":"Свака картица дизајна задржава свој отворени дијалог или алат, са оним што сте у њему изабрали и уписали, те своју картицу траке са алатима. Када се вратите на дизајн, поново су ту. Искључено: пребацивање између дизајна отказује их и приказује картицу Модел.",
"prefs.labels":"Ознаке",
"prefs.language_system":"Систем",
"prefs.layout":"Распоред",
"prefs.layout_note":"Компактно причвршћује панеле уз ивице прозора. Провидност стабла модела доступна је у опцији Плутајуће. Страну Асистента промените на страници Асистент.",
"prefs.left":"Лево",
"prefs.left_click":"Леви клик",
"prefs.line_drag_draws_one":"Притисак и превлачење цртају једну линију",
"prefs.line_drag_draws_one_note":"У алату Линија, притисак, превлачење и пуштање цртају једну линију од места притиска до места пуштања и ту се завршава. Кликови и даље цртају ланац. Искључено: превлачење поставља тачку где се пусти, као и клик.",
"prefs.line_hover_tangent_arc":"Задржите показивач на последњој тачки линије да пређете на тангентни лук",
"prefs.line_hover_tangent_arc_note":"У алату Линија, након што је нацртан сегмент, одмакните показивач од последње тачке ланца, вратите га на њу и држите га мирно: следећи клик завршава тангентни лук, а исти покрет враћа на линије. Искључено: задржавање на тој тачки не ради ништа.",
"prefs.linked_designs":"Повезани дизајни",
"prefs.live_input":"Улаз уживо",
"prefs.live_preview":"Преглед уживо",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Мапирање миша",
"prefs.navigation":"Навигација",
"prefs.navigation_note":"Како миш, додирна табла и 3D миш померају приказ.",
"prefs.navigator_fit":"Уклопи модел након промене приказа у навигатору",
"prefs.navigator_fit_note":"Лице, угао или стрелица коцке приказа, односно оса гизма оријентације, такође усмерава поглед на средину модела са једног растојања на којем се уклапа из сваког смера (његова гранична сфера). Почетни приказ користи исти зум и центар док је ова опција укључена, па се прикази које изаберете после њега само окрећу. Искључено: приказ се окреће на месту и задржава свој циљ и зум.",
"prefs.network_host_remove":"Уклони",
"prefs.network_locations":"Дозволи мрежне локације у дизајнима",
"prefs.network_locations_note":"Искључено: повезане датотеке дизајна на другом рачунару (\\\\server\\share) отварају се само са сервера наведених овде или након што га дозволите када се то затражи.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Постављање",
"prefs.prefer_free_sketch_points":"Дај предност покретним тачкама скице када се тачке преклапају",
"prefs.preview_choices":"Преглед ваших избора",
"prefs.preview_tint_new_faces":"Обоји нову површ у прегледу",
"prefs.preview_tint_new_faces_help":"Преглед операције која мења тело може да нацрта површ коју додаје у боји прегледа. Када је искључено, тело се црта какво јесте.",
"prefs.print_face_highlight":"Истицање површине за штампу",
"prefs.print_face_highlight_tip":"Колико се јако површина за штампу тела боји и обрубљује у приказу. 0 % не приказује истицање.",
"prefs.profile_active":"Активни профил",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Користи претходни буџет геометрије за преглед у Рендеровању",
"prefs.render_previous_geometry_budget_help":"Враћа претходно фиксно ограничење геометрије (512 MiB на 64-битним десктоп рачунарима, 128 MiB другде) уместо буџета према уређају.",
"prefs.reports_saved":"Сачувано: {n}",
"prefs.ribbon_click_ends_tool":"Клик на дугме активног алата завршава га",
"prefs.ribbon_click_ends_tool_note":"Клик на истакнуто дугме на траци алата за скицирање који је у употреби завршава тај алат, па кликови у приказу поново служе за избор. Искључено: клик поново покреће алат.",
"prefs.ribbon_reveal":"Прикажи резултате претраге на траци",
"prefs.ribbon_reveal_note":"Задржавање показивача изнад резултата у Претражи команде показује где се команда налази на траци: њену картицу, њено дугме или њен ред у падајућем менију панела. Команда покренута из претраге тамо трепери, а покренута команда из падајућег менија означава свој панел.",
"prefs.right_click":"Десни клик",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Врати се на претходни приказ",
"prefs.sketch_exit_view.unless_rotated":"Врати се осим ако је ротирано",
"prefs.sketch_exit_view_note":"Куда приказ иде након Заврши скицу, Откажи или двоструког Esc.",
"prefs.sketch_face_activates_part":"Скицирање на лицу дела чини тај део активним",
"prefs.sketch_face_activates_part_note":"Скица започета на лицу тела друге компоненте прво активира ту компоненту, па скица припада њој и у стаблу модела остаје уз тај део. Тај део након тога остаје активан. Искључено: скица припада активној компоненти.",
"prefs.sketch_open_look_at":"Окрени камеру према скици када се отвори",
"prefs.sketch_open_look_at_note":"Искључено: када направите или измените скицу, приказ остаје онакав какав јесте. Погледај окреће приказ према скици када то желите.",
"prefs.sketch_recent_snap":"Аутоматски привлачи на недавне центре и средишње тачке",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Грешка",
"prefs.status_selected":"Изабрано",
"prefs.status_warning":"Упозорење",
"prefs.structure.appearance":"Изглед",
"prefs.structure.appearance_note":"Боје, текст и приступачност.",
"prefs.structure.in_profile":"У профилу",
"prefs.structure.layout":"Распоред",
"prefs.structure.layout_note":"Где се налазе делови прозора.",
"prefs.structure.look":"Визуелно",
"prefs.structure.measure_pointer":"Мерење и показивач",
"prefs.structure.mouse3d":"3D миш",
"prefs.structure.mouse3d_note":"SpaceMouse и SpaceNavigator.",
"prefs.structure.navigation_note":"Миш и додирна табла. 3D миш има сопствену страницу.",
"prefs.structure.profile":"Профил",
"prefs.structure.profile_edited":"Промењено откако је сачувано",
"prefs.structure.profile_hover":"Сачувано у профилима подешавања",
"prefs.structure.scale_percent":"{percent}%",
"prefs.structure.sketch":"Скица",
"prefs.structure.tools":"Алати",
"prefs.structure.tools_note":"Како се понашају алати за моделовање.",
"prefs.structure.work":"Рад",
"prefs.supersampling_brief":"Исцртава приказ већим и смањује га филтрирањем: веома оштро и захтевније.",
"prefs.tab_accent_note":"Нагласна боја прати активну картицу",
"render.batch_empty":"Сачувајте кадар пре рендеровања свих кадрова.",
"render.batch_limit":"Рендеровање свих кадрова ограничено је на 32 кадра.",
"render.batch_status":"У току: {running} · На чекању: {waiting}",
"render.bloom_enable":"Сјај приказа",
"render.bloom_help":"Креативни сјај само на излазу из позитивних линеарних светлих делова, раширен кроз три нормализована пролаза кутијастог филтера. Полупречник је у пикселима излаза. Додаје се у линеарној светлости приказа пре sRGB-а; није објектив, волуметријски ефекат нити побољшање конвергенције. Сирови EXR остаје непромењен.",
"render.bloom_opaque":"Сјај захтева непрозирни излаз. Провидни PNG се одбија, а не спљоштава тихо.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Прво изаберите изглед у Изгледима",
"ui.agent_chat_models_none":"Крајња тачка не наводи ниједан модел",
"ui.agent_chat_models_not_a_list":"Одговор није списак модела",
"ui.agent_chat_new":"Нови разговор",
"ui.agent_chat_new_confirm":"Започети нови разговор? Тренутни ће бити обрисан.",
"ui.agent_chat_next_picture":"Следећа слика",
@@ -4213,6 +4336,9 @@
"ui.ai_permissions":"Дозволе",
"ui.ai_preset":"Унапред подешено",
"ui.ai_protocol":"Протокол",
"ui.ai_reasoning_effort":"Ниво закључивања",
"ui.ai_reasoning_effort_field_hint":"празно = подразумевана вредност пружаоца",
"ui.ai_reasoning_effort_hint":"Необавезно. Шаље се крајњој тачки као `reasoning_effort`; прихваћене вредности се разликују од пружаоца до пружаоца (на пример `low`, `high` или `max`). SolidCraft никад не мења вредност коју овде поставите. Оставите празно да се ништа не шаље и да се задржи подразумевана вредност пружаоца.",
"ui.ai_remove":"Уклони",
"ui.ai_request_timed_out":"Модел је трајао дуже од {seconds} s. Временско ограничење захтева за ову крајњу тачку можете повећати у Подешавања › Асистент.",
"ui.emboss_wrap_note":"Профили од ортогоналних линија тангентни на један подржани цилиндар омотавају се аутоматски. Изаберите зид да бисте изабрали циљ.",
"ui.end_radius":"Крајњи полупречник",
@@ -4480,7 +4610,9 @@
"ui.equation_explicit":"Експлицитни",
"ui.equation_form":"Облик",
"ui.equation_note":"Променљива је обичан број: sin(t) је узима у радијанима. Резултат без јединице је у јединици дизајна.",
"ui.equation_note_range":"Променљива је дужина, као и њен опсег: комбинујте је са параметрима дужине, а за sin() је поделите дужином. Резултат без јединице је у јединици дизајна.",
"ui.equation_parametric":"Параметарски",
"ui.equation_variable_unit":"Променљива има јединицу опсега",
"ui.hide_origin_note":"Нови дизајни почињу са скривеном фасциклом Исходиште. Дизајн задржава сопствено подешавање Исходишта када га прикажете или сакријете.",
"ui.history_sketch_listed_under":"Наведено испод {feature}",
"ui.history_title":"Временска трака",
"ui.history_toggle_names":"Прикажи или сакриј називе операција",
"ui.history_waits_for_editor":"Поништи, Понови и временска трака чекају док се не отвори уређивач операције",
"ui.hole":"Рупа",
"ui.hole_tap_type":"Врста навоја рупе",
"ui.hole_type":"Врста рупе",
@@ -4647,6 +4783,7 @@
"ui.insert_design.saved_file":"Дизајн {name} има несачуване промене, па је уметнута његова сачувана датотека. Сачувајте га, а затим покрените Ажурирај везе да бисте унели промене.",
"ui.insert_design.unsaved":"Несачуване промене",
"ui.inspect":"Прегледај",
"ui.instances":"Инстанце",
"ui.intersect":"Пресек",
"ui.isolate":"Изолуј",
"ui.join":"Споји",
@@ -4655,12 +4792,14 @@
"ui.joints":"Спојеви",
"ui.keyboard_shortcuts":"Пречице на тастатури",
"ui.language":"Језик",
"ui.lasso_select":"Ласо (превуците петљу слободном руком: узима све што је у целини унутра)",
"ui.layout_compact":"Компактно",
"ui.layout_floating":"Плутајуће",
"ui.length":"Дужина",
"ui.length_decimals":"Децимале дужине",
"ui.light":"Светла",
"ui.line":"Линија",
"ui.line_arc_hint":"Тангентни лук: кликните крај лука. Поново се задржите на последњој тачки за линије; десни клик или Esc за завршетак",
"ui.link_copies":"Повежи идентичне копије",
"ui.link_copies_keep":"Задржи",
"ui.link_copies_link":"Повежи",
@@ -4749,6 +4888,7 @@
"ui.part_size_shared":"Поново гради део, замењујући све додате операције. Сви примерци ове компоненте се ажурирају.",
"ui.paste":"Налепи",
"ui.path":"Путања",
"ui.pattern_object_type_tip":"Тела: пуни облици, бирају се у приказу или у стаблу модела; свако се копира у целини.\nОперације: кораци временске траке, као што су екструзија или рупа, бирају се на временској траци или на лицу које су направили; корак се понавља.\nСкица није ни једно ни друго: поновите њене криве помоћу алата Низ или Пресликај у самој скици или је прво екструдирајте.",
"ui.pattern_on_path":"Низ дуж путање",
"ui.perforate_margin_default":"из пречника",
"ui.perforate_pitch":"Корак",
@@ -4794,9 +4934,9 @@
"ui.polygon":"Полигон",
"ui.preferences":"Подешавања",
"ui.press_a_key":"притисните тастер…",
"ui.print_face_body_not_sent":"Тело те површине се не шаље: прво га додајте у Тела",
"ui.print_face_cleared":"{body}: површина за штампу уклоњена",
"ui.print_face_input":"Површина за штампу",
"ui.print_face_one_body":"Површина за штампу припада једном телу: пошаљите то тело само да бисте је променили",
"ui.print_face_pick":"Изаберите равну површину пуног тела да постане површина за штампу",
"ui.print_face_set":"{body}: површина за штампу постављена; Пошаљи у слајсер полаже тело на њу",
"ui.view_angles_convention":"Степени око осе нагоре. Скретање 0° је Поглед спреда, 90° слева, −90° здесна, 180° отпозади; корак 90° је Поглед одозго; позитивно ваљање окреће модел у смеру казаљке на сату.",
"ui.view_angles_help":"Приказује корак, скретање и ваљање приказа у степенима и његову пројекцију испод гизма оријентације. Кликните на очитање да унесете тачне углове.",
"Sections (one sketch each)":"Sektioner (en skiss per sektion)",
"Select Other":"Markera annan",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Markera annan: håll vänsterknappen stilla på modellen (eller högerklicka › Markera annan…) för att lista allt under markören; klicka igen på samma plats för att markera nästa objekt där. Dubbelklicka med mittenknappen för att gå till Hem (Inställningar › Navigering).",
"config.rule_parameter_columns":"Endast parametrar med en kolumn i tabellen listas. Lägg till en kolumn med Lägg till kolumn (+) för att använda parametern här.",
"config.rule_suppression_columns":"Endast funktioner med en kolumn Undertryck i tabellen listas. Lägg till en kolumn med Lägg till kolumn (+) för att styra undertryckningen här.",
"contact.components_count":"{count} komponenter",
"contact.enabled_label":"aktiverad",
"coupling.gear_1":"Kugghjul 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Mått: {name}",
"dialog.edit_title":"REDIGERA {title}",
"dialog.no_shown_body":"Ingen synlig kropp att ändra: visa en, eller välj Ny kropp",
"dialog.pattern_sketch_not_object":"Välj kroppar eller funktioner: en skiss är ingetdera. Upprepa dess kurvor med skissens egna Mönster eller Spegla, eller extrudera den först.",
"dialog.selection_guidance":"Markera en indata för att ändra den. Klicka på markerade objekt för att ta bort dem; Ctrl/Cmd-klick växlar dem också. Granska förhandsvisningen och tryck sedan på OK.",
"dialog.selection_step":"{step} av {total}: Markera {input}",
"dialog.step":"Steg",
"document.changed_on_disk":"{name} har ändrats på disken",
@@ -1420,6 +1460,7 @@
"help.construct.axis.two_points":"Skapar en konstruktionsaxel genom två punkter, hörn eller skisspunkter. Använd den för en axel som löper mellan två kända lägen.",
"help.construct.plane.along_path":"Skapar ett konstruktionsplan vinkelrätt mot en kant eller kurva, på en position längs den. Använd det för att skissa en profil för en svepning eller ett tvärsnitt av en bana.",
"help.construct.plane.at_angle":"Skapar ett konstruktionsplan som är vridet i en vinkel från ett plan eller en yta, runt en axel eller kant. Använd det för lutande skisser, till exempel ett vinklat fäste.",
"help.construct.plane.axis_point":"Skapar ett konstruktionsplan som innehåller en axel och en punkt utanför den axeln. Välj en origoaxel eller konstruktionsaxel, en rak kant eller skisslinje och sedan ett hörn, en skisspunkt eller en konstruktionspunkt. En punkt på axeln kan inte definiera ett entydigt plan.",
"help.construct.plane.midplane":"Skapar ett konstruktionsplan mitt emellan två plan eller plana ytor, eller som delar vinkeln där de möts i en vinkel. Använd det som symmetriplan vid spegling.",
"help.construct.plane.offset":"Skapar ett konstruktionsplan parallellt med ett plan eller en plan yta, på ett avstånd eller genom en punkt. Använd det för att skissa på en bestämd höjd över en yta.",
"help.construct.plane.perpendicular":"Skapar ett konstruktionsplan som innehåller en linje eller kant och står vinkelrätt mot ett plan eller en yta. Använd det för att skissa upprätt på en modell längs en kant.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Kontrollera ledtypen (till exempel Styv), fixering, ledgränser och parameterstyrda värden.",
"joint_move.blocked_title":"Det går inte att flytta den här delen",
"joint_move.coarse":"Rotationssteg nära axeln (°)",
"joint_move.conflict":"En led på den här delen står i konflikt med de andra: {joint}.",
"joint_move.conflict_hint":"Redigera, undertryck eller ta bort den konflikterande leden så att de andra lederna kan placera delen.",
"joint_move.distance":"Avstånd från start",
"joint_move.done":"Klar",
"joint_move.fine":"Rotationssteg långt från axeln (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"Spår {number}",
"nav.alias.help":"Shift+Alt+vänsterdrag orbiterar, Shift+Alt+mittdrag panorerar, Shift+Alt+högerdrag zoomar; mittdrag panorerar också och högerdrag orbiterar",
"nav.blender.help":"Mittdrag orbiterar, Shift+mittdrag panorerar, Ctrl+mittdrag zoomar; högerdrag påverkar inte kameran",
"nav.creo.help":"Mittdrag orbiterar, Shift+mittdrag panorerar, Ctrl+mittdrag i lodrät led zoomar (neråt för att zooma in); rullning med hjulet zoomar",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Mus och 3D-mus roterar genom båda polerna och bevarar rollvinkeln. Axelsnappning med Shift är inaktiverad.",
"nav.free_orbit.label":"Fri orbit",
"nav.free_orbit.snap_help":"Mus och 3D-mus roterar genom båda polerna och bevarar rollvinkeln. Håll ned Shift under ett orbitdrag för att snappa vyriktningen och rollvinkeln.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+vänsterdrag panorerar, Shift+Alt+vänster zoomar, Ctrl+vänsterdrag på tom yta orbiterar",
"nav.nx.help":"Mittdrag orbiterar, Shift+mittdrag panorerar (i NX: mitten + höger), Ctrl+mittdrag zoomar (i NX: mitten + vänster); högerdrag påverkar inte kameran",
"nav.openscad.help":"Vänsterdrag på tomt utrymme orbiterar, Shift+vänsterdrag markerar med ruta, drag på skissgeometri redigerar; höger- eller mittdrag panorerar, Shift+höger- eller Shift+mittdrag zoomar",
"nav.perspective.sketch":"Skissredigering använder ortografisk vy. Slutför skissen för att växla till perspektiv.",
"nav.right_drag_orbits.help":"Av: ett högerdrag påverkar inte kameran och högerknappen öppnar bara snabbmenyn. Om du väljer musmappningen SolidWorks stängs det av.",
"parts.family.washer_uss":"Plan bricka, USS (bred)",
"parts.holes":"Hål (valfritt)",
"parts.placement_hint":"välj ett eller flera hål för att sätta en del i varje, eller OK placerar den i origo",
"parts.system":"Enhetssystem",
"parts.system.inch":"Tum",
"parts.system.metric":"Metriskt",
"pattern.alignment_2":"Justering 2",
"pattern.alignment_hint":"Antalet inkluderar originalet. Centrera balanserar kopiorna; Vänd väljer den extra sidan för jämna totaler.",
"pattern.direction_1":"Riktning 1",
@@ -2113,6 +2166,8 @@
"prefs.button_left":"Dra med vänsterknapp",
"prefs.button_middle":"Dra med mittknapp",
"prefs.button_right":"Dra med högerknapp",
"prefs.carousel_next":"Nästa",
"prefs.carousel_previous":"Föregående",
"prefs.choose_font":"Välj teckensnittsfil…",
"prefs.click":"Klick",
"prefs.contact_shading":"Mjuk kontaktskuggning",
@@ -2125,6 +2180,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Krökta ytor",
"prefs.curves":"Krökta ytor",
"prefs.cut_preview_tint":"Visa borttaget material i rött",
"prefs.cut_preview_tint_help":"En förhandsvisning fyller det material som en funktion tar bort, och den form den ersätter, med ett rött genomskinligt spöke. När det är av är fyllningarna helt genomskinliga och bara deras konturer ritas.",
"prefs.dark_parts_shading":"Behåll formen på mörka delar",
"prefs.dark_parts_shading_help":"Skuggar vyn i linjärt ljus med en mjuk himmelsfyllnad, så att mörka ytor behåller en gradient i stället för att bli svarta",
"prefs.dead_zone_note":"Det skrafferade bandet är dödzonen: rörelse inom det ignoreras.",
"prefs.default":"standard",
"prefs.design":"Standardvärden för konstruktioner",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Kanter och skuggning",
"prefs.extend":"Förläng",
"prefs.extra_navigation":"Ctrl+vänsterdrag på ett tomt område orbiterar; håll Blanksteg för att panorera.",
"prefs.extrude_view_isometric":"Vrid vyn till isometrisk när Extrudera öppnas",
"prefs.extrude_view_return":"Gå tillbaka till den tidigare vyn när Extrudera stängs",
"prefs.follows_os":"Följer operativsystemet",
"prefs.font":"Teckensnitt",
"prefs.font_fallback":"Tecken som det valda teckensnittet saknar ersätts av det inbyggda teckensnittet, så ingen etikett visar en tom ruta.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Automatisk",
"prefs.graphics_card_missing":"Det sparade grafikkortet är inte tillgängligt; Automatisk används.",
"prefs.graphics_card_restart":"Träder i kraft efter att SolidCraft startats om. WGPU_ADAPTER_NAME åsidosätter detta val.",
"prefs.graphics_card_unused":"Det sparade grafikkortet användes inte för det här fönstret. Kortet som används visas i Hjälp › Om och i statusfältet. Prova Automatisk, eller ange WGPU_ADAPTER_NAME som en unik del av kortets namn.",
"prefs.graphics_note":"Avväg hastighet mot jämnhet. Varje val visar sin effekt på ett exempel.",
"prefs.hide_constraint_glyphs_zoomed_out":"Dölj villkorssymboler vid utzoomning",
@@ -2168,6 +2230,8 @@
"prefs.history_sketches_note":"Med Skisser inställt på Under sin funktion listar historiken till vänster varje skiss en nivå in, under den första funktionen som byggts från den, så snart den är bred nog för namn. Tidslinjen längst ned behåller alltid skapandeordningen.",
"prefs.history_sketches_under_feature":"Under sin funktion",
"prefs.hold_stop_snapping":"Håll nedtryckt för att stoppa snappning",
"prefs.home_fit_size":"Storlek för Hem och Anpassa",
"prefs.home_fit_size_note":"Hur mycket av vyn modellen fyller när Hem, Anpassa, en öppnad konstruktion eller en vyändring i navigatorn ramar in den, oavsett om inställningen nedan är på eller inte. 100 %: fyller vyn mellan panelerna, kompassen och navigeringsfältet.",
"prefs.icons_only":"Endast ikoner",
"prefs.imported_file":"Importerad fil",
"prefs.in_browser":"I webbläsaren",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Gränssnittsspråk",
"prefs.interface_note":"Hur SolidCraft ser ut och var dess delar placeras.",
"prefs.interval_minutes":"{n} min",
"prefs.invert_curved_roll_arrows":"Invertera de böjda rullningspilarna",
"prefs.invert_curved_roll_arrows_note":"De två böjda pilarna vid kubens hörn rullar vyn i skärmplanet. På: medurspilen rullar moturs och moturspilen rullar medurs. Av: varje pil rullar vyn åt det håll den kröker sig.",
"prefs.invert_navigator_arrows":"Invertera rotationspilarna på vykuben",
"prefs.invert_navigator_arrows_note":"Pilarna runt kuben orbiterar kameran åt det håll de pekar, som i Fusion och Inventor: pilen till vänster pekar åt höger och svänger kameran åt höger. Av: en pil roterar kuben mot den sida den sitter på, så den vänstra pilen svänger kameran åt vänster. De böjda rullningspilarna påverkas inte.",
"prefs.keep_work_on_tab_switch":"Behåll dialoger och verktyg öppna när du byter konstruktion",
"prefs.keep_work_on_tab_switch_note":"Varje konstruktionsflik behåller sin öppna dialog eller sitt öppna verktyg, med det du har valt och skrivit i den, och sin flik i menyfliksområdet. De finns kvar när du kommer tillbaka till konstruktionen. Av: att byta konstruktion avbryter dem och visar fliken Modell.",
"prefs.labels":"Etiketter",
"prefs.language_system":"System",
"prefs.layout":"Layout",
"prefs.layout_note":"Kompakt dockar paneler mot fönsterkanterna. Genomskinlig webbläsare finns i Flytande. Ändra assistentens sida på sidan Assistent.",
"prefs.left":"Vänster",
"prefs.left_click":"Vänsterklick",
"prefs.line_drag_draws_one":"Tryck och dra ritar en linje",
"prefs.line_drag_draws_one_note":"I verktyget Linje ritar ett tryck, ett drag och ett släpp en linje från där du tryckte till där du släppte, och där slutar den. Klick ritar fortfarande en kedja. Av: ett drag placerar en punkt där det släpps, som ett klick gör.",
"prefs.line_hover_tangent_arc":"Vila på en linjes sista punkt för att växla till en tangentbåge",
"prefs.line_hover_tangent_arc_note":"I verktyget Linje: när ett segment har ritats, flytta pekaren bort från kedjans sista punkt, kom tillbaka och håll pekaren stilla på den: nästa klick avslutar en tangentbåge, och samma gest går tillbaka till linjer. Av: att vila där gör ingenting.",
"prefs.linked_designs":"Länkade konstruktioner",
"prefs.live_input":"Liveinmatning",
"prefs.live_preview":"Liveförhandsvisning",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Musmappning",
"prefs.navigation":"Navigering",
"prefs.navigation_note":"Hur musen, styrplattan och 3D-musen flyttar vyn.",
"prefs.navigator_fit":"Anpassa modellen efter en vyändring i navigatorn",
"prefs.navigator_fit_note":"En yta, ett hörn eller en pil på vykuben, eller en axel på orienteringsgizmot, tittar också mot modellens mitt från det enda avstånd som får den att rymmas från alla sidor (dess begränsningssfär). Hem använder samma zoom och centrum medan detta är på, så vyer som väljs efteråt bara vrids. Av: vyn vrids på stället och behåller sitt mål och sin zoom.",
"prefs.network_host_remove":"Ta bort",
"prefs.network_locations":"Tillåt nätverksplatser i konstruktioner",
"prefs.network_locations_note":"Av: en konstruktions länkade filer på en annan dator (\\\\server\\share) öppnas bara från de servrar som listas här, eller efter att du tillåtit en när du tillfrågas.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Placering",
"prefs.prefer_free_sketch_points":"Föredra flyttbara skisspunkter när punkter överlappar",
"prefs.preview_choices":"Förhandsvisning av dina val",
"prefs.preview_tint_new_faces":"Färglägg ny yta i en förhandsvisning",
"prefs.preview_tint_new_faces_help":"En förhandsvisning av en funktion som ändrar en kropp kan rita den yta den lägger till i förhandsvisningsfärgen. När det är av ritas kroppen som sig själv.",
"prefs.print_face_highlight":"Markering av utskriftsyta",
"prefs.print_face_highlight_tip":"Hur starkt en kropps utskriftsyta färgas och konturmarkeras i vyn. 0 % visar ingen markering.",
"prefs.profile_active":"Aktiv profil",
@@ -2254,6 +2331,8 @@
"prefs.render_previous_geometry_budget":"Använd tidigare geometribudget för renderingsförhandsvisning",
"prefs.render_previous_geometry_budget_help":"Återställ den tidigare fasta geometrigränsen (512 MiB på 64-bitars dator, 128 MiB i övrigt) i stället för den enhetsbaserade budgeten.",
"prefs.reports_saved":"{n} sparade",
"prefs.ribbon_click_ends_tool":"Ett klick på knappen för det pågående verktyget avslutar det",
"prefs.ribbon_click_ends_tool_note":"Ett klick på den tända knappen i menyfliksområdet för skissverktyget som används avslutar verktyget, så att klick i vyn markerar igen. Av: klicket startar verktyget igen.",
"prefs.ribbon_reveal":"Visa sökresultat i menyfliksområdet",
"prefs.ribbon_reveal_note":"När du håller pekaren över ett resultat i Sök kommandon visas var kommandot finns i menyfliksområdet: dess flik, dess knapp eller dess rad i en panels rullgardinsmeny. Ett kommando som startas från sökningen blinkar där, och ett pågående kommando från en rullgardinsmeny markerar sin panel.",
"prefs.right_click":"Högerklick",
@@ -2283,6 +2362,8 @@
"prefs.sketch_exit_view.previous":"Återgå till föregående vy",
"prefs.sketch_exit_view.unless_rotated":"Återgå om inte roterad",
"prefs.sketch_exit_view_note":"Dit vyn går efter Slutför skiss, Avbryt eller en dubbel Esc-tryckning.",
"prefs.sketch_face_activates_part":"Att skissa på en dels yta gör delen aktiv",
"prefs.sketch_face_activates_part_note":"En skiss som påbörjas på en yta på en annan komponents kropp aktiverar först den komponenten, så att skissen tillhör den och stannar hos den delen i webbläsaren. Delen förblir aktiv efteråt. Av: skissen tillhör den aktiva komponenten.",
"prefs.sketch_open_look_at":"Vrid vyn mot en skiss när den öppnas",
"prefs.sketch_open_look_at_note":"Av: att skapa eller redigera en skiss lämnar vyn som den är. Titta på riktar vyn mot skissen när du vill.",
"prefs.sketch_recent_snap":"Snappa automatiskt till senaste centrum och mittpunkter",
@@ -2314,6 +2395,24 @@
"prefs.status_error":"Fel",
"prefs.status_selected":"Markerad",
"prefs.status_warning":"Varning",
"prefs.structure.appearance":"Utseende",
"prefs.structure.appearance_note":"Färger, text och tillgänglighet.",
"prefs.structure.in_profile":"I profilen",
"prefs.structure.layout":"Layout",
"prefs.structure.layout_note":"Var fönstrets delar sitter.",
"prefs.structure.look":"Stil",
"prefs.structure.measure_pointer":"Mätning och pekare",
"prefs.structure.mouse3d":"3D-mus",
"prefs.structure.mouse3d_note":"SpaceMouse och SpaceNavigator.",
"prefs.structure.navigation_note":"Mus och styrplatta. 3D-musen har en egen sida.",
"prefs.structure.profile":"Profil",
"prefs.structure.profile_edited":"Ändrad sedan den sparades",
"prefs.structure.profile_hover":"Sparad i inställningsprofiler",
"prefs.supersampling_brief":"Ritar vyn större och filtrerar ned den: mycket skarp, och tyngre.",
"prefs.tab_accent_note":"Accentfärgen följer den aktiva fliken",
"prefs.theme_file":"temafil",
@@ -2501,6 +2600,10 @@
"render.base_color":"Basfärg · sRGB",
"render.base_metallic":"Metallandel",
"render.base_opaque_only":"Den här redigeraren bevarar semantiken för ogenomskinliga kroppar. Använd de särskilda glasreglagen för optisk transmission.",
"render.bloom_help":"Kreativ glöd, bara i utdata, från positiva linjära högdagrar och utspridd med tre normaliserade boxpass. Radien anges i utdatapixlar. Läggs till i linjärt visningsljus före sRGB; ingen lins- eller volymeffekt och ingen förbättring av konvergensen. Rå EXR förblir oförändrad.",
"render.bloom_opaque":"Bloom kräver ogenomskinlig utdata. Transparent PNG avvisas i stället för att i det tysta plattas ut.",
@@ -2611,6 +2714,13 @@
"render.choose_look":"Välj först en stil i Utseenden",
"ui.ai_reasoning_effort_hint":"Valfritt. Skickas till slutpunkten som `reasoning_effort`; vilka värden som accepteras skiljer sig mellan leverantörer (till exempel `low`, `high` eller `max`). Ett värde som du anger här ersätts aldrig av SolidCraft. Lämna fältet tomt för att inte skicka något och behålla leverantörens standard.",
"ui.ai_remove":"Ta bort",
"ui.ai_request_timed_out":"Modellen tog längre tid än {seconds} s. Du kan öka tidsgränsen för begäran för den här slutpunkten i Inställningar › Assistent.",
"ui.ai_request_timeout":"Tidsgräns för begäran",
@@ -4348,14 +4474,21 @@
"ui.construction.contact_hint":"Tangent: välj en cirkel/båge eller öppen spline/konisk kurva och sedan beröringspunkten (friformskurvor: ändpunkter)",
"ui.construction.external_hint":"Tangent: välj en cirkel eller båge, en yttre punkt och sedan önskad lösning",
"ui.construction.free_hint":"Konstruktionslinje: klicka på två punkter; högerklicka för att börja om",
"ui.construction.normal_needs_length":"En oändlig linje är alltid en konstruktionslinje: skriv en längd för att rita en normal linje",
"ui.construction.point_hint":"Konstruktionslinje: klicka på punkten som linjen ska gå genom",
"ui.construction.reference_hint":"Konstruktionslinje: välj en rak linje och sedan en punkt; högerklicka för att byta referens",
"ui.construction.ribbon_label":"Hjälplinjer",
"ui.construction.side_hint":"Konstruktionslinje: klicka på den sida som linjen går mot; högerklicka för att börja om",
"ui.edit_sketch_empty":"Inga skisser att redigera",
"ui.ellipse":"Ellips",
"ui.emboss_wrap_note":"Ortogonala linjeprofiler som tangerar en stödd cylinder lindas automatiskt runt den. Välj en vägg för att välja ett mål.",
"ui.end_radius":"Slutradie",
@@ -4480,7 +4615,9 @@
"ui.equation_explicit":"Explicit",
"ui.equation_form":"Form",
"ui.equation_note":"Variabeln är ett vanligt tal: sin(t) tolkar den i radianer. Ett resultat utan enhet anges i konstruktionens enhet.",
"ui.equation_note_range":"Variabeln är en längd, liksom dess intervall: blanda den med längdparametrar och dividera den med en längd för sin(). Ett resultat utan enhet anges i konstruktionens enhet.",
"ui.equation_parametric":"Parametrisk",
"ui.equation_variable_unit":"Variabeln har intervallets enhet",
"ui.equation_x_of_t":"x(t)",
"ui.equation_y_of_t":"y(t)",
"ui.equation_y_of_x":"y(x)",
@@ -4612,6 +4749,7 @@
"ui.hideOrigin":"Dölj origo",
"ui.hidePlanes":"Dölj plan",
"ui.hideProfile":"Dölj profil",
"ui.hide_component_history":"Dölj dess historik",
"ui.hide_origin_by_default":"Dölj origo som standard",
"ui.hide_origin_note":"Nya konstruktioner startar med mappen Origo dold. En konstruktion behåller sin egen Origo-inställning när du har visat eller dolt den.",
"ui.history_sketch_listed_under":"Listad under {feature}",
"ui.history_title":"Historik",
"ui.history_toggle_names":"Visa eller dölj funktionsnamn",
"ui.history_waits_for_editor":"Ångra, Gör om och Historik väntar tills funktionsredigeraren har öppnats",
"ui.hole":"Hål",
"ui.hole_tap_type":"Typ av gängning för hål",
"ui.hole_type":"Hålets typ",
@@ -4647,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} har osparade ändringar, så dess sparade fil infogades. Spara den och kör sedan Uppdatera länkar för att hämta in ändringarna.",
"ui.insert_design.unsaved":"Osparade ändringar",
"ui.inspect":"Granska",
"ui.instances":"Instanser",
"ui.intersect":"Skärning",
"ui.isolate":"Isolera",
"ui.join":"Sammanfoga",
@@ -4655,12 +4797,14 @@
"ui.joints":"Leder",
"ui.keyboard_shortcuts":"Kortkommandon",
"ui.language":"Språk",
"ui.lasso_select":"Lasso (dra en frihandsslinga: markerar allt som ligger helt innanför)",
"ui.layout_compact":"Kompakt",
"ui.layout_floating":"Flytande",
"ui.length":"Längd",
"ui.length_decimals":"Längddecimaler",
"ui.light":"Ljust",
"ui.line":"Linje",
"ui.line_arc_hint":"Tangentbåge: klicka på bågens slut. Vila på den sista punkten igen för linjer; högerklicka eller Esc för att avsluta",
"ui.link_copies":"Länka identiska kopior",
"ui.link_copies_keep":"Behåll",
"ui.link_copies_link":"Länka",
@@ -4749,6 +4893,7 @@
"ui.part_size_shared":"Återbygger delen och ersätter eventuella tillagda funktioner. Alla förekomster av denna komponent uppdateras.",
"ui.paste":"Klistra in",
"ui.path":"Bana",
"ui.pattern_object_type_tip":"Kroppar: solida former som väljs i vyn eller webbläsaren; var och en kopieras hel.\nFunktioner: steg i historiken, till exempel en extrudering eller ett hål, som väljs i historiken eller på en yta som de har skapat; steget upprepas.\nEn skiss är ingetdera: upprepa dess kurvor med skissens egna Mönster eller Spegla, eller extrudera den först.",
"ui.pattern_on_path":"Mönster på bana",
"ui.perforate_margin_default":"från diametern",
"ui.perforate_pitch":"Stigning",
@@ -4794,9 +4939,9 @@
"ui.polygon":"Polygon",
"ui.preferences":"Inställningar",
"ui.press_a_key":"tryck på en tangent…",
"ui.print_face_body_not_sent":"Den ytans kropp skickas inte: lägg först till den i Kroppar",
"ui.view_angles_convention":"Grader runt uppaxeln. Girning 0° är vyn framifrån, 90° från vänster, −90° från höger, 180° bakifrån; lutning 90° är vyn ovanifrån; en positiv rullning vrider modellen medurs.",
"ui.view_angles_help":"Visar vyns lutning, girning och rullning i grader samt dess projektion under orienteringsgizmot. Klicka på avläsningen för att skriva in exakta vinklar.",
"ui.viewport_status_clear_hint":"Stäng av {name} · Esc",
@@ -5087,7 +5236,7 @@
"update.check_unavailable":"Sökning efter uppdateringar är inte tillgänglig för den här installationen.",
"update.checking":"Söker…",
"update.copy":"Kopiera",
"update.dmg_opened":"Diskavbilden är öppen och verifierad: dra SolidCraft till Program och ersätt den gamla kopian, starta sedan om SolidCraft.",
"update.dmg_opened":"Diskavbilden är öppen och verifierad: avsluta SolidCraft, dra det nya SolidCraft till Program och ersätt den gamla kopian, öppna sedan SolidCraft igen.",
"update.download":"Ladda ned",
"update.download_open":"Ladda ned och öppna",
"update.downloading":"Laddar ned och verifierar… {done} av {total} MB",
@@ -5131,6 +5280,7 @@
"web.open_link":"Öppna länkad konstruktion?",
"web.open_link_confirm":"Det finns osparade ändringar. Öppna den länkade konstruktionen i en ny flik?",
"Sections (one sketch each)":"Kesitler (her biri bir eskiz)",
"Select Other":"Başka Seç",
"Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).":"Diğerini seç: İmlecin altındaki her şeyi listelemek için sol tuşu model üzerinde hareket ettirmeden basılı tutun (veya sağ tık › Diğerini seç…); oradaki bir sonraki öğeyi seçmek için aynı noktaya tekrar tıklayın. Başlangıç görünümüne dönmek için orta tuşla çift tıklayın (Ayarlar › Gezinme).",
"color.recent_help":"Herhangi bir renk alanında seçtiğiniz renkler burada görünür",
"color.red":"Kırmızı",
"color.saturation":"Doygunluk (yüzde)",
"color.saturation_value":"Doygunluk ve değer",
"color.selected":"Seçili renk",
"color.step_down":"Bir adım aşağı",
"color.step_up":"Bir adım yukarı",
"color.value":"Değer, yani parlaklık (yüzde)",
"config.column_filter_empty":"Eşleşen sütun yok",
"config.rule_parameter_columns":"Yalnızca tabloda sütunu olan parametreler listelenir. Burada kullanmak için Sütun Ekle (+) ile bir sütun ekleyin.",
"config.rule_suppression_columns":"Yalnızca tabloda Bastır sütunu olan özellikler listelenir. Burada denetlemek için Sütun Ekle (+) ile bir sütun ekleyin.",
"contact.components_count":"{count} bileşen",
"contact.enabled_label":"etkin",
"coupling.gear_1":"Dişli 1",
@@ -1335,9 +1370,14 @@
"dialog.dimension_name":"Ölçü: {name}",
"dialog.edit_title":"{title} düzenleniyor",
"dialog.no_shown_body":"Değiştirilecek görünür gövde yok: bir gövdeyi gösterin ya da Yeni gövde seçin",
"dialog.pattern_sketch_not_object":"Gövdeleri veya özellikleri seçin: eskiz bunlardan hiçbiri değildir. Eğrilerini eskizin kendi Dizi veya Aynala komutuyla tekrarlayın ya da önce ekstrüzyon yapın.",
"dialog.selection_guidance":"Değiştirmek için bir girdi seçin. Kaldırmak için seçili nesnelere tıklayın; Ctrl/Cmd+tıklama ile de seçime ekleyip çıkarabilirsiniz. Önizlemeyi kontrol edin ve ardından OK'e basın.",
"help.construct.axis.two_points":"İki noktadan, köşe noktasından veya eskiz noktasından geçen bir yapı ekseni oluşturur. Bilinen iki konum arasında uzanan bir eksen için kullanın.",
"help.construct.plane.along_path":"Bir kenara veya eğriye dik, onun boyunca bir konumda yapı düzlemi oluşturur. Süpürme için bir profili ya da bir yolun kesitini eskizlemek için kullanın.",
"help.construct.plane.at_angle":"Bir düzlemden veya yüzden, bir eksen ya da kenar etrafında belirli bir açıyla döndürülmüş yapı düzlemi oluşturur. Açılı bir köşebent gibi eğimli eskizler için kullanın.",
"help.construct.plane.axis_point":"Bir eksen ile bu eksenin dışında kalan bir noktayı içeren yapı düzlemi oluşturur. Bir orijini ya da yapı eksenini, bir düz kenarı veya eskiz çizgisini, ardından bir köşe noktasını, eskiz noktasını ya da yapı noktasını seçin. Eksen üzerindeki bir nokta tek bir düzlem belirleyemez.",
"help.construct.plane.midplane":"İki düzlemin veya düz yüzün tam ortasında, bir açıyla buluşuyorlarsa onları ikiye bölen yapı düzlemi oluşturur. Aynalama için simetri düzlemi olarak kullanın.",
"help.construct.plane.offset":"Bir düzleme veya düz yüze paralel, belirli bir mesafede ya da bir noktadan geçen yapı düzlemi oluşturur. Bir yüzün belirli bir yükseklik üstünde eskiz çizmek için kullanın.",
"help.construct.plane.perpendicular":"Bir çizgiyi veya kenarı içeren ve bir düzleme ya da yüze dik duran yapı düzlemi oluşturur. Bir modelde kenar boyunca dik duran eskizler çizmek için kullanın.",
@@ -1796,6 +1837,8 @@
"joint_move.blocked_hint":"Eklem türünü (ör. Sabit), parçanın sabitlenme durumunu, eklem sınırlarını ve parametreyle belirlenen değerleri kontrol edin.",
"joint_move.blocked_title":"Bu parça taşınamıyor",
"joint_move.coarse":"Eksene yakın dönüş adımı (°)",
"joint_move.conflict":"Bu parçanın bir bağlantısı diğerleriyle çakışıyor: {joint}.",
"joint_move.conflict_hint":"Diğer bağlantılar parçayı yerleştirebilsin diye çakışan bağlantıyı düzenleyin, bastırın veya silin.",
"joint_move.distance":"Başlangıçtan itibaren mesafe",
"joint_move.done":"Tamam",
"joint_move.fine":"Eksenden uzak dönüş adımı (°)",
@@ -1895,6 +1938,8 @@
"motion.track_name":"İz {number}",
"nav.alias.help":"Shift+Alt+sol sürükleme döndürür, Shift+Alt+orta kaydırır, Shift+Alt+sağ yakınlaştırır; orta sürükleme ayrıca kaydırır, sağ sürükleme döndürür",
"nav.creo.help":"Orta sürükleme döndürür, Shift+orta kaydırır, Ctrl+orta dikey sürükleme yakınlaştırır (yakınlaştırmak için aşağı); tekerleği kaydırarak da yakınlaştırabilirsiniz",
"nav.creo.label":"Creo",
"nav.free_orbit.help":"Fare ve 3B fare, her iki kutuptan geçerek döndürür ve yuvarlanmayı korur. Shift eksen hizalama devre dışı.",
"nav.free_orbit.label":"Serbest döndürme",
"nav.free_orbit.snap_help":"Fare ve 3B fare, her iki kutuptan geçerek döndürür ve yuvarlanmayı korur. Görünüm yönünü ve yuvarlanmayı hizalamak için döndürme sürüklemesi sırasında Shift tuşunu basılı tutun.",
@@ -1904,6 +1949,7 @@
"nav.hfss.help":"Alt+sol sürükleme kaydırır, Shift+Alt+sol yakınlaştırır, boş alanda Ctrl+sol sürükleme döndürür",
"nav.inventor.help":"Orta sürükleme kaydırır, Shift+orta döndürür, Ctrl+orta yakınlaştırır, sağ sürükleme döndürür",
"nav.maya.help":"Alt+sol sürükleme döndürür, Alt+orta kaydırır, Alt+sağ yakınlaştırır; orta sürükleme ayrıca kaydırır",
"nav.nx.help":"Orta sürükleme döndürür, Shift+orta kaydırır (NX'te orta + sağ), Ctrl+orta yakınlaştırır (NX'te orta + sol); sağ sürükleme kameraya dokunmaz",
"nav.openscad.help":"Boşlukta sol sürükleme döndürür, Shift+sol sürükleme kutu seçimi yapar, eskiz geometrisi sürükleyerek düzenlenir; sağ veya orta sürükleme kaydırır, Shift+sağ veya Shift+orta sürükleme yakınlaştırır",
"nav.perspective.sketch":"Eskiz düzenleme dik görünüm kullanır. Perspektife geçmek için eskizi bitirin.",
"nav.right_drag_orbits.help":"Kapalı: sağ sürükleme kameraya dokunmaz ve sağ tuş yalnızca bağlam menüsünü açar. SolidWorks fare eşlemesini seçmek bunu kapatır.",
"parts.family.washer_uss":"Düz rondela, USS (geniş)",
"parts.holes":"Delikler (isteğe bağlı)",
"parts.placement_hint":"her birine bir parça yerleştirmek için bir veya daha fazla delik seçin ya da OK ile orijine yerleştirin",
"parts.system":"Birim sistemi",
"parts.system.inch":"İnç",
"parts.system.metric":"Metrik",
"pattern.alignment_2":"Hizalama 2",
"pattern.alignment_hint":"Adet, orijinali içerir. Ortala, kopyaları iki yana dağıtır; çift adetlerde yönü ters çevirme, fazladan kopyanın hangi tarafta olacağını belirler.",
"pattern.direction_1":"Yön 1",
@@ -2113,6 +2166,8 @@
"prefs.button_left":"Sol sürükleme",
"prefs.button_middle":"Orta sürükleme",
"prefs.button_right":"Sağ sürükleme",
"prefs.carousel_next":"Sonraki",
"prefs.carousel_previous":"Önceki",
"prefs.choose_font":"Yazı tipi dosyası seçin…",
"prefs.click":"Tıklama",
"prefs.contact_shading":"Yumuşak temas gölgelemesi",
@@ -2125,6 +2180,10 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Eğri yüzeyler",
"prefs.curves":"Eğri yüzeyler",
"prefs.cut_preview_tint":"Kaldırılan malzemeyi kırmızı göster",
"prefs.cut_preview_tint_help":"Önizleme, bir özelliğin kaldırdığı malzemeyi ve yerine geçtiği şekli kırmızı, yarı saydam bir hayaletle doldurur. Kapalıyken bu dolgular tamamen saydamdır ve yalnızca dış hatları çizilir.",
"prefs.dark_parts_shading_help":"Görünümü doğrusal ışıkta, yumuşak bir gökyüzü dolgusuyla gölgele; böylece koyu yüzler siyaha dönmek yerine degradelerini korur",
"prefs.dead_zone_note":"Taramalı bant ölü bölgedir: içindeki hareket yok sayılır.",
"prefs.default":"varsayılan",
"prefs.design":"Tasarım varsayılanları",
@@ -2139,6 +2198,8 @@
"prefs.edges":"Kenarlar ve gölgeleme",
"prefs.extend":"Uzat",
"prefs.extra_navigation":"Boşlukta Ctrl+sol sürükleme döndürür; kaydırmak için Space tuşunu basılı tutun.",
"prefs.extrude_view_return":"Ekstrüzyon kapandığında önceki görünüme dön",
"prefs.follows_os":"İşletim sistemini izler",
"prefs.font":"Yazı tipi",
"prefs.font_fallback":"Seçilen yazı tipinde bulunmayan glifler yerleşik yazı tipine düşer, böylece hiçbir etiket boş kutu göstermez.",
@@ -2154,6 +2215,7 @@
"prefs.graphics_card_auto":"Otomatik",
"prefs.graphics_card_missing":"Kaydedilen ekran kartı kullanılamıyor; Otomatik kullanılıyor.",
"prefs.graphics_card_restart":"SolidCraft'ı yeniden başlattıktan sonra etkili olur. WGPU_ADAPTER_NAME bu seçimi geçersiz kılar.",
"prefs.graphics_card_unused":"Kaydedilen ekran kartı bu pencere için kullanılmadı; kullanılan kart Yardım › SolidCraft hakkında içinde ve durum çubuğunda gösterilir. Otomatik seçeneğini deneyin veya WGPU_ADAPTER_NAME değerini kart adının benzersiz bir bölümüne ayarlayın.",
"prefs.graphics_note":"Hızdan ödün verip pürüzsüzlük kazanın. Her seçenek, etkisini bir örnek üzerinde gösterir.",
"prefs.graphics_presets_note":"Ön ayarlar aşağıdaki seçimleri birlikte belirler.",
"prefs.history_sketches_note":"Eskizler, Özelliklerinin altında ayarlıyken, soldaki Geçmiş, adlar için yeterince geniş olduğunda her eskizi, kendisinden oluşturulan ilk özelliğin altında bir seviye içeride listeler. Alttaki zaman çizelgesi her zaman oluşturma sırasını korur.",
"prefs.hold_stop_snapping":"Yapışmayı durdurmak için basılı tutun",
"prefs.home_fit_size":"Ana görünüm ve Sığdır boyutu",
"prefs.home_fit_size_note":"Ana görünüm, Sığdır, açılan bir tasarım veya bir gezgin görünümü değişikliği modeli çerçevelediğinde modelin görünümün ne kadarını doldurduğu; aşağıdaki ayar açık olsa da olmasa da geçerlidir. %100: paneller, pusula ve gezinme çubuğu arasındaki görünümü doldurur.",
"prefs.icons_only":"Yalnızca simgeler",
"prefs.imported_file":"İçe aktarılan dosya",
"prefs.in_browser":"Tarayıcının içinde",
@@ -2176,13 +2240,22 @@
"prefs.interface_language":"Arayüz dili",
"prefs.interface_note":"SolidCraft'ın nasıl göründüğü ve parçalarının nerede durduğu.",
"prefs.interval_minutes":"{n} dk",
"prefs.invert_curved_roll_arrows":"Eğri yuvarlanma oklarını ters çevir",
"prefs.invert_curved_roll_arrows_note":"Küpün köşesindeki iki eğri ok, görünümü ekran düzlemi içinde yuvarlar. Açık: saat yönündeki ok saat yönünün tersine, saat yönünün tersindeki ok saat yönünde yuvarlar. Kapalı: her ok görünümü kıvrıldığı yöne yuvarlar.",
"prefs.invert_navigator_arrows":"Görünüm küpünün döndürme oklarını ters çevir",
"prefs.invert_navigator_arrows_note":"Küpün çevresindeki oklar kamerayı gösterdikleri yönde döndürür, tıpkı Fusion ve Inventor'daki gibi: soldaki ok sağı gösterir ve kamerayı sağa savurur. Kapalı: bir ok küpü bulunduğu tarafa doğru döndürür, yani sol ok kamerayı sola savurur. Kıvrık yuvarlanma okları bundan etkilenmez.",
"prefs.keep_work_on_tab_switch":"Tasarımlar arasında geçerken diyalogları ve araçları açık tut",
"prefs.keep_work_on_tab_switch_note":"Her tasarım sekmesi, açık diyaloğunu veya aracını, içinde seçtiklerinizi ve yazdıklarınızı ve şerit sekmesini korur. Tasarıma döndüğünüzde yeniden oradadırlar. Kapalı: tasarımlar arasında geçmek bunları iptal eder ve Model sekmesini gösterir.",
"prefs.labels":"Etiketler",
"prefs.language_system":"Sistem",
"prefs.layout":"Düzen",
"prefs.layout_note":"Sıkışık, panelleri pencere kenarlarına yerleştirir. Tarayıcı yarı saydamlığı Yüzen düzende kullanılabilir. Asistan tarafını Asistan sayfasından değiştirin.",
"prefs.left":"Sol",
"prefs.left_click":"Sol tıklama",
"prefs.line_drag_draws_one":"Basıp sürüklemek tek çizgi çizer",
"prefs.line_drag_draws_one_note":"Çizgi aracında basmak, sürüklemek ve bırakmak, basılan yerden bırakılan yere tek bir çizgi çizer ve çizim orada biter. Tıklamalar yine bir zincir çizer. Kapalı: sürükleme, tıklama gibi, bırakıldığı yere bir nokta koyar.",
"prefs.line_hover_tangent_arc":"Teğet yaya geçmek için bir çizginin son noktasında bekle",
"prefs.line_hover_tangent_arc_note":"Çizgi aracında bir çizgi parçası çizildikten sonra zincirin son noktasından uzaklaşın, geri gelin ve imleci üzerinde sabit tutun: sonraki tıklama bir teğet yayı bitirir, aynı hareket çizgilere geri döner. Kapalı: orada beklemek hiçbir şey yapmaz.",
"prefs.linked_designs":"Bağlı tasarımlar",
"prefs.live_input":"Canlı girdi",
"prefs.live_preview":"Canlı önizleme",
@@ -2206,6 +2279,8 @@
"prefs.mouse_mapping":"Fare eşlemesi",
"prefs.navigation":"Gezinme",
"prefs.navigation_note":"Farenin, trackpad'in ve 3B farenin görünümü nasıl hareket ettirdiği.",
"prefs.navigator_fit":"Gezgin görünümü değiştikten sonra modeli sığdır",
"prefs.navigator_fit_note":"Görünüm küpünün bir yüzü, köşesi veya oku ya da gizmonun bir ekseni, modelin ortasına da modeli her yönden sığdıran tek bir uzaklıktan (sınırlayıcı küresi) bakar. Bu açıkken Ana görünüm aynı yakınlaştırmayı ve merkezi kullanır; böylece sonrasında seçilen görünümler yalnızca döner. Kapalı: görünüm hedefini ve yakınlaştırmasını koruyarak yerinde döner.",
"prefs.network_host_remove":"Kaldır",
"prefs.network_locations":"Tasarımlarda ağ konumlarına izin ver",
"prefs.network_locations_note":"Kapalı: bir tasarımın başka bir bilgisayardaki bağlı dosyaları (\\\\server\\paylaşım) yalnızca burada listelenen sunuculardan veya sorulduğunda izin verdiklerinizden açılır.",
@@ -2226,6 +2301,8 @@
"prefs.placement":"Yerleşim",
"prefs.prefer_free_sketch_points":"Noktalar örtüştüğünde hareketli eskiz noktalarını tercih et",
"prefs.preview_tint_new_faces":"Önizlemede yeni yüzeyi renklendir",
"prefs.preview_tint_new_faces_help":"Bir gövdeyi değiştiren özelliğin önizlemesi, eklediği yüzeyi önizleme renginde çizebilir. Kapalıyken gövde olduğu gibi çizilir.",
"prefs.render_previous_geometry_budget_help":"Cihaza dayalı bütçe yerine önceki sabit geometri sınırını (64 bit masaüstünde 512 MiB, diğer yerlerde 128 MiB) geri getirir.",
"prefs.reports_saved":"{n} kayıtlı",
"prefs.ribbon_click_ends_tool":"Çalışan aracın düğmesine tıklamak onu bitirir",
"prefs.ribbon_click_ends_tool_note":"Kullanımdaki eskiz aracının yanan şerit düğmesine tıklamak aracı bitirir; böylece görünümdeki tıklamalar yeniden seçim yapar. Kapalı: tıklama aracı yeniden başlatır.",
"prefs.ribbon_reveal_note":"Komutlarda ara içindeki bir sonucun üzerine gelmek, komutun şeritte nerede olduğunu gösterir: sekmesini, düğmesini veya bir panelin açılır menüsündeki satırını. Aramadan başlatılan bir komut orada yanıp söner ve bir açılır menüden çalışan bir komut panelini işaretler.",
"prefs.sketch_exit_view_note":"Eskizi Bitir, İptal veya çift Esc sonrası görünümün nereye gittiği.",
"prefs.sketch_face_activates_part":"Bir parçanın yüzüne eskiz çizmek o parçayı etkin yapar",
"prefs.sketch_face_activates_part_note":"Başka bir bileşenin gövdesinin yüzünde başlatılan eskiz, önce o bileşeni etkinleştirir; böylece eskiz ona ait olur ve tarayıcıda o parçayla birlikte kalır. Parça sonrasında da etkin kalır. Kapalı: eskiz etkin bileşene ait olur.",
"prefs.sketch_open_look_at":"Eskiz açıldığında görünümü ona doğru döndür",
"prefs.sketch_open_look_at_note":"Kapalı: eskiz oluşturmak veya düzenlemek görünümü olduğu gibi bırakır. Bak komutu, istediğinizde görünümü eskize çevirir.",
"prefs.sketch_recent_snap":"Son merkezlere ve orta noktalara otomatik yapış",
@@ -2314,7 +2395,24 @@
"prefs.status_error":"Hata",
"prefs.status_selected":"Seçildi",
"prefs.status_warning":"Uyarı",
"prefs.structure.appearance":"Görünüm",
"prefs.structure.appearance_note":"Renkler, metin ve erişilebilirlik.",
"render.bloom_help":"Üç normalize kutu geçişiyle yayılan, pozitif doğrusal vurgulardan çıkan yalnızca çıktıya özel parlama. Yarıçap çıktı pikselidir. sRGB öncesi doğrusal görüntü ışığına eklenir; mercek, hacimsel efekt veya yakınsama iyileştirmesi değildir. Ham EXR değişmez.",
"render.bloom_opaque":"Bloom opak çıktı gerektirir. Saydam PNG reddedilir, sessizce düzleştirilmez.",
@@ -2612,6 +2714,13 @@
"render.choose_look":"Önce Görünümler'de bir görünüm seçin",
"ui.ai_reasoning_effort_hint":"İsteğe bağlı. Uç noktaya `reasoning_effort` olarak gönderilir; kabul edilen değerler sağlayıcıya göre değişir (örneğin `low`, `high` veya `max`). Burada belirlediğiniz değerin yerine SolidCraft hiçbir zaman başka bir değer koymaz. Hiçbir şey göndermemek ve sağlayıcının varsayılanını korumak için boş bırakın.",
"ui.ai_remove":"Kaldır",
"ui.ai_request_timed_out":"Model {seconds} sn'den uzun sürdü. Bu uç nokta için istek zaman aşımını Tercihler › Asistan altında yükseltebilirsiniz.",
"ui.ai_request_timeout":"İstek zaman aşımı",
@@ -4349,14 +4474,21 @@
"ui.construction.contact_hint":"Teğet: bir daire/yay veya açık spline/konik eğri, ardından değme noktasını seçin (serbest biçimli eğriler: uç noktalar)",
"ui.construction.external_hint":"Teğet: bir daire veya yay, bir dış nokta, ardından istenen çözümü seçin",
"ui.construction.free_hint":"Yardımcı doğru: iki noktaya tıklayın; yeniden başlamak için sağ tıklayın",
"ui.construction.normal_needs_length":"Sonsuz çizgi her zaman yardımcı doğrudur: normal bir çizgi çizmek için bir uzunluk yazın",
"ui.emboss_wrap_note":"Desteklenen tek bir silindire teğet olan dik çizgi profilleri otomatik olarak sarılır. Hedef seçmek için bir cidar seçin.",
"ui.end_radius":"Bitiş yarıçapı",
@@ -4481,7 +4615,9 @@
"ui.equation_explicit":"Açık fonksiyon",
"ui.equation_form":"Biçim",
"ui.equation_note":"Değişken düz bir sayıdır: sin(t) onu radyan olarak alır. Birimi olmayan bir sonuç tasarımın birimindedir.",
"ui.equation_note_range":"Değişken, aralığı gibi bir uzunluktur: uzunluk parametreleriyle birleştirin ve sin() için bir uzunluğa bölün. Birimi olmayan bir sonuç tasarımın birimindedir.",
"ui.history_sketch_listed_under":"{feature} altında listelenir",
"ui.history_title":"Geçmiş",
"ui.history_toggle_names":"Özellik adlarını göster veya gizle",
"ui.history_waits_for_editor":"Geri al, Yinele ve Geçmiş, özellik düzenleyicisi açılana kadar bekler",
"ui.hole":"Delik",
"ui.hole_tap_type":"Diş türü",
"ui.hole_type":"Delik türü",
@@ -4648,6 +4788,7 @@
"ui.insert_design.saved_file":"{name} kaydedilmemiş değişiklikler içeriyor, bu yüzden kaydedilmiş dosyası eklendi. Değişiklikleri almak için onu kaydedin, ardından Bağları güncelle'yi çalıştırın.",
"ui.line_arc_hint":"Teğet yay: yayın ucuna tıklayın. Çizgilere dönmek için son noktada yeniden bekleyin; bitirmek için sağ tıklayın veya Esc tuşuna basın",
"ui.link_copies":"Aynı Kopyaları Bağla",
"ui.link_copies_keep":"Tut",
"ui.link_copies_link":"Bağla",
@@ -4750,6 +4893,7 @@
"ui.part_size_shared":"Parçayı yeniden oluşturur ve eklenen tüm özelliklerin yerine geçer. Bu bileşenin tüm örnekleri güncellenir.",
"ui.paste":"Yapıştır",
"ui.path":"Yol",
"ui.pattern_object_type_tip":"Gövdeler: katı biçimler, görünümde veya Tarayıcı'da seçilir; her biri bütün olarak kopyalanır.\nÖzellikler: Geçmiş'in adımları, örneğin bir ekstrüzyon veya delik; Geçmiş'te ya da oluşturdukları bir yüzde seçilir; adım tekrarlanır.\nEskiz bunlardan hiçbiri değildir: eğrilerini eskizin kendi Dizi veya Aynala komutuyla tekrarlayın ya da önce ekstrüzyon yapın.",
"ui.pattern_on_path":"Yol üzerinde desen",
"ui.perforate_margin_default":"çaptan",
"ui.perforate_pitch":"Adım",
@@ -4795,9 +4939,9 @@
"ui.polygon":"Çokgen",
"ui.preferences":"Ayarlar",
"ui.press_a_key":"bir tuşa basın…",
"ui.print_face_body_not_sent":"Bu yüzeyin gövdesi gönderilmiyor: önce onu Gövdeler'e ekleyin",
"ui.print_face_cleared":"{body}: baskı yüzeyi temizlendi",
"ui.print_face_input":"Baskı yüzeyi",
"ui.print_face_one_body":"Baskı yüzeyi tek bir gövdeye aittir: değiştirmek için o gövdeyi tek başına gönderin",
"ui.print_face_pick":"Baskı yüzeyi yapmak için katı bir gövdenin düz bir yüzeyini seçin",
"ui.print_face_set":"{body}: baskı yüzeyi ayarlandı; Dilimleyiciye gönder gövdeyi bu yüzeyin üzerine koyar",
"ui.view_angles_convention":"Yukarı eksen etrafında derece cinsinden. Sapma 0° Ön görünümdür, 90° Sol, −90° Sağ, 180° Arka; yatıklık 90° Üst görünümdür; pozitif yuvarlanma modeli saat yönünde döndürür.",
"ui.view_angles_help":"Görünümün yatıklık, sapma ve yuvarlanma açılarını derece cinsinden ve izdüşüm türünü yönlendirme gizmosunun altında gösterir. Tam açıları yazmak için göstergeye tıklayın.",
"update.check_unavailable":"Bu kurulum için güncelleme denetimi kullanılamıyor.",
"update.checking":"Denetleniyor…",
"update.copy":"Kopyala",
"update.dmg_opened":"Disk görüntüsü açıldı ve doğrulandı: SolidCraft'ı “Uygulamalar” klasörüne sürükleyin, eski sürümü değiştirin ve SolidCraft'ı yeniden başlatın.",
"update.dmg_opened":"Disk görüntüsü açıldı ve doğrulandı: SolidCraft'tan çıkın, yeni SolidCraft'ı “Uygulamalar” klasörüne sürükleyin, eski sürümü değiştirin ve SolidCraft'ı yeniden açın.",
"update.download":"İndir",
"update.download_open":"İndir ve aç",
"update.downloading":"İndiriliyor ve doğrulanıyor… {done} / {total} MB",
@@ -5132,6 +5280,7 @@
"web.open_link":"Bağlı tasarım açılsın mı?",
"web.open_link_confirm":"Kaydedilmemiş değişiklikler var. Bağlı tasarım yeni bir sekmede açılsın mı?",
"dialog.no_shown_body":"Немає видимих тіл для виконання операції",
"dialog.pattern_sketch_not_object":"Виберіть тіла або операції: ескіз не є ні тим, ні іншим. Повторіть його криві власним інструментом «Масив» чи «Дзеркало» в ескізі або спершу видавіть його.",
"dialog.select":"↖ Вибрати",
"dialog.selected_count":"↖ Вибрано: {count}",
"dialog.selection_guidance":"Виберіть вхідні дані, щоб змінити їх. Клацніть вибрані об'єкти, щоб прибрати їх; натискання з Ctrl/Cmd також перемикає їх. Перегляньте попередній перегляд, а потім натисніть OK.",
@@ -1904,6 +1920,7 @@
"nav.hfss.help":"Alt+ліва панорамує, Shift+Alt+ліва масштабує, Ctrl+ліва з порожнього місця обертає",
"nav.inventor.help":"Середня панорамує, Shift+середня обертає, Ctrl+середня масштабує, права обертає",
"nav.maya.help":"Alt+ліва обертає, Alt+середня панорамує, Alt+права масштабує; середня також панорамує",
"nav.nx.help":"Середня обертає, Shift+середня панорамує (у NX — середня + права), Ctrl+середня масштабує (у NX — середня + ліва); права не рухає камеру",
"nav.openscad.help":"Ліва обертає по порожньому місцю, Shift+ліва виділяє рамкою, геометрію ескізу перетягують для редагування; права або середня панорамує, Shift+права або Shift+середня масштабує",
"nav.perspective.sketch":"Редагування ескізу використовує ортографічний вид. Завершіть ескіз, щоб увімкнути перспективу.",
"prefs.browser_components_open":"Компоненти розгорнуті з початку",
"prefs.browser_components_open_note":"Кожен компонент у браузері одразу розгорнутий, як раніше, а не згорнутий, доки ви його не розгорнете.",
"prefs.browser_eye_left":"Око поруч зі стрілкою згортання",
"prefs.browser_eye_left_note":"Рядки браузера показують око «показати/приховати» поруч зі стрілкою згортання, як і раніше, а не в стовпці на правому краї рядків.",
"prefs.browser_reveal_on_hover":"Показувати в браузері при наведенні",
@@ -2125,6 +2144,8 @@
"prefs.ctrl_cmd":"Ctrl / Cmd",
"prefs.curved_surfaces":"Криві поверхні",
"prefs.curves":"Криві поверхні",
"prefs.dark_parts_shading":"Зберігати форму темних деталей",
"prefs.dark_parts_shading_help":"Затінювати вид у лінійному світлі з м'яким заповнювальним світлом неба, щоб темні грані зберігали градієнт, а не ставали чорними",
"prefs.dead_zone_note":"Заштрихована смуга — це мертва зона: рух у її межах ігнорується.",
"prefs.default":"типово",
"prefs.design":"Типові параметри проєкту",
@@ -2139,6 +2160,8 @@
"prefs.edges":"Ребра та затінення",
"prefs.extend":"Розширення",
"prefs.extra_navigation":"Ctrl+перетягування лівою на порожньому місці обертає; утримуйте Space, щоб панорамувати.",
"prefs.extrude_view_isometric":"Повертати вид до ізометрії під час відкриття «Видавлювання»",
"prefs.extrude_view_return":"Повертати попередній вид під час закриття «Видавлювання»",
"prefs.follows_os":"Як у системі",
"prefs.font":"Шрифт",
"prefs.font_fallback":"Символи, яких немає у вибраному шрифті, беруться з вбудованого, тож жоден напис не показує порожній квадрат.",
@@ -2154,6 +2177,7 @@
"prefs.graphics_card_auto":"Автоматично",
"prefs.graphics_card_missing":"Збережена відеокарта недоступна; використовується режим «Автоматично».",
"prefs.graphics_card_restart":"Набуває чинності після перезапуску SolidCraft. Змінна WGPU_ADAPTER_NAME перевизначає цей вибір.",
"prefs.graphics_card_unused":"Збережену відеокарту для цього вікна не використано; використану відеокарту показано в меню Довідка › Про SolidCraft і в рядку стану. Спробуйте «Автоматично» або вкажіть для WGPU_ADAPTER_NAME унікальну частину назви відеокарти.",
"prefs.graphics_note":"Обміняйте швидкість на плавність. Кожен варіант показує свій ефект на зразку.",
"prefs.graphics_presets_note":"Набори задають наведені нижче параметри разом.",
"prefs.hide_constraint_glyphs_zoomed_out":"Ховати позначки обмежень на віддаленому виді",
@@ -2168,6 +2192,8 @@
"prefs.history_sketches_note":"Якщо для «Ескізи» вибрано «Під своєю операцією», Історія ліворуч показує кожен ескіз на один рівень глибше, під першою операцією, побудованою з нього, коли панель достатньо широка для назв. Часовий ланцюжок знизу завжди зберігає порядок створення.",
"prefs.history_sketches_under_feature":"Під своєю операцією",
"prefs.hold_stop_snapping":"Утримуйте, щоб вимкнути прив'язування",
"prefs.home_fit_size":"Розмір для «Головний вид» і «Вмістити»",
"prefs.home_fit_size_note":"Яку частину виду займає модель, коли її кадрують «Головний вид», «Вмістити», відкритий проєкт або зміна виду в навігаторі, незалежно від того, чи ввімкнено параметр нижче. 100 %: заповнює вид між панелями, компасом і панеллю навігації.",
"prefs.icons_only":"Лише піктограми",
"prefs.imported_file":"Імпортований файл",
"prefs.in_browser":"У браузері",
@@ -2176,13 +2202,20 @@
"prefs.interface_language":"Мова інтерфейсу",
"prefs.interface_note":"Як виглядає SolidCraft і де розташовані його частини.",
"prefs.interval_minutes":"{n} хв",
"prefs.invert_navigator_arrows":"Інвертувати стрілки обертання куба виду",
"prefs.invert_navigator_arrows_note":"Стрілки навколо куба обертають камеру в той бік, куди вказують, як у Fusion та Inventor: стрілка ліворуч вказує праворуч і повертає камеру праворуч. Вимк.: стрілка обертає куб у той бік, де вона розташована, тож ліва стрілка повертає камеру ліворуч. Вигнуті стрілки крену не змінюються.",
"prefs.keep_work_on_tab_switch":"Зберігати відкриті діалоги та інструменти під час перемикання між проєктами",
"prefs.keep_work_on_tab_switch_note":"Кожна вкладка проєкту зберігає свій відкритий діалог чи інструмент разом із тим, що ви в ньому вибрали й ввели, а також свою вкладку панелі інструментів. Вони знову на місці, коли ви повертаєтеся до проєкту. Вимк.: перемикання проєктів скасовує їх і показує вкладку «Модель».",
"prefs.labels":"Підписи",
"prefs.language_system":"Системна",
"prefs.layout":"Компонування",
"prefs.layout_note":"«Компактне» прикріплює панелі до країв вікна. Прозорість браузера доступна в режимі «Плаваюче». Сторону Асистента можна змінити на сторінці «Асистент».",
"prefs.left":"Ліворуч",
"prefs.left_click":"Клацання лівою",
"prefs.line_drag_draws_one":"Перетягування відрізка малює один елемент",
"prefs.line_drag_draws_one_note":"Замість безперервного малювання при перетягуванні",
"prefs.line_hover_tangent_arc":"Затриматися на останній точці прямої, щоб перейти до дотичної дуги",
"prefs.line_hover_tangent_arc_note":"В інструменті «Пряма» після того, як сегмент накреслено, відведіть вказівник від останньої точки ланцюжка, поверніться й утримуйте його на ній нерухомо: наступне клацання завершить дотичну дугу, а той самий жест поверне до прямих. Вимк.: затримка там нічого не робить.",
"prefs.linked_designs":"Пов'язані проєкти",
"prefs.live_input":"Поточне введення",
"prefs.live_preview":"Попередній перегляд у реальному часі",
@@ -2206,6 +2239,8 @@
"prefs.mouse_mapping":"Призначення кнопок миші",
"prefs.navigation":"Навігація",
"prefs.navigation_note":"Як миша, трекпад і 3D-миша рухають вид.",
"prefs.navigator_fit":"Вміщувати модель після зміни виду в навігаторі",
"prefs.navigator_fit_note":"Грань, кут або стрілка куба виду чи вісь гізмо також дивляться на середину моделі з єдиної відстані, з якої її видно цілком з усіх боків (її обмежувальна сфера). «Головний вид» за ввімкненого параметра використовує той самий масштаб і центр, тож види, вибрані після нього, лише повертаються. Вимк.: вид повертається на місці, зберігаючи свою ціль і масштаб.",
"prefs.network_host_remove":"Вилучити",
"prefs.network_locations":"Дозволяти мережеві розташування в проєктах",
"prefs.network_locations_note":"Вимкнено: пов'язані файли проєкту на іншому комп'ютері (\\\\server\\share) відкриваються лише з перелічених тут серверів або після того, як ви дозволите один, коли запитають.",
@@ -2254,6 +2289,8 @@
"prefs.render_previous_geometry_budget":"Бюджет попередньої геометрії для візуалізації",
"prefs.render_previous_geometry_budget_help":"Максимальний обсяг пам'яті для кешу геометрії попереднього стану",
"prefs.ribbon_click_ends_tool_note":"Клацання підсвіченої кнопки використовуваного інструмента ескізу на стрічці завершує інструмент, тож клацання на виді знову виділяють об'єкти. Вимк.: клацання знову запускає інструмент.",
"prefs.ribbon_reveal":"Показувати результати пошуку на стрічці",
"prefs.ribbon_reveal_note":"Наведення курсора на результат у «Пошуку команд» показує, де команда розташована на стрічці: її вкладку, кнопку або рядок у випадному меню панелі. Команда, запущена з пошуку, блимає там, а запущена команда з випадного меню позначає свою панель.",
"prefs.right_click":"Клацання правою",
@@ -2283,6 +2320,8 @@
"prefs.sketch_exit_view.previous":"Повернутися до попереднього виду",
"prefs.sketch_exit_view.unless_rotated":"Повернутися, якщо вид не оберталося",
"prefs.sketch_exit_view_note":"Куди переходить вид після «Завершити ескіз», «Скасувати» або подвійного Esc.",
"prefs.sketch_face_activates_part":"Ескіз на грані деталі робить цю деталь активною",
"prefs.sketch_face_activates_part_note":"Ескіз, розпочатий на грані тіла іншого компонента, спершу активує цей компонент, тож ескіз належить йому й у браузері залишається з цією деталлю. Після цього деталь залишається активною. Вимк.: ескіз належить активному компоненту.",
"prefs.sketch_open_look_at":"Повертати вид до ескізу під час його відкриття",
"prefs.sketch_open_look_at_note":"Вимкнено: створення чи редагування ескізу не змінює вид. «Наведення» повертає вид до ескізу, коли ви цього захочете.",
"prefs.sketch_recent_snap":"Автоприв'язка до нещодавніх центрів і середніх точок",
@@ -2314,6 +2353,24 @@
"prefs.status_error":"Помилка",
"prefs.status_selected":"Вибрано",
"prefs.status_warning":"Попередження",
"prefs.structure.appearance":"Вигляд",
"prefs.structure.appearance_note":"Кольори, текст і спеціальні можливості.",
"prefs.structure.in_profile":"У профілі",
"prefs.structure.layout":"Компонування",
"prefs.structure.layout_note":"Де розташовані частини вікна.",
"prefs.structure.look":"Оформлення",
"prefs.structure.measure_pointer":"Вимірювання та вказівник",
"prefs.structure.mouse3d":"3D-миша",
"prefs.structure.mouse3d_note":"SpaceMouse і SpaceNavigator.",
"prefs.structure.navigation_note":"Миша й трекпад. У 3D-миші є власна сторінка.",
"prefs.structure.profile":"Профіль",
"prefs.structure.profile_edited":"Змінено після збереження",
"prefs.structure.profile_hover":"Збережено в профілях налаштувань",
"sketch_text.no_bold":"Вбудований шрифт не має напівжирного накреслення: виберіть встановлений шрифт",
"sketch_text.on_path":"Текст дотримується своєї траєкторії: крива його розміщує",
"sketch_text.path_clear":"Зняти текст з його кривої",
"sketch_text.path_hint":"Крива ескізу, якої дотримується текст: клацніть тут, а потім на кривій",
@@ -3842,10 +3900,7 @@
"the two origins are on the same component":"обидва початки координат належать одному компоненту",
"thread.automatic_size":"Автоматичний розмір",
"thread.designation":"Позначення",
"thread.direction":"Напрямок різьби",
"thread.iso_metric":"Метрична ISO",
"thread.left_hand":"Ліва",
"thread.right_hand":"Права",
"thread.select_size":"Вибрати розмір",
"timeline.delete_after_marker_one":"Видалити 1 операцію після маркера історії",
"timeline.delete_after_marker_other":"Видалити операції після маркера історії: {count}",
@@ -4213,6 +4268,9 @@
"ui.ai_permissions":"Дозволи",
"ui.ai_preset":"Набір",
"ui.ai_protocol":"Протокол",
"ui.ai_reasoning_effort":"Рівень міркувань",
"ui.ai_reasoning_effort_field_hint":"порожньо = типове значення постачальника",
"ui.ai_reasoning_effort_hint":"Необов'язково. Надсилається на кінцеву точку як `reasoning_effort`; допустимі значення залежать від постачальника (наприклад, `low`, `high` або `max`). Значення, яке ви тут задали, SolidCraft ніколи не замінює. Залиште поле порожнім, щоб нічого не надсилати й зберегти типове значення постачальника.",
"ui.ai_remove":"Видалити",
"ui.ai_request_timed_out":"Модель відповідала довше за {seconds} с. Тайм-аут запиту для цієї кінцевої точки можна збільшити в Налаштування › Асистент.",
"ui.ai_request_timeout":"Тайм-аут запиту",
@@ -4352,10 +4410,15 @@
"ui.construction.reference_hint":"Допоміжна пряма: виберіть пряму, потім точку; клацніть правою кнопкою, щоб змінити опорний об'єкт",
"ui.delete_select_first":"Спершу виберіть, що видалити: операції, тіла, компоненти або геометрію ескізу",
"ui.depth":"Глибина",
"ui.design":"Проєкт",
"ui.design_properties.author":"Автор",
@@ -4470,6 +4534,7 @@
"ui.edit_in_place_saved_elsewhere":"Деталь збережено в інший файл; збірка досі пов'язана з {name}",
"ui.edit_in_place_wait":"Зачекайте, поки завершиться те, що виконується в проєкті",
"ui.edit_section_analysis":"Редагувати аналіз перерізу",
"ui.edit_sketch_empty":"Немає ескізів для редагування",
"ui.ellipse":"Еліпс",
"ui.emboss_wrap_note":"Ортогональні профілі з ліній, дотичні до одного підтримуваного циліндра, обгортаються автоматично. Виберіть стінку, щоб задати ціль.",
"ui.end_radius":"Кінцевий радіус",
@@ -4480,7 +4545,9 @@
"ui.equation_explicit":"Явна",
"ui.equation_form":"Форма",
"ui.equation_note":"Змінна — звичайне число: sin(t) сприймає радіани. Результат без одиниць виміру береться в одиницях проєкту.",
"ui.equation_note_range":"Змінна — довжина, як і її діапазон: поєднуйте її з параметрами довжини, а для sin() діліть її на довжину. Результат без одиниць виміру береться в одиницях проєкту.",
"ui.equation_parametric":"Параметрична",
"ui.equation_variable_unit":"Змінна має одиниці виміру діапазону",
"ui.equation_x_of_t":"X(t)",
"ui.equation_y_of_t":"Y(t)",
"ui.equation_y_of_x":"Y(x)",
@@ -4647,6 +4714,7 @@
"ui.insert_design.saved_file":"{name} має незбережені зміни, тому вставлено його збережений файл. Збережіть його, потім оновіть зв'язки, щоб перенести зміни.",
"ui.insert_design.unsaved":"Незбережені зміни",
"ui.inspect":"Перевірити",
"ui.instances":"Екземпляри",
"ui.intersect":"Перетин",
"ui.isolate":"Ізолювати",
"ui.join":"З'єднати",
@@ -4655,12 +4723,14 @@
"ui.joints":"З'єднання",
"ui.keyboard_shortcuts":"Комбінації клавіш",
"ui.language":"Мова",
"ui.lasso_select":"Ласо (перетягніть довільний контур: виділяє все, що повністю всередині)",
"ui.layout_compact":"Компактне",
"ui.layout_floating":"Плаваюче",
"ui.length":"Довжина",
"ui.length_decimals":"Знаки після коми для довжин",
"ui.light":"Світла",
"ui.line":"Пряма",
"ui.line_arc_hint":"Дотична дуга: клацніть у кінці дуги. Знову затримайтеся на останній точці, щоб повернутися до прямих; клацніть правою кнопкою або натисніть Esc, щоб завершити",
"ui.link_copies":"Пов'язати однакові копії",
"ui.link_copies_keep":"Залишити",
"ui.link_copies_link":"Пов'язати",
@@ -4749,6 +4819,7 @@
"ui.part_size_shared":"Перебудовує деталь, замінюючи всі додані елементи. Усі входження цього компонента оновлюються.",
"ui.paste":"Вставити",
"ui.path":"Траєкторія",
"ui.pattern_object_type_tip":"Тіла: суцільні форми, які вибирають на виді або в браузері; кожне копіюється цілком.\nОперації: кроки Історії, як-от видавлювання чи отвір, які вибирають в Історії або на грані, створеній ними; крок повторюється.\nЕскіз не є ні тим, ні іншим: повторіть його криві власним інструментом «Масив» чи «Дзеркало» в ескізі або спершу видавіть його.",
"ui.pattern_on_path":"Масив на траєкторії",
"ui.perforate_margin_default":"від діаметра",
"ui.perforate_pitch":"Крок",
@@ -4794,9 +4865,9 @@
"ui.polygon":"Багатокутник",
"ui.preferences":"Налаштування",
"ui.press_a_key":"натисніть клавішу…",
"ui.print_face_body_not_sent":"Тіло цієї грані не надсилається: спершу додайте його до Тіла",
"ui.print_face_cleared":"{body}: грань друку скинуто",
"ui.print_face_input":"Грань друку",
"ui.print_face_one_body":"Грань друку належить одному тілу: надішліть це тіло окремо, щоб змінити її",
"ui.print_face_pick":"Виберіть плоску грань твердого тіла, щоб зробити її гранню друку",
"ui.print_face_set":"{body}: грань друку задано; «Надіслати в слайсер» кладе тіло на неї",
"ui.profile":"Профіль",
@@ -5024,12 +5095,15 @@
"ui.view_angles":"Кути виду",
"ui.view_angles_convention":"Градуси навколо вертикальної осі. Рискання 0° — вид спереду, 90° — зліва, −90° — справа, 180° — ззаду; тангаж 90° — вид зверху; додатний крен повертає модель за годинниковою стрілкою.",
"ui.view_angles_help":"Показує тангаж, рискання та крен виду в градусах, а також його проєкцію під елементом орієнтації. Клацніть показник, щоб ввести точні кути.",
"update.check_unavailable":"Перевірка оновлень недоступна для цього встановлення.",
"update.checking":"Перевірка…",
"update.copy":"Копіювати",
"update.dmg_opened":"Образ диска відкрито й перевірено: перетягніть SolidCraft до Applications, замінивши стару копію, а потім перезапустіть SolidCraft.",
"update.dmg_opened":"Образ диска відкрито й перевірено: завершіть SolidCraft, перетягніть новий SolidCraft до Applications, замінивши стару копію, а потім знову відкрийте SolidCraft.",
"update.download":"Завантажити",
"update.download_open":"Завантажити й відкрити",
"update.downloading":"Завантаження та перевірка… {done} з {total} МБ",
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.