mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-04 02:55:54 +00:00
9559ad398a
* claim: #4783 * Physical material: one rule for a body's material and its density (#4783) inspect.measure, component.properties, occurrence.properties and the Properties window took a body's material name from the raw assignment, but its density from Document::density, which falls back to the default material when the assigned one is unknown or has an unusable density. So a damaged or hand-edited design read one material and weighed another: a design material "Broken" at -3 g/cm³ read "Broken" at 1.29 g/cm³. One rule, in one place: - DEFAULT_MATERIAL (new, beside DEFAULT_DENSITY in the material library) is the default material's name. The library's first row uses it. - Document::body_material (new, beside Document::density) is the material a body's mass is computed with, as the library or the design spells it: the assigned one when it is known and has a usable density, else DEFAULT_MATERIAL. Document::density is that material's density, with the same value as before for every input. inspect.measure and the physical properties name body_material. inspect.measure now names every body's material, measured or not, since naming it takes no measuring; the density stays with the mass, on the bodies measured. So the Properties window shows the engine's name without a fallback of its own. The places that keep the assignment as stored (configuration cells, material.assign, material.edit, material.delete and the dialogs) only use the constant, so a configuration still keeps a damaged assignment as it is. The visible change: a body whose material is unknown, or has an unusable density, reads "Default", the material it weighs, and a miscased name reads as the library or the design spells it. A body inspect.measure can't measure now has its material too. Masses and densities don't change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>