Transform Airfoil Point Data into a Surface in Altair Inspire Using Python
Overview
If you're working with airfoil point data and need a quick way to transform it into a surface in Altair Inspire, this Python script is perfect for you! It reads a CSV file containing the X
and Y
coordinates of an airfoil, scales them down (assuming the points are in millimeters), and creates a spline in Inspire. This spline is then realized as a surface, making it easy to incorporate the airfoil geometry into your model for further analysis or design refinement.
In this guide, you'll find:
- The Python script for running with Altair Inspire.
- A sample airfoil point data file (
airfoil-points.csv
) to get you started.
This script, along with the provided sample file (airfoil-points.csv
), will help you quickly and easily transform airfoil point data into a surface in Altair Inspire. Whether you're working with aerodynamic shapes or need to streamline your airfoil design workflow, this tool will save you time and effort.
Pre-Requisite
Prerequisites include:
- Altair Inspire: You need to have Altair Inspire installed on your system.
- Sample Airfoil Point Data (CSV): Download the provided sample file (
airfoil-points.csv
) containingX
andY
coordinates for an airfoil. - Code for transforming airfoil data into a surface: Download the code provided in this article (
airfoil_to_surface.py
) - Basic Python Knowledge: You should be familiar with running Python scripts inside Inspire’s Python window.
Usage/Installation Instructions
Step 1: Prepare or Use the Sample CSV File
Download the sample CSV file called airfoil-points.csv
to help you get started. The file contains the X
and Y
coordinates of a simple airfoil profile. Here’s how the structure- looks like:
X,Y 750,0 700,11.4 650,20.8 ... 750,0 # Last point matches the first to close the shape.
If you have your own airfoil data, ensure it follows this format, with the first and last points matching for a closed surface.
Step 2: Download and Place the Python Script
Download the Python script. Save it as airfoil_to_surface.py
. Make sure to update the file_path
in the script to point to the location of your sample CSV file (airfoil-points.csv
) or your own airfoil data.
file_path = r"C:\path\to\airfoil-points.csv"
Step 3: Run the Script in Altair Inspire
- Open Altair Inspire.
- Access the Python window in Inspire.
- Copy and paste the Python script into the window.
- Press Enter to run the script.
# Python Script to Transform Airfoil Data into a Surface in Inspire import csv from hwx import inspire def transform_coordinates(file_path): coordinates = [] # Open and read the CSV file with open(file_path, newline='') as csvfile: reader = csv.DictReader(csvfile) # Check if 'X' and 'Y' columns exist if 'X' not in reader.fieldnames or 'Y' not in reader.fieldnames: raise ValueError("CSV file must contain 'X' and 'Y' columns.") # Iterate over each row in the CSV for row in reader: x = float(row['X']) / 1000 # Scale down (assumes data is in mm) y = float(row['Y']) / 1000 coordinates.append((x, y)) return coordinates # Assuming the file path is correct file_path = r"C:\path\to\airfoil-points.csv" # Get the coordinates from the CSV file and store them in 'airfoil' airfoil = transform_coordinates(file_path) # Integrate into the provided 'inspire' code model = inspire.newModel() s = inspire.Sketch() # Use 'airfoil' in the spline function spl = s.addSpline(airfoil, degree=3, periodic=False, interpolated=True) # Realize the sketch into a part sketchPart = s.realize() # Extract the surface from the sketch featsArea = sketchPart.getFeatures(type='FeatureArea') inspire.geometry.extract(featsArea) # Orient the view to the top for easier visualization inspire.orientView(direction="top")
Post-Requisite
Inspect and Refine the Surface in Inspire
Once the script runs, your airfoil geometry will be realized as a surface in Inspire. You can:
- Rotate, inspect, and visualize the airfoil geometry.
- Further refine or modify the surface using Inspire’s built-in tools.
- Perform analysis or integrate the surface into your broader design workflow.
Customization Tips:
-
Scaling: If your data is already in meters, remove the scaling step by modifying this part of the script:
x = float(row['X']) # No need to divide by 1000 if data is in meters y = float(row['Y'])