8000 Roadmap · gumyr/build123d Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Roadmap

Roger Maitland edited this page May 25, 2025 · 12 revisions

build123d Roadmap – Planned Major Features

The primary objective for release 1.0.0 of build123d is to establish a stable and robust API that users can rely on for long-term projects. Once this milestone is reached, the core API will be considered frozen—meaning that any non–backward compatible changes must go through a formal deprecation cycle, with clear warnings and transitional support. This deprecation policy is already followed in practice for certain changes and will become standard for all breaking modifications post-1.0.0. New features introduced in future versions, including those outlined in this roadmap, will extend the existing API without altering existing functionality, ensuring that user code continues to run unchanged unless deprecated elements are explicitly involved.

The following roadmap items are in no particular order.

BuildAssembly: Assembly System

A dedicated builder for constructing and managing complex assemblies.

  • Supports hierarchical assemblies with a tree structure of components.
  • Provides intuitive syntax for defining mechanical relationships using joints.
  • Automatically propagates motion: when a component moves, all its dependent children follow.
  • Components are easily accessible and referable by name for scripting, modification, or introspection.
  • Designed to scale to complex mechanical systems, such as robotic arms or gearboxes.
  • Automatic BOM generation.
  • Tracking: Issue #231

BuildSurface: Non-Planar Surface Modeling

A new builder for the creation of freeform and non-planar surfaces.

  • Intended to complement BuildPart and BuildSketch with surface-based workflows.
  • Facilitates operations like surface modeling, wrapping, trimming, lofting, and patching.
  • Ideal for organic shapes, aerodynamic surfaces, and aesthetic industrial design components.

Gordon Surface

A Gordon Surface is a smooth 3D surface generated by blending two sets of profile curves: one set in one parametric direction (e.g., "u") and another in the perpendicular direction ("v"). It generalizes Coons and lofted surfaces by allowing networks of intersecting curves — producing surfaces that interpolate both sets smoothly. It supports better control and fairness than simple lofts or Coons patches which makes it especially useful in aerodynamic design, surface modeling, and freeform fairing.

  • OpenCascade provides GeomAPI_GordonSurface, which can interpolate a network of Geom_Curves into a B-spline surface.
  • The core challenge is ensuring that input curves intersect properly and lie on a common grid.
  • Tracking: Issue #831

Surface Patch Creation

A surface patch is a parametric surface bounded by a set of edges or wires, forming a possibly non-planar, non-rectangular boundary. This operation generates a smooth surface that interpolates or approximates the bounding geometry. The goal of this item is to introduce a make_surface_patch method that accepts an input as a closed Wire or a list of Edges, forming a boundary loop. Optional tangent or positional continuity constraints and interior control points or guide curves help describe the patch. OpenCascade’s GeomFill_BSplineCurves, BRepFill_Filling, or GeomAPI_PointsToBSplineSurface can be used in this application.

  • Creating curved panels for industrial design
  • Filling holes or gaps in freeform models
  • Generating caps for revolved or swept geometry
  • Tracking: Issue #654

Geometric Dimensioning and Tolerancing (GD&T) System

An intelligent dimensioning assistant for technical drawings.

  • Automatically analyzes 2D sketches or projections to determine a minimal, fully constrained set of dimension lines.
  • Supports placement of extension lines and chained or baseline dimensions using layout rules.
  • Forms the basis for generating manufacturing drawings or guiding constraint systems.
  • Intended to reduce user effort in manual dimension specification while ensuring full geometric clarity.
  • Tracking: Issue #278

Experta is a lightweight, Python-native rule engine based on the Rete algorithm, making it a strong candidate for implementing drafting and dimensioning standards in a CAD system like build123d. It allows you to define rules declaratively using @Rule decorators and encode best practices such as “dimension all visible edges,” “avoid crossing extension lines,” or “prefer inside dimensions when clear.” These rules operate over facts, which can represent geometry (e.g., edges, holes, dimensions) extracted from your 2D drawings.

