A quick way to create nutcatches, screw holes and countersinks in CadQuery, according to fastener standards
Project description
cq-queryabolt
A quick way to create nutcatches, screw holes and countersinks in CadQuery, according to fastener standards.
.
Requirements and installation
poetry add cq-queryabolt
Usage
To create a simple box with a bolt hole and a nutcatch:
import queryabolt
import cadquery as cq
class Workplane(queryabolt.WorkplaneMixin, cq.Workplane):
pass
box = Workplane().box(25, 10, 10)
# A nutcatch on the bottom:
result = box.faces("<Z").workplane().tag("center").nutcatchParallel("M3")
# And a bolt hole through:
result = result.faces(">Z").workplane().boltHole("M3")
show_object(result, name="simple")
Or check out the example showcasing all the features, or using a cadquery.Assembly
.
API
queryabolt.WorkplaneMixin
boltHole(bolt: string, depth: Optional[float] = None)
Make a bolt hole (cadquery.Workplane.hole
for named fasteners)
Args:
bolt
(str
): name of the bolt (e.g."M3"
)depth
(float >= 0
orNone
to cut through the entire part): how deep to make the hole
cboreBoltHole(bolt: str, depth: Optional[float] = None, headDiameterClearance: Optional[float] = 0.1)
Make a counterbored hole (cadquery.Workplane.cboreHole
for named fasteners)
Args:
bolt
(str
): name of the bolt (e.g."M3"
)depth
(float >= 0
orNone
to cut through the entire part): how deep to make the holeheadClearance
(float >= 0
, optional): additional bolt head clearance. Defaults to 0.1.
cskBoltHole(bolt: string, depth: Optional[float] = None)
Make a countersunk hole (cadquery.Workplane.cskHole
for named fasteners)
Args:
bolt
(str
): name of the bolt (e.g."M3"
)depth
(float > 0
orNone
to cut through the entire part): how deep to make the hole
nutcatchParallel(options: string, kind: Optional[string] = "hexagon", heightClearance: Optional[float] = 0)
Make a parallel (surface) nutcatch
Args:
options
(str
): name of the nut (e.g."M3"
)kind
(str
, optional): kind of the nut (e.g."hexagon"
). Defaults to"hexagon"
.heightClearance
(float, optional): height clearance for the nut. Defaults to 0.
nutcatchSidecut(options: string, kind: Optional[string] = "hexagon", heightClearance: Optional[float] = 0, depth: Optional[float] = None)
Make a side-cut nutcatch
Args:
options
(str
): name of the nut (e.g."M3"
)kind
(str
, optional): kind of the nut (e.g."hexagon"
). Defaults to"hexagon"
.heightClearance
(float >= 0
, optional): additional height clearance for the nut. Defaults to 0.depth
(float > 0
orNone
to cut through the entire part): how deep to make the sidecut. Defaults toNone
.
Acknowledgements
Prior work
The following turned out too verbose for the simpler end of the spectrum of my projects:
Similar library for OpenSCAD, by yours truly:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cq_queryabolt-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 460cab01de85a6e64c4830a34e54b1158426a9bdbb030c83a4acbc3f3052a5c2 |
|
MD5 | 0342c7bedebbb760b2dd869c14d71911 |
|
BLAKE2b-256 | 6379071504b7fa36a6afc38b8bc02fe8f687a8f2cedcfc4f51f744732a1e5c89 |