Skip to content

NACA 5 Digit Airfoil Generator

KaiUR edited this page May 31, 2026 · 3 revisions

NACA 5 Digit Airfoil Generator

File: Shape_Generation_Scripts/NACA_5_Digit_Airfoil_Generator.py
Version: 1.0
Document Type: Part


Description

Generates a NACA 5-digit series airfoil profile in the active CATPart using GSD geometry. The user specifies a NACA designation (e.g. 23012), chord length, point resolution, and output plane. Supports the five standard non-reflexed (Q=0) camber line configurations (P = 1–5). Cosine spacing is used to cluster points near the leading and trailing edges where surface curvature is highest.

The script creates a geometric set containing:

  • A Points sub-set with all upper and lower surface points
  • A closed GSD spline (Airfoil_Spline) looping from LE → TE along the upper surface, then TE → LE along the lower surface

Settings are saved between sessions.


Requirements

Requirement Value
Python >= 3.10
pycatia >= 0.8.3
wxPython Required
Open document Part

Usage

  1. Open a CATPart document
  2. Run the script
  3. Enter the NACA code, chord length, resolution, and output plane in the dialog
  4. Click OK — a progress bar shows while geometry is created
  5. A new geometric set is added to the part containing the point set and closed spline

Parameters

Parameter Description Default
NACA code 5-digit NACA designation (e.g. 23012). Third digit must be 0. 23012
Chord Chord length in mm 1000.0
Points / side Number of sample points per surface (upper and lower). Minimum 5. 50
Plane Output plane: XY, XZ, or YZ XY

NACA Code Format

The 5-digit designation has the form L P Q T T:

Digit(s) Meaning Example
L (1st) Design lift coefficient digit. Design CL = L × 3/20 2 = CL 0.3
P (2nd) Position of max camber. Max camber at P/20 × chord. Range: 1–5 3 = 15% chord
Q (3rd) Camber line type. Must be 0 (standard non-reflexed). Q=1 not supported. 0
TT (4th+5th) Maximum thickness as % of chord 12 = 12% thick

Supported P values and their camber positions:

P digit Max camber position
1 5% chord
2 10% chord
3 15% chord (most common — 23xxx family)
4 20% chord
5 25% chord

Common examples:

  • 23012 → CL 0.3, max camber at 15%, 12% thick (classic transport wing section)
  • 23015 → CL 0.3, max camber at 15%, 15% thick
  • 24012 → CL 0.3, max camber at 20%, 12% thick

Dialog Buttons

Button Action
OK Validates inputs and generates the airfoil
Cancel Exits without generating
Reset Defaults Restores factory default values
Clear Saved Deletes the saved user presets file
Help Opens the full in-script user manual

Output

A geometric set named NACA_XXXXX_Chord_YYYmm is created at the top level of the part tree containing:

NACA_23012_Chord_1000mm
├── Points
│   ├── Upper_001  (leading edge)
│   ├── Upper_002
│   │   ...
│   ├── Upper_050  (trailing edge)
│   ├── Lower_001
│   │   ...
│   └── Lower_048  (back to leading edge)
└── Airfoil_Spline  (closed)

The spline passes through all upper points (LE → TE), then all lower points (TE → LE), forming a single closed loop ready to use as a pad or pocket profile.


Settings Persistence

Settings are saved automatically to:

%APPDATA%\pycatia_scripts\NACA_5_Digit_Airfoil_Generator\user_presets.json

The next time the script runs, your last-used values are pre-filled in the dialog.


Notes

  • The leading edge is placed at the origin; the trailing edge is at (chord, 0, 0) for XY and XZ planes
  • Cosine spacing: 50 points per side gives very smooth geometry; use 20–30 for lightweight models, 100+ for CFD/analysis work
  • Only Q=0 (standard non-reflexed) camber lines are supported; Q=1 (reflexed) will be rejected
  • The geometric set name encodes the NACA code and chord length for easy identification

Home


Getting Started


Contributing


Any Document Scripts


Drawing Document Scripts


Part Document Scripts


Shape Generation Scripts


Process Document Scripts


Product Document Scripts


Utility Scripts


Legal

Clone this wiki locally