star-cad

Geometric operators for computer-aided design
git clone git://git.meso-star.fr/star-cad.git
Log | Files | Refs | README | LICENSE

README.md (5208B)


      1 # Star CAD
      2 
      3 Star-CAD is mostly a wrapper for the gmsh library. It only provides
      4 access to some of the OpenCascade kernel features, with the benefit of
      5 simplified use. One of the most valuable features of Star-CAD is that it
      6 implements an automated reference counting mecanism that eases geometry
      7 reference, whilst gmsh system of tags doesn't ensure tag persistence
      8 accross geometry deletions.
      9 
     10 ## Requirements
     11 
     12 - C compiler
     13 - POSIX make
     14 - pkg-config
     15 - [Gmsh](https://gmsh.info/)
     16 - [RSys](https://gitlab.com/vaplv/rsys)
     17 - [Star Geometry 3D](https://gitlab.com/meso-star/star-geometry-3d)
     18 - [Star Enclosures 3D](https://gitlab.com/meso-star/star-enclosures-3d)
     19 
     20 ## Installation
     21 
     22 Edit config.mk as needed, then run:
     23 
     24     make clean install
     25 
     26 ## Release notes
     27 
     28 ### Version 0.6
     29 
     30 This version breaks the API and brings an huge performance improvement (10 times
     31 and more on complex scenes).
     32 - Add `scad_add_cone' and `scad_add_torus' API calls.
     33 - API changes for geometry creation: geometry name is no longer provided to the
     34   various add_<something> functions, that now create unnamed geometries; instead
     35   names have to be set after geometry creation through `scad_geometry_set_name'.
     36 - Add `scad_geometries_boundaries' and `scad_geometries_common_boundaries' that
     37   return a list of geometries instead of a (possibly empty) single geometry
     38   containing all the boundary elements.
     39 - API uniformization (involving args order, naming, etc.).
     40 - Fix geometry naming. Now get_name returns NULL if name was set to NULL or
     41   let unset (used to return ""). Allow to set same name again (to the same
     42   geometry) without triggering an error.
     43 - Fix `scad_geometry_get_closest_point'. The returned point was not correct.
     44 - Fix `scad_geometry_get_normal' to get the normal at the geometry closest
     45   point, fixing a memleak in the process.
     46 - Fix `scad_scene_clear' (geometries with multiple references where not
     47   released).
     48 - Fix `scad_geometries_common_boundary'. Used to trigger OccIntersect that, as
     49   a side effet, partitionned geometries.
     50 - Fix `scad_step_import' (arguments where inverted).
     51 - Change `scad_geometry_get_centerofmass'. Now returns the unique center of mass
     52   of all the entities involved in the geometry, regardless of their count (used
     53   to return one center of mass per entity in the geometry).
     54 - Rework the auto-sync feature (that manages sync events between gmsh and
     55   Open Cascade); this is the cause of the performance improvement.
     56 - Rename enum members in capital letters.
     57 - Upgrade gmsh dependency (to 1.14.1) and Open-Cascade dependency (to 7.9.1).
     58 - Improve code robustness.
     59 - Improve tests.
     60 
     61 ### Version 0.5.2
     62 
     63 - Fix a file name in debug STL output file.
     64 - Add debug code that output new STL files on some errors.
     65 - Add tests.
     66 
     67 ### Version 0.5.1
     68 
     69 - Add `scad_get_bounding_box' API call.
     70 - Add `scad_geometries_set_periodic' API call.
     71 - Add `scad_geometries_set_mesh_size_modifier' API call.
     72 - Add `scad_geometries_set_mesh_algorithm' API call.
     73 - Add `scad_geometry_get_closest_point' API call.
     74 - Add the `quasi structured' meshing algorithm.
     75 - Add the `automatic' meshing algorithm.
     76 - Add the `initial mesh only' meshing algorithm.
     77 - Add a geometry visibility management feature.
     78 
     79 ### Version 0.5
     80 
     81 - BugFix STL output of geometries when forcing normals
     82 - Improve C89 compliance and fix header file to be used in c++ code
     83 - Change build mechanics from cmake to POSIX makefiles
     84 - Change manpages format from asciidoc to mdoc
     85 - Upgrade dependencies
     86 - Improve and fix some tests
     87 
     88 ### Version 0.4.1
     89 
     90 - Add `scad_dump_geometry' API call that can be called from a debugging
     91   session
     92 - Remove an invalid assert
     93 - Fix build that used gmsh library in Release when Debug should have
     94   been used
     95 - Improve logs
     96 
     97 ### Version 0.4
     98 
     99 - Upgrade to gmsh 4.12.2
    100 
    101 ### Version 0.3.1
    102 
    103 - Add a flag allowing to dump overlapping geometries
    104 - Improve some log messages
    105 - Sets required version of star-enclosures-3d to 0.6
    106 
    107 ### Version 0.3
    108 
    109 This release largely breaks the API.
    110 
    111 - Add API calls to attach custom data to geometries
    112 - Increase default min size for generated meshes
    113 - Add API calls to deals with the entities hidden in geometries
    114 - Change geometry swap API
    115 - Remove redundant API calls
    116 - BugFixes on geometries lifetime management
    117 - Log messages improvement
    118 - Many bug fixes
    119 
    120 ### Version 0.2
    121 
    122 - Introduce reference counting for geometries (API break).
    123 - Add the `scad_stl_data_write` API call to write a vector of coordinate
    124   as an STL file the same way `scad_stl_export` do (producing the same
    125   decimals/bytes).
    126 - Add `scad_stl_get_data` and `scad_stl_get_data_partial` API calls to
    127   get the mesh of a geometry, allowing to manipulate it before writing
    128   it.
    129 - Add the `scad_stl_export_partial` API call to export part of a
    130   geometry to an STL file.
    131 - Remove the reverse arg from STL related functions (API break).
    132 - Add a `scad_geometry_reverse` API call.
    133 - Code simplifications in STL-related code
    134 
    135 ### Version 0.1.0
    136 
    137 Initial version.
    138 
    139 ## License
    140 
    141 Copyright (C) 2022-2024 |Méso|Star> (contact@meso-star.com)
    142 
    143 Star-CAD is free software released under the GPL v3+ license: GNU GPL
    144 version 3 or later. You are welcome to redistribute it under certain
    145 conditions; refer to the COPYING file for details.