/p-area

The easiest way to compute the frontal/projected area of an STL geometry file. Useful for aerodynamic/CFD applications.

Primary LanguagePythonMIT LicenseMIT

gh-actions-ci GitHub license PyPI pyversions PyPi Version codecov

Most lift and drag calculations require the use of a frontal/projected area. This is normally not that big of a deal, especially when dealing with nice clean CAD files. Unfortunately, in fast-paced design environments (motorsport especially), you'll often get a collection of STL geometry files instead. This is annoying for a number of reasons, but mainly because there are several methods for computing the frontal area of an STL and all of them involve a fairly tedious/lengthy process. pArea aims to solve this with a single command. [original blog post]

Installation

pip install parea

Usage

As a simple example, the cube STL located within the tests directory has a projected area of 4.0 along all three coordinate axes. To validate this, simply run the following (assuming you've downloaded cube_ascii.stl into your current working directory):

parea -stl cube_ascii.stl -x

For models comprised of multiple STL files, simply separate the file names with a space:

parea -stl file_1.stl file_2.stl file_3.stl -x

Or use shell-style wildcards:

parea -stl file_*.stl  -x

When simulating ground vehicles with non-rigid wheels, you will need to account for the tire deformation and subsequent ride height drop. This can be accounted for by using the -floor flag followed by a floor height value. Note that floor height is in reference to the vertical axis of the specified projection plane and maintains the same units as the STL file. As an example:

parea -stl file_*.stl  -x -floor 0.0125

Since the projection vector is x, our projection plane is therefore yz yielding a projected area based off all geometry above z >= 0.0125. All geometry below the horizontal line z=0.0125 is accordingly trimmed (if necessary) and removed from the calculation.

Options

vectors: -x, -y, -z

planes: -yz/-zy, -xz/-zx, -xy/-yx

References

  • Computational Geometry: Algorithms and Applications (3rd Edition) by Mike de Borg, Otfried Cheong, Mark van Kreveld, and Mark Overmars
  • Computational Geometry in C (2nd Edition) by Joseph O'Rourke
  • Finite Element Mesh Generation by Daniel S.H. Lo
  • Command Line Interface Guidelines [link]