Since Experta is pure Python, it integrates cleanly with build123d geometry logic. You can use facts to track geometry and computed properties, and rules can call methods like a.intersect(b) or perform custom layout logic. The Rete algorithm ensures efficient matching even as the number of facts and rules grows.

While it lacks extensive documentation and is no longer actively maintained, its simplicity, transparency, and direct compatibility with Python code make it well-suited to building a symbolic, extensible expert system for intelligent, standards-compliant dimensioning decisions.

Projection System

A robust, general-purpose projection operator for 2D and 3D geometry.

  • Supports projection of edges, wires, or faces onto arbitrary target surfaces or planes.
  • Handles complex and curved projection targets without failure.
  • Designed to support use cases such as etching, engraving, trace geometry, and drafting views.
  • Tracking: Issue #149
  • Tracking: Issue #563

Integrated Constraint Solver

Adds symbolic and constraint-based modeling capabilities.

  • Enhances builders like BuildLine and BuildSketch to accept symbolic variables (sympy.Symbol) for dimensions and geometry.
  • Constraints such as lengths, angles, and alignments are resolved automatically when the builder finishes.
  • Enables parametric models that are adjustable after creation without needing manual recomputation.
  • Lays groundwork for constraint-based sketching and intelligent placement.
  • Tracking: Issue #169

Sheet Metal Tools

Dedicated tools and operators for sheet metal design and unfolding.

  • Adds support for common operations such as bends, hems, flanges, tabs, and reliefs.
  • Includes unfolding logic to generate flat patterns for laser cutting or CNC bending.
  • Incorporates a customizable K-factor or bend allowance model for realistic fabrication simulation.
  • Can export DXF or SVG flat patterns for CAM workflows.
  • Tracking: Issue #305

Intelligent Mirroring

Feature-aware mirroring system.

  • Goes beyond simple geometric mirroring by analyzing feature intent (e.g., fastener holes, fillets).
  • Ensures symmetry by replicating functional equivalents rather than just mirrored shapes.
  • Facilitates robust duplication of complex features like assemblies, cutouts, and patterns.
  • Integrates with metadata or naming to maintain mirrored relationships during updates.
  • Tracking: Issue #965

Material System

Provides a structured way to assign and track material properties.

  • Associates density, mechanical properties, and appearance with geometry.
  • Enables computation of mass properties (volume, weight, center of gravity, moments of inertia).
  • Supports custom material libraries and standardization.
  • May integrate with part metadata for BOM generation and simulation.
  • Tracking: Issue #598

BREP Convex Hull Operation

Adds a solid-level operation to compute the convex hull of BREP shapes.

  • Bridges computational geometry (point cloud convex hull) with CAD modeling (BRep solids).
  • Facilitates simplification, collision detection, or bounding geometry creation.
  • Implementation combines scipy.spatial.ConvexHull with OpenCascade’s face stitching tools.

Feature Recognition from Mesh Files

This feature enables the conversion of mesh-based geometry (e.g., STL or OBJ files) into high-level BREP representations by recognizing and reconstructing analytical surfaces—such as planes, cylinders, spheres, and cones—from tessellated input data. By analyzing the mesh for contiguous patches of triangles with similar curvature or orientation, the system can fit best-matching analytic surfaces to those regions using geometric fitting techniques. The resulting solid should remain watertight and suitable for downstream modeling as a fully editable, parametric BREP.

Implementation tools and techniques may include:

  • Geometric clustering and surface fitting algorithms (e.g., RANSAC, least squares).
  • Mesh segmentation using libraries such as Open3D, trimesh, or pymeshlab.
  • Surface reconstruction via OpenCascade tools (e.g., GeomAPI_PointsToSurface) or custom fitting.
  • Support for full round-tripping workflows: BREP → mesh export → recognition → BREP.
  • Tracking: Issue #103
0