Parametrix's logo

Parametrix

Parametrix's logo Parametrix's logo Parametrix's logo Parametrix's logo
Technical drawing --- Dessin technique --- Dessin industriel --- 2D parametric designs

Parametrix concepts

Parametrix presentation

Parametrix is a generator of web-apps for designing 2D shapes and 3D shapes. 2D shapes are defined via the 2D-engine API, called geometrix. 3D shapes are combinations (union, intersection, substration) of extrusions of the previously defined 2D shapes.

Overview

Parametrix workflow

parametrix_workflow.svg

Designers and makers

designer_maker_interfaces.svg

Parametrix scope

parametrix_3D_shape_subset.svg

More explanations

The user of Parametrix gets:

  • 2D
  • web app
  • programmatic
  • parametrizable
  • simulation included

The programmer of Parametrix design (a.k.a. Designix) gets an API with:

  • circle, stroke and arc
  • corner widening or rounding
  • export to DXF, SVG
  • compatible with FreeCAD
  • lines and arcs ready for CAM tools ;)

corner_options.svg

The API provides options for rounding or widening corners of outlines. It’s useful for:

  • good looking parts
  • manufacturabilty
  • improve mechanical strength

Programmatic CAD

Instead of using graphical tools like FreeCAD, Programmatic CAD is the process of generating CAD designs from software code. Below some benefits of this approach:

  • designs managed by software development tools like git
  • lightweight. Typically you need a text-editor and a small viewer
  • complex parametrization are better solved by software
  • repeated pattern are easier to implement and maintained
  • curve from complex mathematical formula
  • can be integrated in web-backend or software automation chain

CAD flow comparsion

comparison_of_cad_flows.svg

Low-tech CAD pros:

  • less computer demanding
  • scalability of established designs cons:
  • restricted to subset of 3D shapes
  • complex 2D programmatic design

low_tech_path.svg

high_tech_path.svg

The constraints of part manufacturing and low-tech CAD shaping concept are similar. As consequences:

  • low-tech CAD is good enough for mechanical parts
  • too restrictive for esthetic/design parts

Extruded-2D-design is good enough for 90% of technical parts

gui_vs_programmatic.svg

Parametrix versus traditional CAD tools

Pros of Parametrix

  • Use standard software toold and flow
  • branch and history provided by git
  • very accurate modification tracking
  • design-input via text-editor
  • design shared through url/web-page
  • extensive parametrization eases design re-use
  • explicit list of parameters
  • possibility to implement complex logic
  • 2D drawings are free
  • run in the browser (lightweight)
  • can be scripted

Cons of Parametrix

  • No straight method for managing assembly
  • No export with dimensions
  • 2D drawings are free and can contains bugs
  • no direct 3D rendering

Shape description

geometry_descriptive.svg

In Parametrix, a 2D-figure is a collection of 2D-contours. A 2D-contour is a close-path made out of a straight strokes and arcs of circle. A 2D-contour might describe the outer shape or inner holes of the final part. Each 2D-figure describes the final part from a specific direction according to the technical drawing methodology. The 3D-shape is the recipe of how to extrude the 2D-figures and how to combine (boolean operations: union, intersection, substration) them to create the final part.

shape_description_tree.svg

In Parametrix, a design is a 3D-shape. This 3D-shape is defined by a recipe and a collection of 2D-figures. Each 2D-figure consists of the following layers: main, second, dynamics, points, lines and vectors. Only the layer main is used in the final 3D-shape. The other layers are only helpers for debugging and simulation. The layers main, second and dynamics are collections of Contours. A Contour can be either a circle or a close-path. A close-path is made out of straight strokes and arcs-of-circle.

Future tools around Parametrix

parametrix_galaxi.svg

Web app

software_stack.svg

web app characteristics

  • [+] security
  • [+] ubiquity
  • [+] no installation
  • [+] OS agnostic
  • [+] browser agnostic (web standards)
  • [-] no file access
  • [+] could be installed locally for offline usage
  • [+] fast development of GUI
  • [-] restricted to web protocols
  • [-] restricted hardware access

native app characteristics

  • [+] performance
  • [+] multi-threading
  • [+] many programming languages
  • [+] compiled or interpreted
  • [+] run with internet-off
  • [-] OS dependent
  • [-] complex development of GUI
  • [+] any network protocol
  • [+] access to hardware

javascript_timeline.svg

In 2023 the eco-system for developing web-apps is mature.

  • nodejs V18 is the first LTS with official support for ESM.
  • SvelteKit is the first frontend framework that support ESM.

Development

actors

users_around_parametrix.svg

repos and packages overview

repos_and_packages.svg

npm-packages of parametrix

  • geometrix
  • designix
  • geomui
  • geomcli
  • designix-cli
  • designix-ui
  • designix-uis
  • paramui
  • designix-script-js
  • designix-script-ts

npm-packages of parame_paxApps

  • paxScr
  • desiXY-cli
  • desiXY-ui
  • desiXY-uis

Generalization of the design-webapp concept

The concept of Parametrix for generating webapp can be extended to other disciplines like:

  • electronic
  • digital-design/FPGA-design
  • simple-software state-machine
  • music

concept_of_webapp_generator.svg

For each of those domains, an author creates designs in javascript. From there the framework generates a webapp. Finally the end-user parametrises a design and gets his customized instance of the design.

helper_apps_for_design_webapp.svg

The authors generate many independant webapp for exposing there designs. 3 helper-apps could complete the offer:

  • A search-engine for selecting/finding the wished design
  • A visualizer for displaying a parametrized design
  • An assembler for managing the parameters and the combination of several designs

distribution_of_design_apps.svg

A javascript design library can be distributed in several ways:

  • as a website publised on internet
  • as a local website, distributed via npm-packages
  • as a local command-line-interface, distributed via npm-packages
  • as npm-package being imported in other javascripts