CadQuery Class Summary
This page documents all of the methods and functions of the CadQuery classes, organized alphabetically.
See also
For a listing organized by functional area, see the API Reference
Core Classes
|
2D sketch. |
|
Defines a coordinate system in space, in which 2D coordinates can be used. |
|
Nested assembly of Workplane and Shape objects defining their relative positions. |
alias of |
Topological Classes
|
Represents a shape in the system. |
|
A Single Point in Space |
|
A trimmed curve that represents the border of a face |
|
A series of connected, ordered Edges, that typically bounds a Face |
|
a bounded surface that represents part of the boundary of a solid |
|
the outer boundary of a surface |
|
a single solid |
|
a collection of disconnected solids |
Geometry Classes
|
Create a 3-dimensional vector |
|
A 3d , 4x4 transformation matrix. |
|
A 2D coordinate system in space |
|
Location in 3D space. |
Selector Classes
|
Filters a list of objects. |
Selects object nearest the provided point. |
|
|
Selects objects inside the 3D box defined by 2 points. |
|
A selector that handles selection on the basis of a single direction vector. |
|
Selects objects parallel with the provided direction. |
|
Selects objects aligned with the provided direction. |
|
Selects objects perpendicular with the provided direction. |
|
Selects objects having the prescribed geometry type. |
|
Select the object with the Nth radius. |
|
Sorts objects into a list with order determined by the distance of their center projected onto the specified direction. |
|
Selects objects closest or farthest in the specified direction. |
|
Filters for objects parallel (or normal) to the specified direction then returns the Nth one. |
|
Select the object(s) with the Nth length |
|
Selects the object(s) with Nth area |
|
Base class for selectors that operates with two other selectors. |
|
Intersection selector. |
|
Union selector. |
|
Difference selector. |
|
Inverts the selection of given selector. |
|
Filter lists objects using a simple string syntax. |
Class Details
- class cadquery.Assembly(obj: Optional[Union[Shape, Workplane]] = None, loc: Optional[Location] = None, name: Optional[str] = None, color: Optional[Color] = None, metadata: Optional[Dict[str, Any]] = None)[source]
Bases:
object
Nested assembly of Workplane and Shape objects defining their relative positions.
- Parameters
- __init__(obj: Optional[Union[Shape, Workplane]] = None, loc: Optional[Location] = None, name: Optional[str] = None, color: Optional[Color] = None, metadata: Optional[Dict[str, Any]] = None)[source]
construct an assembly
- Parameters
obj (Optional[Union[Shape, Workplane]]) – root object of the assembly (default: None)
loc (Optional[Location]) – location of the root object (default: None, interpreted as identity transformation)
name (Optional[str]) – unique name of the root object (default: None, resulting in an UUID being generated)
color (Optional[Color]) – color of the added object (default: None)
metadata (Optional[Dict[str, Any]]) – a store for user-defined metadata (default: None)
- Returns
An Assembly object.
To create an empty assembly use:
assy = Assembly(None)
To create one constraint a root object:
b = Workplane().box(1, 1, 1) assy = Assembly(b, Location(Vector(0, 0, 1)), name="root")
- __iter__(loc: Optional[Location] = None, name: Optional[str] = None, color: Optional[Color] = None) Iterator[Tuple[Shape, str, Location, Optional[Color]]] [source]
Assembly iterator yielding shapes, names, locations and colors.
- __weakref__
list of weak references to the object (if defined)
- add(obj: Assembly, loc: Optional[Location] = None, name: Optional[str] = None, color: Optional[Color] = None) Assembly [source]
- add(obj: Optional[Union[Shape, Workplane]], loc: Optional[Location] = None, name: Optional[str] = None, color: Optional[Color] = None, metadata: Optional[Dict[str, Any]] = None) Assembly
Add a subassembly to the current assembly.
- constrain(q1: str, q2: str, kind: Literal['Plane', 'Point', 'Axis', 'PointInPlane', 'Fixed', 'FixedPoint', 'FixedAxis', 'PointOnLine', 'FixedRotation'], param: Any = None) Assembly [source]
- constrain(q1: str, kind: Literal['Plane', 'Point', 'Axis', 'PointInPlane', 'Fixed', 'FixedPoint', 'FixedAxis', 'PointOnLine', 'FixedRotation'], param: Any = None) Assembly
- constrain(id1: str, s1: Shape, id2: str, s2: Shape, kind: Literal['Plane', 'Point', 'Axis', 'PointInPlane', 'Fixed', 'FixedPoint', 'FixedAxis', 'PointOnLine', 'FixedRotation'], param: Any = None) Assembly
- constrain(id1: str, s1: Shape, kind: Literal['Plane', 'Point', 'Axis', 'PointInPlane', 'Fixed', 'FixedPoint', 'FixedAxis', 'PointOnLine', 'FixedRotation'], param: Any = None) Assembly
Define a new constraint.
- export(path: str, exportType: Optional[Literal['STEP', 'XML', 'GLTF', 'VTKJS', 'VRML', 'STL']] = None, mode: Literal['default', 'fused'] = 'default', tolerance: float = 0.1, angularTolerance: float = 0.1, **kwargs) Assembly [source]
Save assembly to a file.
- Parameters
path (str) – Path and filename for writing.
exportType (Optional[Literal['STEP', 'XML', 'GLTF', 'VTKJS', 'VRML', 'STL']]) – export format (default: None, results in format being inferred form the path)
mode (Literal['default', 'fused']) – STEP only - See
exportAssembly()
.tolerance (float) – the deflection tolerance, in model units. Only used for glTF, VRML. Default 0.1.
angularTolerance (float) – the angular tolerance, in radians. Only used for glTF, VRML. Default 0.1.
**kwargs – Additional keyword arguments. Only used for STEP, glTF and STL. See
exportAssembly()
.ascii (bool) – STL only - Sets whether or not STL export should be text or binary
- Return type
- save(path: str, exportType: Optional[Literal['STEP', 'XML', 'GLTF', 'VTKJS', 'VRML', 'STL']] = None, mode: Literal['default', 'fused'] = 'default', tolerance: float = 0.1, angularTolerance: float = 0.1, **kwargs) Assembly [source]
Save assembly to a file.
- Parameters
path (str) – Path and filename for writing.
exportType (Optional[Literal['STEP', 'XML', 'GLTF', 'VTKJS', 'VRML', 'STL']]) – export format (default: None, results in format being inferred form the path)
mode (Literal['default', 'fused']) – STEP only - See
exportAssembly()
.tolerance (float) – the deflection tolerance, in model units. Only used for glTF, VRML. Default 0.1.
angularTolerance (float) – the angular tolerance, in radians. Only used for glTF, VRML. Default 0.1.
**kwargs – Additional keyword arguments. Only used for STEP, glTF and STL. See
exportAssembly()
.ascii (bool) – STL only - Sets whether or not STL export should be text or binary
- Return type
- solve(verbosity: int = 0) Assembly [source]
Solve the constraints.
- Parameters
verbosity (int) –
- Return type
- class cadquery.BoundBox(bb: Bnd_Box)[source]
Bases:
object
A BoundingBox for an object or set of objects. Wraps the OCP one
- Parameters
bb (Bnd_Box) –
- __weakref__
list of weak references to the object (if defined)
- add(obj: Union[Tuple[float, float, float], Vector, BoundBox], tol: Optional[float] = None) BoundBox [source]
Returns a modified (expanded) bounding box
- obj can be one of several things:
a 3-tuple corresponding to x,y, and z amounts to add
a vector, containing the x,y,z values to add
another bounding box, where a new box will be created that encloses both.
This bounding box is not changed.
- enlarge(tol: float) BoundBox [source]
Returns a modified (expanded) bounding box, expanded in all directions by the tolerance value.
This means that the minimum values of its X, Y and Z intervals of the bounding box are reduced by the absolute value of tol, while the maximum values are increased by the same amount.
- Parameters
tol (float) –
- Return type
- static findOutsideBox2D(bb1: BoundBox, bb2: BoundBox) Optional[BoundBox] [source]
Compares bounding boxes
Compares bounding boxes. Returns none if neither is inside the other. Returns the outer one if either is outside the other.
BoundBox.isInside works in 3d, but this is a 2d bounding box, so it doesn’t work correctly plus, there was all kinds of rounding error in the built-in implementation i do not understand.
- class cadquery.Color(name: str)[source]
- class cadquery.Color(r: float, g: float, b: float, a: float = 0)
- class cadquery.Color
Bases:
object
Wrapper for the OCCT color object Quantity_ColorRGBA.
- __weakref__
list of weak references to the object (if defined)
- class cadquery.Compound(obj: TopoDS_Shape)[source]
-
a collection of disconnected solids
- Parameters
obj (TopoDS_Shape) –
- ancestors(shape: Shape, kind: Literal['Vertex', 'Edge', 'Wire', 'Face', 'Shell', 'Solid', 'CompSolid', 'Compound']) Compound [source]
Iterate over ancestors, i.e. shapes of same kind within shape that contain elements of self.
- cut(*toCut: Shape, tol: Optional[float] = None) Compound [source]
Remove the positional arguments from this Shape.
- fuse(*toFuse: Shape, glue: bool = False, tol: Optional[float] = None) Compound [source]
Fuse shapes together
- intersect(*toIntersect: Shape, tol: Optional[float] = None) Compound [source]
Intersection of the positional arguments and this Shape.
- classmethod makeCompound(listOfShapes: Iterable[Shape]) Compound [source]
Create a compound out of a list of shapes
- classmethod makeText(text: str, size: float, height: float, font: str = 'Arial', fontPath: Optional[str] = None, kind: Literal['regular', 'bold', 'italic'] = 'regular', halign: Literal['center', 'left', 'right'] = 'center', valign: Literal['center', 'top', 'bottom'] = 'center', position: Plane = Plane(origin=(0.0, 0.0, 0.0), xDir=(1.0, 0.0, 0.0), normal=(0.0, 0.0, 1.0))) Shape [source]
Create a 3D text
- cadquery.Constraint
alias of
ConstraintSpec
- class cadquery.DirectionMinMaxSelector(vector: Vector, directionMax: bool = True, tolerance: float = 0.0001)[source]
Bases:
CenterNthSelector
Selects objects closest or farthest in the specified direction.
- Applicability:
All object types. for a vertex, its point is used. for all other kinds of objects, the center of mass of the object is used.
You can use the string shortcuts >(X|Y|Z) or <(X|Y|Z) if you want to select based on a cardinal direction.
For example this:
CQ(aCube).faces(DirectionMinMaxSelector((0, 0, 1), True))
Means to select the face having the center of mass farthest in the positive z direction, and is the same as:
CQ(aCube).faces(">Z")
- Parameters
vector (Vector) –
directionMax (bool) –
tolerance (float) –
- class cadquery.DirectionSelector(vector: Vector, tolerance: float = 0.0001)[source]
Bases:
BaseDirSelector
Selects objects aligned with the provided direction.
- Applicability:
Linear Edges Planar Faces
Use the string syntax shortcut +/-(X|Y|Z) if you want to select based on a cardinal direction.
Example:
CQ(aCube).faces(DirectionSelector((0, 0, 1)))
selects faces with the normal in the z direction, and is equivalent to:
CQ(aCube).faces("+Z")
- Parameters
vector (Vector) –
tolerance (float) –
- class cadquery.Edge(obj: TopoDS_Shape)[source]
-
A trimmed curve that represents the border of a face
- Parameters
obj (TopoDS_Shape) –
- classmethod makeBezier(points: List[Vector]) Edge [source]
Create a cubic Bézier Curve from the points.
- classmethod makeEllipse(x_radius: float, y_radius: float, pnt: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0), xdir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (1.0, 0.0, 0.0), angle1: float = 360.0, angle2: float = 360.0, sense: ~typing.Literal[-1, 1] = 1) Edge [source]
Makes an Ellipse centered at the provided point, having normal in the provided direction.
- Parameters
cls –
x_radius (float) – x radius of the ellipse (along the x-axis of plane the ellipse should lie in)
y_radius (float) – y radius of the ellipse (along the y-axis of plane the ellipse should lie in)
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – vector representing the center of the ellipse
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – vector representing the direction of the plane the ellipse should lie in
angle1 (float) – start angle of arc
angle2 (float) – end angle of arc (angle2 == angle1 return closed ellipse = default)
sense (Literal[-1, 1]) – clockwise (-1) or counter clockwise (1)
xdir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
- Returns
an Edge
- Return type
- classmethod makeLine(v1: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], v2: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) Edge [source]
Create a line between two points
- Parameters
v1 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – Vector that represents the first point
v2 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – Vector that represents the second point
- Returns
A linear edge between the two provided points
- Return type
- classmethod makeSpline(listOfVector: List[Vector], tangents: Optional[Sequence[Vector]] = None, periodic: bool = False, parameters: Optional[Sequence[float]] = None, scale: bool = True, tol: float = 1e-06) Edge [source]
Interpolate a spline through the provided points.
- Parameters
listOfVector (List[Vector]) – a list of Vectors that represent the points
tangents (Optional[Sequence[Vector]]) – tuple of Vectors specifying start and finish tangent
periodic (bool) – creation of periodic curves
parameters (Optional[Sequence[float]]) – the value of the parameter at each interpolation point. (The interpolated curve is represented as a vector-valued function of a scalar parameter.) If periodic == True, then len(parameters) must be len(intepolation points) + 1, otherwise len(parameters) must be equal to len(interpolation points).
scale (bool) – whether to scale the specified tangent vectors before interpolating. Each tangent is scaled, so it’s length is equal to the derivative of the Lagrange interpolated curve. I.e., set this to True, if you want to use only the direction of the tangent vectors specified by
tangents
, but not their magnitude.tol (float) – tolerance of the algorithm (consult OCC documentation). Used to check that the specified points are not too close to each other, and that tangent vectors are not too short. (In either case interpolation may fail.)
- Returns
an Edge
- Return type
- classmethod makeSplineApprox(listOfVector: List[Vector], tol: float = 0.001, smoothing: Optional[Tuple[float, float, float]] = None, minDeg: int = 1, maxDeg: int = 6) Edge [source]
Approximate a spline through the provided points.
- Parameters
listOfVector (List[Vector]) – a list of Vectors that represent the points
tol (float) – tolerance of the algorithm (consult OCC documentation).
smoothing (Optional[Tuple[float, float, float]]) – optional tuple of 3 weights use for variational smoothing (default: None)
minDeg (int) – minimum spline degree. Enforced only when smothing is None (default: 1)
maxDeg (int) – maximum spline degree (default: 6)
- Returns
an Edge
- Return type
- classmethod makeTangentArc(v1: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], v2: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], v3: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) Edge [source]
Makes a tangent arc from point v1, in the direction of v2 and ends at v3.
- Parameters
cls –
v1 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – start vector
v2 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – tangent vector
v3 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – end vector
- Returns
an edge
- Return type
- classmethod makeThreePointArc(v1: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], v2: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], v3: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) Edge [source]
Makes a three point arc through the provided points
- Parameters
cls –
v1 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – start vector
v2 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – middle vector
v3 (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – end vector
- Returns
an edge object through the three points
- Return type
- class cadquery.Face(obj: TopoDS_Shape)[source]
Bases:
Shape
a bounded surface that represents part of the boundary of a solid
- Parameters
obj (TopoDS_Shape) –
- classmethod makeFromWires(outerWire: Wire, innerWires: List[Wire] = []) Face [source]
Makes a planar face from one or more wires
- classmethod makeNSidedSurface(edges: ~typing.Iterable[~typing.Union[~cadquery.occ_impl.shapes.Edge, ~cadquery.occ_impl.shapes.Wire]], constraints: ~typing.Iterable[~typing.Union[~cadquery.occ_impl.shapes.Edge, ~cadquery.occ_impl.shapes.Wire, ~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]], ~OCP.gp.gp_Pnt]], continuity: ~OCP.GeomAbs.GeomAbs_Shape = <GeomAbs_Shape.GeomAbs_C0: 0>, degree: int = 3, nbPtsOnCur: int = 15, nbIter: int = 2, anisotropy: bool = False, tol2d: float = 1e-05, tol3d: float = 0.0001, tolAng: float = 0.01, tolCurv: float = 0.1, maxDeg: int = 8, maxSegments: int = 9) Face [source]
Returns a surface enclosed by a closed polygon defined by ‘edges’ and ‘constraints’.
- Parameters
edges (list of edges or wires) – edges
constraints (list of points or edges) – constraints
continuity (GeomAbs_Shape) – OCC.Core.GeomAbs continuity condition
degree (int) – >=2
nbPtsOnCur (int) – number of points on curve >= 15
nbIter (int) – number of iterations >= 2
anisotropy (bool) – bool Anisotropy
tol2d (float) – 2D tolerance >0
tol3d (float) – 3D tolerance >0
tolAng (float) – angular tolerance
tolCurv (float) – tolerance for curvature >0
maxDeg (int) – highest polynomial degree >= 2
maxSegments (int) – greatest number of segments >= 2
- Return type
- classmethod makeRuledSurface(edgeOrWire1: Edge, edgeOrWire2: Edge) Face [source]
- classmethod makeRuledSurface(edgeOrWire1: Wire, edgeOrWire2: Wire) Face
makeRuledSurface(Edge|Wire,Edge|Wire) – Make a ruled surface Create a ruled surface out of two edges or wires. If wires are used then these must have the same number of edges
- classmethod makeSplineApprox(points: List[List[Vector]], tol: float = 0.01, smoothing: Optional[Tuple[float, float, float]] = None, minDeg: int = 1, maxDeg: int = 3) Face [source]
Approximate a spline surface through the provided points.
- Parameters
points (List[List[Vector]]) – a 2D list of Vectors that represent the points
tol (float) – tolerance of the algorithm (consult OCC documentation).
smoothing (Optional[Tuple[float, float, float]]) – optional tuple of 3 weights use for variational smoothing (default: None)
minDeg (int) – minimum spline degree. Enforced only when smothing is None (default: 1)
maxDeg (int) – maximum spline degree (default: 6)
- Return type
- normalAt(locationVector: Optional[Vector] = None) Vector [source]
Computes the normal vector at the desired location on the face.
- Returns
a vector representing the direction
- Parameters
locationVector (a vector that lies on the surface.) – the location to compute the normal at. If none, the center of the face is used.
- Return type
- thicken(thickness: float) Solid [source]
Return a thickened face
- Parameters
thickness (float) –
- Return type
- class cadquery.Location(t: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]])[source]
Bases:
object
Location in 3D space. Depending on usage can be absolute or relative.
This class wraps the TopLoc_Location class from OCCT. It can be used to move Shape objects in both relative and absolute manner. It is the preferred type to locate objects in CQ.
- Parameters
t (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
- __init__(t: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], ax: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], angle: Union[int, float]) None [source]
- __init__(T: TopLoc_Location) None
- __init__(t: Plane) None
- __init__(x: Union[int, float] = 0, y: Union[int, float] = 0, z: Union[int, float] = 0, rx: Union[int, float] = 0, ry: Union[int, float] = 0, rz: Union[int, float] = 0) None
- __init__(t: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], angles: Tuple[Union[int, float], Union[int, float], Union[int, float]]) None
- __init__(t: Plane, v: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) None
- __init__(T: gp_Trsf) None
- __init__(t: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) None
Location with translation t with respect to the original location.
Location with translation (x,y,z) and 3 rotation angles.
Location corresponding to the location of the Plane t.
Location corresponding to the angular location of the Plane t with translation v.
Location wrapping the low-level TopLoc_Location object t
Location wrapping the low-level gp_Trsf object t
- Location with translation t and rotation around ax by angle
with respect to the original location.
Location with translation t and 3 rotation angles.
- Parameters
t (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
- Return type
None
- __weakref__
list of weak references to the object (if defined)
- class cadquery.Matrix[source]
- class cadquery.Matrix(matrix: Union[gp_GTrsf, gp_Trsf])
- class cadquery.Matrix(matrix: Sequence[Sequence[float]])
Bases:
object
A 3d , 4x4 transformation matrix.
Used to move geometry in space.
The provided “matrix” parameter may be None, a gp_GTrsf, or a nested list of values.
If given a nested list, it is expected to be of the form:
- [[m11, m12, m13, m14],
[m21, m22, m23, m24], [m31, m32, m33, m34]]
A fourth row may be given, but it is expected to be: [0.0, 0.0, 0.0, 1.0] since this is a transform matrix.
- __getitem__(rc: Tuple[int, int]) float [source]
Provide Matrix[r, c] syntax for accessing individual values. The row and column parameters start at zero, which is consistent with most python libraries, but is counter to gp_GTrsf(), which is 1-indexed.
- Parameters
rc (Tuple[int, int]) –
- Return type
float
- __init__() None [source]
- __init__(matrix: Union[gp_GTrsf, gp_Trsf]) None
- __init__(matrix: Sequence[Sequence[float]]) None
- __repr__() str [source]
Generate a valid python expression representing this Matrix
- Return type
str
- __weakref__
list of weak references to the object (if defined)
- class cadquery.NearestToPointSelector(pnt)[source]
Bases:
Selector
Selects object nearest the provided point.
If the object is a vertex or point, the distance is used. For other kinds of shapes, the center of mass is used to to compute which is closest.
Applicability: All Types of Shapes
Example:
CQ(aCube).vertices(NearestToPointSelector((0, 1, 0)))
returns the vertex of the unit cube closest to the point x=0,y=1,z=0
- class cadquery.ParallelDirSelector(vector: Vector, tolerance: float = 0.0001)[source]
Bases:
BaseDirSelector
Selects objects parallel with the provided direction.
- Applicability:
Linear Edges Planar Faces
Use the string syntax shortcut |(X|Y|Z) if you want to select based on a cardinal direction.
Example:
CQ(aCube).faces(ParallelDirSelector((0, 0, 1)))
selects faces with the normal parallel to the z direction, and is equivalent to:
CQ(aCube).faces("|Z")
- Parameters
vector (Vector) –
tolerance (float) –
- class cadquery.PerpendicularDirSelector(vector: Vector, tolerance: float = 0.0001)[source]
Bases:
BaseDirSelector
Selects objects perpendicular with the provided direction.
- Applicability:
Linear Edges Planar Faces
Use the string syntax shortcut #(X|Y|Z) if you want to select based on a cardinal direction.
Example:
CQ(aCube).faces(PerpendicularDirSelector((0, 0, 1)))
selects faces with the normal perpendicular to the z direction, and is equivalent to:
CQ(aCube).faces("#Z")
- Parameters
vector (Vector) –
tolerance (float) –
- class cadquery.Plane(origin: Union[Tuple[float, float, float], Vector], xDir: Optional[Union[Tuple[float, float, float], Vector]] = None, normal: Union[Tuple[float, float, float], Vector] = (0, 0, 1))[source]
Bases:
object
A 2D coordinate system in space
A 2D coordinate system in space, with the x-y axes on the plane, and a particular point as the origin.
A plane allows the use of 2D coordinates, which are later converted to global, 3d coordinates when the operations are complete.
Frequently, it is not necessary to create work planes, as they can be created automatically from faces.
- Parameters
- __hash__ = None
- __init__(origin: Union[Tuple[float, float, float], Vector], xDir: Optional[Union[Tuple[float, float, float], Vector]] = None, normal: Union[Tuple[float, float, float], Vector] = (0, 0, 1))[source]
Create a Plane with an arbitrary orientation
- Parameters
- Raises
ValueError – if the specified xDir is not orthogonal to the provided normal
- __weakref__
list of weak references to the object (if defined)
- classmethod named(stdName: str, origin=(0, 0, 0)) Plane [source]
Create a predefined Plane based on the conventional names.
- Parameters
stdName (string) – one of (XY|YZ|ZX|XZ|YX|ZY|front|back|left|right|top|bottom)
origin (3-tuple of the origin of the new plane, in global coordinates.) – the desired origin, specified in global coordinates
- Return type
Available named planes are as follows. Direction references refer to the global directions.
Name
xDir
yDir
zDir
XY
+x
+y
+z
YZ
+y
+z
+x
ZX
+z
+x
+y
XZ
+x
+z
-y
YX
+y
+x
-z
ZY
+z
+y
-x
front
+x
+y
+z
back
-x
+y
-z
left
+z
+y
-x
right
-z
+y
+x
top
+x
-z
+y
bottom
+x
+z
-y
- rotated(rotate=(0, 0, 0))[source]
Returns a copy of this plane, rotated about the specified axes
Since the z axis is always normal the plane, rotating around Z will always produce a plane that is parallel to this one.
The origin of the workplane is unaffected by the rotation.
Rotations are done in order x, y, z. If you need a different order, manually chain together multiple rotate() commands.
- Parameters
rotate – Vector [xDegrees, yDegrees, zDegrees]
- Returns
a copy of this plane rotated as requested.
- setOrigin2d(x, y)[source]
Set a new origin in the plane itself
Set a new origin in the plane itself. The plane’s orientation and xDrection are unaffected.
- Parameters
x (float) – offset in the x direction
y (float) – offset in the y direction
- Returns
void
The new coordinates are specified in terms of the current 2D system. As an example:
p = Plane.XY() p.setOrigin2d(2, 2) p.setOrigin2d(2, 2)
results in a plane with its origin at (x, y) = (4, 4) in global coordinates. Both operations were relative to local coordinates of the plane.
- toLocalCoords(obj)[source]
Project the provided coordinates onto this plane
- Parameters
obj – an object or vector to convert
- Returns
an object of the same type, but converted to local coordinates
Most of the time, the z-coordinate returned will be zero, because most operations based on a plane are all 2D. Occasionally, though, 3D points outside of the current plane are transformed. One such example is
Workplane.box()
, where 3D corners of a box are transformed to orient the box in space correctly.
- class cadquery.Selector[source]
Bases:
object
Filters a list of objects.
Filters must provide a single method that filters objects.
- __weakref__
list of weak references to the object (if defined)
- class cadquery.Shape(obj: TopoDS_Shape)[source]
Bases:
object
Represents a shape in the system. Wraps TopoDS_Shape.
- Parameters
obj (TopoDS_Shape) –
- BoundingBox(tolerance: Optional[float] = None) BoundBox [source]
Create a bounding box for this Shape.
- CenterOfBoundBox(tolerance: Optional[float] = None) Vector [source]
- Parameters
tolerance (Optional[float]) – Tolerance passed to the
BoundingBox()
method- Returns
Center of the bounding box of this shape
- Return type
- static CombinedCenter(objects: Iterable[Shape]) Vector [source]
Calculates the center of mass of multiple objects.
- static CombinedCenterOfBoundBox(objects: List[Shape]) Vector [source]
Calculates the center of a bounding box of multiple objects.
- CompSolids() List[CompSolid] [source]
- Returns
All the compsolids in this Shape
- Return type
List[CompSolid]
- Compounds() List[Compound] [source]
- Returns
All the compounds in this Shape
- Return type
List[Compound]
- __weakref__
list of weak references to the object (if defined)
- ancestors(shape: Shape, kind: Literal['Vertex', 'Edge', 'Wire', 'Face', 'Shell', 'Solid', 'CompSolid', 'Compound']) Compound [source]
Iterate over ancestors, i.e. shapes of same kind within shape that contain self.
- classmethod cast(obj: TopoDS_Shape, forConstruction: bool = False) Shape [source]
Returns the right type of wrapper, given a OCCT object
- Parameters
obj (TopoDS_Shape) –
forConstruction (bool) –
- Return type
- static computeMass(obj: Shape) float [source]
Calculates the ‘mass’ of an object.
- Parameters
obj (Shape) – Compute the mass of this object
- Return type
float
- copy(mesh: bool = False) T [source]
Creates a new object that is a copy of this object.
- Parameters
self (T) –
mesh (bool) – should I copy the triangulation too (default: False)
- Returns
a copy of the object
- Return type
T
- cut(*toCut: Shape, tol: Optional[float] = None) Shape [source]
Remove the positional arguments from this Shape.
- distance(other: Shape) float [source]
Minimal distance between two shapes
- Parameters
other (Shape) –
- Return type
float
- distances(*others: Shape) Iterator[float] [source]
Minimal distances to between self and other shapes
- Parameters
others (Shape) –
- Return type
Iterator[float]
- export(fname: str, tolerance: float = 0.1, angularTolerance: float = 0.1, opt: Optional[Dict[str, Any]] = None)[source]
Export Shape to file.
- Parameters
self (T) –
fname (str) –
tolerance (float) –
angularTolerance (float) –
opt (Optional[Dict[str, Any]]) –
- exportBrep(f: Union[str, BytesIO]) bool [source]
Export this shape to a BREP file
- Parameters
f (Union[str, BytesIO]) –
- Return type
bool
- exportStep(fileName: str, **kwargs) IFSelect_ReturnStatus [source]
Export this shape to a STEP file.
kwargs is used to provide optional keyword arguments to configure the exporter.
- Parameters
fileName (str) – Path and filename for writing.
write_pcurves (bool) –
Enable or disable writing parametric curves to the STEP file. Default True.
If False, writes STEP file without pcurves. This decreases the size of the resulting STEP file.
precision_mode (int) – Controls the uncertainty value for STEP entities. Specify -1, 0, or 1. Default 0. See OCCT documentation.
- Return type
IFSelect_ReturnStatus
- exportStl(fileName: str, tolerance: float = 0.001, angularTolerance: float = 0.1, ascii: bool = False, relative: bool = True, parallel: bool = True) bool [source]
Exports a shape to a specified STL file.
- Parameters
fileName (str) – The path and file name to write the STL output to.
tolerance (float) – A linear deflection setting which limits the distance between a curve and its tessellation. Setting this value too low will result in large meshes that can consume computing resources. Setting the value too high can result in meshes with a level of detail that is too low. Default is 1e-3, which is a good starting point for a range of cases.
angularTolerance (float) – Angular deflection setting which limits the angle between subsequent segments in a polyline. Default is 0.1.
ascii (bool) – Export the file as ASCII (True) or binary (False) STL format. Default is binary.
relative (bool) – If True, tolerance will be scaled by the size of the edge being meshed. Default is True. Setting this value to True may cause large features to become faceted, or small features dense.
parallel (bool) – If True, OCCT will use parallel processing to mesh the shape. Default is True.
- Return type
bool
- facesIntersectedByLine(point: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], axis: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], tol: float = 0.0001, direction: Optional[Literal['AlongAxis', 'Opposite']] = None)[source]
Computes the intersections between the provided line and the faces of this Shape
- Parameters
point (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – Base point for defining a line
axis (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – Axis on which the line rests
tol (float) – Intersection tolerance
direction (Optional[Literal['AlongAxis', 'Opposite']]) – Valid values: “AlongAxis”, “Opposite”; If specified, will ignore all faces that are not in the specified direction including the face where the point lies if it is the case
- Returns
A list of intersected faces sorted by distance from point
- fuse(*toFuse: Shape, glue: bool = False, tol: Optional[float] = None) Shape [source]
Fuse the positional arguments with this Shape.
- geomType() Literal['Vertex', 'Wire', 'Shell', 'Solid', 'Compound', 'PLANE', 'CYLINDER', 'CONE', 'SPHERE', 'TORUS', 'BEZIER', 'BSPLINE', 'REVOLUTION', 'EXTRUSION', 'OFFSET', 'OTHER', 'LINE', 'CIRCLE', 'ELLIPSE', 'HYPERBOLA', 'PARABOLA'] [source]
Gets the underlying geometry type.
Implementations can return any values desired, but the values the user uses in type filters should correspond to these.
As an example, if a user does:
CQ(object).faces("%mytype")
The expectation is that the geomType attribute will return ‘mytype’
The return values depend on the type of the shape:
Vertex: always ‘Vertex’Edge: LINE, CIRCLE, ELLIPSE, HYPERBOLA, PARABOLA, BEZIER,BSPLINE, OFFSET, OTHERFace: PLANE, CYLINDER, CONE, SPHERE, TORUS, BEZIER, BSPLINE,REVOLUTION, EXTRUSION, OFFSET, OTHERSolid: ‘Solid’Shell: ‘Shell’Compound: ‘Compound’Wire: ‘Wire’- Returns
A string according to the geometry type
- Return type
Literal[‘Vertex’, ‘Wire’, ‘Shell’, ‘Solid’, ‘Compound’, ‘PLANE’, ‘CYLINDER’, ‘CONE’, ‘SPHERE’, ‘TORUS’, ‘BEZIER’, ‘BSPLINE’, ‘REVOLUTION’, ‘EXTRUSION’, ‘OFFSET’, ‘OTHER’, ‘LINE’, ‘CIRCLE’, ‘ELLIPSE’, ‘HYPERBOLA’, ‘PARABOLA’]
- hashCode() int [source]
Returns a hashed value denoting this shape. It is computed from the TShape and the Location. The Orientation is not used.
- Return type
int
- classmethod importBrep(f: Union[str, BytesIO]) Shape [source]
Import shape from a BREP file
- Parameters
f (Union[str, BytesIO]) –
- Return type
- intersect(*toIntersect: Shape, tol: Optional[float] = None) Shape [source]
Intersection of the positional arguments and this Shape.
- isEqual(other: Shape) bool [source]
Returns True if two shapes are equal, i.e. if they share the same TShape with the same Locations and Orientations. Also see
isSame()
.- Parameters
other (Shape) –
- Return type
bool
- isNull() bool [source]
Returns true if this shape is null. In other words, it references no underlying shape with the potential to be given a location and an orientation.
- Return type
bool
- isSame(other: Shape) bool [source]
Returns True if other and this shape are same, i.e. if they share the same TShape with the same Locations. Orientations may differ. Also see
isEqual()
- Parameters
other (Shape) –
- Return type
bool
- isValid() bool [source]
Returns True if no defect is detected on the shape S or any of its subshapes. See the OCCT docs on BRepCheck_Analyzer::IsValid for a full description of what is checked.
- Return type
bool
- locate(loc: Location) T [source]
Apply a location in absolute sense to self
- Parameters
self (T) –
loc (Location) –
- Return type
T
- located(loc: Location) T [source]
Apply a location in absolute sense to a copy of self
- Parameters
self (T) –
loc (Location) –
- Return type
T
- static matrixOfInertia(obj: Shape) List[List[float]] [source]
Calculates the matrix of inertia of an object. Since the part’s density is unknown, this result is inertia/density with units of [1/length]. :param obj: Compute the matrix of inertia of this object
- Parameters
obj (Shape) –
- Return type
List[List[float]]
- mesh(tolerance: float, angularTolerance: float = 0.1)[source]
Generate triangulation if none exists.
- Parameters
tolerance (float) –
angularTolerance (float) –
- mirror(mirrorPlane: Union[Literal['XY', 'YX', 'XZ', 'ZX', 'YZ', 'ZY'], Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]] = 'XY', basePointVector: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]] = (0, 0, 0)) Shape [source]
Applies a mirror transform to this Shape. Does not duplicate objects about the plane.
- Parameters
mirrorPlane (Union[Literal['XY', 'YX', 'XZ', 'ZX', 'YZ', 'ZY'], Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – The direction of the plane to mirror about - one of ‘XY’, ‘XZ’ or ‘YZ’
basePointVector (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – The origin of the plane to mirror about
- Returns
The mirrored shape
- Return type
- move(loc: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) T [source]
- move(loc: Location) T
- move(x: Union[float, int] = 0, y: Union[float, int] = 0, z: Union[float, int] = 0, rx: Union[float, int] = 0, ry: Union[float, int] = 0, rz: Union[float, int] = 0) T
Apply a location in relative sense (i.e. update current location) to self
- Parameters
self (T) –
loc (Location) –
- Return type
T
- moved(x: Union[float, int] = 0, y: Union[float, int] = 0, z: Union[float, int] = 0, rx: Union[float, int] = 0, ry: Union[float, int] = 0, rz: Union[float, int] = 0) T [source]
- moved(loc: Sequence[Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]]) T
- moved(loc: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) T
- moved(loc1: Location, loc2: Location, *locs: Location) T
- moved(loc1: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], loc2: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], *locs: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) T
- moved(locs: Sequence[Location]) T
- moved(loc: Location) T
Apply a location in relative sense (i.e. update current location) to a copy of self
- Parameters
self (T) –
loc (Location) –
- Return type
T
- rotate(startVector: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], endVector: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], angleDegrees: float) T [source]
Rotates a shape around an axis.
- Parameters
self (T) –
startVector (either a 3-tuple or a Vector) – start point of rotation axis
endVector (either a 3-tuple or a Vector) – end point of rotation axis
angleDegrees (float) – angle to rotate, in degrees
- Returns
a copy of the shape, rotated
- Return type
T
- scale(factor: float) Shape [source]
Scales this shape through a transformation.
- Parameters
factor (float) –
- Return type
- siblings(shape: Shape, kind: Literal['Vertex', 'Edge', 'Wire', 'Face', 'Shell', 'Solid', 'CompSolid', 'Compound'], level: int = 1) Compound [source]
Iterate over siblings, i.e. shapes within shape that share subshapes of kind with self.
- toSplines(degree: int = 3, tolerance: float = 0.001, nurbs: bool = False) T [source]
Approximate shape with b-splines of the specified degree.
- Parameters
self (T) –
degree (int) – Maximum degree.
tolerance (float) – Approximation tolerance.
nurbs (bool) – Use rational splines.
- Return type
T
- toVtkPolyData(tolerance: Optional[float] = None, angularTolerance: Optional[float] = None, normals: bool = False) vtkPolyData [source]
Convert shape to vtkPolyData
- Parameters
tolerance (Optional[float]) –
angularTolerance (Optional[float]) –
normals (bool) –
- Return type
vtkPolyData
- transformGeometry(tMatrix: Matrix) Shape [source]
Transforms this shape by tMatrix.
WARNING: transformGeometry will sometimes convert lines and circles to splines, but it also has the ability to handle skew and stretching transformations.
If your transformation is only translation and rotation, it is safer to use
transformShape()
, which doesn’t change the underlying type of the geometry, but cannot handle skew transformations.
- transformShape(tMatrix: Matrix) Shape [source]
Transforms this Shape by tMatrix. Also see
transformGeometry()
.
- translate(vector: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) T [source]
Translates this shape through a transformation.
- Parameters
self (T) –
vector (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
- Return type
T
- class cadquery.Shell(obj: TopoDS_Shape)[source]
Bases:
Shape
the outer boundary of a surface
- Parameters
obj (TopoDS_Shape) –
- class cadquery.Sketch(parent: ~typing.Any = None, locs: ~typing.Iterable[~cadquery.occ_impl.geom.Location] = (<cadquery.occ_impl.geom.Location object>, ), obj: ~typing.Optional[~cadquery.occ_impl.shapes.Compound] = None)[source]
Bases:
object
2D sketch. Supports faces, edges and edges with constraints based construction.
- __add__(other: Sketch) T [source]
Fuse self and other.
- Parameters
self (T) –
other (Sketch) –
- Return type
T
- __init__(parent: ~typing.Any = None, locs: ~typing.Iterable[~cadquery.occ_impl.geom.Location] = (<cadquery.occ_impl.geom.Location object>, ), obj: ~typing.Optional[~cadquery.occ_impl.shapes.Compound] = None)[source]
Construct an empty sketch.
- __iter__() Iterator[Face] [source]
Iterate over faces-locations combinations. If not faces are present iterate over edges:
- Return type
Iterator[Face]
- __mul__(other: Sketch) T [source]
Intersect self and other.
- Parameters
self (T) –
other (Sketch) –
- Return type
T
- __sub__(other: Sketch) T [source]
Subtract other from self.
- Parameters
self (T) –
other (Sketch) –
- Return type
T
- __truediv__(other: Sketch) T [source]
Split self with other.
- Parameters
self (T) –
other (Sketch) –
- Return type
T
- __weakref__
list of weak references to the object (if defined)
- apply(f: Callable[[Iterable[Union[Shape, Location]]], Iterable[Union[Shape, Location]]])[source]
Apply a callable to all items at once.
- arc(p1: Union[Vector, Tuple[Union[int, float], Union[int, float]]], p2: Union[Vector, Tuple[Union[int, float], Union[int, float]]], p3: Union[Vector, Tuple[Union[int, float], Union[int, float]]], tag: Optional[str] = None, forConstruction: bool = False) T [source]
- arc(c: Union[Vector, Tuple[Union[int, float], Union[int, float]]], r: Union[int, float], a: Union[int, float], da: Union[int, float], tag: Optional[str] = None, forConstruction: bool = False) T
- arc(p2: Union[Vector, Tuple[Union[int, float], Union[int, float]]], p3: Union[Vector, Tuple[Union[int, float], Union[int, float]]], tag: Optional[str] = None, forConstruction: bool = False) T
Construct an arc.
- assemble(mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Assemble edges into faces.
- Parameters
self (T) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- bezier(pts: Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]], tag: Optional[str] = None, forConstruction: bool = False) T [source]
Construct an bezier curve.
The edge will pass through the last points, and the inner points are bezier control points.
- Parameters
self (T) –
pts (Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]]) –
tag (Optional[str]) –
forConstruction (bool) –
- Return type
T
- chamfer(d: Union[int, float]) T [source]
Add a chamfer based on current selection.
- Parameters
self (T) –
d (Union[int, float]) –
- Return type
T
- circle(r: Union[int, float], mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct a circular face.
- Parameters
self (T) –
r (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- close(tag: Optional[str] = None) T [source]
Connect last edge to the first one.
- Parameters
self (T) –
tag (Optional[str]) –
- Return type
T
- constrain(tag: str, constraint: Literal['Fixed', 'FixedPoint', 'Coincident', 'Angle', 'Length', 'Distance', 'Radius', 'Orientation', 'ArcAngle'], arg: Any) T [source]
- constrain(tag1: str, tag2: str, constraint: Literal['Fixed', 'FixedPoint', 'Coincident', 'Angle', 'Length', 'Distance', 'Radius', 'Orientation', 'ArcAngle'], arg: Any) T
Add a constraint.
- Parameters
self (T) –
tag (str) –
constraint (Literal['Fixed', 'FixedPoint', 'Coincident', 'Angle', 'Length', 'Distance', 'Radius', 'Orientation', 'ArcAngle']) –
arg (Any) –
- Return type
T
- distribute(n: int, start: Union[int, float] = 0, stop: Union[int, float] = 1, rotate: bool = True) T [source]
Distribute locations along selected edges or wires.
- Parameters
self (T) –
n (int) –
start (Union[int, float]) –
stop (Union[int, float]) –
rotate (bool) –
- Return type
T
- each(callback: Callable[[Location], Union[Face, Sketch, Compound]], mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None, ignore_selection: bool = False) T [source]
Apply a callback on all applicable entities.
- edge(val: Edge, tag: Optional[str] = None, forConstruction: bool = False) T [source]
Add an edge to the sketch.
- Parameters
self (T) –
val (Edge) –
tag (Optional[str]) –
forConstruction (bool) –
- Return type
T
- edges(s: Optional[Union[str, Selector]] = None, tag: Optional[str] = None) T [source]
Select edges.
- Parameters
self (T) –
s (Optional[Union[str, Selector]]) –
tag (Optional[str]) –
- Return type
T
- ellipse(a1: Union[int, float], a2: Union[int, float], angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct an elliptical face.
- Parameters
self (T) –
a1 (Union[int, float]) –
a2 (Union[int, float]) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- export(fname: str, tolerance: float = 0.1, angularTolerance: float = 0.1, opt: Optional[Dict[str, Any]] = None) T [source]
Export Sketch to file.
- Parameters
self (T) –
path – Filename.
tolerance (float) – the deflection tolerance, in model units. Default 0.1.
angularTolerance (float) – the angular tolerance, in radians. Default 0.1.
opt (Optional[Dict[str, Any]]) – additional options passed to the specific exporter. Default None.
fname (str) –
- Returns
Self.
- Return type
T
- face(b: Union[Wire, Iterable[Edge], Shape, T], angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None, ignore_selection: bool = False) T [source]
Construct a face from a wire or edges.
- faces(s: Optional[Union[str, Selector]] = None, tag: Optional[str] = None) T [source]
Select faces.
- Parameters
self (T) –
s (Optional[Union[str, Selector]]) –
tag (Optional[str]) –
- Return type
T
- fillet(d: Union[int, float]) T [source]
Add a fillet based on current selection.
- Parameters
self (T) –
d (Union[int, float]) –
- Return type
T
- filter(f: Callable[[Union[Shape, Location]], bool]) T [source]
Filter items using a boolean predicate.
- hull(mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Generate a convex hull from current selection or all objects.
- Parameters
self (T) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- importDXF(filename: str, tol: float = 1e-06, exclude: List[str] = [], include: List[str] = [], angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Import a DXF file and construct face(s)
- Parameters
self (T) –
filename (str) –
tol (float) –
exclude (List[str]) –
include (List[str]) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- invoke(f: Union[Callable[[T], T], Callable[[T], None], Callable[[], None]])[source]
Invoke a callable mapping Sketch to Sketch or None. Supports also callables that take no arguments such as breakpoint. Returns self if callable returns None.
- Parameters
self (T) –
f (Union[Callable[[T], T], Callable[[T], None], Callable[[], None]]) – Callable to be invoked.
- Returns
Sketch object.
- located(loc: Location) T [source]
Create a partial copy of the sketch with a new location.
- Parameters
self (T) –
loc (Location) –
- Return type
T
- map(f: Callable[[Union[Shape, Location]], Union[Shape, Location]])[source]
Apply a callable to every item separately.
- moved(loc: Location) T [source]
- moved(loc1: Location, loc2: Location, *locs: Location) T
- moved(locs: Sequence[Location]) T
- moved(x: Union[int, float] = 0, y: Union[int, float] = 0, z: Union[int, float] = 0, rx: Union[int, float] = 0, ry: Union[int, float] = 0, rz: Union[int, float] = 0) T
- moved(loc: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) T
- moved(loc1: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], loc2: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], *locs: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) T
- moved(loc: Sequence[Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]]) T
Create a partial copy of the sketch with moved _faces.
- offset(d: Union[int, float], mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Offset selected wires or edges.
- Parameters
self (T) –
d (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- parray(r: Union[int, float], a1: Union[int, float], da: Union[int, float], n: int, rotate: bool = True) T [source]
Generate a polar array of locations.
- Parameters
self (T) –
r (Union[int, float]) –
a1 (Union[int, float]) –
da (Union[int, float]) –
n (int) –
rotate (bool) –
- Return type
T
- polygon(pts: Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]], angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct a polygonal face.
- Parameters
self (T) –
pts (Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]]) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- push(locs: Iterable[Union[Location, Vector, Tuple[Union[int, float], Union[int, float]]]], tag: Optional[str] = None) T [source]
Set current selection to given locations or points.
- rarray(xs: Union[int, float], ys: Union[int, float], nx: int, ny: int) T [source]
Generate a rectangular array of locations.
- Parameters
self (T) –
xs (Union[int, float]) –
ys (Union[int, float]) –
nx (int) –
ny (int) –
- Return type
T
- rect(w: Union[int, float], h: Union[int, float], angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct a rectangular face.
- Parameters
self (T) –
w (Union[int, float]) –
h (Union[int, float]) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- regularPolygon(r: Union[int, float], n: int, angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct a regular polygonal face.
- Parameters
self (T) –
r (Union[int, float]) –
n (int) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- replace() T [source]
Replace the underlying faces with the selection.
- Parameters
self (T) –
- Return type
T
- segment(l: Union[int, float], a: Union[int, float], tag: Optional[str] = None, forConstruction: bool = False) T [source]
- segment(p2: Union[Vector, Tuple[Union[int, float], Union[int, float]]], tag: Optional[str] = None, forConstruction: bool = False) T
- segment(p1: Union[Vector, Tuple[Union[int, float], Union[int, float]]], p2: Union[Vector, Tuple[Union[int, float], Union[int, float]]], tag: Optional[str] = None, forConstruction: bool = False) T
Construct a segment.
- select(*tags: str) T [source]
Select based on tags.
- Parameters
self (T) –
tags (str) –
- Return type
T
- slot(w: Union[int, float], h: Union[int, float], angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct a slot-shaped face.
- Parameters
self (T) –
w (Union[int, float]) –
h (Union[int, float]) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- solve() T [source]
Solve current constraints and update edge positions.
- Parameters
self (T) –
- Return type
T
- spline(pts: Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]], tag: Optional[str] = None, forConstruction: bool = False) T [source]
- spline(pts: Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]], tangents: Optional[Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]]]]], periodic: bool, tag: Optional[str] = None, forConstruction: bool = False) T
Construct a spline edge.
- subtract() T [source]
Subtract selection from the underlying faces.
- Parameters
self (T) –
- Return type
T
- trapezoid(w: Union[int, float], h: Union[int, float], a1: Union[int, float], a2: Optional[float] = None, angle: Union[int, float] = 0, mode: Literal['a', 's', 'i', 'c', 'r'] = 'a', tag: Optional[str] = None) T [source]
Construct a trapezoidal face.
- Parameters
self (T) –
w (Union[int, float]) –
h (Union[int, float]) –
a1 (Union[int, float]) –
a2 (Optional[float]) –
angle (Union[int, float]) –
mode (Literal['a', 's', 'i', 'c', 'r']) –
tag (Optional[str]) –
- Return type
T
- val() Union[Shape, Location] [source]
Return the first selected item, underlying compound or first edge.
- vals() List[Union[Shape, Location]] [source]
Return all selected items, underlying compound or all edges.
- class cadquery.Solid(obj: TopoDS_Shape)[source]
-
a single solid
- Parameters
obj (TopoDS_Shape) –
- classmethod extrudeLinear(outerWire: Wire, innerWires: List[Wire], vecNormal: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], taper: Union[float, int] = 0) Solid [source]
- classmethod extrudeLinear(face: Face, vecNormal: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], taper: Union[float, int] = 0) Solid
Attempt to extrude the list of wires into a prismatic solid in the provided direction
- Parameters
outerWire (Wire) – the outermost wire
innerWires (List[Wire]) – a list of inner wires
vecNormal (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – a vector along which to extrude the wires
taper (Union[float, int]) – taper angle, default=0
- Returns
a Solid object
- Return type
The wires must not intersect
Extruding wires is very non-trivial. Nested wires imply very different geometry, and there are many geometries that are invalid. In general, the following conditions must be met:
all wires must be closed
there cannot be any intersecting or self-intersecting wires
wires must be listed from outside in
more than one levels of nesting is not supported reliably
This method will attempt to sort the wires, but there is much work remaining to make this method reliable.
- classmethod extrudeLinearWithRotation(outerWire: Wire, innerWires: List[Wire], vecCenter: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], vecNormal: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], angleDegrees: Union[float, int]) Solid [source]
- classmethod extrudeLinearWithRotation(face: Face, vecCenter: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], vecNormal: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], angleDegrees: Union[float, int]) Solid
Creates a ‘twisted prism’ by extruding, while simultaneously rotating around the extrusion vector.
Though the signature may appear to be similar enough to extrudeLinear to merit combining them, the construction methods used here are different enough that they should be separate.
At a high level, the steps followed are:
accept a set of wires
create another set of wires like this one, but which are transformed and rotated
create a ruledSurface between the sets of wires
create a shell and compute the resulting object
- Parameters
outerWire (Wire) – the outermost wire
innerWires (List[Wire]) – a list of inner wires
vecCenter (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – the center point about which to rotate. the axis of rotation is defined by vecNormal, located at vecCenter.
vecNormal (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – a vector along which to extrude the wires
angleDegrees (Union[float, int]) – the angle to rotate through while extruding
- Returns
a Solid object
- Return type
- classmethod interpPlate(surf_edges, surf_pts, thickness, degree=3, nbPtsOnCur=15, nbIter=2, anisotropy=False, tol2d=1e-05, tol3d=0.0001, tolAng=0.01, tolCurv=0.1, maxDeg=8, maxSegments=9) Union[Solid, Face] [source]
Returns a plate surface that is ‘thickness’ thick, enclosed by ‘surf_edge_pts’ points, and going through ‘surf_pts’ points.
- Parameters
surf_edges – list of [x,y,z] float ordered coordinates or list of ordered or unordered wires
surf_pts – list of [x,y,z] float coordinates (uses only edges if [])
thickness – thickness may be negative or positive depending on direction, (returns 2D surface if 0)
degree – >=2
nbPtsOnCur – number of points on curve >= 15
nbIter – number of iterations >= 2
anisotropy – bool Anisotropy
tol2d – 2D tolerance >0
tol3d – 3D tolerance >0
tolAng – angular tolerance
tolCurv – tolerance for curvature >0
maxDeg – highest polynomial degree >= 2
maxSegments – greatest number of segments >= 2
- Return type
- static isSolid(obj: Shape) bool [source]
Returns true if the object is a solid, false otherwise
- Parameters
obj (Shape) –
- Return type
bool
- classmethod makeBox(length,width,height,[pnt,dir]) -- Make a box located in pnt with the dimensions (length,width,height)[source]
By default pnt=Vector(0,0,0) and dir=Vector(0,0,1)
- Parameters
length (float) –
width (float) –
height (float) –
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
- Return type
- classmethod makeCone(radius1: float, radius2: float, height: float, pnt: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0), angleDegrees: float = 360) Solid [source]
Make a cone with given radii and height By default pnt=Vector(0,0,0), dir=Vector(0,0,1) and angle=360
- Parameters
radius1 (float) –
radius2 (float) –
height (float) –
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
angleDegrees (float) –
- Return type
- classmethod makeCylinder(radius: float, height: float, pnt: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0), angleDegrees: float = 360) Solid [source]
makeCylinder(radius,height,[pnt,dir,angle]) – Make a cylinder with a given radius and height By default pnt=Vector(0,0,0),dir=Vector(0,0,1) and angle=360
- Parameters
radius (float) –
height (float) –
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
angleDegrees (float) –
- Return type
- classmethod makeLoft(listOfWire: List[Wire], ruled: bool = False) Solid [source]
makes a loft from a list of wires The wires will be converted into faces when possible– it is presumed that nobody ever actually wants to make an infinitely thin shell for a real FreeCADPart.
- classmethod makeSphere(radius: float, pnt: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0), angleDegrees1: float = 0, angleDegrees2: float = 90, angleDegrees3: float = 360) Shape [source]
Make a sphere with a given radius By default pnt=Vector(0,0,0), dir=Vector(0,0,1), angle1=0, angle2=90 and angle3=360
- Parameters
radius (float) –
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
angleDegrees1 (float) –
angleDegrees2 (float) –
angleDegrees3 (float) –
- Return type
- classmethod makeTorus(radius1: float, radius2: float, pnt: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0), angleDegrees1: float = 0, angleDegrees2: float = 360) Solid [source]
makeTorus(radius1,radius2,[pnt,dir,angle1,angle2,angle]) – Make a torus with a given radii and angles By default pnt=Vector(0,0,0),dir=Vector(0,0,1),angle1=0 ,angle1=360 and angle=360
- Parameters
radius1 (float) –
radius2 (float) –
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
angleDegrees1 (float) –
angleDegrees2 (float) –
- Return type
- classmethod makeWedge(dx: float, dy: float, dz: float, xmin: float, zmin: float, xmax: float, zmax: float, pnt: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0)) Solid [source]
Make a wedge located in pnt By default pnt=Vector(0,0,0) and dir=Vector(0,0,1)
- Parameters
dx (float) –
dy (float) –
dz (float) –
xmin (float) –
zmin (float) –
xmax (float) –
zmax (float) –
pnt (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
- Return type
- classmethod revolve(outerWire: Wire, innerWires: List[Wire], angleDegrees: Union[float, int], axisStart: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], axisEnd: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) Solid [source]
- classmethod revolve(face: Face, angleDegrees: Union[float, int], axisStart: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], axisEnd: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) Solid
Attempt to revolve the list of wires into a solid in the provided direction
- Parameters
outerWire (Wire) – the outermost wire
innerWires (List[Wire]) – a list of inner wires
angleDegrees (float, anything less than 360 degrees will leave the shape open) – the angle to revolve through.
axisStart (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – the start point of the axis of rotation
axisEnd (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – the end point of the axis of rotation
- Returns
a Solid object
- Return type
The wires must not intersect
all wires must be closed
there cannot be any intersecting or self-intersecting wires
wires must be listed from outside in
more than one levels of nesting is not supported reliably
the wire(s) that you’re revolving cannot be centered
This method will attempt to sort the wires, but there is much work remaining to make this method reliable.
- classmethod sweep(face: Face, path: Union[Wire, Edge], makeSolid: bool = True, isFrenet: bool = False, mode: Optional[Union[Vector, Wire, Edge]] = None, transitionMode: Literal['transformed', 'round', 'right'] = 'transformed') Shape [source]
- classmethod sweep(outerWire: Wire, innerWires: List[Wire], path: Union[Wire, Edge], makeSolid: bool = True, isFrenet: bool = False, mode: Optional[Union[Vector, Wire, Edge]] = None, transitionMode: Literal['transformed', 'round', 'right'] = 'transformed') Shape
Attempt to sweep the list of wires into a prismatic solid along the provided path
- Parameters
outerWire (Wire) – the outermost wire
innerWires (List[Wire]) – a list of inner wires
path (Union[Wire, Edge]) – The wire to sweep the face resulting from the wires over
makeSolid (bool) – return Solid or Shell (default True)
isFrenet (bool) – Frenet mode (default False)
mode (Optional[Union[Vector, Wire, Edge]]) – additional sweep mode parameters
transitionMode (Literal['transformed', 'round', 'right']) – handling of profile orientation at C1 path discontinuities. Possible values are {‘transformed’,’round’, ‘right’} (default: ‘right’).
- Returns
a Solid object
- Return type
- classmethod sweep_multi(profiles: Iterable[Union[Wire, Face]], path: Union[Wire, Edge], makeSolid: bool = True, isFrenet: bool = False, mode: Optional[Union[Vector, Wire, Edge]] = None) Solid [source]
Multi section sweep. Only single outer profile per section is allowed.
- Parameters
- Returns
a Solid object
- Return type
- class cadquery.StringSyntaxSelector(selectorString)[source]
Bases:
Selector
Filter lists objects using a simple string syntax. All of the filters available in the string syntax are also available ( usually with more functionality ) through the creation of full-fledged selector objects. see
Selector
and its subclassesFiltering works differently depending on the type of object list being filtered.
- Parameters
selectorString – A two-part selector string, [selector][axis]
- Returns
objects that match the specified selector
*Modifiers* are
('|','+','-','<','>','%')
- |
parallel to ( same as
ParallelDirSelector
). Can return multiple objects.- #
perpendicular to (same as
PerpendicularDirSelector
)- +
positive direction (same as
DirectionSelector
)- -
negative direction (same as
DirectionSelector
)- >
maximize (same as
DirectionMinMaxSelector
with directionMax=True)- <
minimize (same as
DirectionMinMaxSelector
with directionMax=False )- %
curve/surface type (same as
TypeSelector
)
*axisStrings* are:
X,Y,Z,XY,YZ,XZ
or(x,y,z)
which defines an arbitrary directionIt is possible to combine simple selectors together using logical operations. The following operations are supported
- and
Logical AND, e.g. >X and >Y
- or
Logical OR, e.g. |X or |Y
- not
Logical NOT, e.g. not #XY
- exc(ept)
Set difference (equivalent to AND NOT): |X exc >Z
Finally, it is also possible to use even more complex expressions with nesting and arbitrary number of terms, e.g.
(not >X[0] and #XY) or >XY[0]
Selectors are a complex topic: see Selectors Reference for more information
- class cadquery.TypeSelector(typeString: str)[source]
Bases:
Selector
Selects objects having the prescribed geometry type.
- Applicability:
Faces: PLANE, CYLINDER, CONE, SPHERE, TORUS, BEZIER, BSPLINE, REVOLUTION, EXTRUSION, OFFSET, OTHER Edges: LINE, CIRCLE, ELLIPSE, HYPERBOLA, PARABOLA, BEZIER, BSPLINE, OFFSET, OTHER
You can use the string selector syntax. For example this:
CQ(aCube).faces(TypeSelector("PLANE"))
will select 6 faces, and is equivalent to:
CQ(aCube).faces("%PLANE")
- Parameters
typeString (str) –
- class cadquery.Vector(x: float, y: float, z: float)[source]
- class cadquery.Vector(x: float, y: float)
- class cadquery.Vector(v: Vector)
- class cadquery.Vector(v: Sequence[float])
- class cadquery.Vector(v: Union[gp_Vec, gp_Pnt, gp_Dir, gp_XYZ])
- class cadquery.Vector
Bases:
object
Create a 3-dimensional vector
- Parameters
args – a 3D vector, with x-y-z parts.
- you can either provide:
nothing (in which case the null vector is return)
a gp_Vec
a vector ( in which case it is copied )
a 3-tuple
a 2-tuple (z assumed to be 0)
three float values: x, y, and z
two float values: x,y
- Center() Vector [source]
Return the vector itself
The center of myself is myself. Provided so that vectors, vertices, and other shapes all support a common interface, when Center() is requested for all objects on the stack.
- Return type
- __eq__(other: Vector) bool [source]
Return self==value.
- Parameters
other (Vector) –
- Return type
bool
- __hash__ = None
- __init__(x: float, y: float, z: float) None [source]
- __init__(x: float, y: float) None
- __init__(v: Vector) None
- __init__(v: Sequence[float]) None
- __init__(v: Union[gp_Vec, gp_Pnt, gp_Dir, gp_XYZ]) None
- __init__() None
- __weakref__
list of weak references to the object (if defined)
- multiply(scale: float) Vector [source]
Return a copy multiplied by the provided scalar
- Parameters
scale (float) –
- Return type
- class cadquery.Vertex(obj: TopoDS_Shape, forConstruction: bool = False)[source]
Bases:
Shape
A Single Point in Space
- Parameters
obj (TopoDS_Shape) –
forConstruction (bool) –
- class cadquery.Wire(obj: TopoDS_Shape)[source]
-
A series of connected, ordered Edges, that typically bounds a Face
- Parameters
obj (TopoDS_Shape) –
- __iter__() Iterator[Edge] [source]
Iterate over edges in an ordered way.
- Return type
Iterator[Edge]
- classmethod assembleEdges(listOfEdges: Iterable[Edge]) Wire [source]
Attempts to build a wire that consists of the edges in the provided list
- Parameters
cls –
listOfEdges (Iterable[Edge]) – a list of Edge objects. The edges are not to be consecutive.
- Returns
a wire with the edges assembled
- Return type
BRepBuilderAPI_MakeWire::Error() values:
BRepBuilderAPI_WireDone = 0
BRepBuilderAPI_EmptyWire = 1
BRepBuilderAPI_DisconnectedWire = 2
BRepBuilderAPI_NonManifoldWire = 3
- classmethod combine(listOfWires: Iterable[Union[Wire, Edge]], tol: float = 1e-09) List[Wire] [source]
Attempt to combine a list of wires and edges into a new wire.
- fillet(radius: float, vertices: Optional[Iterable[Vertex]] = None) Wire [source]
Apply 2D or 3D fillet to a wire
- classmethod makeCircle(radius: float, center: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], normal: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) Wire [source]
Makes a Circle centered at the provided point, having normal in the provided direction
- Parameters
radius (float) – floating point radius of the circle, must be > 0
center (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – vector representing the center of the circle
normal (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – vector representing the direction of the plane the circle should lie in
- Return type
- classmethod makeEllipse(x_radius: float, y_radius: float, center: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], normal: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], xDir: Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]], angle1: float = 360.0, angle2: float = 360.0, rotation_angle: float = 0.0, closed: bool = True) Wire [source]
Makes an Ellipse centered at the provided point, having normal in the provided direction
- Parameters
x_radius (float) – floating point major radius of the ellipse (x-axis), must be > 0
y_radius (float) – floating point minor radius of the ellipse (y-axis), must be > 0
center (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – vector representing the center of the circle
normal (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) – vector representing the direction of the plane the circle should lie in
angle1 (float) – start angle of arc
angle2 (float) – end angle of arc
rotation_angle (float) – angle to rotate the created ellipse / arc
xDir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
closed (bool) –
- Return type
- classmethod makeHelix(pitch: float, height: float, radius: float, center: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 0.0), dir: ~typing.Union[~cadquery.occ_impl.geom.Vector, ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float]], ~typing.Tuple[~typing.Union[int, float], ~typing.Union[int, float], ~typing.Union[int, float]]] = Vector: (0.0, 0.0, 1.0), angle: float = 360.0, lefthand: bool = False) Wire [source]
Make a helix with a given pitch, height and radius By default a cylindrical surface is used to create the helix. If the fourth parameter is set (the apex given in degree) a conical surface is used instead’
- Parameters
pitch (float) –
height (float) –
radius (float) –
center (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
dir (Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]) –
angle (float) –
lefthand (bool) –
- Return type
- classmethod makePolygon(listOfVertices: Iterable[Union[Vector, Tuple[Union[int, float], Union[int, float]], Tuple[Union[int, float], Union[int, float], Union[int, float]]]], forConstruction: bool = False, close: bool = False) Wire [source]
Construct a polygonal wire from points.
- class cadquery.Workplane(obj: Union[Vector, Location, Shape, Sketch])[source]
- class cadquery.Workplane(inPlane: Union[Plane, str] = 'XY', origin: Union[Tuple[float, float], Tuple[float, float, float], Vector] = (0, 0, 0), obj: Optional[Union[Vector, Location, Shape, Sketch]] = None)
Bases:
object
Defines a coordinate system in space, in which 2D coordinates can be used.
- Parameters
plane (a Plane object, or a string in (XY|YZ|XZ|front|back|top|bottom|left|right)) – the plane in which the workplane will be done
origin (a 3-tuple in global coordinates, or None to default to the origin) – the desired origin of the new workplane
obj (a CAD primitive, or None to use the centerpoint of the plane as the initial stack value.) – an object to use initially for the stack
- Raises
ValueError if the provided plane is not a plane, a valid named workplane
- Returns
A Workplane object, with coordinate system matching the supplied plane.
The most common use is:
s = Workplane("XY")
After creation, the stack contains a single point, the origin of the underlying plane, and the current point is on the origin.
Note
You can also create workplanes on the surface of existing faces using
workplane()
- __add__(other: Union[Workplane, Solid, Compound]) T [source]
Syntactic sugar for union.
Notice that
r = a + b
is equivalent tor = a.union(b)
andr = a | b
.
- __and__(other: Union[Workplane, Solid, Compound]) T [source]
Syntactic sugar for intersect.
Notice that
r = a & b
is equivalent tor = a.intersect(b)
.Example:
Box = Workplane("XY").box(1, 1, 1, centered=(False, False, False)) Sphere = Workplane("XY").sphere(1) result = Box & Sphere
- __init__(obj: Union[Vector, Location, Shape, Sketch]) None [source]
- __init__(inPlane: Union[Plane, str] = 'XY', origin: Union[Tuple[float, float], Tuple[float, float, float], Vector] = (0, 0, 0), obj: Optional[Union[Vector, Location, Shape, Sketch]] = None) None
make a workplane from a particular plane
- Parameters
inPlane (a Plane object, or a string in (XY|YZ|XZ|front|back|top|bottom|left|right)) – the plane in which the workplane will be done
origin (a 3-tuple in global coordinates, or None to default to the origin) – the desired origin of the new workplane
obj (a CAD primitive, or None to use the centerpoint of the plane as the initial stack value.) – an object to use initially for the stack
- Raises
ValueError if the provided plane is not a plane, or one of XY|YZ|XZ
- Returns
A Workplane object, with coordinate system matching the supplied plane.
The most common use is:
s = Workplane("XY")
After creation, the stack contains a single point, the origin of the underlying plane, and the current point is on the origin.
- __iter__() Iterator[Shape] [source]
Special method for iterating over Shapes in objects
- Parameters
self (T) –
- Return type
Iterator[Shape]
- __mul__(other: Union[Workplane, Solid, Compound]) T [source]
Syntactic sugar for intersect.
Notice that
r = a * b
is equivalent tor = a.intersect(b)
.Example:
Box = Workplane("XY").box(1, 1, 1, centered=(False, False, False)) Sphere = Workplane("XY").sphere(1) result = Box * Sphere
- __or__(other: Union[Workplane, Solid, Compound]) T [source]
Syntactic sugar for union.
Notice that
r = a | b
is equivalent tor = a.union(b)
andr = a + b
.Example:
Box = Workplane("XY").box(1, 1, 1, centered=(False, False, False)) Sphere = Workplane("XY").sphere(1) result = Box | Sphere
- __sub__(other: Union[Workplane, Solid, Compound]) T [source]
Syntactic sugar for cut.
Notice that
r = a - b
is equivalent tor = a.cut(b)
.Example:
Box = Workplane("XY").box(1, 1, 1, centered=(False, False, False)) Sphere = Workplane("XY").sphere(1) result = Box - Sphere
- __truediv__(other: Union[Workplane, Solid, Compound]) T [source]
Syntactic sugar for intersect.
Notice that
r = a / b
is equivalent tor = a.split(b)
.Example:
Box = Workplane("XY").box(1, 1, 1, centered=(False, False, False)) Sphere = Workplane("XY").sphere(1) result = Box / Sphere
- __weakref__
list of weak references to the object (if defined)
- add(obj: Workplane) T [source]
- add(obj: Union[Vector, Location, Shape, Sketch]) T
- add(obj: Iterable[Union[Vector, Location, Shape, Sketch]]) T
Adds an object or a list of objects to the stack
- Parameters
obj (a Workplane, CAD primitive, or list of CAD primitives) – an object to add
- Returns
a Workplane with the requested operation performed
If a Workplane object, the values of that object’s stack are added. If a list of cad primitives, they are all added. If a single CAD primitive then it is added.
Used in rare cases when you need to combine the results of several CQ results into a single Workplane object.
- all() List[T] [source]
Return a list of all CQ objects on the stack.
useful when you need to operate on the elements individually.
Contrast with vals, which returns the underlying objects for all of the items on the stack
- Parameters
self (T) –
- Return type
List[T]
- ancestors(kind: Literal['Vertex', 'Edge', 'Wire', 'Face', 'Shell', 'Solid', 'CompSolid', 'Compound'], tag: Optional[str] = None) T [source]
Select topological ancestors.
- Parameters
self (T) –
kind (Literal['Vertex', 'Edge', 'Wire', 'Face', 'Shell', 'Solid', 'CompSolid', 'Compound']) – kind of ancestor, e.g. “Face” or “Edge”
tag (Optional[str]) – if set, search the tagged object instead of self
- Returns
a Workplane object whose stack contains selected ancestors.
- Return type
T
- apply(f: Callable[[Iterable[Union[Vector, Location, Shape, Sketch]]], Iterable[Union[Vector, Location, Shape, Sketch]]]) T [source]
Apply a callable to all items at once.
- bezier(listOfXYTuple: Iterable[Union[Tuple[float, float], Tuple[float, float, float], Vector]], forConstruction: bool = False, includeCurrent: bool = False, makeWire: bool = False) T [source]
Make a cubic Bézier curve by the provided points (2D or 3D).
- Parameters
self (T) –
listOfXYTuple (Iterable[Union[Tuple[float, float], Tuple[float, float, float], Vector]]) – Bezier control points and end point. All points except the last point are Bezier control points, and the last point is the end point
includeCurrent (bool) – Use the current point as a starting point of the curve
makeWire (bool) – convert the resulting bezier edge to a wire
forConstruction (bool) –
- Returns
a Workplane object with the current point at the end of the bezier
- Return type
T
The Bézier Will begin at either current point or the first point of listOfXYTuple, and end with the last point of listOfXYTuple
- box(length: float, width: float, height: float, centered: Union[bool, Tuple[bool, bool, bool]] = True, combine: Union[bool, Literal['cut', 'a', 's']] = True, clean: bool = True) T [source]
Return a 3d box with specified dimensions for each object on the stack.
- Parameters
self (T) –
length (float) – box size in X direction
width (float) – box size in Y direction
height (float) – box size in Z direction
centered (Union[bool, Tuple[bool, bool, bool]]) – If True, the box will be centered around the reference point. If False, the corner of the box will be on the reference point and it will extend in the positive x, y and z directions. Can also use a 3-tuple to specify centering along each axis.
combine (Union[bool, Literal['cut', 'a', 's']]) – should the results be combined with other solids on the stack (and each other)?
clean (bool) – call
clean()
afterwards to have a clean shape
- Return type
T
One box is created for each item on the current stack. If no items are on the stack, one box using the current workplane center is created.
If combine is true, the result will be a single object on the stack. If a solid was found in the chain, the result is that solid with all boxes produced fused onto it otherwise, the result is the combination of all the produced boxes.
If combine is false, the result will be a list of the boxes produced.
Most often boxes form the basis for a part:
# make a single box with lower left corner at origin s = Workplane().box(1, 2, 3, centered=False)
But sometimes it is useful to create an array of them:
# create 4 small square bumps on a larger base plate: s = ( Workplane() .box(4, 4, 0.5) .faces(">Z") .workplane() .rect(3, 3, forConstruction=True) .vertices() .box(0.25, 0.25, 0.25, combine=True) )
- cboreHole(diameter: float, cboreDiameter: float, cboreDepth: float, depth: Optional[float] = None, clean: bool = True) T [source]
Makes a counterbored hole for each item on the stack.
- Parameters
self (T) –
diameter (float) – the diameter of the hole
cboreDiameter (float) – the diameter of the cbore, must be greater than hole diameter
cboreDepth (float > 0) – depth of the counterbore
depth (float > 0 or None to drill thru the entire part) – the depth of the hole
clean (bool) – call
clean()
afterwards to have a clean shape
- Return type
T
The surface of the hole is at the current workplane plane.
One hole is created for each item on the stack. A very common use case is to use a construction rectangle to define the centers of a set of holes, like so:
s = ( Workplane() .box(2, 4, 0.5) .faces(">Z") .workplane() .rect(1.5, 3.5, forConstruction=True) .vertices() .cboreHole(0.125, 0.25, 0.125, depth=None) )
This sample creates a plate with a set of holes at the corners.
Plugin Note: this is one example of the power of plugins. Counterbored holes are quite time consuming to create, but are quite easily defined by users.
see
cskHole()
to make countersinks instead of counterbores
- center(x: float, y: float) T [source]
Shift local coordinates to the specified location.
The location is specified in terms of local coordinates.
- Parameters
self (T) –
x (float) – the new x location
y (float) – the new y location
- Returns
the Workplane object, with the center adjusted.
- Return type
T
The current point is set to the new center. This method is useful to adjust the center point after it has been created automatically on a face, but not where you’d like it to be.
In this example, we adjust the workplane center to be at the corner of a cube, instead of the center of a face, which is the default:
# this workplane is centered at x=0.5,y=0.5, the center of the upper face s = Workplane().box(1, 1, 1).faces(">Z").workplane() s = s.center(-0.5, -0.5) # move the center to the corner t = s.circle(0.25).extrude(0.2) assert t.faces().size() == 9 # a cube with a cylindrical nub at the top right corner
The result is a cube with a round boss on the corner
- chamfer(length: float, length2: Optional[float] = None) T [source]
Chamfers a solid on the selected edges.
The edges on the stack are chamfered. The solid to which the edges belong must be in the parent chain of the selected edges.
Optional parameter length2 can be supplied with a different value than length for a chamfer that is shorter on one side longer on the other side.
- Parameters
self (T) –
length (float) – the length of the chamfer, must be greater than zero
length2 (Optional[float]) – optional parameter for asymmetrical chamfer
- Raises
ValueError – if at least one edge is not selected
ValueError – if the solid containing the edge is not in the chain
- Returns
CQ object with the resulting solid selected.
- Return type
T
This example will create a unit cube, with the top edges chamfered:
s = Workplane("XY").box(1, 1, 1).faces("+Z").chamfer(0.1)
This example will create chamfers longer on the sides:
s = Workplane("XY").box(1, 1, 1).faces("+Z").chamfer(0.2, 0.1)
- circle(radius: float, forConstruction: bool = False) T [source]
Make a circle for each item on the stack.
- Parameters
self (T) –
radius (float) – radius of the circle
forConstruction (true if the wires are for reference, false if they are creating part geometry) – should the new wires be reference geometry only?
- Returns
a new CQ object with the created wires on the stack
- Return type
T
A common use case is to use a for-construction rectangle to define the centers of a hole pattern:
s = Workplane().rect(4.0, 4.0, forConstruction=True).vertices().circle(0.25)
Creates 4 circles at the corners of a square centered on the origin. Another common case is to use successive circle() calls to create concentric circles. This works because the center of a circle is its reference point:
s = Workplane().circle(2.0).circle(1.0)
Creates two concentric circles, which when extruded will form a ring.
- Future Enhancements:
better way to handle forConstruction project points not in the workplane plane onto the workplane plane
- clean() T [source]
Cleans the current solid by removing unwanted edges from the faces.
Normally you don’t have to call this function. It is automatically called after each related operation. You can disable this behavior with clean=False parameter if method has any. In some cases this can improve performance drastically but is generally dis-advised since it may break some operations such as fillet.
Note that in some cases where lots of solid operations are chained, clean() may actually improve performance since the shape is ‘simplified’ at each step and thus next operation is easier.
Also note that, due to limitation of the underlying engine, clean may fail to produce a clean output in some cases such as spherical faces.
- Parameters
self (T) –
- Return type
T
- close() T [source]
End construction, and attempt to build a closed wire.
- Returns
a CQ object with a completed wire on the stack, if possible.
- Parameters
self (T) –
- Return type
T
After 2D (or 3D) drafting with methods such as lineTo, threePointArc, tangentArcPoint and polyline, it is necessary to convert the edges produced by these into one or more wires.
When a set of edges is closed, CadQuery assumes it is safe to build the group of edges into a wire. This example builds a simple triangular prism:
s = Workplane().lineTo(1, 0).lineTo(1, 1).close().extrude(0.2)
- combine(clean: bool = True, glue: bool = False, tol: Optional[float] = None) T [source]
Attempts to combine all of the items on the stack into a single item.
WARNING: all of the items must be of the same type!
- Parameters
self (T) –
clean (bool) – call
clean()
afterwards to have a clean shapeglue (bool) – use a faster gluing mode for non-overlapping shapes (default False)
tol (Optional[float]) – tolerance value for fuzzy bool operation mode (default None)
- Raises
ValueError if there are no items on the stack, or if they cannot be combined
- Returns
a CQ object with the resulting object selected
- Return type
T
- combineSolids(otherCQToCombine: Optional[Workplane] = None) Workplane [source]
!!!DEPRECATED!!! use union() Combines all solids on the current stack, and any context object, together into a single object.
After the operation, the returned solid is also the context solid.
- Parameters
otherCQToCombine (Optional[Workplane]) – another CadQuery to combine.
- Returns
a CQ object with the resulting combined solid on the stack.
- Return type
Most of the time, both objects will contain a single solid, which is combined and returned on the stack of the new object.
- compounds(selector: Optional[Union[str, Selector]] = None, tag: Optional[str] = None) T [source]
Select compounds on the stack, optionally filtering the selection. If there are multiple objects on the stack, they are collected and a list of all the distinct compounds is returned.
- Parameters
self (T) –
selector (Optional[Union[str, Selector]]) – optional Selector object, or string selector expression (see
StringSyntaxSelector
)tag (Optional[str]) – if set, search the tagged object instead of self
- Returns
a CQ object whose stack contains all of the distinct compounds of all objects on the current stack, filtered by the provided selector.
- Return type
T
A compound contains multiple CAD primitives that resulted from a single operation, such as a union, cut, split, or fillet. Compounds can contain multiple edges, wires, or solids.
- consolidateWires() T [source]
Attempt to consolidate wires on the stack into a single. If possible, a new object with the results are returned. if not possible, the wires remain separated
- Parameters
self (T) –
- Return type
T
- copyWorkplane(obj: T) T [source]
Copies the workplane from obj.
- Parameters
obj (a CQ object) – an object to copy the workplane from
- Returns
a CQ object with obj’s workplane
- Return type
T
- cskHole(diameter: float, cskDiameter: float, cskAngle: float, depth: Optional[float] = None, clean: bool = True) T [source]
Makes a countersunk hole for each item on the stack.
- Parameters
self (T) –
diameter (float > 0) – the diameter of the hole
cskDiameter (float) – the diameter of the countersink, must be greater than hole diameter
cskAngle (float > 0) – angle of the countersink, in degrees ( 82 is common )
depth (float > 0 or None to drill thru the entire part.) – the depth of the hole
clean (bool) – call
clean()
afterwards to have a clean shape
- Return type
T
The surface of the hole is at the current workplane.
One hole is created for each item on the stack. A very common use case is to use a construction rectangle to define the centers of a set of holes, like so:
s = ( Workplane() .box(2, 4, 0.5) .faces(">Z") .workplane() .rect(1.5, 3.5, forConstruction=True) .vertices() .cskHole(0.125, 0.25, 82, depth=None) )
This sample creates a plate with a set of holes at the corners.
Plugin Note: this is one example of the power of plugins. CounterSunk holes are quite time consuming to create, but are quite easily defined by users.
see
cboreHole()
to make counterbores instead of countersinks
- cut(toCut: Union[Workplane, Solid, Compound], clean: bool = True, tol: Optional[float] = None) T [source]
Cuts the provided solid from the current solid, IE, perform a solid subtraction.
- Parameters
- Raises
ValueError – if there is no solid to subtract from in the chain
- Returns
a Workplane object with the resulting object selected
- Return type
T
- cutBlind(until: Union[float, Literal['next', 'last'], Face], clean: bool = True, both: bool = False, taper: Optional[float] = None) T [source]
Use all un-extruded wires in the parent chain to create a prismatic cut from existing solid.
Specify either a distance value, or one of “next”, “last” to indicate a face to cut to.
Similar to extrude, except that a solid in the parent chain is required to remove material from. cutBlind always removes material from a part.
- Parameters
self (T) –
until (Union[float, Literal['next', 'last'], Face]) – The distance to cut to, normal to the workplane plane. When a negative float is passed the cut extends this far in the opposite direction to the normal of the plane (i.e in the solid). The string “next” cuts until the next face orthogonal to the wire normal. “last” cuts to the last face. If an object of type Face is passed, then the cut will extend until this face.
clean (bool) – call
clean()
afterwards to have a clean shapeboth (bool) – cut in both directions symmetrically
taper (Optional[float]) – angle for optional tapered extrusion
- Raises
ValueError – if there is no solid to subtract from in the chain
- Returns
a CQ object with the resulting object selected
- Return type
T
see
cutThruAll()
to cut material from the entire part
- cutEach(fcn: Callable[[Location], Shape], useLocalCoords: bool = False, clean: bool = True) T [source]
Evaluates the provided function at each point on the stack (ie, eachpoint) and then cuts the result from the context solid.
- Parameters
self (T) –
fcn (Callable[[Location], Shape]) – a function suitable for use in the eachpoint method: ie, that accepts a vector
useLocalCoords (bool) – same as for
eachpoint()
clean (bool) – call
clean()
afterwards to have a clean shape
- Raises
ValueError – if no solids or compounds are found in the stack or parent chain
- Returns
a CQ object that contains the resulting solid
- Return type
T
- cutThruAll(clean: bool = True, taper: float = 0) T [source]
Use all un-extruded wires in the parent chain to create a prismatic cut from existing solid. Cuts through all material in both normal directions of workplane.
Similar to extrude, except that a solid in the parent chain is required to remove material from. cutThruAll always removes material from a part.
- Parameters
self (T) –
clean (bool) – call
clean()
afterwards to have a clean shapetaper (float) –
- Raises
ValueError – if there is no solid to subtract from in the chain
ValueError – if there are no pending wires to cut with
- Returns
a CQ object with the resulting object selected
- Return type
T
see
cutBlind()
to cut material to a limited depth
- cylinder(height: float, radius: float, direct: ~cadquery.occ_impl.geom.Vector = Vector: (0.0, 0.0, 1.0), angle: float = 360, centered: ~typing.Union[bool, ~typing.Tuple[bool, bool, bool]] = True, combine: ~typing.Union[bool, ~typing.Literal['cut', 'a', 's']] = True, clean: bool = True) T [source]
Returns a cylinder with the specified radius and height for each point on the stack
- Parameters
self (T) –
height (float) – The height of the cylinder
radius (float) – The radius of the cylinder
direct (A three-tuple) – The direction axis for the creation of the cylinder
angle (float > 0) – The angle to sweep the cylinder arc through
centered (Union[bool, Tuple[bool, bool, bool]]) – If True, the cylinder will be centered around the reference point. If False, the corner of a bounding box around the cylinder will be on the reference point and it will extend in the positive x, y and z directions. Can also use a 3-tuple to specify centering along each axis.
combine (true to combine shapes, false otherwise) – Whether the results should be combined with other solids on the stack (and each other)
clean (bool) – call
clean()
afterwards to have a clean shape
- Returns
A cylinder object for each point on the stack
- Return type
T
One cylinder is created for each item on the current stack. If no items are on the stack, one cylinder is created using the current workplane center.
If combine is true, the result will be a single object on the stack. If a solid was found in the chain, the result is that solid with all cylinders produced fused onto it otherwise, the result is the combination of all the produced cylinders.
If combine is false, the result will be a list of the cylinders produced.
- each(callback: Callable[[Union[Vector, Location, Shape, Sketch]], Shape], useLocalCoordinates: bool = False, combine: Union[bool, Literal['cut', 'a', 's']] = True, clean: bool = True) T [source]
Runs the provided function on each value in the stack, and collects the return values into a new CQ object.
Special note: a newly created workplane always has its center point as its only stack item
- Parameters
self (T) –
callBackFunction – the function to call for each item on the current stack.
useLocalCoordinates (bool) – should values be converted from local coordinates first?
combine (Union[bool, Literal['cut', 'a', 's']]) – True or “a” to combine the resulting solid with parent solids if found, “cut” or “s” to remove the resulting solid from the parent solids if found. False to keep the resulting solid separated from the parent solids.
clean (bool) – call
clean()
afterwards to have a clean shapecallback (Callable[[Union[Vector, Location, Shape, Sketch]], Shape]) –
- Return type
T
The callback function must accept one argument, which is the item on the stack, and return one object, which is collected. If the function returns None, nothing is added to the stack. The object passed into the callBackFunction is potentially transformed to local coordinates, if useLocalCoordinates is true
useLocalCoordinates is very useful for plugin developers.
If false, the callback function is assumed to be working in global coordinates. Objects created are added as-is, and objects passed into the function are sent in using global coordinates
If true, the calling function is assumed to be working in local coordinates. Objects are transformed to local coordinates before they are passed into the callback method, and result objects are transformed to global coordinates after they are returned.
This allows plugin developers to create objects in local coordinates, without worrying about the fact that the working plane is different than the global coordinate system.
TODO: wrapper object for Wire will clean up forConstruction flag everywhere
- eachpoint(arg: Union[Shape, Workplane, Callable[[Location], Shape]], useLocalCoordinates: bool = False, combine: Union[bool, Literal['cut', 'a', 's']] = False, clean: bool = True) T [source]
Same as each(), except arg is translated by the positions on the stack. If arg is a callback function, then the function is called for each point on the stack, and the resulting shape is used. :return: CadQuery object which contains a list of vectors (points ) on its stack.
- Parameters
self (T) –
useLocalCoordinates (bool) – should points be in local or global coordinates
combine (Union[bool, Literal['cut', 'a', 's']]) – True or “a” to combine the resulting solid with parent solids if found, “cut” or “s” to remove the resulting solid from the parent solids if found. False to keep the resulting solid separated from the parent solids.
clean (bool) – call
clean()
afterwards to have a clean shapearg (Union[Shape, Workplane, Callable[[Location], Shape]]) –
- Return type
T
The resulting object has a point on the stack for each object on the original stack. Vertices and points remain a point. Faces, Wires, Solids, Edges, and Shells are converted to a point by using their center of mass.
If the stack has zero length, a single point is returned, which is the center of the current workplane/coordinate system
- edges(selector: Optional[Union[str, Selector]] = None, tag: Optional[str] = None) T [source]
Select the edges of objects on the stack, optionally filtering the selection. If there are multiple objects on the stack, the edges of all objects are collected and a list of all the distinct edges is returned.
- Parameters
self (T) –
selector (Optional[Union[str, Selector]]) – optional Selector object, or string selector expression (see
StringSyntaxSelector
)tag (Optional[str]) – if set, search the tagged object instead of self
- Returns
a CQ object whose stack contains all of the distinct edges of all objects on the current stack, filtered by the provided selector.
- Return type
T
If there are no edges for any objects on the current stack, an empty CQ object is returned
The typical use is to select the edges of a single object on the stack. For example:
Workplane().box(1, 1, 1).faces("+Z").edges().size()
returns 4, because the topmost face of a cube will contain four edges. Similarly:
Workplane().box(1, 1, 1).edges().size()
returns 12, because a cube has a total of 12 edges, And:
Workplane().box(1, 1, 1).edges("|Z").size()
returns 4, because a cube has 4 edges parallel to the z direction
- ellipse(x_radius: float, y_radius: float, rotation_angle: float = 0.0, forConstruction: bool = False) T [source]
Make an ellipse for each item on the stack.
- Parameters
self (T) –
x_radius (float) – x radius of the ellipse (x-axis of plane the ellipse should lie in)
y_radius (float) – y radius of the ellipse (y-axis of plane the ellipse should lie in)
rotation_angle (float) – angle to rotate the ellipse
forConstruction (true if the wires are for reference, false if they are creating part geometry) – should the new wires be reference geometry only?
- Returns
a new CQ object with the created wires on the stack
- Return type
T
NOTE Due to a bug in opencascade (https://tracker.dev.opencascade.org/view.php?id=31290) the center of mass (equals center for next shape) is shifted. To create concentric ellipses use:
Workplane("XY").center(10, 20).ellipse(100, 10).center(0, 0).ellipse(50, 5)
- ellipseArc(x_radius: float, y_radius: float, angle1: float = 360, angle2: float = 360, rotation_angle: float = 0.0, sense: Literal[- 1, 1] = 1, forConstruction: bool = False, startAtCurrent: bool = True, makeWire: bool = False) T [source]
Draw an elliptical arc with x and y radiuses either with start point at current point or or current point being the center of the arc
- Parameters
self (T) –
x_radius (float) – x radius of the ellipse (along the x-axis of plane the ellipse should lie in)
y_radius (float) – y radius of the ellipse (along the y-axis of plane the ellipse should lie in)
angle1 (float) – start angle of arc
angle2 (float) – end angle of arc (angle2 == angle1 return closed ellipse = default)
rotation_angle (float) – angle to rotate the created ellipse / arc
sense (Literal[-1, 1]) – clockwise (-1) or counter clockwise (1)
startAtCurrent (bool) – True: start point of arc is moved to current point; False: center of arc is on current point
makeWire (bool) – convert the resulting arc edge to a wire
forConstruction (bool) –
- Return type
T
- end(n: int = 1) Workplane [source]
Return the nth parent of this CQ element
- Parameters
n (int) – number of ancestor to return (default: 1)
- Return type
a CQ object
- Raises
ValueError if there are no more parents in the chain.
For example:
CQ(obj).faces("+Z").vertices().end()
will return the same as:
CQ(obj).faces("+Z")
- export(fname: str, tolerance: float = 0.1, angularTolerance: float = 0.1, opt: Optional[Dict[str, Any]] = None) T [source]
Export Workplane to file.
- Parameters
self (T) –
path – Filename.
tolerance (float) – the deflection tolerance, in model units. Default 0.1.
angularTolerance (float) – the angular tolerance, in radians. Default 0.1.
opt (Optional[Dict[str, Any]]) – additional options passed to the specific exporter. Default None.
fname (str) –
- Returns
Self.
- Return type
T
- exportSvg(fileName: str) None [source]
Exports the first item on the stack as an SVG file
For testing purposes mainly.
- Parameters
fileName (str) – the filename to export, absolute path to the file
- Return type
None
- extrude(until: Union[float, Literal['next', 'last'], Face], combine: Union[bool, Literal['cut', 'a', 's']] = True, clean: bool = True, both: bool = False, taper: Optional[float] = None) T [source]
Use all un-extruded wires in the parent chain to create a prismatic solid.
- Parameters
self (T) –
until (Union[float, Literal['next', 'last'], Face]) – The distance to extrude, normal to the workplane plane. When a float is passed, the extrusion extends this far and a negative value is in the opposite direction to the normal of the plane. The string “next” extrudes until the next face orthogonal to the wire normal. “last” extrudes to the last face. If a object of type Face is passed then the extrusion will extend until this face. Note that the Workplane must contain a Solid for extruding to a given face.
combine (Union[bool, Literal['cut', 'a', 's']]) – True or “a” to combine the resulting solid with parent solids if found, “cut” or “s” to remove the resulting solid from the parent solids if found. False to keep the resulting solid separated from the parent solids.
clean (bool) – call
clean()
afterwards to have a clean shapeboth (bool) – extrude in both directions symmetrically
taper (Optional[float]) – angle for optional tapered extrusion
- Returns
a CQ object with the resulting solid selected.
- Return type
T
The returned object is always a CQ object, and depends on whether combine is True, and whether a context solid is already defined:
- if combine is False, the new value is pushed onto the stack. Note that when extruding
until a specified face, combine can not be False
- if combine is true, the value is combined with the context solid if it exists,
and the resulting solid becomes the new context solid.
- faces(selector: Optional[Union[str, Selector]] = None, tag: Optional[str] = None) T [source]
Select the faces of objects on the stack, optionally filtering the selection. If there are multiple objects on the stack, the faces of all objects are collected and a list of all the distinct faces is returned.
- Parameters
self (T) –
selector (Optional[Union[str, Selector]]) – optional Selector object, or string selector expression (see
StringSyntaxSelector
)tag (Optional[str]) – if set, search the tagged object instead of self
- Returns
a CQ object whose stack contains all of the distinct faces of all objects on the current stack, filtered by the provided selector.
- Return type
T
If there are no faces for any objects on the current stack, an empty CQ object is returned.
The typical use is to select the faces of a single object on the stack. For example:
Workplane().box(1, 1, 1).faces("+Z").size()
returns 1, because a cube has one face with a normal in the +Z direction. Similarly:
Workplane().box(1, 1, 1).faces().size()
returns 6, because a cube has a total of 6 faces, And:
Workplane().box(1, 1, 1).faces("|Z").size()
returns 2, because a cube has 2 faces having normals parallel to the z direction
- fillet(radius: float) T [source]
Fillets a solid on the selected edges.
The edges on the stack are filleted. The solid to which the edges belong must be in the parent chain of the selected edges.
- Parameters
self (T) –
radius (float) – the radius of the fillet, must be > zero
- Raises
ValueError – if at least one edge is not selected
ValueError – if the solid containing the edge is not in the chain
- Returns
CQ object with the resulting solid selected.
- Return type
T
This example will create a unit cube, with the top edges filleted:
s = Workplane().box(1, 1, 1).faces("+Z").edges().fillet(0.1)
- filter(f: Callable[[Union[Vector, Location, Shape, Sketch]], bool]) T [source]
Filter items using a boolean predicate.
- findFace(searchStack: bool = True, searchParents: bool = True) Face [source]
Finds the first face object in the chain, searching from the current node backwards through parents until one is found.
- Parameters
searchStack (bool) – should objects on the stack be searched first.
searchParents (bool) – should parents be searched?
- Returns
A face or None if no face is found.
- Return type
- findSolid(searchStack: bool = True, searchParents: bool = True) Union[Solid, Compound] [source]
Finds the first solid object in the chain, searching from the current node backwards through parents until one is found.
- Parameters
searchStack (bool) – should objects on the stack be searched first?
searchParents (bool) – should parents be searched?
- Raises
ValueError – if no solid is found
- Return type
This function is very important for chains that are modifying a single parent object, most often a solid.
Most of the time, a chain defines or selects a solid, and then modifies it using workplanes or other operations.
Plugin Developers should make use of this method to find the solid that should be modified, if the plugin implements a unary operation, or if the operation will automatically merge its results with an object already on the stack.
- first() T [source]
Return the first item on the stack
- Returns
the first item on the stack.
- Return type
a CQ object
- Parameters
self (T) –
- hLine(distance: float, forConstruction: bool = False) T [source]
Make a horizontal line from the current point the provided distance
- Parameters
self (T) –
distance (float) –
distance from current point
forConstruction (bool) –
- Returns
the Workplane object with the current point at the end of the new line
- Return type
T
- hLineTo(xCoord: float, forConstruction: bool = False) T [source]
Make a horizontal line from the current point to the provided x coordinate.
Useful if it is more convenient to specify the end location rather than distance, as in
hLine()
- Parameters
self (T) –
xCoord (float) – x coordinate for the end of the line
forConstruction (bool) –
- Returns
the Workplane object with the current point at the end of the new line
- Return type
T
- hole(diameter: float, depth: Optional[float] = None, clean: bool = True) T [source]
Makes a hole for each item on the stack.
- Parameters
self (T) –
diameter (float) – the diameter of the hole
depth (float > 0 or None to drill thru the entire part.) – the depth of the hole
clean (bool) – call
clean()
afterwards to have a clean shape
- Return type
T
The surface of the hole is at the current workplane.
One hole is created for each item on the stack. A very common use case is to use a construction rectangle to define the centers of a set of holes, like so:
s = ( Workplane() .box(2, 4, 0.5) .faces(">Z") .workplane() .rect(1.5, 3.5, forConstruction=True) .vertices() .hole(0.125, 82) )
This sample creates a plate with a set of holes at the corners.
Plugin Note: this is one example of the power of plugins. CounterSunk holes are quite time consuming to create, but are quite easily defined by users.
see
cboreHole()
andcskHole()
to make counterbores or countersinks
- interpPlate(surf_edges: Union[Sequence[Union[Tuple[float, float], Tuple[float, float, float], Vector]], Sequence[Union[Edge, Wire]], Workplane], surf_pts: Sequence[Union[Tuple[float, float], Tuple[float, float, float], Vector]] = [], thickness: float = 0, combine: Union[bool, Literal['cut', 'a', 's']] = False, clean: bool = True, degree: int = 3, nbPtsOnCur: int = 15, nbIter: int = 2, anisotropy: bool = False, tol2d: float = 1e-05, tol3d: float = 0.0001, tolAng: float = 0.01, tolCurv: float = 0.1, maxDeg: int = 8, maxSegments: int = 9) T [source]
Returns a plate surface that is ‘thickness’ thick, enclosed by ‘surf_edge_pts’ points, and going through ‘surf_pts’ points. Using pushPoints directly with interpPlate and combine=True, can be very resource intensive depending on the complexity of the shape. In this case set combine=False.
- Parameters
self (T) –
surf_edges (Union[Sequence[Union[Tuple[float, float], Tuple[float, float, float], Vector]], Sequence[Union[Edge, Wire]], Workplane]) – list of [x,y,z] ordered coordinates or list of ordered or unordered edges, wires
surf_pts (Sequence[Union[Tuple[float, float], Tuple[float, float, float], Vector]]) – list of points (uses only edges if [])
thickness (float) – value may be negative or positive depending on thickening direction (2D surface if 0)
combine (Union[bool, Literal['cut', 'a', 's']]) – should the results be combined with other solids on the stack (and each other)?
clean (bool) – call
clean()
afterwards to have a clean shapedegree (int) – >= 2
nbPtsOnCur (int) – number of points on curve >= 15
nbIter (int) – number of iterations >= 2
anisotropy (bool) – = bool Anisotropy
tol2d (float) – 2D tolerance
tol3d (float) – 3D tolerance
tolAng (float) – angular tolerance
tolCurv (float) – tolerance for curvature
maxDeg (int) – highest polynomial degree >= 2
maxSegments (int) – greatest number of segments >= 2
- Return type
T