Files
solvecraft/docs/cosmetic-threads.md
froglemonade2 1432131e95 English: command labels in title case, other labels in sentence case (#9085) (#10734)
* English: command labels in title case, other labels in sentence case (#9085)

The rest of #9085 after #9194 (the plural and the spelling) and #9907
(the Preferences page names). Command labels are in title case (422 of
430 were already); the seven in sentence case follow, and Fix/UnFix
reads Fix/Unfix. The UI text skill states the rule. The user docs name
the Preferences footer's button by its current label, Restore page
defaults (#10295).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Navigation bar menu test: the echo names the command by its own label

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* UI text skill: state the case rule in one short sentence, under the 3600 limit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Localization doc: the case rule in full, with examples

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Localization doc: the example button is Restore page defaults now

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:39:52 +00:00

3.3 KiB

Cosmetic thread display

Cosmetic markings are off by default, including when preferences saved by an older version have no setting for them. Turn on Preferences > Graphics > Cosmetic thread markings to display them. The switch applies immediately, without moving the camera or rebuilding the design, and is saved in application preferences. Cancel, Apply and Restore page defaults follow the other Graphics settings. It is not a document property or a geometry feature.

Tapped Hole and non-modeled Thread features now mark the threaded cylindrical wall with original, slightly tilted bands. Plain holes remain smooth. Both internal and external threads use the evaluated thread metadata, including partial length and occurrence placement. This is schematic hatching, not a manufactured thread profile or helical solid.

The strokes lie on the same triangles as the displayed surface, follow display refinement, use the existing edge color and depth-tested line renderer, and are clipped by section planes. Selection and hover still use the original faces and their normal highlight passes. No geometry, volume, physical material, design format, or mesh-export data changes.

The shaded desktop/web viewport and its GPU/CPU model snapshots share the setting and the same marking generator. Ordinary headless scene helpers leave markings off; callers can explicitly request them through scene_with_thread_markings. The marking needs no texture file, compute shader or new graphics capability. The wireframe viewport omits the marking. Transparent or faded bodies omit it because the ordinary depth-tested line pass cannot represent their visibility correctly.

Pitch determines spacing until a bounded schematic density is reached (up to 32 bands). Large threaded assemblies reduce the density target, down to four bands, before the hard scene limits apply so repeated parts share the marking budget. Short regions may show fewer bands. The count includes hidden thread metadata, so hiding parts does not increase density. Strokes have a fixed subpixel output width, like the existing edge renderer; very small holes may still require zooming in. A face must remain an analytic cylinder, coaxial with the stored thread and within its diameter range. Removed/replaced or unsupported surfaces are not marked. One shared scene budget bounds successful and unsuccessful work (500,000 inspection units, 65,536 strokes; 32,768 per body). Lazy face classification also charges face traversal. The viewport caches the scene across ordinary camera moves; LOD refinement rebuilds it with a fresh bounded budget. Very large models can therefore omit later markings. This is not a thread inspection or dimension tool. There is no separate major-diameter entry circle. Physically modeled threads continue to display their actual geometry and do not receive this cosmetic hatch.

The evaluated metadata records the target cylinder's actual radius and placed body name. This prevents marking a later enlarged bore and keeps copied/rotated occurrences associated with their own walls. It adds no saved feature field. The schematic band's orientation can change after arbitrary rotations because its tilt seed uses world axes.

The marking is an original Rust construction using SolidCraft's existing line and material conventions. It introduces no artwork, texture assets or dependencies.