diff --git a/tests/kernel-cases/threads/1443-m5x0.7-thread-in-5mm-hole/expected.json b/tests/kernel-cases/threads/1443-m5x0.7-thread-in-5mm-hole/expected.json index 593fc5d223..3fde5d60ad 100644 --- a/tests/kernel-cases/threads/1443-m5x0.7-thread-in-5mm-hole/expected.json +++ b/tests/kernel-cases/threads/1443-m5x0.7-thread-in-5mm-hole/expected.json @@ -1,32 +1,13 @@ { "sources": [ "tangency-labs/solidcraft#1443", - "tangency-labs/solidcraft#3060" + "tangency-labs/solidcraft#3060", + "tangency-labs/solidcraft#1018", + "tangency-labs/solidcraft#2853" ], - "what": "a modelled M5x0.7 thread in a 5 mm hole drawn at the thread's nominal size (was refused: it would cut 0.00 mm of the thread's depth)", + "what": "a modelled thread on a hole that isn't the thread's size: refused with the size to use, never a silent change of the hole", "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 5 mm hole through a D14 x 4.2 disc, drawn at the thread's nominal size, takes a modelled M5x0.7: the hole is first filled to the tap drill (major - pitch = 4.3 mm, rho=2.15), then the groove is cut, the same thread as in a hole drilled at the tap drill. Whole length, both ends free (6 turns): V = pi 7^2 4.2 - pi 2.15^2 4.2 - 6 x V_turn(clipped at rho) = 646.5398 - 60.9925 - 6 x 1.45465 = 576.8194 mm3. The thin lips a tap leaves at each end are below 0.2% of the volume. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 576.8194, - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -7, - -7, - 0 - ], - "max": [ - 7, - 7, - 4.2 - ] - }, - "center_of_mass": [ - 0, - 0, - 2.1 - ] + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the hole it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M5x0.7: tap drill = 5 - 0.7 = 4.3 mm; depth 5H/8 = 5/8 x 0.7 x sqrt3/2 = 0.379 mm; the 5 mm hole is at the major diameter, so nothing would be cut. Expected message: \"this 5 mm hole is too wide for a modelled M5x0.7 thread: it would cut 0.00 mm of the thread's 0.38 mm depth; drill 4.3 mm for M5x0.7, or thread this hole M6\".", + "outcome": "refused", + "refusal": "this 5 mm hole is too wide for a modelled M5x0.7 thread: it would cut 0.00 mm of the thread's 0.38 mm depth; drill 4.3 mm for M5x0.7, or thread this hole M6" } diff --git a/tests/kernel-cases/threads/2152-m3x0.2-thread-in-3mm-hole/expected.json b/tests/kernel-cases/threads/2152-m3x0.2-thread-in-3mm-hole/expected.json index a3ea11f12c..c10e0becdb 100644 --- a/tests/kernel-cases/threads/2152-m3x0.2-thread-in-3mm-hole/expected.json +++ b/tests/kernel-cases/threads/2152-m3x0.2-thread-in-3mm-hole/expected.json @@ -1,31 +1,12 @@ { "sources": [ - "tangency-labs/solidcraft#2152" + "tangency-labs/solidcraft#2152", + "tangency-labs/solidcraft#1018", + "tangency-labs/solidcraft#2853" ], - "what": "a modelled M3x0.2 thread in a 3 mm hole drawn at the thread's nominal size (was refused like any hole at the nominal size)", + "what": "a modelled thread on a hole that isn't the thread's size: refused with the size to use, never a silent change of the hole", "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 3 mm hole through a D10 x 2 disc, drawn at the thread's nominal size, takes a modelled M3x0.2: the hole is first filled to the tap drill (major - pitch = 2.8 mm, rho=1.4), then the groove is cut, the same thread as in a hole drilled at the tap drill. Whole length, both ends free (10 turns): V = pi 5^2 2 - pi 1.4^2 2 - 10 x V_turn(clipped at rho) = 157.0796 - 12.3150 - 10 x 0.07477 = 144.0169 mm3. The thin lips a tap leaves at each end are below 0.2% of the volume. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 144.0169, - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -5, - -5, - 0 - ], - "max": [ - 5, - 5, - 2 - ] - }, - "center_of_mass": [ - 0, - 0, - 1.0 - ] + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the hole it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M3x0.2: tap drill = 3 - 0.2 = 2.8 mm; depth 5H/8 = 5/8 x 0.2 x sqrt3/2 = 0.108 mm; the 3 mm hole is at the major diameter. Expected message: \"this 3 mm hole is too wide for a modelled M3x0.2 thread: it would cut 0.00 mm of the thread's 0.11 mm depth; drill 2.8 mm for M3x0.2, or thread this hole M4\".", + "outcome": "refused", + "refusal": "this 3 mm hole is too wide for a modelled M3x0.2 thread: it would cut 0.00 mm of the thread's 0.11 mm depth; drill 2.8 mm for M3x0.2, or thread this hole M4" } diff --git a/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-bored-to-minor/expected.json b/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-bored-to-minor/expected.json deleted file mode 100644 index c5d33d5628..0000000000 --- a/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-bored-to-minor/expected.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "sources": [ - "tangency-labs/solidcraft#2369", - "tangency-labs/solidcraft#2688", - "tangency-labs/solidcraft#2853" - ], - "what": "a modelled M8 thread in a hole narrower than the thread's minor diameter (6.3 mm, and 6 mm in #2688), refused as 'the face is too far from the thread's diameter'", - "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 6.3 mm hole through a D16 x 5 disc takes a modelled M8 (P=1.25). The hole is narrower than the thread's minor diameter 8 - 2 x 5H/8 = 6.6468 mm (ISO D1 = D - 1.0825 P), so a tap takes the extra material off first: the hole is bored out to the minor diameter (rho=3.3234) and the groove cut from there. Whole length (4 turns): V = pi 8^2 5 - pi rho^2 5 - 4 x V_turn(clipped at rho) = 1005.3096 - 173.4961 - 4 x 8.32555 = 798.5114 mm3. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 798.5114, - "center_of_mass": [ - 0, - 0, - 2.5 - ], - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -8, - -8, - 0 - ], - "max": [ - 8, - 8, - 5 - ] - } -} diff --git a/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-refused/expected.json b/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-refused/expected.json new file mode 100644 index 0000000000..913f3ee0d4 --- /dev/null +++ b/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-refused/expected.json @@ -0,0 +1,13 @@ +{ + "sources": [ + "tangency-labs/solidcraft#2369", + "tangency-labs/solidcraft#2688", + "tangency-labs/solidcraft#2853", + "tangency-labs/solidcraft#1018" + ], + "what": "a modelled thread on a hole that isn't the thread's size: refused with the size to use, never a silent change of the hole", + "source": "analytic", + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the hole it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M8 (P 1.25): tap drill = 8 - 1.25 = 6.75 mm; basic minor diameter D1 = 8 - 2 x 5H/8 = 8 - 1.353 = 6.647 mm; a 6.3 mm hole is below the minor diameter, so the thread's teeth would fill part of the hole. Expected message: \"this 6.3 mm hole is too narrow for a modelled M8 thread (its teeth would fill the hole); drill 6.75 mm for M8\".", + "outcome": "refused", + "refusal": "this 6.3 mm hole is too narrow for a modelled M8 thread (its teeth would fill the hole); drill 6.75 mm for M8" +} diff --git a/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-bored-to-minor/recipe.json b/tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-refused/recipe.json similarity index 100% rename from tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-bored-to-minor/recipe.json rename to tests/kernel-cases/threads/2369-m8-thread-in-6.3mm-hole-refused/recipe.json diff --git a/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-boss-turned-to-major/expected.json b/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-boss-turned-to-major/expected.json deleted file mode 100644 index 2303baf8e7..0000000000 --- a/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-boss-turned-to-major/expected.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "sources": [ - "tangency-labs/solidcraft#2705" - ], - "what": "a modelled M14 thread on a 14.6 mm boss, slightly thicker than the thread (refused: the face is too far from the thread's diameter)", - "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 14.6 mm boss (R=7.3, 15 tall) on a 20x20x4 plate takes a modelled M14 (P=2) over 10 mm from its free top end. The boss is thicker than the major diameter, so a die turns it down to 14 mm over the threaded length first (ring pi (7.3^2 - 7^2) 10 = 134.7743) and the groove is cut from there (5 turns, 50.18900 each). V = 1600 + pi 7.3^2 15 - 134.7743 - 5 x 50.18900 = 3725.5127 mm3. The groove's last end may nick the unturned boss by well under 0.2 mm3. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 3725.5127, - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -10, - -10, - 0 - ], - "max": [ - 10, - 10, - 19 - ] - } -} diff --git a/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-shaft-refused/expected.json b/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-shaft-refused/expected.json new file mode 100644 index 0000000000..b645141044 --- /dev/null +++ b/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-shaft-refused/expected.json @@ -0,0 +1,12 @@ +{ + "sources": [ + "tangency-labs/solidcraft#2705", + "tangency-labs/solidcraft#1018", + "tangency-labs/solidcraft#2853" + ], + "what": "a modelled thread on a shaft that isn't the thread's size: refused with the size to use, never a silent change of the shaft", + "source": "analytic", + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the shaft it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M14: an external thread's major diameter is 14 mm; a 14.6 mm shaft is above it, so the thread would have to turn the shaft down. Expected message: \"this 14.6 mm shaft is too thick for a modelled M14 thread; make the shaft 14 mm for M14\".", + "outcome": "refused", + "refusal": "this 14.6 mm shaft is too thick for a modelled M14 thread; make the shaft 14 mm for M14" +} diff --git a/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-boss-turned-to-major/recipe.json b/tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-shaft-refused/recipe.json similarity index 100% rename from tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-boss-turned-to-major/recipe.json rename to tests/kernel-cases/threads/2705-m14-thread-on-14.6mm-shaft-refused/recipe.json diff --git a/tests/kernel-cases/threads/2969-m48x0.75-thread-in-48mm-hole/expected.json b/tests/kernel-cases/threads/2969-m48x0.75-thread-in-48mm-hole/expected.json index f7b48aa59d..cd0168e5d8 100644 --- a/tests/kernel-cases/threads/2969-m48x0.75-thread-in-48mm-hole/expected.json +++ b/tests/kernel-cases/threads/2969-m48x0.75-thread-in-48mm-hole/expected.json @@ -1,31 +1,12 @@ { "sources": [ - "tangency-labs/solidcraft#2969" + "tangency-labs/solidcraft#2969", + "tangency-labs/solidcraft#1018", + "tangency-labs/solidcraft#2853" ], - "what": "a modelled M48x0.75 internal thread in a 48 mm hole drawn at the thread's nominal size", + "what": "a modelled thread on a hole that isn't the thread's size: refused with the size to use, never a silent change of the hole", "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 48 mm hole through a D54 x 3 disc, drawn at the thread's nominal size, takes a modelled M48x0.75: the hole is first filled to the tap drill (major - pitch = 47.25 mm, rho=23.625), then the groove is cut, the same thread as in a hole drilled at the tap drill. Whole length, both ends free (4 turns): V = pi 27^2 3 - pi 23.625^2 3 - 4 x V_turn(clipped at rho) = 6870.6631 - 5260.3515 - 4 x 17.37563 = 1540.8091 mm3. The thin lips a tap leaves at each end are below 0.2% of the volume. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 1540.8091, - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -27, - -27, - 0 - ], - "max": [ - 27, - 27, - 3 - ] - }, - "center_of_mass": [ - 0, - 0, - 1.5 - ] + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the hole it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M48x0.75: tap drill = 48 - 0.75 = 47.25 mm; depth 5H/8 = 5/8 x 0.75 x sqrt3/2 = 0.406 mm; the 48 mm hole is at the major diameter. Expected message: \"this 48 mm hole is too wide for a modelled M48x0.75 thread: it would cut 0.00 mm of the thread's 0.41 mm depth; drill 47.25 mm for M48x0.75, or thread this hole M56\".", + "outcome": "refused", + "refusal": "this 48 mm hole is too wide for a modelled M48x0.75 thread: it would cut 0.00 mm of the thread's 0.41 mm depth; drill 47.25 mm for M48x0.75, or thread this hole M56" } diff --git a/tests/kernel-cases/threads/3366-m20-thread-in-20mm-hole/expected.json b/tests/kernel-cases/threads/3366-m20-thread-in-20mm-hole/expected.json index 94019f9725..ccc00ad3ff 100644 --- a/tests/kernel-cases/threads/3366-m20-thread-in-20mm-hole/expected.json +++ b/tests/kernel-cases/threads/3366-m20-thread-in-20mm-hole/expected.json @@ -1,32 +1,13 @@ { "sources": [ "tangency-labs/solidcraft#3366", - "tangency-labs/solidcraft#3367" + "tangency-labs/solidcraft#3367", + "tangency-labs/solidcraft#1018", + "tangency-labs/solidcraft#2853" ], - "what": "a modelled M20 internal thread in a 20 mm hole, made after the 20 mm cylinder's own thread", + "what": "a modelled thread on a hole that isn't the thread's size: refused with the size to use, never a silent change of the hole", "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 20 mm hole through a D48 x 10 disc, drawn at the thread's nominal size, takes a modelled M20: the hole is first filled to the tap drill (major - pitch = 17.5 mm, rho=8.75), then the groove is cut, the same thread as in a hole drilled at the tap drill. Whole length, both ends free (4 turns): V = pi 24^2 10 - pi 8.75^2 10 - 4 x V_turn(clipped at rho) = 18095.5737 - 2405.2819 - 4 x 74.96751 = 15390.4218 mm3. The thin lips a tap leaves at each end are below 0.2% of the volume. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 15390.4218, - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -24, - -24, - 0 - ], - "max": [ - 24, - 24, - 10 - ] - }, - "center_of_mass": [ - 0, - 0, - 5.0 - ] + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the hole it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M20 (P 2.5): tap drill = 20 - 2.5 = 17.5 mm; depth 5H/8 = 5/8 x 2.5 x sqrt3/2 = 1.353 mm; the 20 mm hole is at the major diameter. Expected message: \"this 20 mm hole is too wide for a modelled M20 thread: it would cut 0.00 mm of the thread's 1.35 mm depth; drill 17.5 mm for M20, or thread this hole M22\".", + "outcome": "refused", + "refusal": "this 20 mm hole is too wide for a modelled M20 thread: it would cut 0.00 mm of the thread's 1.35 mm depth; drill 17.5 mm for M20, or thread this hole M22" } diff --git a/tests/kernel-cases/threads/995-m5-thread-in-5mm-hole/expected.json b/tests/kernel-cases/threads/995-m5-thread-in-5mm-hole/expected.json index 5069a84e04..ae0f679579 100644 --- a/tests/kernel-cases/threads/995-m5-thread-in-5mm-hole/expected.json +++ b/tests/kernel-cases/threads/995-m5-thread-in-5mm-hole/expected.json @@ -1,32 +1,12 @@ { "sources": [ "tangency-labs/solidcraft#995", - "tangency-labs/solidcraft#1018" + "tangency-labs/solidcraft#1018", + "tangency-labs/solidcraft#2853" ], - "what": "a modelled M5 thread in a hole drawn at 5 mm, the thread's own size (nothing was cut: the wall only turned faceted)", + "what": "a modelled thread on a hole that isn't the thread's size: refused with the size to use, never a silent change of the hole", "source": "analytic", - "method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. A 5 mm hole through a D14 x 4 disc, drawn at the thread's nominal size, takes a modelled M5: the hole is first filled to the tap drill (major - pitch = 4.2 mm, rho=2.1), then the groove is cut, the same thread as in a hole drilled at the tap drill. Whole length, both ends free (5 turns): V = pi 7^2 4 - pi 2.1^2 4 - 5 x V_turn(clipped at rho) = 615.7522 - 55.4177 - 5 x 1.87431 = 550.9629 mm3. The thin lips a tap leaves at each end are below 0.2% of the volume. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).", - "outcome": "solid", - "body_count": 1, - "volume_mm3": 550.9629, - "tolerance": { - "rel": 0.01 - }, - "bbox": { - "min": [ - -7, - -7, - 0 - ], - "max": [ - 7, - 7, - 4 - ] - }, - "center_of_mass": [ - 0, - 0, - 2.0 - ] + "method": "Decision (#1018, #2853): a modelled thread never changes the size of the hole it is on; one that isn't the thread's size is refused, naming the size to use. A fill-to-tap-drill or turn-down option would be opt-in, off by default (see #3060), and get its own case. The refusal's numbers, from ISO 68-1 (H = P sqrt3/2, basic depth 5H/8): M5 (P 0.8): tap drill = 5 - 0.8 = 4.2 mm; basic depth 5H/8 = 5/8 x 0.8 x sqrt3/2 = 0.433 mm; a 5 mm hole is at the major diameter, so the internal thread (major d, minor d - 2 x 5H/8) cuts 0.00 mm. Expected message: \"this 5 mm hole is too wide for a modelled M5 thread: it would cut 0.00 mm of the thread's 0.43 mm depth; drill 4.2 mm for M5, or thread this hole M6\".", + "outcome": "refused", + "refusal": "this 5 mm hole is too wide for a modelled M5 thread: it would cut 0.00 mm of the thread's 0.43 mm depth; drill 4.2 mm for M5, or thread this hole M6" }