Wingwalker Airfoil and Wing Design Tools'
Project description
Wingwalker Python Module
This Python module provides core functions and scripts to create useful airfoil models and files from engineering specifications. These base models can then be used to create useful designs and implementations (VR and 3D models, 3D printer components, etc).
Philosophy
Wing selection and design can be very complex. From the choice of starting airfoil specs (custom or existing), to cost analysis, and finally to construction, the spectrum of both choices and pitfalls at each stage can become overwhelming pretty quickly, especially to someone whose primary interest is what comes after the wings are bolted on.
The goal behind this software is very straightforward: To give everyone, from the basic hobbyist to the serious (semi)professional, the ability to go quickly from theory and specs to design to real- or virtual-world production of airfoils and wings.
Wingwalker is modeled to make the process from airfoil selection to printable model as simple and straightforward as possible. For most use cases, the simplest approach, demonstrated in the examples, should be sufficient. Those with more strict or customized requirements still have access to the underlying steps, and can build up a more detailed workflow, in accordance with their needs.
Installation
$ pip install wingwalker
Usage
The following code snippet shows how to take various inputs, create a WingRequest, pass that to the module functions,
and then display and export the resulting wing point cloud.
from pyvista import PolyData, Plotter
from wingwalker.models.wing_model import WingModel, WingRequest
from wingwalker.generators.wing import generate_wing_model, generate_point_cloud
from wingwalker.io.exports import export_ply
def plot_results(model: WingModel, points: PolyData):
title = f'Point Cloud\n\n{model.wing_params.wing_type}\n{model.wing_params.planform.name}'
pl = Plotter(shape=(1,1))
pl.add_title(title, color='grey')
pl.background_color='black'
point_view = pl.add_mesh(
mesh=points,
style='points',
line_width=0.1,
point_size=1.5,
color='yellow',
opacity=0.7
)
pl.show()
def main(planform, wing_type, span, base, end, twist, specfile, spec_format, iterations):
req: WingRequest = WingRequest()
req.planform = planform
req.wing_type = wing_type
req.span = span
req.base_chord = base
req.end_chord = end
req.twist = twist
req.spec_file = specfile
req.spec_format = spec_format
req.iterations = iterations
print()
# Generate and preview a point cloud for the model
model = generate_wing_model(wing_req=req)
p_cloud: PolyData = generate_point_cloud(model)
plot_results(model, p_cloud)
#Export the model to PLY format
export_name = f'wing_{wing_type}_{planform}.ply'
export_ply(model, export_name)
License
This software is distributed freely under the MIT license. You are free to use, abuse, modify, or ridicule the software, its products, and its processes in any way you see fit.
Output generated by the original software is published under the Create Commons license, and may also be used for any purpose, commercial or not. Users of this software may freely apply or replace the CC license with their own license or restrictions, as they desire.
Credits
wingwalker was created with cookiecutter and the py-pkgs-cookiecutter template.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wingwalker-0.9.0.tar.gz.
File metadata
- Download URL: wingwalker-0.9.0.tar.gz
- Upload date:
- Size: 121.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b07331f3c09645f3250395159fbcaa5e700b911db877f0cdb4e43ae988d4e4a3
|
|
| MD5 |
e6eaee898e88dc04b17104ff4b7a01e5
|
|
| BLAKE2b-256 |
3390caa739ad1f1ca6bfc0dfff8229c743ef0fd48003e161b1ec4cdf6aad25d4
|
File details
Details for the file wingwalker-0.9.0-py3-none-any.whl.
File metadata
- Download URL: wingwalker-0.9.0-py3-none-any.whl
- Upload date:
- Size: 30.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
680138b7fa8d7ba49c692990f7f4c6ed8917ea5d3f19814658e4f5784e98c959
|
|
| MD5 |
67bf7ff5ab9799a7904b5c29b253d0e4
|
|
| BLAKE2b-256 |
8945871c88ac46c966e12a99e21adb972ce24b09f1dd01853d0fbb6cd39e1e9a
|