Skip to content

Releases: jimy-byerley/pymadcad

v0.18.1

13 Nov 19:07
Compare
Choose a tag to compare

fixes

  • incompatibility with numpy 2 (#120)
  • schematics displays not working on some GPUs (#119). Because of this fix, the opengl minimal requirement is bumped to opengl >= 4.3
  • minor bug on kinematic displaying

v0.17

08 Sep 13:25
Compare
Choose a tag to compare

This release is full of breaking changes preparing version 1

new features

  • the new kinematic solver, much more convenient, precise, robust and powerfull than the previous one. Coming with plenty of functions and kinematic joints
  • the Ellipsis primitive type
  • the settings module now contains a dictionnary of standard colors for displays and parts, meant to follow themes
  • added functions circular_screwing and grooves in madcad.standard
  • added functions helix and screw in madcad.generation

breaking changes

  • many hashing functions in madcad.mesh have been moved to madcad.hashing
  • Axis and isaxis have been moved to madcad.mathutils
  • thicken and inflate have meen moved to madcad.offseting
  • madcad.cut was renamed madcad.bevel and had few API changes
  • previous color values present in madcad.settings.display have been moved to the new madcad.settings.colors

v0.16

14 Oct 07:03
Compare
Choose a tag to compare

new features

  • added parallelogram()
  • improved helical gears, added helical spur gears
  • added Wire.isclosed(), wire.unclose()
  • added support for NixOS
  • improved documentation and especially the guide

fixes

  • finally fixed rendering not working on MacOSX ! #82 special thanks to @GenieTim
  • fixed minor problem in mesh intersections #73
  • fixed boolean operations on closed wires #62 thanks to @GlennWSo
  • fixed numpy array compatibility issue #85

v0.15.1

21 Dec 10:21
Compare
Choose a tag to compare

bug fixes

  • fixed error in fonts lookup
  • fixed default font not present in the python package

v0.15

20 Dec 18:55
Compare
Choose a tag to compare

It seems there is enough changes for a new release !

new features

  • added text.text() to generate surface meshes and outline webs from text strings, using custom fonts. checkout the docs !
  • removed text.Text as not very useful
  • Scheme instances are no longer filtered by display_annotations=False, instead Solid['annotations'] are as long as the Solid is not selected
  • added part slots functions in madcad.standard

bug fixes

  • fixed Web.frontiers() and Mesh.frontiers() when single-sided edges are demanded (None in group list)
  • fixed and improved stfloor() and stceil()
  • fixed Container.*near()
  • fixed occasional near-infinite loops in boolean operations

v0.14

05 Nov 11:07
Compare
Choose a tag to compare

This version brings some new features and few fixes

  • added helical bevel gears thanks to @bourbonut
  • added stfloor() and stceil() to help getting human-friendly distances in automatically computed results
  • fixed wrong variable names in Mesh.surface(), Mesh.volume(), Wire.surface()
  • fixed wrong pose for sub-group displays before any solid move

v0.13.2

25 Sep 09:31
Compare
Choose a tag to compare
  • some fixes
  • rebuilt pypi package to fix an installation issue

v0.13

17 Sep 15:10
Compare
Choose a tag to compare

This new version brings few new meshing functions, and a big quality-of-life change regarding surface selections in meshes.

new features

  • added module madcad.hull and everything under it !

  • added generation.expand()

  • new Mesh inner identification system.

    This feature concerns all data types in madcad.mesh and adds mainly the method .qualify() that helps labeling groups which helps selecting them afterward.
    check the docs

  • added wrapper for pickle files in madcad.io

  • schemes displays are now highlighted when selected

  • functions generating finished parts are now returning a Solid ready for assembly

  • added support for partial kinematic joint definition in Solid.place()

bug fixes

  • fixed boolean operations propagation failing sometimes
  • fixed some floating point precision issues in madcad.triangulation
  • fixed some floating point precision issues in madcad.boolean
  • fixed wrong argument modification in scaledir()
  • fixed wrong view-controled Solid move in case of solids included in solids
  • fixed View() and show() not using all their arguments
  • fixed Orthographic projection
  • fixed screen size spaces in schemes, hence changing the previous schemes to much bigger (now the screen coordinates are true pixels)
  • fixed scheme.halo_screen()

breaking changes

  • removed Solid.itransform()
  • changed behavior of Scene.display(): it now accepts the former Display to replace or update

v0.12

08 May 16:37
Compare
Choose a tag to compare

new features

  • added linrange to generate uniformly spaced iterators of floats
  • mat3, mat4, quat are now displayable
  • added generation functions for common shapes: cylinder(), cone(), pyramid()

bug fixes

  • fixed bug of wire, web when working with instances of typedlist
  • fixed some triangulation bugs

v0.11

10 Feb 11:16
Compare
Choose a tag to compare

This version is one of the most important version of the lasts year 🍾 : it brings arrex a python module created especially for the needs of the madcad project (even though it is meant for a wider variety of tasks). It provides list-like containers that stores elements in buffers. allowing future big optimizations of madcad.

new features

  • Thanks to @Gigahawk we now have a headless rendering option (#18) ! which means we can perform 3d rendering without having to display a window and manually take a screenshot. The documentation will come soon here
  • show() now accepts an existing scene as argument (It requires the openGL context to be shared)
  • All point, face, or edge lists are now of type typedlist, allowing very fast conversion (without copy) to/from numpy 🎆

breaking changes

  • All point, face, or edge lists are now instances of arrex.typedlist. This should not be a point it you just used your meshes from the Mesh methods, or used its attributes like Mesh.points through their list methods because typedlist behaves just like list in most cases.
    There is just few points to consider:

    • If you were using type checks like isinstance(mesh.points, list) you should put typedlist instead
    • If you were using strided slicing (such as mesh.points[a:b:step]) it won't work any more since not yet supported by arrex
    • slicing a typedlist doesn't return a copy by a view of the original one (for efficency reasons). If you experience troubles with this change, use deepcopy() after slicing
  • ArcCentered(axis, a, b).mesh() now always return a mesh that reachs a and b even if the result is not an arc. This helps to have closed oulines even when the solver is set with a bad precision.

fixes

  • fixed some rare boolean operation issues