User:Suzanne.soy/NoddyCAD: Difference between revisions

From FreeCAD Documentation
m (WIP, saving to avoid loosing everyting in a browser crash…)
(Monads)
Line 10: Line 10:
* diff feature to show the diff between the shapes for two inputs, overlay them in transparent versions, animate etc.
* diff feature to show the diff between the shapes for two inputs, overlay them in transparent versions, animate etc.
* bus to gather many outputs along a single line into a list, instead of a myriad of wires
* bus to gather many outputs along a single line into a list, instead of a myriad of wires
* monad: some nodes can produce a collection of values through a single output pin, the following nodes are mapped over all these values until the multi-stream is unpacked. Allows for "diff" and "bus" features above. Make the preview displays aware of the stream/monad and be able to pick a preview / end view transformer. The monad can specify an operation which is applied to the multiple values at each step to combine for display, and that combined version is used by default at the end if there is no unpacking of the multiple values, or to transform a 3D model into a techdraw drawing for all previews & for the output.
* Pair monad: to compare two initial inputs as they are processed by a DAG of operations by using a diff as the intermediate & final view
* Stream monad: to animate or make an input evolve over time, the intermediate and final views can show the current result or aggregate the results (through a diff + time decay to highlight the recently-changed parts, or through an opacity + compound filter, to make a sort of motion blur with a transparent overlay of the previous versions)
- Tree of objects monad: allows updating elements of a hierarchical grouping of objects (Parts / folders / Bodies / Compounds), without loosing the hierarchy.

Revision as of 09:28, 3 February 2021

  • Use Sourcetrail (Language extension guide) or implement something similar. Right-click → find references should zoom out to show the entire graph, and highlight the definition and its uses
  • Breakpoints
  • Needs a "main object occurrence" feature to force an object to appear at a specific point in the top-level directory structure (inside folders and parts and other directory-like objects), regardless of whether it is used in another operation (e.g. just because someone adds an object to a "fuse" operation doesn't mean that it should be moved to a deep nesting of transformations and disappear from the main, easily-accessed part of the tree).
  • Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data for really large graphs], hopefully we won't have graphs that large, but some insights on improving legibility are interesting and probably applicable to smaller graphs.
  • Meta functions ("macros" in the LISP/Scheme programming sense) to query the graph, filter some nodes to be hidden etc. Can also be used to represent modifications in the nodal editor in the history, see [Version control]
  • Meta nodes to control the appearance of the nodal editor itself

New objects/nodes:

  • select&sequence node, which takes operations and applies them in order (like PartDesign), but also allows selecting sub-parts of an image or geometry to operate on and then deselect to get back to the big picture. Allow for making some features optional (controlled by a checkbox in the tree / a boolean input). Allow basing features off of de-activated features (for the base plane of a sketch for example)
  • diff feature to show the diff between the shapes for two inputs, overlay them in transparent versions, animate etc.
  • bus to gather many outputs along a single line into a list, instead of a myriad of wires
  • monad: some nodes can produce a collection of values through a single output pin, the following nodes are mapped over all these values until the multi-stream is unpacked. Allows for "diff" and "bus" features above. Make the preview displays aware of the stream/monad and be able to pick a preview / end view transformer. The monad can specify an operation which is applied to the multiple values at each step to combine for display, and that combined version is used by default at the end if there is no unpacking of the multiple values, or to transform a 3D model into a techdraw drawing for all previews & for the output.
 * Pair monad: to compare two initial inputs as they are processed by a DAG of operations by using a diff as the intermediate & final view
 * Stream monad: to animate or make an input evolve over time, the intermediate and final views can show the current result or aggregate the results (through a diff + time decay to highlight the recently-changed parts, or through an opacity + compound filter, to make a sort of motion blur with a transparent overlay of the previous versions)
 - Tree of objects monad: allows updating elements of a hierarchical grouping of objects (Parts / folders / Bodies / Compounds), without loosing the hierarchy.