planex2d
About
Installation
Optional packages
API conventions
Chaining and copies
Reading the arguments
Points
Planes
Angles and units
Queries
Errors and warnings
How planex2d is tested
Tests written by hand
Agentic testing
Fuzz tests
Building and contributing
Requirements
Build
Tests
Contributing
How AI is used in this project
Development
Documentation
Testing
License and notices
Eigen 3.4.0
Licenses of the Eigen files planex2d compiles
pybind11
Taskflow 4.1.0
Libraries planex2d uses but does not include
Packages planex2d imports when they are installed
Data files under other licenses
Roadmap
Installation
Kernel
Sketch
Constraints
Measuring
OpenCASCADE
Files and integrations
Experimental
Core
Basics
Objects
Objects in planex2d
Lines and arcs
Splines
Wires and faces
Faces, shapes and compounds
In space
The plane in 3D
Moving, rotating, mirroring, scaling
Data
Names and colors
Units
Tolerances
3D
Pad and Pocket
Plotting
General
matplotlib
plotly
SVG
Marking edges
In 3D
Sketches
Sketch plots
Measurements and fields
Measurements
Fields
Everything at a glance
Quick sketch
Drawing
Sketch or QuickSketch
Lines and arcs
Circles and rectangles
Slots, keyholes and polygons
Splines
Several loops
References
To, from and until
Parallel, perpendicular, angle
Tangents
Arcs from references
Choosing between solutions
Construction elements and points
Automatic ids
Editing
Fillets and chamfers
Extending edges
Offsets
Trimming and splitting
Symmetry
Placement
Placing a sketch
Design
Parametric design
Everything at a glance
Constraint sketches
Constraining
Drawing with constraints
Converting sketches
Constraints and dimensions
Fully, under- and over-constrained
Changing the design
Changing dimensions
Expressions: design rules
Formulas: a dipstick for a tank
More geometry
Symmetry and patterns
Splines
Trim, split and project
Offsets and profiles revisited
Beyond drawings
Mechanisms: the sketch as a solver
Booleans
Two faces
Three operations
Union
Difference and intersection
Names are kept
Many faces at once
A perforated sheet
A Reuleaux triangle
A stress test
Faces and wires
A truss from its member center lines
Glued, the members stay separate
Overlapping stretches are kept once
Splitting and trimming
A segmented ring
Trimming a blank
Closed cutters punch holes
Wires
Cutters from 3D
The rules
Traces and pads
Check
Pads and drills
Everything at a glance
Measuring
Measurements
Areas, centroids and second moments
Boxes, crossings and open ends
Distances and clearances
Inside or outside
Dimensions in a sketch
Analysis
Part analysis
Everything at a glance
Files
DXF
A gasket drawing
Polylines with arcs
Units
Gaps
STEP and BREP
SVG
shapely
KiCad
gmsh
Defeaturing and simplification
Small gaps
A square that does not close
On export and when reading
Small edges
A step of 10⁻⁵
On export
Collinear lines
A bottom in four pieces
Fitting arcs
A measured bore
Tolerance
On export
Fitting splines
An ellipse from 128 segments
Arcs first
The steps, in order
Comparison with other libraries
Union of many discs
Union of traces
Merging split edges
Nearly coincident edges
Gluing many faces
Integrations
OpenCASCADE
Export
To OCC shapes
Export options
Splines as arcs
Modeling
A C-clamp, step by step
Sketching on and projecting 3D geometry
Lofting sections
Lofts with guide curves
Everything at a glance
netgen and NGSolve
Getting started
Coming from netgen's WorkPlane
Naming and marking
Identifications
Meshing and fields
Meshing a face
Fields and cuts
Solids and meshes in the webgui
Field solvers as measurements
From level sets
gmsh and FEniCSx
A minimal example
A trimmed resistor
The mesh
The resistance
Drawing the result
More
shapely
A minimal example
To shapely
Predicates and distances
From shapely and back to arcs
Line strings
SciPy
A minimal example
A dimension from a requirement
Optimizing a cold plate
Fitting a sketch to measured points
At a glance
In 3D
PyTorch
A minimal example
The plate and its two measurements
The baseline: COBYLA from the regular grid
40 layouts that fill the space
The surrogate
Search the model, solve the winners
Polish the winner
More
In 3D
KiCad
A minimal example
A real board
Both copper layers
What the board looks like
Copper per net
A clearance check
The board in 3D
Writing a board
Boards from other programs
NumPy
A minimal example
Arrays in
Arrays out
A million points at once
More
Examples
Machines and vehicles
Toy plane
Model rocket
Rear wing with DRS
Suspension kinematics
Excavator arm
Spur gears under load
Planetary gearbox
Wankel engine
Idler plate
Mechanisms
Four-bar linkage
Hood hinge
Jansen linkage
Straight-line linkages
Geneva drive
Cycloidal drive
Belt drives
Drilling a square hole
Physics
Isospectral drums
Boat stability
Flow through sand
Solar shading
Fields and simulation
Surface magnet motor
Heat sink
Hilbert heater
Parallelogram flexure
Vivaldi antenna
Patch antenna
Voronoi bone
Lens ray tracing
Airplane windows
Manufacturing
Gear cutting
Pocket milling
A slicer for 3D printing
Laser-cut box
Stencil lettering
Geometry and design
Penrose tiling
Rose window
Path planning
The moving sofa
Prince Rupert's cube
The coastline paradox
Drawing a logo
Experimental
Deformable shapes
Displacements and topology changes
Moving the hole up
What happens at a topology change
Results
Displacements from NGSolve
A harmonic extension
In motion
API
API reference
Geometry
Edges and wires
Faces, shapes and compounds
Planes
Sketches
Constraints and dimensions
References
Boolean operations and transformations
Selections and views
Files and other libraries
OpenCASCADE and netgen
Plotting
Measurements
Units, settings and warnings
Experimental
planex2d
Python Module Index
Python Module Index
p
p
planex
planex.measurements