solid.Shape

Methods

Method Reference: solid.Shape.thread

solid.Shape: S = thread (S, P, NAME, DEPTH)

solid.Shape: S = thread (…, Name, Value, …)

Cut screw threads into a shape.

S = thread (S, P, NAME, DEPTH) cuts the ISO metric thread NAME at every row of the M-by-3 matrix P, each along an axis starting at its point and running down the z axis, DEPTH millimetres deep. NAME is named as for solid.Shape.hole: a coarse thread by its diameter, as 'M6', a fine one with its pitch, as 'M10x1.25', from M1 to M64 with a diameter and pitch of ISO 261, or any diameter and pitch with 'Custom', cut by the same profile and turned to the same class 6g as an ISO thread. P and DEPTH are those of solid.Shape.hole, so a thread is placed as its tapping hole is: DEPTH is the usable length of thread, the full profile reaching it, and a blind tapped hole is drilled deeper than it is threaded. An Inf DEPTH threads right through, and no thread runs more than a pitch past the far side of the part.

What the axis meets decides the thread. Where it runs through a bore between the thread’s minor diameter D_1 = D - 1.0825 P and its nominal diameter, the thread is internal and is cut from the bore as drilled, so its crest stands where the drill left it: a hole drilled with solid.Shape.hole for steel or for stainless steel models the engagement each gives. Where it runs into a solid cylinder from halfway between the pitch diameter d - 0.6495 P and the nominal diameter up to the nominal diameter, 5.675 to 6 for M6, the thread is external and is cut from the cylinder as turned. A cylinder at the nominal diameter, which is how a rod is designed, is first turned down over the threaded length to the largest major diameter of tolerance class 6g, as a machinist turns a blank before threading it: the nominal diameter plus the fundamental deviation of position g, -(15 + 11 P) micrometres, of ISO 965-1:1998, 13.1, rounded as its table 1 is, to the R 40 series of ISO 3 and then to a whole number. M6 is turned to 5.974. A blank of another diameter is turned in the design. An axis that meets neither is an error naming the thread and the point, and so is a thread that would cut beyond its bore or cylinder: the bore must run on 0.03 pitches past the thread, and a cylinder must reach as far before any shoulder.

A tube is threaded inside or outside, by whichever of its bore and its cylinder fits: a tube of 6 with a bore of 2 takes an external M6. A wall whose bore and cylinder both fit is thinner than either thread is deep, and is an error, as is an internal thread that would cut through the wall round its bore: a cylinder, or any other outline, as the flats of a hexagon or the teeth of a knurl.

The profile is the basic profile of ISO 68-1, its 60 degree flanks swept round the axis by solid.helix: an internal thread’s root is flat at the nominal diameter, an external thread’s flat at D_1. The thread is right-handed, and starts a pitch before the point so that it runs out of the surface clean.

Open CASCADE fails to cut some threads, at depths no rule predicts. Such a thread is cut again by a tool built another way, and kept only when it removes the volume its groove holds inside the part; otherwise it is an error naming the thread and the point.

Name/Value pairs place the threads as for solid.Shape.hole:

'Direction'
The nonzero 3-element direction the axes run in from their points, [0, 0, -1] by default. It cannot be given when P is a geom.UCS.
'At'
An N-by-2 matrix of points in the plane of the geom.UCS P, one thread at each, all against its normal; the UCS origin alone by default. It applies only when P is a geom.UCS.
'Custom'
True to take a thread of any diameter and pitch, as for solid.Shape.hole, false by default.

Threading the empty shape leaves it empty.

 
 ## A block tapped M6 12 deep, its hole drilled 15 deep
 S = solid.box (20, 20, 20);
 S = hole (S, [10, 10, 20], 'M6', 15);
 S = thread (S, [10, 10, 20], 'M6', 12);
 
 ## A rod of 10 threaded M10 for 15 from its end
 S = solid.cylinder (5, 40);
 S = thread (S, [0, 0, 40], 'M10', 15);

See also: solid.Shape.hole, solid.threadspec, solid.helix

Source Code: solid.Shape