├── .gitignore
├── App
└── xfoil
│ ├── __init__.py
│ ├── libxfoil.dylib
│ ├── model.py
│ ├── test.py
│ └── xfoil.py
├── InitGui.py
├── LICENSE
├── README.md
├── airPlaneAirFoil.py
├── airPlaneAirFoilNaca.py
├── airPlaneDesignProfilUI.py
├── airPlaneNacelle.py
├── airPlanePanel.py
├── airPlanePlane.py
├── airPlaneRib.py
├── airPlaneSWPanel.py
├── airPlaneWPanel.py
├── airPlaneWing.py
├── airPlaneWingUI.py
├── airPlaneWingWizard.py
├── examples
├── 3-View-Hawker-Typhoon.jpg
├── HawkerTempest.FCStd
├── HawkerTempest2-complete.FCStd
├── HawkerTempest2.FCStd
├── Plane-example.FCStd
├── Plane-example.FCStd1
├── Ribs-example.FCStd
└── Wing-example.FCStd
├── libAeroShapes.py
├── package.xml
├── path_locator.py
├── resources
├── AirPlaneDesignWorkbench-V0.3.png
├── AirPlaneDesignWorkbench.png
├── AirplaneDesign001.png
├── RIBSGUI1.png
├── RibGUI.png
├── Ribsfolder.png
├── WingGUI.png
├── WingResult.png
├── airPlaneDesignEdit.ui
├── airPlaneDesignPlanedialog.ui
├── airPlaneDesignWingdialog.ui
├── airPlaneWpanelTask.ui
├── dialog.ui
├── icons
│ ├── appicon.svg
│ ├── nacelle.png
│ ├── nacelle.xcf
│ ├── nacelle.xpm
│ ├── panel.png
│ ├── panel.xcf
│ ├── panel.xpm
│ ├── plane.png
│ ├── plane.xcf
│ ├── plane.xpm
│ ├── resource.qrc
│ ├── rib.svg
│ ├── rib.xpm
│ ├── wing.png
│ ├── wing.xcf
│ ├── wing.xpm
│ ├── wing2.png
│ ├── wing2.xcf
│ └── wing2.xpm
├── nacelleTaskPanel.ui
├── plane.png
├── planelowres.png
├── ribTaskPanel.ui
├── selectRibProfil.ui
└── selectobject.ui
├── translations
├── AirPlaneDesign_en.qm
├── AirPlaneDesign_en.ts
├── AirPlaneDesign_fr.qm
└── AirPlaneDesign_fr.ts
└── wingribprofil
├── AG41d02f.dat
├── AGx
├── AG40d +00f.dat
├── AG41d +00f.dat
├── AG42d +00f.dat
├── AG43d +00f.dat
├── ag40d-02r-unreflexed.dat
├── ag41d-02r-unreflexed.dat
├── ag42d-02r-unreflexed.dat
└── ag43d-02r-unreflexed.dat
├── ag40d-02r.dat
├── e205.dat
├── e207.dat
├── eppler
├── e205.dat
└── e207.dat
└── naca
├── naca0010.dat
├── naca0012.dat
└── naca2412.dat
/.gitignore:
--------------------------------------------------------------------------------
1 | venv
2 | __pycache__/
3 |
--------------------------------------------------------------------------------
/App/xfoil/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # Copyright (c) 2019 D. de Vries
3 | #
4 | # This file is part of XFoil.
5 | #
6 | # XFoil is free software: you can redistribute it and/or modify
7 | # it under the terms of the GNU General Public License as published by
8 | # the Free Software Foundation, either version 3 of the License, or
9 | # (at your option) any later version.
10 | #
11 | # XFoil is distributed in the hope that it will be useful,
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | # GNU General Public License for more details.
15 | #
16 | # You should have received a copy of the GNU General Public License
17 | # along with XFoil. If not, see .
18 | from .xfoil import XFoil
19 |
20 | __version__ = "1.1.1"
21 |
--------------------------------------------------------------------------------
/App/xfoil/libxfoil.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/App/xfoil/libxfoil.dylib
--------------------------------------------------------------------------------
/App/xfoil/model.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | # Copyright (c) 2019 D. de Vries
3 | #
4 | # This file is part of XFoil.
5 | #
6 | # XFoil is free software: you can redistribute it and/or modify
7 | # it under the terms of the GNU General Public License as published by
8 | # the Free Software Foundation, either version 3 of the License, or
9 | # (at your option) any later version.
10 | #
11 | # XFoil is distributed in the hope that it will be useful,
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | # GNU General Public License for more details.
15 | #
16 | # You should have received a copy of the GNU General Public License
17 | # along with XFoil. If not, see .
18 | import numpy as np
19 |
20 |
21 | class Airfoil(object):
22 | """Airfoil
23 |
24 | Attributes
25 | ----------
26 | n_coords
27 | x
28 | y
29 | """
30 |
31 | def __init__(self, x, y):
32 | super().__init__()
33 | self.coords = np.ndarray((0, 2))
34 | self.x = x
35 | self.y = y
36 |
37 | @property
38 | def n_coords(self):
39 | """int: Number of coordinates which define the airfoil surface."""
40 | return self.coords.shape[0]
41 |
42 | @property
43 | def x(self):
44 | """np.ndarray: List of x-coordinates of the airfoil surface."""
45 | return self.coords[:, 0]
46 |
47 | @x.setter
48 | def x(self, value):
49 | v = value.flatten()
50 | self.coords = np.resize(self.coords, (v.size, 2))
51 | self.coords[:, 0] = v[:]
52 |
53 | @property
54 | def y(self):
55 | """np.ndarray: List of y-coordinates of the airfoil surface."""
56 | return self.coords[:, 1]
57 |
58 | @y.setter
59 | def y(self, value):
60 | v = value.flatten()
61 | self.coords = np.resize(self.coords, (v.size, 2))
62 | self.coords[:, 1] = v[:]
63 |
--------------------------------------------------------------------------------
/InitGui.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Aircraft
4 | #
5 | # Copyright (c) F. Nivoix - 2018 - V0.1
6 | #
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 | #------------------------------------------------------
22 | #AirPlaneDesign
23 | #------------------------------------------------------
24 |
25 | import path_locator
26 | from PySide import QtCore
27 | import os
28 | import FreeCADGui as Gui
29 | import FreeCAD as App
30 |
31 |
32 | # Qt translation handling
33 | #from DraftGui import translate
34 | #from DraftGui import utf8_decode
35 | FreeCADGui.addLanguagePath(":/translations")
36 |
37 |
38 | smWBpath = os.path.dirname(path_locator.__file__)
39 | smWB_icons_path = os.path.join( smWBpath, 'resources', 'icons')
40 | global main_smWB_Icon # lgtm[py/redundant-global-declaration]
41 | main_smWB_Icon = os.path.join( smWB_icons_path , 'appicon.svg')
42 |
43 | #def QT_TRANSLATE_NOOP(scope, text):
44 | # return text
45 |
46 | # Qt translation handling
47 | def translate(context, text, disambig=None):
48 | return QtCore.QCoreApplication.translate(context, text, disambig)
49 |
50 |
51 | class AirPlaneDesignWorkbench(Workbench):
52 | def __init__(self):
53 | self.__class__.Icon = main_smWB_Icon
54 | self.__class__.MenuText = "AirPlaneDesign"
55 | self.__class__.ToolTip = "A description of my workbench"
56 |
57 | def Initialize(self):
58 | def QT_TRANSLATE_NOOP(scope, text):
59 | return text
60 | #"This function is executed when FreeCAD starts"
61 | import airPlanePanel
62 | import airPlaneRib
63 | import airPlanePlane
64 | import airPlaneWPanel
65 | import airPlaneWing
66 | import airPlaneWingWizard
67 | import airPlaneNacelle
68 | self.comList= ['airPlaneDesignPlane','airPlaneDesignWing','airPlaneDesignWingPanel','airPlaneDesignWRib','airPlaneDesignWingWizard','airPlaneDesignWPanel','airPlaneDesignNacelle']
69 |
70 | # creates a new toolbar with your commands
71 | self.appendToolbar(QT_TRANSLATE_NOOP("AirPlaneDesign", "Air Plane Design"), self.comList)
72 | # creates a new menu
73 | self.appendMenu([QT_TRANSLATE_NOOP("AirPlaneDesign","Air Plane Design")],self.comList)
74 |
75 | def Activated(self):
76 | #This function is executed when the workbench is activated
77 | return
78 |
79 | def Deactivated(self):
80 | #This function is executed when the workbench is deactivated
81 | return
82 |
83 | def ContextMenu(self, recipient):
84 | # This is executed whenever the user right-clicks on screen
85 | # "recipient" will be either "view" or "tree"
86 | self.appendContextMenu("AirPlaneDesignInitPlane",self.comlist) # add commands to the context menu
87 |
88 |
89 | def GetClassName(self):
90 | # this function is mandatory if this is a full python workbench
91 | return "Gui::PythonWorkbench"
92 |
93 | Gui.addWorkbench(AirPlaneDesignWorkbench())
94 |
95 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # The FreeCAD Airplane Design Workbench
2 | [](https://lgtm.com/projects/g/FredsFactory/FreeCAD_AirPlaneDesign/alerts/) [](https://lgtm.com/projects/g/FredsFactory/FreeCAD_AirPlaneDesign/context:python)
3 | A FreeCAD workbench dedicated to Airplane Design
4 |
5 | **Warning:** This is highly experimental code. Testers are welcome.
6 |
7 | 
8 |
9 | 
10 |
11 | ## Release Notes
12 | **v0.4**:
13 | New Object : Plane, Wing and WingPanel.
14 | New Wing generator.
15 | Naca Rib generator.
16 |
17 | **v0.3bis**: Nacelle generator by Claude
18 |
19 | **v0.3**: NACA Rib generator
20 | **v0.2**: New release with parametric objects based on a dedicated UI
21 | **v0.1**: Initial release based on sheet deprecated!
22 |
23 | **v0.001**: 11 July 2018: Initial version
24 |
25 | ## Prerequisites
26 | * FreeCAD >= v0.18
27 | install "Plot" & "Curved shapes" WorkBench.
28 |
29 | ## Installation
30 | Use the FreeCAD [Addon Manager](https://github.com/FreeCAD/FreeCAD-addons#installing) from the tools menu to install AirPlaneDesign Workbench.
31 | You will also require Plot and CurvedShapes addons (both also available in the Addon Manager)
32 |
33 | ## Quickstart
34 | There are various examples available. Under Windows these are in: C:\Users\USERNAME\AppData\Roaming\FreeCAD\Mod\AirPlaneDesign\examples
35 |
36 | To create your own from scratch:
37 | After installation a new Airplane Design menu and toolbar will be available
38 | You must first "Create a plane" (you can give it dimensions but it won't be visible)
39 | Ensure the plane is selected in the navigation window and select "Create/Add a wing to plane"
40 | Ensure the wing is selected in the navigation window and select "Wing Wizard"
41 | Click "Fill in Sheet With Example" to create the demo wing
42 |
43 | >>>>>>> remotes/origin/master
44 | ## Usage
45 |
46 | The menu contains with the following functions:
47 | 1. Create a rib : you can import DAT file or generate NACA Profile.
48 | 1.1 Import a DAT File
49 | Simply copy the DAT File in the folder
50 |
51 | 
52 | 1.2 Create a Rib based on a DAT file
53 | In the menu AiplaneDesign select create a RIB, the dialog below appears, click on the tab "Import DAT File".
54 |
55 | 
56 |
57 | Select in the tree the dat file you want to use and define the chord of the rib and clic OK. That's all.
58 | You can change directly in the GUI of the object the Dat File, the chord (in mm).
59 |
60 | 1.3 Use the NACA Generator
61 | You can generate Naca profil 4 or 5 digits. In the menu AiplaneDesign select create a RIB, the dialog below appears, click on the tab "NACA Generator". Simply fill the NACA Number, the number of points you want to generate and the chord in mm. A preview is automatically generated.
62 |
63 | 
64 |
65 |
66 | 2.Create a wing
67 |
68 |
69 | 
70 |
71 | The result
72 |
73 | 
74 |
75 |
76 |
77 | Ability to choose the:
78 | * Profiles you want to import in the UI (.dat format)
79 | **Note:** 2 profiles are installed with the workbench ([eppler 205](wingribprofil/e205.dat) and [eppler 207](wingribprofil/e207.dat)). If you'd like to use different profile(s), simply include said .dat file(s) in to the [`wingribprofil`](wingribprofil/) directory.
80 |
81 |
82 |
83 | Nacelle feature :
84 |
85 |
86 |
87 | ## Roadmap
88 |
89 | V0.4 :
90 | - [X] Add NACA profil generator
91 | - [X] Add Preview profil and sheet
92 | - [X] Implement rib thickness and NACA finite TE by adrianinsaval
93 | - [X] Improve wing design UI
94 | - [X] Wing object
95 | - [X] Wing Panel Object
96 | - [ ] Improve RIB file selection
97 | - [ ] Import profil from UIUC Airfoil Database
98 | - [ ] Add ability to translate workbench
99 | - [ ] Tutorials
100 |
101 | V0.5 : Some ideas....
102 | - [ ] Generate Rib from Wing
103 | - [ ] Xfoil integration
104 | - [ ] Increase the width of wizard dialog box so the rotation columns are visible
105 | - [ ] Add option to Automatically generate a mirror wing for the other side
106 | - [ ] Wing wizard remembers settings from previous wing
107 | - [ ] Copy and paste the wing wizard table (eg to and from a spreadsheet)
108 | - [ ] More "complete plane" example files (eg like the GordLoft_4 example)
109 | - [ ] Fuselage design module
110 | - [ ] Add an "open folder" or "install profile" button in the rib design dialog to make it easier to find/add extras
111 | - [ ] ----------
112 | - [ ] ----------
113 |
114 | ## Feedback
115 | Feedback can be provided via the [discussion thread in english](https://forum.freecadweb.org/viewtopic.php?f=8&t=42208) or [discussion thread in french](https://forum.freecadweb.org/viewtopic.php?f=12&t=40376) on the FreeCAD forums
116 | Some discussions here : https://forum.freecadweb.org/viewtopic.php?f=3&t=41159&p=356564#p356564
117 |
118 | ## License
119 | LGPLv2.1
120 | See [LICENSE](LICENSE) file
121 |
122 |
123 |
--------------------------------------------------------------------------------
/airPlaneAirFoil.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #***************************************************************************
3 | #* *
4 | #* Copyright (c) 2010 Heiko Jakob *
5 | #* *
6 | #* This program is free software; you can redistribute it and/or modify *
7 | #* it under the terms of the GNU Lesser General Public License (LGPL) *
8 | #* as published by the Free Software Foundation; either version 2 of *
9 | #* the License, or (at your option) any later version. *
10 | #* for detail see the LICENCE text file. *
11 | #* *
12 | #* This program is distributed in the hope that it will be useful, *
13 | #* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 | #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 | #* GNU Library General Public License for more details. *
16 | #* *
17 | #* You should have received a copy of the GNU Library General Public *
18 | #* License along with this program; if not, write to the Free Software *
19 | #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
20 | #* USA *
21 | #* *
22 | #***************************************************************************
23 | # Modificaiotn by F. Nivoix to integrate
24 | # in Airplane workbench 2019 -
25 | # V0.1, V0.2 & V0.3
26 | #***************************************************************************
27 |
28 | import FreeCAD,FreeCADGui,Part,re
29 | from FreeCAD import Base
30 |
31 | FreeCADGui.addLanguagePath(":/translations")
32 |
33 | # Qt translation handling
34 | def translate(context, text, disambig=None):
35 | return QtCore.QCoreApplication.translate(context, text, disambig)
36 |
37 | #################################################
38 | # This module provides tools to build a
39 | # wing panel
40 | #################################################
41 | if open.__module__ in ['__builtin__','io']:
42 | pythonopen = open
43 |
44 | def readpointsonfile(filename):
45 | # The common airfoil dat format has many flavors, This code should work with almost every dialect,
46 | # Regex to identify data rows and throw away unused metadata
47 | regex = re.compile(r'^\s*(?P(\-|\d*)\.\d+(E\-?\d+)?)\,?\s*(?P\-?\s*\d*\.\d+(E\-?\d+)?)\s*$')
48 | afile = pythonopen(filename,'r')
49 | coords=[]
50 | # Collect the data for the upper and the lower side separately if possible
51 | for lin in afile:
52 | curdat = regex.match(lin)
53 | if curdat != None:
54 | x = float(curdat.group("xval"))
55 | y = 0#posY
56 | z = float(curdat.group("yval"))
57 | #ignore points out of range, small tolerance for x value and arbitrary limit for y value, this is necessary because Lednicer
58 | #format airfoil files include a line indicating the number of coordinates in the same format of the coordinates.
59 | if (x < 1.01) and (z < 1) and (x > -0.01) and (z > -1):
60 | coords.append(FreeCAD.Vector(x,y,z))
61 | else:
62 | FreeCAD.Console.PrintWarning("Ignoring coordinates out of range -0.01 1:
75 | flippoint = coords.index(coords[0],1)
76 | coords[:flippoint+1]=coords[flippoint-1::-1]
77 |
78 | return coords
79 |
80 | def process(filename,scale,posX,posY,posZ,rotX,rotY,rotZ,rot,useSpline,splitSpline,coords=[]):
81 | if len(coords) == 0 :
82 | coords = readpointsonfile(filename)
83 | # do we use a BSpline?
84 | if useSpline:
85 | if splitSpline: #do we split between upper and lower side?
86 | if coords.__contains__(FreeCAD.Vector(0,0,0)): # lgtm[py/modification-of-default-value]
87 | flippoint = coords.index(FreeCAD.Vector(0,0,0))
88 | else:
89 | lengthList=[v.Length for v in coords]
90 | flippoint = lengthList.index(min(lengthList))
91 | splineLower = Part.BSplineCurve()
92 | splineUpper = Part.BSplineCurve()
93 | splineUpper.interpolate(coords[:flippoint+1])
94 | splineLower.interpolate(coords[flippoint:])
95 | if coords[0] != coords[-1]:
96 | wire = Part.Wire([splineUpper.toShape(),splineLower.toShape(),Part.makeLine(coords[0],coords[-1])])
97 | else:
98 | wire = Part.Wire([splineUpper.toShape(),splineLower.toShape()])
99 | else:
100 | spline = Part.BSplineCurve()
101 | spline.interpolate(coords)
102 | if coords[0] != coords[-1]:
103 | wire = Part.Wire([spline.toShape(),Part.makeLine(coords[0],coords[-1])])
104 | else:
105 | wire = Part.Wire(spline.toShape())
106 | else:
107 | # alternate solution, uses common Part Faces
108 | lines = []
109 | first_v = None
110 | last_v = None
111 | for v in coords:
112 | if first_v is None:
113 | first_v = v
114 | # End of if first_v is None
115 | # Line between v and last_v if they're not equal
116 | if (last_v != None) and (last_v != v):
117 | lines.append(Part.makeLine(last_v, v))
118 | # End of if (last_v != None) and (last_v != v)
119 | # The new last_v
120 | last_v = v
121 | # End of for v in upper
122 | # close the wire if needed
123 | if last_v != first_v:
124 | lines.append(Part.makeLine(last_v, first_v))
125 | wire = Part.Wire(lines)
126 |
127 | #face = Part.Face(wire).scale(scale) #Scale the foil, # issue31 doesn't work with v0.18
128 | face = Part.Face(wire)
129 | myScale = Base.Matrix() # issue31
130 | myScale.scale(scale,scale,scale)# issue31
131 | face=face.transformGeometry(myScale)# issue31
132 |
133 | face.Placement.Rotation.Axis.x=rotX
134 | face.Placement.Rotation.Axis.y=rotY
135 | face.Placement.Rotation.Axis.z=rotZ
136 | face.Placement.Rotation.Angle=rot
137 |
138 | #face.Placement(FreeCAD.Vector(0,0,0),FreeCAD.Rotation(FreeCAD.Vector(rotX,rotY,rotZ),rot))
139 | #face.rotate([0,0,0],FreeCAD.Vector(rotX, rotY, rotZ),rot)
140 |
141 |
142 | return face, coords
143 |
--------------------------------------------------------------------------------
/airPlaneDesignProfilUI.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Aircraft
4 | #
5 | # Copyright (c) F. Nivoix - 2018 - V0.3
6 | #
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 | import FreeCAD, FreeCADGui, os
22 | from PySide import QtCore, QtGui, QtUiTools
23 | from airPlaneAirFoilNaca import generateNacaCoords
24 | from airPlaneAirFoil import readpointsonfile
25 |
26 | FreeCADGui.addLanguagePath(":/translations")
27 |
28 | # Qt translation handling
29 | def translate(context, text, disambig=None):
30 | return QtCore.QCoreApplication.translate(context, text, disambig)
31 |
32 |
33 | class zoomableGraphic(QtGui.QGraphicsView):
34 | def __init__(self, parent):
35 | super(zoomableGraphic, self).__init__(parent)
36 |
37 | def wheelEvent(self, event):
38 | zoomInFactor = 1.25
39 | zoomOutFactor = 1 / zoomInFactor
40 | if event.angleDelta().y() > 0:
41 | zoomFactor = zoomInFactor
42 | else:
43 | zoomFactor = zoomOutFactor
44 | self.scale(zoomFactor, zoomFactor)
45 |
46 |
47 | class SelectObjectUI():
48 | def __init__(self):
49 | path_to_ui = FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/resources/selectRibProfil.ui'
50 | loader=QtUiTools.QUiLoader()
51 | loader.registerCustomWidget(zoomableGraphic)
52 | self.form=loader.load(path_to_ui)
53 | #self.form.setWindowFlag(QtCore.Qt.WindowMaximizeButtonHint) # compatibility with Freecad V0.18
54 | profil_dir=FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/wingribprofil'
55 | self.model = QtGui.QFileSystemModel()
56 | self.model.setRootPath(profil_dir)
57 | tree = self.form.listProfil
58 | tree.setModel(self.model)
59 | tree.hideColumn(1)
60 | tree.hideColumn(2)
61 | tree.hideColumn(3)
62 | tree.hideColumn(4)
63 | tree.resizeColumnToContents(0)
64 | tree.setRootIndex(self.model.index(profil_dir))
65 |
66 | def on_treeView_clicked(self,index):
67 | self.filePath = self.model.filePath(index)
68 | if os.path.isfile(self.filePath):
69 | self.updateRibDAT()
70 | else:
71 | self.form.profilTable.setRowCount(0)
72 | self.form.ribView.setScene(QtGui.QGraphicsScene())
73 | return
74 |
75 | def accept(self):
76 | return
77 |
78 | def reject(self):
79 | FreeCADGui.Control.closeDialog()
80 | FreeCAD.ActiveDocument.recompute()
81 | return
82 |
83 | def getStandardButtons(self):
84 | return int(QtGui.QDialogButtonBox.Ok)
85 |
86 | def setupUi(self):
87 | # Connect Signals and Slots
88 | self.form.NACANumber.editingFinished.connect(self.updateRibNACA)
89 | self.form.NACANumber.editingFinished.connect(self.form.listProfil.clearSelection)
90 | self.form.nacaNbrPoint.editingFinished.connect(self.updateRibNACA)
91 | self.form.listProfil.clicked.connect(self.form.NACANumber.clear)
92 | self.form.listProfil.clicked.connect(self.on_treeView_clicked)
93 | self.form.finite_TE.clicked.connect(self.updateRibNACA)
94 | return
95 |
96 |
97 |
98 | def updateGraphicsRibView(self,coords):
99 | scene=QtGui.QGraphicsScene()
100 | self.form.ribView.setScene(scene)
101 | scale=self.form.ribView.width()-2*self.form.ribView.frameWidth()
102 |
103 | points=[]
104 | first_v = None
105 | last_v = None
106 | for v in coords:
107 | if first_v is None:
108 | first_v = v
109 | # End of if first_v is None
110 | # Line between v and last_v if they're not equal
111 | if (last_v != None) and (last_v != v):
112 | points.append(QtCore.QPointF(last_v.x*scale,-last_v.z*scale ))
113 | points.append(QtCore.QPointF(v.x*scale,-v.z*scale ))
114 | # End of if (last_v != None) and (last_v != v)
115 | # The new last_v
116 | last_v = v
117 | # End of for v in coords
118 | # close the wire if needed
119 | if last_v != first_v:
120 | points.append(QtCore.QPointF(last_v.x*scale,-last_v.z*scale ))
121 | points.append(QtCore.QPointF(first_v.x*scale,-first_v.z*scale ))
122 | item=QtGui.QGraphicsPolygonItem(QtGui.QPolygonF(points))
123 | item.setPen(QtGui.QPen(QtCore.Qt.blue))
124 | scene.addItem(item)
125 |
126 | return
127 |
128 |
129 | def updateRibNACA(self):
130 | number=self.form.NACANumber.text()
131 | self.form.profilTable.setRowCount(0)
132 | try:
133 | coords=generateNacaCoords(number,self.form.nacaNbrPoint.value(),self.form.finite_TE.isChecked(),True,self.form.chord.value(),0,0,0,0,0,0)
134 | except ValueError:
135 | self.form.ribView.setScene(QtGui.QGraphicsScene())
136 | return
137 |
138 | row_number=0
139 | for v in coords :
140 | self.form.profilTable.insertRow(row_number)
141 | self.form.profilTable.setItem(row_number,0,QtGui.QTableWidgetItem(str(v.x)))
142 | self.form.profilTable.setItem(row_number,1,QtGui.QTableWidgetItem(str(v.z)))
143 | row_number=row_number+1
144 |
145 | self.form.profilTable.resizeColumnsToContents()
146 | self.updateGraphicsRibView(coords)
147 |
148 | return
149 |
150 |
151 | def updateRibDAT(self):
152 | self.form.profilTable.setRowCount(0)
153 | coords=readpointsonfile(self.filePath)
154 |
155 | row_number=0
156 | for v in coords :
157 | self.form.profilTable.insertRow(row_number)
158 | self.form.profilTable.setItem(row_number,0,QtGui.QTableWidgetItem(str(v.x)))
159 | self.form.profilTable.setItem(row_number,1,QtGui.QTableWidgetItem(str(v.z)))
160 | row_number=row_number+1
161 |
162 | self.form.profilTable.resizeColumnsToContents()
163 | self.updateGraphicsRibView(coords)
164 |
165 | return
166 |
--------------------------------------------------------------------------------
/airPlaneNacelle.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Airplane Nacelle
4 | #
5 | # Copyright (c) C. Guth - 2021 - V0.4
6 | #
7 | # For FreeCAD Versions = or > 0.19 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 |
22 | __title__="FreeCAD airPlane Nacelle"
23 | __author__ = "C. Guth"
24 | __url__ = "https://fredsfactory.fr"
25 |
26 |
27 | import os, math
28 | import FreeCAD, FreeCADGui, Part
29 | import libAeroShapes
30 |
31 | from PySide import QtCore, QtGui, QtUiTools
32 |
33 |
34 | # debug messages handling
35 | debug= True;
36 | def debugMsg(msg, always= False):
37 | if debug or always:
38 | FreeCAD.Console.PrintMessage(msg)
39 |
40 | # resources path, files
41 | apWB_resources_path= os.path.join(os.path.dirname(__file__), 'resources')
42 | apWB_icons_path= os.path.join(apWB_resources_path, 'icons')
43 | apWB_icon_png= os.path.join(apWB_icons_path,'nacelle.png')
44 | apWB_icon_xpm= os.path.join(apWB_icons_path,'nacelle.xpm')
45 | apWB_ui_file= os.path.join( os.path.dirname(__file__), 'resources', 'nacelleTaskPanel.ui')
46 | FreeCADGui.addLanguagePath(":/translations")
47 |
48 |
49 | class Nacelle:
50 | def __init__(self, obj, _length, _diameter, _nType, _XMaxRel, _nbPoints, _useSpline = True):
51 | '''Nacelle properties'''
52 | obj.Proxy = self
53 | obj.addProperty("App::PropertyLength", "nacelleLength", "nacelle", QtCore.QT_TRANSLATE_NOOP("App::Property", "Length")).nacelleLength = _length
54 | obj.addProperty("App::PropertyLength", "nacelleDiameter", "nacelle", QtCore.QT_TRANSLATE_NOOP("App::Property", "Diameter")).nacelleDiameter = _diameter
55 | obj.addProperty("App::PropertyFloat", "nacelleXMaxRel", "nacelle", QtCore.QT_TRANSLATE_NOOP("App::Property", "Diameter")).nacelleXMaxRel = _XMaxRel
56 | obj.addProperty("App::PropertyString", "nacelleType", "nacelle", QtCore.QT_TRANSLATE_NOOP("App::Property", "Type")).nacelleType = _nType
57 | obj.addProperty("App::PropertyBool","useSpline","nacelle",QtCore.QT_TRANSLATE_NOOP("App::Property","use Spline")).useSpline = _useSpline
58 | obj.addProperty("App::PropertyInteger","nbPoints","nacelle",QtCore.QT_TRANSLATE_NOOP("App::Property","Number of Points")).nbPoints = _nbPoints
59 |
60 | def onChanged(self, fp, prop):
61 | '''Do something when a property has changed'''
62 | debugMsg("Nacelle: change property " + str(prop) + "\n")
63 | #self.execute(fp)
64 |
65 | def execute(self, fp):
66 | # Do something when doing a recomputation, this method is mandatory
67 | debugMsg("Nacelle : execute process l= " + str(fp.nacelleLength) + "\n")
68 |
69 | # get coords
70 | if fp.nacelleType == "Lyon":
71 | coords= libAeroShapes.getLyonCoords(fp.nacelleLength, fp.nacelleDiameter, fp.nbPoints)
72 | else:
73 | if fp.nacelleType == "EllipseCos":
74 | coords= libAeroShapes.getHoernerCoords(fp.nacelleLength, fp.nacelleDiameter, fp.nacelleXMaxRel, fp.nbPoints)
75 | else:
76 | if fp.nacelleType == "Duhamel":
77 | coords= libAeroShapes.getDuhamelCoords(fp.nacelleLength, fp.nacelleDiameter, fp.nbPoints)
78 | else: # fp.nacelleType = "NACA"
79 | coords= libAeroShapes.getNACACoords(fp.nacelleLength, fp.nacelleDiameter, fp.nbPoints)
80 |
81 | if fp.useSpline:
82 | spline = Part.BSplineCurve()
83 | spline.interpolate(coords)
84 | wire = Part.Wire([spline.toShape(), Part.makeLine(coords[0], coords[-1])])
85 | else:
86 | wire = Part.Wire([coords.toShape(), Part.makeLine(coords[0], coords[-1])])
87 |
88 | face = Part.Face(wire)
89 | fp.Shape = face
90 | #fp.Placement=FreeCAD.Placement(FreeCAD.Vector(0,0,0),FreeCAD.Rotation(FreeCAD.Vector(fp.Placement.Rotation.Axis.x,fp.Placement.Rotation.Axis.y,fp.Placement.Rotation.Axis.z),fp.Placement.Rotation.Angle))
91 |
92 |
93 | class NacelleTaskPanel:
94 | '''A TaskPanel for the Nacelle'''
95 | def __init__(self, vobj):
96 | print("init NacelleTaskPanel")
97 | self.obj = vobj
98 | self.form = FreeCADGui.PySideUic.loadUi(apWB_ui_file)
99 | self.update(vobj)
100 |
101 | def isAllowedAlterSelection(self):
102 | return True
103 |
104 | def isAllowedAlterView(self):
105 | return True
106 |
107 | def getStandardButtons(self):
108 | return int(QtGui.QDialogButtonBox.Ok)
109 |
110 | def update(self, vobj):
111 | 'fills the dialog with nacelle properties'
112 | print('update')
113 | self.form.sbLength.setValue(vobj.Object.nacelleLength)
114 | self.form.sDiameter.setValue(vobj.Object.nacelleDiameter)
115 | if vobj.Object.nacelleType == "Lyon":
116 | self.form.rbLyon.setChecked(True)
117 | else:
118 | if vobj.Object.nacelleType == "EllipseCos":
119 | self.form.rbLyon.setChecked(True)
120 | else:
121 | if vobj.Object.nacelleType == "Duhamel":
122 | self.form.rbLyon.setChecked(True)
123 | else: # vobj.Object.nacelleType = "NACA"
124 | self.form.rbLyon.setChecked(True)
125 | self.form.sbXMaxRel.setValue(vobj.Object.nacelleXMaxRel)
126 | #self.form.sbAngle.setValue(vobj.Object.nacelleLength)
127 | self.form.sbNbPoints.setValue(vobj.Object.nbPoints)
128 | self.form.cbSpline.setChecked(vobj.Object.useSpline)
129 |
130 | def accept(self):
131 | '''Update properties of nacelle'''
132 | print("accept")
133 | fp=self.obj.Object
134 |
135 | FreeCAD.ActiveDocument.recompute()
136 | FreeCADGui.ActiveDocument.resetEdit()
137 | return True
138 |
139 | def retranslateUi(self, TaskPanel):
140 | self.addButton.setText(QtGui.QApplication.translate("draft", "Update", None))
141 | print("")
142 |
143 |
144 | class ViewProviderskNacelle:
145 | def __init__(self, obj):
146 | '''Set this object to the proxy object of the actual view provider'''
147 | obj.addProperty("App::PropertyColor","Color","nacelle","Color of the nacelle sketch").Color=(1.0,0.0,0.0)
148 | obj.Proxy = self
149 |
150 | def getDefaultDisplayMode(self):
151 | '''Return the name of the default display mode. It must be defined in getDisplayModes.'''
152 | return "Flat Lines"
153 |
154 | def getIcon(self):
155 | '''Return the icon in XPM format which will appear in the tree view. This method is\
156 | optional and if not defined a default icon is shown.'''
157 | return apWB_icon_xpm
158 |
159 | def __getstate__(self):
160 | '''When saving the document this object gets stored using Python's json module.\
161 | Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
162 | to return a tuple of all serializable objects or None.'''
163 | return None
164 |
165 | def __setstate__(self, state):
166 | '''When restoring the serialized object from document we have the chance to set some internals here.\
167 | Since no data were serialized nothing needs to be done here.'''
168 | return None
169 |
170 | def dumps(self):
171 | '''When saving the document this object gets stored using Python's json module.\
172 | Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
173 | to return a tuple of all serializable objects or None.'''
174 | return None
175 |
176 | def loads(self, state):
177 | '''When restoring the serialized object from document we have the chance to set some internals here.\
178 | Since no data were serialized nothing needs to be done here.'''
179 | return None
180 |
181 | def setEdit(self, vobj, mode):
182 | #nacelleTaskPanel.ui
183 | taskd = NacelleTaskPanel(vobj)
184 | FreeCADGui.Control.showDialog(taskd)
185 | return True
186 |
187 | def doubleClicked(self, vobj):
188 | taskd = NacelleTaskPanel(vobj)
189 | FreeCADGui.Control.showDialog(taskd)
190 | return(True)
191 |
192 |
193 | class CommandNacelle:
194 | "the Nacelle command definition"
195 |
196 | def GetResources(self):
197 | return {'Pixmap': apWB_icon_png, 'MenuText': QtCore.QT_TRANSLATE_NOOP("Create_a_Nacelle","Create a nacelle")}
198 |
199 | def IsActive(self):
200 | return not FreeCAD.ActiveDocument is None
201 |
202 | def Activated(self):
203 | loader=QtUiTools.QUiLoader()
204 | self.form=loader.load(apWB_ui_file)
205 | if not self.form.exec_():
206 | quit()
207 |
208 | doc= FreeCAD.ActiveDocument
209 | sk= doc.addObject("Part::FeaturePython","skNacelle") # sketch
210 | nacelle= doc.addObject("Part::Revolution","Nacelle") # volume
211 | nacelle.Source= sk
212 | nacelle.Axis = (1, 0, 0)
213 | nacelle.Base = (0, 0, 0)
214 | nacelle.Angle = self.form.sbAngle.value()
215 | nacelle.Solid = False
216 | nacelle.AxisLink = None
217 | nacelle.Symmetric = False
218 |
219 | XMaxRel= 0
220 | if self.form.rbLyon.isChecked():
221 | nType= "Lyon"
222 | else:
223 | if self.form.rbHoerner.isChecked():
224 | nType= "EllipseCos"
225 | XMaxRel= self.form.sbXMaxRel.value()
226 | else:
227 | if self.form.rbDuhamel.isChecked():
228 | nType= "Duhamel"
229 | else:
230 | nType= "NACA"
231 |
232 | Nacelle(sk, self.form.sbLength.value(), self.form.sbDiameter.value(), nType, XMaxRel, self.form.sbNbPoints.value(), self.form.cbSpline.isChecked())
233 |
234 | # display
235 | ViewProviderskNacelle(sk.ViewObject)
236 | sk.Visibility = False
237 | FreeCAD.ActiveDocument.recompute()
238 |
239 |
240 | if FreeCAD.GuiUp:
241 | #register the FreeCAD command
242 | FreeCADGui.addCommand('airPlaneDesignNacelle', CommandNacelle())
243 |
--------------------------------------------------------------------------------
/airPlanePanel.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Aircraft
4 | #
5 | # Copyright (c) F. Nivoix - 2019 - V0.1
6 | #
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 |
22 | __title__="FreeCAD Airplane Design"
23 | __author__ = "F. Nivoix"
24 | __url__ = "https://fredsfactory.fr"
25 | #-----------------------------deprecated-----------------------------
26 | #-----------------------------deprecated-----------------------------
27 | #-----------------------------deprecated-----------------------------
28 |
29 |
30 | import FreeCAD
31 | import FreeCADGui
32 |
33 | from airPlaneRib import WingRib, ViewProviderWingRib
34 | from airPlaneWingUI import WingEditorPanel
35 |
36 | #################################################
37 | # This module provides tools to build a
38 | # wing panel
39 | #################################################
40 | if open.__module__ in ['__builtin__','io']:
41 | pythonopen = open
42 |
43 | _wingRibProfilDir=FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/wingribprofil'
44 |
45 | class WPanel:
46 | def __init__(self, obj,_NberOfPanel,_panelInput):
47 | '''Add some custom properties to our box feature'''
48 | obj.Proxy = self
49 | obj.addProperty("App::PropertyInteger","NberOfPanel","WingPanel","Number of Panel").NberOfPanel=_NberOfPanel
50 | obj.addProperty("App::PropertyLinkList", "Rib", "Ribs", "Ribs")
51 | #obj.addProperty("App::PropertyLinkList", "RibTip", "Ribs", "Tip Ribs")
52 |
53 | _ribs=[]
54 | #_ribsRoot=[]
55 | _panel=[]
56 | _position=0
57 | _PanelLength=[]
58 | profil=[]
59 | #for i in range(0,obj.NberOfPanel) :
60 | for i in range(0,obj.NberOfPanel) :
61 | _row=_panelInput[i]
62 | profil.append(_row[2])
63 | #_wingRibProfilDir+u"/e207.dat"
64 | _PanelLength.append(float(_row[4]))
65 | #obj.addProperty("App::PropertyFloatList","PanelDelta","WingPanel","Delta").PanelDelta=[0.0,70.0]
66 | #obj.addProperty("App::PropertyLinkList", "RibRoot", "Ribs", "Root Ribs")
67 | #obj.addProperty("App::PropertyLinkList", "RibTip", "Ribs", "Tip Ribs")
68 |
69 | FreeCAD.Console.PrintMessage("Panel creation : "+str(i))
70 | #FreeCAD.Console.PrintMessage(i)
71 | FreeCAD.Console.PrintMessage("\n")
72 |
73 | # Add Rib Root
74 | FreeCAD.Console.PrintMessage("Add Rib Root")
75 | _ribs.append(FreeCAD.ActiveDocument.addObject("Part::FeaturePython","RibRoot_"+str(i)))
76 | #WingRib(_ribs[i*2],obj.PanelProfil,100,0,_position,0)
77 | #obj.RibRoot.append(
78 | WingRib(_ribs[i*2],_row[2],False,0,float(_row[3]),float(_row[6]),_position,float(_row[8]),0,0,0)
79 | ViewProviderWingRib(_ribs[i*2].ViewObject)
80 |
81 | # Add Rib tip
82 | FreeCAD.Console.PrintMessage("Add Rib tip")
83 | FreeCAD.Console.PrintMessage(i+1)
84 | #_position=_position+obj.PanelLength[i]
85 | _position=_position+float(_row[5])
86 | _ribs.append(FreeCAD.ActiveDocument.addObject("Part::FeaturePython","RibTip_"+str(i)))
87 | #WingRib(_ribs[i*2+1],obj.PanelProfil,100,0,_position,0)
88 | WingRib(_ribs[i*2+1],_row[2],False,0,float(_row[4]),float(_row[7]),_position,float(_row[9]),0,0,0)
89 | ViewProviderWingRib(_ribs[i*2+1].ViewObject)
90 | #obj.RibTip.append(_ribs[i*2+1])
91 |
92 | FreeCAD.Console.PrintMessage("create the panel")
93 | if obj.NberOfPanel>1 :
94 | _panel.append(FreeCAD.ActiveDocument.addObject('Part::Loft','panel'))
95 | _panel[i].Sections=[_ribs[i*2],_ribs[i*2+1]]
96 | _panel[i].Solid=True
97 | _panel[i].Ruled=False
98 | else :
99 | a=FreeCAD.ActiveDocument.addObject('Part::Loft','Wing')
100 | _panel.append(a)
101 | _panel[i].Sections=[_ribs[i*2],_ribs[i*2+1]]
102 | _panel[i].Solid=True
103 | _panel[i].Ruled=False
104 | obj.Group=a
105 | FreeCAD.ActiveDocument.recompute()
106 |
107 | obj.Rib=_ribs
108 | if obj.NberOfPanel>1 :
109 | obj.addProperty("App::PropertyFloatList","PanelLength","WingPanel","Length of the Wing").PanelLength=_PanelLength
110 | obj.addProperty("App::PropertyStringList","PanelProfil","WingPanel","Profil type").PanelProfil=profil
111 | a=FreeCAD.activeDocument().addObject("Part::MultiFuse","Wing")
112 | a.Shapes = _panel
113 | obj.Group=a
114 |
115 |
116 | def onChanged(self, fp, prop):
117 | '''Do something when a property has changed'''
118 | FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
119 |
120 | def execute(self, fp):
121 | '''Do something when doing a recomputation, this method is mandatory'''
122 | FreeCAD.Console.PrintMessage("Recompute Python Wing feature\n")
123 |
124 | def addOperation(self, op, before = None):
125 | group = self.obj.Operations.Group
126 | if op not in group:
127 | if before:
128 | try:
129 | group.insert(group.index(before), op)
130 | except Exception as e:
131 | PathLog.error(e)
132 | group.append(op)
133 | else:
134 | group.append(op)
135 | self.obj.Operations.Group = group
136 | op.Path.Center = self.obj.Operations.Path.Center
137 |
138 |
139 | class ViewProviderPanel:
140 | def __init__(self, obj):
141 | '''Set this object to the proxy object of the actual view provider'''
142 | obj.addProperty("App::PropertyColor","Color","Wing","Color of the wing").Color=(1.0,0.0,0.0)
143 | obj.Proxy = self
144 |
145 | def getDefaultDisplayMode(self):
146 | '''Return the name of the default display mode. It must be defined in getDisplayModes.'''
147 | return "Flat Lines"
148 |
149 | def getIcon(self):
150 | '''Return the icon in XPM format which will appear in the tree view. This method is\
151 | optional and if not defined a default icon is shown.'''
152 | return """
153 | /* XPM */
154 | static const char * ViewProviderBox_xpm[] = {
155 | "16 16 6 1",
156 | " c None",
157 | ". c #141010",
158 | "+ c #615BD2",
159 | "@ c #C39D55",
160 | "# c #000000",
161 | "$ c #57C355",
162 | " ........",
163 | " ......++..+..",
164 | " .@@@@.++..++.",
165 | " .@@@@.++..++.",
166 | " .@@ .++++++.",
167 | " ..@@ .++..++.",
168 | "###@@@@ .++..++.",
169 | "##$.@@$#.++++++.",
170 | "#$#$.$$$........",
171 | "#$$####### ",
172 | "#$$#$$$$$# ",
173 | "#$$#$$$$$# ",
174 | "#$$#$$$$$# ",
175 | " #$#$$$$$# ",
176 | " ##$$$$$# ",
177 | " ####### "};
178 | """
179 |
180 | def __getstate__(self):
181 | '''When saving the document this object gets stored using Python's json module.\
182 | Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
183 | to return a tuple of all serializable objects or None.'''
184 | return None
185 |
186 | def __setstate__(self, state):
187 | '''When restoring the serialized object from document we have the chance to set some internals here.\
188 | Since no data were serialized nothing needs to be done here.'''
189 | return None
190 |
191 | def dumps(self):
192 | '''When saving the document this object gets stored using Python's json module.\
193 | Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
194 | to return a tuple of all serializable objects or None.'''
195 | return None
196 |
197 | def loads(self, state):
198 | '''When restoring the serialized object from document we have the chance to set some internals here.\
199 | Since no data were serialized nothing needs to be done here.'''
200 | return None
201 |
202 | class CommandWPanel:
203 | "the WingPanel command definition"
204 | def GetResources(self):
205 | return {'MenuText': "Create a wing (old release)"}
206 |
207 | def IsActive(self):
208 | return not FreeCAD.ActiveDocument is None
209 |
210 | def Activated(self):
211 | PanelTable=[]
212 | editor = WingEditorPanel()
213 | editor.setupUi()
214 | r = editor.form.exec_()
215 | if r:
216 | for row_number in range(editor.form.PanelTable.rowCount()):#-1):#int(editor.form.PanelTable.rowCount())):
217 | rowData=[]
218 | for col_number in range(10):#int(editor.form.PanelTable.columnCount())):
219 | rowData.append(editor.form.PanelTable.item(row_number,col_number).text())
220 | PanelTable.append(rowData)
221 |
222 | a=FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython","Wing")#Path::FeaturePython","wpanel") #"Part::FeaturePython","wpanel")
223 |
224 | #WPanel(a,editor.form.NumberOfPanel.value(),PanelTable)
225 | WPanel(a,editor.form.PanelTable.rowCount(),PanelTable)
226 | ViewProviderPanel(a.ViewObject)
227 | FreeCAD.ActiveDocument.recompute()
228 | FreeCAD.Gui.activeDocument().activeView().viewAxonometric()
229 | FreeCAD.Gui.SendMsgToActiveView("ViewFit")
230 |
231 |
232 | if FreeCAD.GuiUp:
233 | #register the FreeCAD command
234 | FreeCADGui.addCommand('airPlaneDesignWPanel',CommandWPanel())
235 |
--------------------------------------------------------------------------------
/airPlanePlane.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Aircraft
4 | #
5 | # Copyright (c) F. Nivoix - 2019 - V0.4
6 | #
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 |
22 | __title__="FreeCAD airPlane Plane"
23 | __author__ = "F. Nivoix"
24 | __url__ = "https://fredsfactory.fr"
25 |
26 |
27 | import FreeCAD,FreeCADGui, os
28 |
29 | from PySide import QtCore
30 | from PySide import QtGui
31 |
32 | FreeCADGui.addLanguagePath(":/translations")
33 |
34 | # Qt translation handling
35 | def translate(context, text, disambig=None):
36 | return QtCore.QCoreApplication.translate(context, text, disambig)
37 |
38 | smWB_icons_path = os.path.join( os.path.dirname(__file__), 'resources', 'icons')
39 |
40 |
41 | class Plane:
42 | def __init__(self, obj):
43 | '''Rib properties'''
44 | obj.Proxy = self
45 | obj.addProperty("App::PropertyLength", "fuselageLength", "fuselage", QtCore.QT_TRANSLATE_NOOP("App::Property", "Fuselage Length"))
46 | obj.addProperty("App::PropertyLength", "fuselageHeight", "fuselage", QtCore.QT_TRANSLATE_NOOP("App::Property", "Fuselage Height"))
47 | obj.addProperty("App::PropertyLength", "fuselageWidth", "fuselage", QtCore.QT_TRANSLATE_NOOP("App::Property", "Fuselage Width"))
48 |
49 |
50 | obj.addProperty("App::PropertyFile", "_3viewsFile", "fuselage", QtCore.QT_TRANSLATE_NOOP("App::Property", "3 Views file"))
51 |
52 | obj.addProperty("App::PropertyLinkList", "Wings", "Base", QtCore.QT_TRANSLATE_NOOP("App::Property", "List of wings"))
53 |
54 |
55 | def onChanged(self, fp, prop):
56 | '''Do something when a property has changed'''
57 | FreeCAD.Console.PrintMessage("Wing: Change property " + str(prop) + "\n")
58 |
59 | def execute(self, fp):
60 | # Do something when doing a recomputation, this method is mandatory
61 | FreeCAD.Console.PrintMessage("Wing : execute process\n")
62 |
63 | def addWing(self, op, before=None, removeBefore=False):
64 | group = self.obj.Wings.Group
65 | if op not in group:
66 | if before:
67 | try:
68 | group.insert(group.index(before), op)
69 | if removeBefore:
70 | group.remove(before)
71 | except Exception as e: # pylint: disable=broad-except
72 | PathLog.error(e)
73 | group.append(op)
74 | else:
75 | group.append(op)
76 | self.obj.Wings.Group = group
77 | op.Path.Center = self.obj.Operations.Path.Center
78 |
79 |
80 | class PlaneTaskPanel:
81 | '''A TaskPanel for the Rib'''
82 | def __init__(self,vobj):
83 | print("init RibTaskPanel")
84 | self.obj = vobj
85 | path_to_ui = FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/resources/airPlaneDesignEdit.ui'
86 | self.form = FreeCADGui.PySideUic.loadUi(path_to_ui)
87 | self.update(vobj)
88 |
89 | def isAllowedAlterSelection(self):
90 | return True
91 |
92 | def isAllowedAlterView(self):
93 | return True
94 |
95 | def getStandardButtons(self):
96 | return int(QtGui.QDialogButtonBox.Ok)
97 |
98 |
99 | def update(self,vobj):
100 | 'fills the dialog with plane properties'
101 | print('update')
102 | self.form.fuselageLength.setValue(vobj.Object.fuselageLength)
103 | self.form.fuselageHeight.setValue(vobj.Object.fuselageHeight)
104 | self.form.fuselageWidth.setValue(vobj.Object.fuselageWidth)
105 | #self.form.fileName.setText(vobj.Object.RibProfil)
106 | #self.form.NACANumber.setText(vobj.Object.NacaProfil)
107 | #self.form.nacaNbrPoint.setValue(vobj.Object.NacaNbrPoint)
108 | #self.form.finite_TE.setChecked(vobj.Object.finite_TE)
109 |
110 | def accept(self):
111 | '''Update properties of Rib'''
112 | print("accept")
113 | fp=self.obj.Object
114 | fp.fuselageLength=self.form.fuselageLength.value()
115 | fp.fuselageHeight=self.form.fuselageHeight.value()
116 | fp.fuselageWidth=self.form.fuselageWidth.value()
117 |
118 | FreeCAD.ActiveDocument.recompute()
119 | FreeCADGui.ActiveDocument.resetEdit()
120 | return True
121 |
122 | def retranslateUi(self, TaskPanel):
123 | #TaskPanel.setWindowTitle(QtGui.QApplication.translate("draft", "Faces", None))
124 | self.addButton.setText(QtGui.QApplication.translate("draft", "Update", None))
125 | print("")
126 |
127 |
128 | class ViewProviderPlane:
129 | def __init__(self, obj):
130 | '''Set this object to the proxy object of the actual view provider'''
131 | obj.addProperty("App::PropertyColor","Color","Wing","Color of the wing").Color=(1.0,0.0,0.0)
132 | obj.Proxy = self
133 |
134 | def getDefaultDisplayMode(self):
135 | '''Return the name of the default display mode. It must be defined in getDisplayModes.'''
136 | return "Flat Lines"
137 |
138 | def getIcon(self):
139 | '''Return the icon in XPM format which will appear in the tree view. This method is\
140 | optional and if not defined a default icon is shown.'''
141 | return os.path.join(smWB_icons_path,'plane.xpm')
142 |
143 | def __getstate__(self):
144 | '''When saving the document this object gets stored using Python's json module.\
145 | Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
146 | to return a tuple of all serializable objects or None.'''
147 | return None
148 |
149 | def __setstate__(self, state):
150 | '''When restoring the serialized object from document we have the chance to set some internals here.\
151 | Since no data were serialized nothing needs to be done here.'''
152 | return None
153 |
154 | def dumps(self):
155 | '''When saving the document this object gets stored using Python's json module.\
156 | Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
157 | to return a tuple of all serializable objects or None.'''
158 | return None
159 |
160 | def loads(self, state):
161 | '''When restoring the serialized object from document we have the chance to set some internals here.\
162 | Since no data were serialized nothing needs to be done here.'''
163 | return None
164 |
165 | def setEdit(self,vobj,mode):
166 | #airPlaneDesignPlanedialog.ui
167 | taskd = PlaneTaskPanel(vobj)
168 | FreeCADGui.Control.showDialog(taskd)
169 | return True
170 |
171 | def doubleClicked(self,vobj):
172 | taskd = PlaneTaskPanel(vobj)
173 | FreeCADGui.Control.showDialog(taskd)
174 | return(True)
175 |
176 |
177 | class CommandPlane:
178 | "the WingPanel command definition"
179 |
180 | def GetResources(self):
181 | iconpath = os.path.join(smWB_icons_path,'plane.png')
182 | return {'Pixmap': iconpath, 'MenuText': QtCore.QT_TRANSLATE_NOOP("Create_a_Plane","Create a Plane")}
183 |
184 | def IsActive(self):
185 | return not FreeCAD.ActiveDocument is None
186 |
187 | def Activated(self):
188 | #a=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","plane")
189 | a=FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython","plane")
190 | a.Group=[]
191 | Plane(a)
192 | ViewProviderPlane(a.ViewObject)
193 | FreeCAD.ActiveDocument.recompute()
194 |
195 |
196 | if FreeCAD.GuiUp:
197 | #register the FreeCAD command
198 | FreeCADGui.addCommand('airPlaneDesignPlane',CommandPlane())
199 |
--------------------------------------------------------------------------------
/airPlaneSWPanel.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Aircraft
4 | #
5 | # Copyright (c) F. Nivoix - 2019 - V0.1
6 | #
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 | __title__="FreeCAD Airplane Design"
22 | __author__ = "F. Nivoix"
23 | __url__ = "https://fredsfactory.fr"
24 |
25 | import FreeCAD, FreeCADGui, Part, os
26 | from airPlaneRib import WingRib, ViewProviderWingRib
27 | from PySide import QtCore
28 | import math
29 |
30 | smWB_icons_path = os.path.join( os.path.dirname(__file__), 'resources', 'icons')
31 |
32 | # Qt translation handling
33 | def translate(context, text, disambig=None):
34 | return QtCore.QCoreApplication.translate(context, text, disambig)
35 |
36 | #################################################
37 | # This module provides tools to build a
38 | # wing panel
39 | #################################################
40 | if open.__module__ in ['__builtin__','io']:
41 | pythonopen = open
42 |
43 | _wingRibProfilDir=FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/wingribprofil'
44 |
45 | class WingSPanel:
46 | def __init__(self, obj, _rootRib ,_tipRib ,_rootChord=200,_tipChord=100,_panelLength=100,_tipTwist=0,_dihedral=0):
47 | # _parent,_NberOfPanel,_panelInput,_rootChord,_tipChord,_panelLength,_tipTwist,_dihedral):
48 | '''Add some custom properties to our box feature'''
49 | self.obj = obj
50 | obj.Proxy = self
51 | #obj.addProperty("App::PropertyLink","Base","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Tip Rib of the panel")).Base=_rootRib#
52 | obj.addProperty("App::PropertyLink","RootRib","Rib",QtCore.QT_TRANSLATE_NOOP("App::Property","Root Rib of the panel")).RootRib=_rootRib#.rootRib-_rootRib
53 | obj.addProperty("App::PropertyLink","TipRib","Rib",QtCore.QT_TRANSLATE_NOOP("App::Property","Tip Rib of the panel")).TipRib=_tipRib#.tipRib-_tipRib
54 |
55 |
56 | # leadingEdge : bord d'attaque
57 | obj.addProperty("App::PropertyLink","LeadingEdge","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Select the leading edge of the panal, line or Spline"))
58 | # trailing edge : bord de fuite
59 | obj.addProperty("App::PropertyLink","TrailingEdge","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Select the trailing edge of the panel, line or Spline"))
60 |
61 | obj.addProperty("App::PropertyLength","TipChord","Rib",QtCore.QT_TRANSLATE_NOOP("App::Property","Tip Chord")).TipChord=_tipChord
62 | obj.addProperty("App::PropertyLength","RootChord","Rib",QtCore.QT_TRANSLATE_NOOP("App::Property","Root Chord")).RootChord=_rootChord
63 |
64 | obj.addProperty("App::PropertyLength","PanelLength","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Panel Length")).PanelLength=_panelLength
65 | obj.addProperty("App::PropertyAngle","TipTwist","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Tip Twist")).TipTwist=_tipTwist
66 | obj.addProperty("App::PropertyAngle","Dihedral","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Dihedral")).Dihedral=_dihedral
67 | #obj.addProperty("App::PropertyLinkList","Ribs","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","list of ribs")).Ribs=[]
68 |
69 | obj.addProperty("App::PropertyBool","Solid","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Solid")).Solid=True #
70 | obj.addProperty("App::PropertyBool","Surface","WingPanel",QtCore.QT_TRANSLATE_NOOP("App::Property","Surface")).Surface=False
71 | obj.addProperty("App::PropertyBool","Structure","Design",QtCore.QT_TRANSLATE_NOOP("App::Property","Surface")).Structure=False
72 |
73 | #ribs=[]
74 | #ribs.append(obj.RootRib)
75 | #ribs.append(obj.TipRib)
76 | #FreeCAD.ActiveDocument.recompute()
77 |
78 |
79 | def onChanged(self, obj, prop):
80 | '''Do something when a property has changed'''
81 | FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
82 |
83 | def execute(self, obj):
84 | '''Do something when doing a recomputation, this method is mandatory'''
85 | if not obj.Structure :
86 | if obj.RootRib :
87 |
88 | #obj.RootRib.Placement.Rotation.Axis.x=1
89 | #obj.RootRib.Placement.Rotation.Axis.y=0
90 | #obj.RootRib.Placement.Rotation.Axis.z=0
91 | #obj.RootRib.Placement.Rotation.Angle=obj.Dihedral
92 |
93 | #obj.TipRib.Placement.Rotation.Axis.x=1
94 | #obj.TipRib.Placement.Rotation.Axis.y=0
95 | #obj.TipRib.Placement.Rotation.Axis.z=0
96 | #obj.TipRib.Placement.Rotation.Angle=obj.Dihedral
97 |
98 | obj.TipRib.Placement.Base.y= obj.PanelLength
99 | #obj.TipRib.Placement.Base.z= obj.PanelLength*math.tan(obj.Dihedral)
100 |
101 | ribsWires=[]
102 | ribsWires.append(obj.RootRib.Shape.OuterWire)
103 | ribsWires.append(obj.TipRib.Shape.OuterWire)
104 | obj.RootRib.ViewObject.hide()
105 | obj.TipRib.ViewObject.hide()
106 | obj.Shape=Part.makeLoft(ribsWires,obj.Solid,False)
107 | else :
108 | print("Wing Panel : structure, not implemented yet")
109 | #FreeCAD.ActiveDocument.recompute()
110 | FreeCAD.Console.PrintMessage("Recompute Python Wing feature\n")
111 |
112 | class ViewProviderPanel:
113 | def __init__(self, vobj):
114 | vobj.Proxy = self
115 | self.Object = vobj.Object
116 |
117 | def getIcon(self):
118 | return os.path.join(smWB_icons_path,'panel.xpm')
119 |
120 | def attach(self, vobj):
121 | self.Object = vobj.Object
122 | self.onChanged(vobj,"Base")
123 |
124 | def claimChildren(self):
125 | return [self.Object.TipRib] + [self.Object.RootRib]
126 |
127 | def onDelete(self, feature, subelements):
128 | return True
129 |
130 | def onChanged(self, fp, prop):
131 | pass
132 |
133 | def __getstate__(self):
134 | return None
135 |
136 | def __setstate__(self, state):
137 | return None
138 |
139 | def dumps(self):
140 | return None
141 |
142 | def loads(self, state):
143 | return None
144 |
145 | class CommandWPanel:
146 | "the WingPanel command definition"
147 | def GetResources(self):
148 | iconpath = os.path.join(smWB_icons_path,'panel.png')
149 | return {'Pixmap': iconpath, 'MenuText': QtCore.QT_TRANSLATE_NOOP("Create_a_wing_Panel","Create/Add a wing panel, select a panl and clic")}
150 |
151 | def IsActive(self):
152 | return not FreeCAD.ActiveDocument is None
153 |
154 | def Activated(self):
155 | print("---------------------------------------")
156 | print("-----------------Panel-----------------")
157 | print("---------------------------------------")
158 |
159 | selection = FreeCADGui.Selection.getSelectionEx()
160 | if selection :
161 | base = FreeCAD.ActiveDocument.getObject((selection[0].ObjectName))
162 |
163 | #---------------------création des nervures temporaires
164 | _rootRib=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","RibRoot_")
165 | WingRib(_rootRib,"/Users/fredericnivoix/Library/Preferences/FreeCAD/Mod/AirPlaneDesign/wingribprofil/naca/naca2412.dat",False,0,200,0,0,0,0,0,0)
166 | ViewProviderWingRib(_rootRib.ViewObject)
167 |
168 |
169 | _tipRib=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","RibTip_")
170 | WingRib(_tipRib,"/Users/fredericnivoix/Library/Preferences/FreeCAD/Mod/AirPlaneDesign/wingribprofil/naca/naca2412.dat",False,0,200,0,500,0,0,0,0)
171 | ViewProviderWingRib(_tipRib.ViewObject)
172 | FreeCAD.ActiveDocument.recompute()
173 | #----------
174 | #obj=FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython","WingPanel")
175 |
176 | obj=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","WingPanel")
177 | WingPanel(obj,_rootRib,_tipRib,200,100,100,0,0)
178 | ViewProviderPanel(obj.ViewObject)
179 | b=[]
180 | if selection : #selection==None :
181 | if not base.WingPanels :
182 | base.WingPanels=obj
183 | else :
184 | b=base.WingPanels
185 | b.append(obj)
186 | base.WingPanels=b
187 |
188 | #if selection : #selection ==None:
189 | # if not base.Group :
190 | # base.Group=obj
191 | # else :
192 | # b=base.Group
193 | # b.append(obj)
194 | # base.Group=b
195 |
196 | FreeCAD.ActiveDocument.recompute()
197 | FreeCAD.Gui.activeDocument().activeView().viewAxonometric()
198 | FreeCAD.Gui.SendMsgToActiveView("ViewFit")
199 |
200 |
201 | if FreeCAD.GuiUp:
202 | #register the FreeCAD command
203 | FreeCADGui.addCommand('airPlaneDesignSWingPanel',CommandWPanel())
204 |
--------------------------------------------------------------------------------
/airPlaneWingUI.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #################################################
3 | #
4 | # ASK13 - Airfoil creation - Aircraft
5 | #
6 | # F. Nivoix - 2018 - V0.3
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # Works best with OCC/OCE = or > 6.7
10 | #
11 | #
12 | ################################################
13 | import FreeCAD
14 | import FreeCADGui
15 | from PySide import QtCore
16 | from PySide import QtGui
17 |
18 | FreeCADGui.addLanguagePath(":/translations")
19 | # Qt translation handling
20 | def translate(context, text, disambig=None):
21 | return QtCore.QCoreApplication.translate(context, text, disambig)
22 |
23 |
24 |
25 | class WingEditorPanel():
26 | def __init__(self):
27 | path_to_ui = FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/resources/airPlaneDesignWingdialog.ui'
28 | self.form = FreeCADGui.PySideUic.loadUi(path_to_ui)
29 | self.form.airPlaneName.setText("nom")
30 |
31 |
32 | def importFile(self):
33 | print("commande")
34 |
35 | def reject(self):
36 | FreeCADGui.Control.closeDialog()
37 | FreeCAD.ActiveDocument.recompute()
38 |
39 | def getStandardButtons(self):
40 | return int(QtGui.QDialogButtonBox.Ok)
41 |
42 | def loadPanelTable(self):
43 | _wingRibProfilDir=FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/wingribprofil'
44 |
45 | ##########################
46 | # Numéro du panneau, profil, fichier profil, , corde emplature, corde saumon, longueur paneau, X emplature, X saumon, Y emplature, Y saumon, Z emplature, Z saumon, X Rotation, Y Rotation, Z Rotation
47 | # Panel Number, Profil, Profil file (DAT), Root rib chord, End rib chords, panel length, X position of Root rib ,X position of end rib , Y position of Root rib ,Y position of end rib, Z position of Root rib ,Z position of end rib, X angle of root rib, Y angle of root rib, Z angle of root rib,
48 |
49 | initPanelTable = [
50 | ["1","Eppler207",_wingRibProfilDir+u"/naca/naca2412.dat","250","222","122","0.0","0.0","0.0","-54.","0.0","0.0","22"],
51 | ["2","Eppler207",_wingRibProfilDir+u"/naca/naca2412.dat","222","196","35.","0.0","0.0","-54","-54","0.0","54","0.0"],
52 | ["3","Eppler205",_wingRibProfilDir+u"/naca/naca2412.dat","196","146","456","0.0","0.0","-54","12","0.0","0.0","81"],
53 | ["4","Eppler205",_wingRibProfilDir+u"/naca/naca2412.dat","146","100","10","0.0","0.0","12","12","12","0.0","0.0"],
54 | ["5","Eppler205",_wingRibProfilDir+u"/naca/naca2412.dat","100","100","10","0.0","0.0","12","12","0.0","0.0","0.0"]
55 | ]
56 | #self.form.PanelTable.setRowCount(0)
57 | for row_number,row_data in enumerate(initPanelTable):
58 | self.form.PanelTable.insertRow(row_number)
59 | for col_number, data in enumerate(row_data):
60 | self.form.PanelTable.setItem(row_number,col_number,QtGui.QTableWidgetItem(str(data)))#,QtGui.QTableWidgetItem(str(data)))
61 |
62 | def addLine(self):
63 | initPanelTable = [
64 | ["-","-","","100","100","100","0","0","0.0","0","0","0","22"],
65 | ]
66 | #self.form.PanelTable.setRowCount(0)
67 | for row_number,row_data in enumerate(initPanelTable):
68 | self.form.PanelTable.insertRow(row_number)
69 | for col_number, data in enumerate(row_data):
70 | self.form.PanelTable.setItem(row_number,col_number,QtGui.QTableWidgetItem(str(data)))#,QtGui.QTableWidgetItem(str(data)))
71 |
72 | def delLine(self):
73 | self.form.PanelTable.removeRow(self.form.PanelTable.currentRow())
74 |
75 |
76 | def accept(self):
77 | #print("OK")
78 | return
79 |
80 | def setupUi(self):
81 | # Connect Signals and Slots
82 | self.form.filSheet.clicked.connect(self.loadPanelTable) # fil sheet with an example, #self.loadPanelTable()
83 | self.form.addline.clicked.connect(self.addLine)
84 | self.form.delline.clicked.connect(self.delLine)
85 |
--------------------------------------------------------------------------------
/airPlaneWingWizard.py:
--------------------------------------------------------------------------------
1 | #################################################
2 | #
3 | # Airfoil creation - Aircraft
4 | #
5 | # Copyright (c) F. Nivoix - 2020 - V0.4
6 | #
7 | # For FreeCAD Versions = or > 0.17 Revision xxxx
8 | #
9 | # This program is free software; you can redistribute it and/or modify
10 | # it under the terms of the GNU Lesser General Public License (LGPL)
11 | # as published by the Free Software Foundation; either version 2 of
12 | # the License, or (at your option) any later version.
13 | # for detail see the LICENCE text file.
14 | #
15 | # This program is distributed in the hope that it will be useful,
16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | # GNU Library General Public License for more details.
19 | #
20 | ################################################
21 |
22 | __title__="FreeCAD Airplane Design"
23 | __author__ = "F. Nivoix"
24 | __url__ = "https://fredsfactory.fr"
25 |
26 |
27 |
28 | import FreeCAD
29 | import FreeCADGui
30 | from airPlaneSWPanel import WingSPanel,ViewProviderPanel
31 | from airPlaneRib import WingRib, ViewProviderWingRib
32 | from airPlaneWingUI import WingEditorPanel
33 |
34 | #################################################
35 | # This module provides a wizard to build a
36 | # wing panel
37 | #################################################
38 | if open.__module__ in ['__builtin__','io']:
39 | pythonopen = open
40 |
41 | _wingRibProfilDir=FreeCAD.getUserAppDataDir()+ 'Mod/AirPlaneDesign/wingribprofil'
42 |
43 |
44 |
45 | class CommandWPanel:
46 | "the WingPanel command definition"
47 | def GetResources(self):
48 | return {'MenuText': "Wing wizard"}
49 |
50 | def IsActive(self):
51 | return not FreeCAD.ActiveDocument is None
52 |
53 | def Activated(self):
54 | print("-----------------Wing Wizard-----------------")
55 | selection = FreeCADGui.Selection.getSelectionEx()
56 | if selection :
57 | base = FreeCAD.ActiveDocument.getObject((selection[0].ObjectName))
58 |
59 | PanelTable=[]
60 | editor = WingEditorPanel()
61 | editor.setupUi()
62 | r = editor.form.exec_()
63 |
64 | if r:
65 | for row_number in range(editor.form.PanelTable.rowCount()):
66 | rowData=[]
67 | #create Panel
68 | for col_number in range(10):#int(editor.form.PanelTable.columnCount())):
69 | rowData.append(editor.form.PanelTable.item(row_number,col_number).text())
70 | PanelTable.append(rowData)
71 | _panelInput=PanelTable
72 |
73 |
74 | _ribs=[]
75 | _position=0
76 | _PanelLength=[]
77 | profil=[]
78 | b=[]
79 | #for i in range(0,obj.NberOfPanel) :
80 | for i in range(0,editor.form.PanelTable.rowCount()) :
81 | _row=_panelInput[i]
82 | FreeCAD.Console.PrintMessage("Rrow:"+str(_row)+"\n")
83 | profil.append(_row[2])
84 | _PanelLength.append(float(_row[4]))
85 |
86 | # Add Rib Root
87 | _ribs.append(FreeCAD.ActiveDocument.addObject("Part::FeaturePython","RibRoot_"+str(i)))
88 | #WingRibs(obj,_profil,_nacagene,_nacaNbrPoint,_chord,_x,_y,_z,_xrot,_yrot,_zrot,_thickness=0,_useSpline = True,_finite_TE = False,_splitSpline = False):
89 | #def (obj,_profil,_nacagene,_nacaNbrPoint,_chord,_x,_y,_z,_xrot,_yrot,_zrot,_rot=0,_thickness=0,_useSpline = True,_finite_TE = False,_splitSpline = False):
90 | WingRib(_ribs[i*2],_row[2],False,0,float(_row[3]),float(_row[6]),_position,float(_row[8]),0,0,0)
91 | #FreeCAD.ActiveDocument.recompute()
92 | ViewProviderWingRib(_ribs[i*2].ViewObject)
93 |
94 | # Add Rib tip
95 | _position=_position+float(_row[5])
96 | _ribs.append(FreeCAD.ActiveDocument.addObject("Part::FeaturePython","RibTip_"+str(i)))
97 | WingRib(_ribs[i*2+1],_row[2],False,0,float(_row[4]),float(_row[7]),_position,float(_row[9]),0,0,0)
98 | #FreeCAD.ActiveDocument.recompute()
99 | ViewProviderWingRib(_ribs[i*2+1].ViewObject)
100 | # Add wing panel
101 | obj=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","WingPanel")
102 | #WingPanel(obj, _rootRib ,_tipRib ,_rootChord=200,_tipChord=100,_panelLength=100,_tipTwist=0,_dihedral=0)
103 | WingSPanel(obj,_ribs[i*2],_ribs[i*2+1],float(_row[3]),float(_row[4]),_position,0,0)
104 | ViewProviderPanel(obj.ViewObject)
105 | FreeCAD.ActiveDocument.recompute()
106 | #obj.ViewObject.hide()
107 | #add to Wing
108 | if selection : #selection==None :
109 | if not base.WingPanels :
110 | base.WingPanels=obj
111 | else :
112 | b=base.WingPanels
113 | b.append(obj)
114 | base.WingPanels=b
115 |
116 | if FreeCAD.GuiUp:
117 | #register the FreeCAD command
118 | FreeCADGui.addCommand('airPlaneDesignWingWizard',CommandWPanel())
119 |
--------------------------------------------------------------------------------
/examples/3-View-Hawker-Typhoon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/3-View-Hawker-Typhoon.jpg
--------------------------------------------------------------------------------
/examples/HawkerTempest.FCStd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/HawkerTempest.FCStd
--------------------------------------------------------------------------------
/examples/HawkerTempest2-complete.FCStd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/HawkerTempest2-complete.FCStd
--------------------------------------------------------------------------------
/examples/HawkerTempest2.FCStd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/HawkerTempest2.FCStd
--------------------------------------------------------------------------------
/examples/Plane-example.FCStd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/Plane-example.FCStd
--------------------------------------------------------------------------------
/examples/Plane-example.FCStd1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/Plane-example.FCStd1
--------------------------------------------------------------------------------
/examples/Ribs-example.FCStd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/Ribs-example.FCStd
--------------------------------------------------------------------------------
/examples/Wing-example.FCStd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/examples/Wing-example.FCStd
--------------------------------------------------------------------------------
/libAeroShapes.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #***************************************************************************
3 | #* *
4 | #* libAeroShapes : *
5 | #* Routines pour la génération de formes fuselées, *
6 | #* https://fr.wikipedia.org/wiki/Corps_de_moindre_tra%C3%AEn%C3%A9e. *
7 | #* Nota : les coordonnées et faces sont dans le plan xy. *
8 | #* *
9 | #* Auteur : Claude GUTH *
10 | #* Date de création : 2021-07-28 *
11 | #* Dernière modification : 2021-07-28 *
12 | #* *
13 | #* Ce programme est libre de droits. *
14 | #* Son utilisation est sous la responsablité de l'utilisateur *
15 | #* sans aucune garantie de l'auteur. *
16 | #* *
17 | #***************************************************************************
18 | # TODO: translate
19 |
20 | __title__ = "airPlane Workbench - construction de formes fuselées"
21 | __author__ = "Claude GUTH"
22 |
23 | import FreeCAD
24 | import Draft
25 | import DraftTools
26 | import Part
27 | import math
28 |
29 | def getLyonCoords(longueur, diametre, nbPoints=100):
30 | """
31 | :param longueur: longueur (selon axe x) de la forme
32 | :param diametre: diamètre de la forme
33 | :param nbPoints: nb de points calculés
34 | :return: les coordonnées d'ordonnées positives d'une fome Lyon modèle A
35 | """
36 | # parametres intermédiaires de calcul
37 | ky = diametre*1.11326
38 |
39 | # points de la forme
40 | cLyon = [FreeCAD.Vector(0, 0, 0)]
41 | kx = 1 / float(nbPoints-1)
42 | for i in range(1, nbPoints):
43 | xRel= kx * float(i)
44 | xRel2= xRel * xRel
45 | xRel3= xRel2 * xRel
46 | xRel4= xRel3 * xRel
47 | yPos = ky * math.sqrt(xRel - xRel2 - xRel3 + xRel4)
48 | cLyon.append(FreeCAD.Vector(xRel * longueur, yPos, 0))
49 | return cLyon
50 |
51 | def getHoernerCoords(longueur, diametre, xRelEpaisseurMax, nbPoints=100):
52 | """
53 | :param longueur: longueur (selon axe x) de la forme
54 | :param diametre: diamètre de la forme
55 | :param xRelEpaisseurMax: abscisse relative (0..1) pour l'épaisseur max
56 | :param nbPoints: nb de points calculés
57 | :return: les coordonnées d'ordonnées positives d'une FEC
58 | """
59 | # parametres intermédiaires de calcul
60 | xeMax = xRelEpaisseurMax*longueur
61 | yeMax = 0.5*diametre
62 | pi_2 = math.pi/2
63 |
64 | # points de la forme
65 | cFEC = [FreeCAD.Vector(0, 0, 0)]
66 | kl = longueur / float(nbPoints-1)
67 | for i in range(1, nbPoints):
68 | xPos = kl * float(i)
69 | if xPos < xeMax:
70 | yPos = yeMax * math.sqrt(2*xPos*xeMax - xPos*xPos) / xeMax
71 | else:
72 | yPos = yeMax * math.cos(pi_2*(xeMax-xPos)/(longueur-xeMax))
73 | cFEC.append(FreeCAD.Vector(xPos, yPos, 0))
74 | return cFEC
75 |
76 | def getDuhamelCoords(longueur, diametre, nbPoints=100):
77 | """
78 | :param longueur: longueur (selon axe x) de la forme
79 | :param diametre: diamètre de la forme
80 | :param nbPoints: nb de points calculés
81 | :return: les coordonnées d'ordonnées positives d'une fome Duhamel simplifiée
82 | """
83 | # parametres intermédiaires de calcul
84 | ky = diametre*1.3
85 |
86 | # points de la forme
87 | cLyon = [FreeCAD.Vector(0, 0, 0)]
88 | kx = 1 / float(nbPoints-1)
89 | for i in range(1, nbPoints):
90 | xRel= kx * float(i)
91 | yPos = ky * (1 - xRel) * math.sqrt(xRel)
92 | cLyon.append(FreeCAD.Vector(xRel * longueur, yPos, 0))
93 | return cLyon
94 |
95 | def getNACACoords(longueur, diametre, nbPoints=100):
96 | """
97 | :param longueur: longueur (selon axe x) de la forme
98 | :param diametre: diamètre de la forme
99 | :param nbPoints: nb de points calculés
100 | :return: les coordonnées d'ordonnées positives d'une fome NACA 4 chiffres (non optimal)
101 | """
102 | # parametres intermédiaires de calcul
103 | ky = diametre
104 |
105 | # points de la forme
106 | cLyon = [FreeCAD.Vector(0, 0, 0)]
107 | kx = 1 / float(nbPoints-1)
108 | for i in range(1, nbPoints):
109 | xRel= kx * float(i)
110 | xRel2= xRel * xRel
111 | xRel3= xRel2 * xRel
112 | xRel4= xRel3 * xRel
113 | yPos = ky * (1.4845*math.sqrt(xRel) -0.63*xRel - 1.758*xRel2 + 1.4215*xRel3 - 0.5075*xRel4)
114 | cLyon.append(FreeCAD.Vector(xRel * longueur, yPos, 0))
115 | return cLyon
116 |
117 |
118 |
--------------------------------------------------------------------------------
/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | AirplaneDesign
4 | A FreeCAD workbench dedicated to Airplane Design.
5 | 0.4.1
6 | FredsFactory
7 | LGPL-2.1
8 | https://github.com/FredsFactory/FreeCAD_AirPlaneDesign
9 | https://github.com/FredsFactory/FreeCAD_AirPlaneDesign/blob/master/README.md
10 |
11 |
12 |
13 | AirPlaneDesignWorkbench
14 | ./
15 | resources/icons/appicon.svg
16 | 0.18.0
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/path_locator.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | ###################################################################################
3 | #
4 | # smwb_locator.py
5 | #
6 | # Copyright 2015 Shai Seger
7 | #
8 | # This program is free software; you can redistribute it and/or modify
9 | # it under the terms of the GNU General Public License as published by
10 | # the Free Software Foundation; either version 2 of the License, or
11 | # (at your option) any later version.
12 | #
13 | # This program is distributed in the hope that it will be useful,
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | # GNU General Public License for more details.
17 | #
18 | # You should have received a copy of the GNU General Public License
19 | # along with this program; if not, write to the Free Software
20 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21 | # MA 02110-1301, USA.
22 | #
23 | #
24 | ###################################################################################
25 |
--------------------------------------------------------------------------------
/resources/AirPlaneDesignWorkbench-V0.3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/AirPlaneDesignWorkbench-V0.3.png
--------------------------------------------------------------------------------
/resources/AirPlaneDesignWorkbench.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/AirPlaneDesignWorkbench.png
--------------------------------------------------------------------------------
/resources/AirplaneDesign001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/AirplaneDesign001.png
--------------------------------------------------------------------------------
/resources/RIBSGUI1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/RIBSGUI1.png
--------------------------------------------------------------------------------
/resources/RibGUI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/RibGUI.png
--------------------------------------------------------------------------------
/resources/Ribsfolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/Ribsfolder.png
--------------------------------------------------------------------------------
/resources/WingGUI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/WingGUI.png
--------------------------------------------------------------------------------
/resources/WingResult.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/WingResult.png
--------------------------------------------------------------------------------
/resources/airPlaneDesignWingdialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 1046
10 | 557
11 |
12 |
13 |
14 | Dialog
15 |
16 |
17 |
18 |
19 | 10
20 | 10
21 | 1021
22 | 501
23 |
24 |
25 |
26 |
27 |
28 |
29 | 0
30 |
31 |
32 |
33 | Wing
34 |
35 |
36 |
37 |
38 | 0
39 | 40
40 | 1121
41 | 421
42 |
43 |
44 |
45 | <html><head/><body><p>Débuter par la saisie du nombre de panneaux</p><p><br/></p></body></html>
46 |
47 |
48 | QAbstractScrollArea::AdjustToContentsOnFirstShow
49 |
50 |
51 | true
52 |
53 |
54 | QAbstractItemView::DragDrop
55 |
56 |
57 | QAbstractItemView::MultiSelection
58 |
59 |
60 | 0
61 |
62 |
63 | 14
64 |
65 |
66 | true
67 |
68 |
69 |
70 | Panel
71 |
72 |
73 |
74 |
75 | Profil
76 |
77 |
78 |
79 |
80 | File (dat)
81 |
82 |
83 |
84 |
85 | Root Chord
86 |
87 |
88 |
89 |
90 | Tip Chord
91 |
92 |
93 |
94 |
95 | Panel Length
96 |
97 |
98 |
99 |
100 | X root
101 |
102 |
103 |
104 |
105 | X tip
106 |
107 |
108 |
109 |
110 | Z root
111 |
112 |
113 |
114 |
115 | Z tip
116 |
117 |
118 |
119 |
120 | Rotation X
121 |
122 |
123 |
124 |
125 | Rotation Y
126 |
127 |
128 |
129 |
130 | RotationZ
131 |
132 |
133 |
134 |
135 | Ribs number
136 |
137 |
138 |
139 |
140 |
141 |
142 | 10
143 | 0
144 | 221
145 | 21
146 |
147 |
148 |
149 | Qt::Horizontal
150 |
151 |
152 |
153 |
154 |
155 | 110
156 | 10
157 | 201
158 | 32
159 |
160 |
161 |
162 | Fill in Sheet with an example
163 |
164 |
165 |
166 |
167 |
168 | 0
169 | 10
170 | 31
171 | 32
172 |
173 |
174 |
175 | +
176 |
177 |
178 |
179 |
180 |
181 | 20
182 | 10
183 | 31
184 | 32
185 |
186 |
187 |
188 | -
189 |
190 |
191 |
192 |
193 |
194 | Elliptical Wing
195 |
196 |
197 |
198 |
199 | 10
200 | 10
201 | 671
202 | 441
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 | 850
212 | 520
213 | 191
214 | 32
215 |
216 |
217 |
218 |
219 |
220 |
221 | Qt::Horizontal
222 |
223 |
224 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok
225 |
226 |
227 |
228 |
229 |
230 | 20
231 | 520
232 | 271
233 | 21
234 |
235 |
236 |
237 | Qt::Horizontal
238 |
239 |
240 |
241 | Name
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 | buttonBox
251 | accepted()
252 | Dialog
253 | accept()
254 |
255 |
256 | 248
257 | 254
258 |
259 |
260 | 157
261 | 274
262 |
263 |
264 |
265 |
266 | buttonBox
267 | rejected()
268 | Dialog
269 | reject()
270 |
271 |
272 | 316
273 | 260
274 |
275 |
276 | 286
277 | 274
278 |
279 |
280 |
281 |
282 |
283 |
--------------------------------------------------------------------------------
/resources/dialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 1073
10 | 730
11 |
12 |
13 |
14 | Dialog
15 |
16 |
17 |
18 |
19 | 600
20 | 690
21 | 341
22 | 32
23 |
24 |
25 |
26 | Qt::Horizontal
27 |
28 |
29 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok
30 |
31 |
32 |
33 |
34 |
35 | 10
36 | 30
37 | 1051
38 | 661
39 |
40 |
41 |
42 | 1
43 |
44 |
45 |
46 | Général
47 |
48 |
49 |
50 |
51 | 20
52 | 50
53 | 60
54 | 16
55 |
56 |
57 |
58 | Profil
59 |
60 |
61 |
62 |
63 |
64 | 260
65 | 10
66 | 113
67 | 32
68 |
69 |
70 |
71 | PushButton
72 |
73 |
74 |
75 |
76 |
77 | 10
78 | 80
79 | 571
80 | 192
81 |
82 |
83 |
84 | 5
85 |
86 |
87 | 3
88 |
89 |
90 | true
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | N°
100 |
101 |
102 |
103 |
104 | Fichier
105 |
106 |
107 |
108 |
109 | Nom du profil
110 |
111 |
112 |
113 |
114 |
115 |
116 | Aile
117 |
118 |
119 |
120 |
121 | 20
122 | 10
123 | 131
124 | 16
125 |
126 |
127 |
128 | Nombre de paneau :
129 |
130 |
131 |
132 |
133 |
134 | 10
135 | 230
136 | 1021
137 | 401
138 |
139 |
140 |
141 | Qt::ScrollBarAlwaysOn
142 |
143 |
144 | Qt::ScrollBarAlwaysOn
145 |
146 |
147 | QAbstractScrollArea::AdjustToContents
148 |
149 |
150 | QGraphicsView::SmartViewportUpdate
151 |
152 |
153 |
154 |
155 |
156 | 160
157 | 10
158 | 113
159 | 21
160 |
161 |
162 |
163 |
164 |
165 |
166 | 10
167 | 40
168 | 1021
169 | 181
170 |
171 |
172 |
173 | QAbstractScrollArea::AdjustToContentsOnFirstShow
174 |
175 |
176 | 5
177 |
178 |
179 | 12
180 |
181 |
182 | true
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 | Panel
192 |
193 |
194 |
195 |
196 | Profil
197 |
198 |
199 |
200 |
201 | Info profil
202 |
203 |
204 |
205 |
206 | Surface paneau
207 |
208 |
209 |
210 |
211 | Longueur paneau
212 |
213 |
214 |
215 |
216 | delta
217 |
218 |
219 |
220 |
221 | Corde emplature
222 |
223 |
224 |
225 |
226 | Corde saumon
227 |
228 |
229 |
230 |
231 | Rotation X
232 |
233 |
234 |
235 |
236 | Rotation Y
237 |
238 |
239 |
240 |
241 | RotationZ
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 | Dérive
250 |
251 |
252 |
253 |
254 | Stabilisateur
255 |
256 |
257 |
258 |
259 |
260 |
261 | 20
262 | 10
263 | 60
264 | 16
265 |
266 |
267 |
268 | Nom
269 |
270 |
271 |
272 |
273 |
274 | 50
275 | 10
276 | 113
277 | 21
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 | buttonBox
286 | accepted()
287 | Dialog
288 | accept()
289 |
290 |
291 | 248
292 | 254
293 |
294 |
295 | 157
296 | 274
297 |
298 |
299 |
300 |
301 | buttonBox
302 | rejected()
303 | Dialog
304 | reject()
305 |
306 |
307 | 316
308 | 260
309 |
310 |
311 | 286
312 | 274
313 |
314 |
315 |
316 |
317 |
318 |
--------------------------------------------------------------------------------
/resources/icons/nacelle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/nacelle.png
--------------------------------------------------------------------------------
/resources/icons/nacelle.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/nacelle.xcf
--------------------------------------------------------------------------------
/resources/icons/panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/panel.png
--------------------------------------------------------------------------------
/resources/icons/panel.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/panel.xcf
--------------------------------------------------------------------------------
/resources/icons/panel.xpm:
--------------------------------------------------------------------------------
1 | /* XPM */
2 | static char *_f82520645db49de8f23e627985ad89fBvhBwi0TBLtiX5m8[] = {
3 | /* columns rows colors chars-per-pixel */
4 | "64 64 82 1 ",
5 | " c None",
6 | ". c #1F2835",
7 | "X c #1F2A38",
8 | "o c #222937",
9 | "O c #222D3C",
10 | "+ c #292E3F",
11 | "@ c #243344",
12 | "# c #2A3243",
13 | "$ c #273649",
14 | "% c #293648",
15 | "& c #27384B",
16 | "* c #29394D",
17 | "= c #32364A",
18 | "- c #35384F",
19 | "; c #2B3D53",
20 | ": c #343E52",
21 | "> c #3A3C55",
22 | ", c #3B3F59",
23 | "< c #713748",
24 | "1 c #2D4057",
25 | "2 c #2F425A",
26 | "3 c #324055",
27 | "4 c #384155",
28 | "5 c #31455E",
29 | "6 c #39455D",
30 | "7 c #37784B",
31 | "8 c #324760",
32 | "9 c #3A4760",
33 | "0 c #344964",
34 | "q c #3B4A63",
35 | "w c #354B68",
36 | "e c #3C4D6A",
37 | "r c #3C506E",
38 | "t c #3C5676",
39 | "y c #42435E",
40 | "u c #414661",
41 | "i c #434964",
42 | "p c #4B4C6A",
43 | "a c #5F4761",
44 | "s c #564F6B",
45 | "d c #584E6B",
46 | "f c #44516E",
47 | "g c #4E516F",
48 | "h c #465D68",
49 | "j c #53506E",
50 | "k c #4F4F70",
51 | "l c #504F71",
52 | "z c #435575",
53 | "x c #4C5572",
54 | "c c #4F527A",
55 | "v c #525474",
56 | "b c #535976",
57 | "n c #565579",
58 | "m c #58577B",
59 | "M c #575B78",
60 | "N c #5A5A7C",
61 | "B c #50666C",
62 | "V c #526574",
63 | "C c #556975",
64 | "Z c #556378",
65 | "A c #5C627E",
66 | "S c #61627E",
67 | "D c #3C3A82",
68 | "F c #474683",
69 | "G c #555485",
70 | "H c #585780",
71 | "J c #5B5A82",
72 | "K c #5A5888",
73 | "L c #605F85",
74 | "P c #5E6780",
75 | "I c #626286",
76 | "U c #686886",
77 | "Y c #666589",
78 | "T c #68678B",
79 | "R c #6C6B8D",
80 | "E c #71708F",
81 | "W c #6F6E90",
82 | "Q c #706F90",
83 | "! c #747393",
84 | "~ c #787796",
85 | "^ c #7A7997",
86 | "/ c #7C7B98",
87 | /* pixels */
88 | "HHHHHHHNHHHHHmHHHHHHHHHHHHHHNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH",
89 | "HHHHHHHJHHHJHJHHNJHHJHHJHHHJJHHHHHNJHHHHHmHJHHJHHHHJJHHHHJHHJHHH",
90 | "HNHJHJHHHHHHHHJHHHHHHHJHHHHJHHHHHJHHJHJHHJHHJHHmHmHHmHJHHmHHHHJm",
91 | "HJJHHJJJJJJHJJHJJHJJJHJmJJmJJJJHJHJHHHJJHJJJJHJJJJJJJHJHJJJJJHJJ",
92 | "JJHHHJJHHJHJJHJJJJJHJHJJJHJHJHHHHJJJJHJJHJJHHJHJHJJHJHJJJHJJJHJJ",
93 | "JJGJJJJJJJJJJJJJJJJJJJJJJJJJHn>>ilmJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ",
94 | "JJDJJJJJJJLJJJJJJJJJJJJJJJJn>oO@@&%,pNJJJLJJJJLJJJJJJJLJJJJJJJJJ",
95 | "JHFJJJJLJJJJJZVJJJLJJJJJJn,oO@%%&*&&;%6vJJJLJJJJJJJLJJJJJJJLJJJJ",
96 | "JJKJJLLJLJJLV7JJJLJJKIHv:.X@@$$&**;*;;1;;pHJJLJJJLLJLJJLLJJLJJLJ",
97 | "KJGJJJJJJLJACAJJJLJLJv=.O@@$&&&&*;;;;;1122;pmJLJLJJJJJLJLJJJLJLJ",
98 | "IJGJIJJLLLACJIIJLJJl=.O@@$$&*;;;;;;;111212321qnJJLJLLJLJLJLLLJLJ",
99 | "KPKIJLLJJACJJJIJJl>.O@%$$&&;*;;;;;5;12122522522qNKLJLLLKJLJLLLJL",
100 | "LLGLLLLLAVLLIIJp#O@@$$$&&&;;;;;;;,112222222552553iNJLJLLLKLLLJLL",
101 | "LLGLLLLJCLLIJp+OO@@@$&&;;;;;;111;222222225255555851pHPLLLLLLLLLL",
102 | "LLGLLLPCILJp+O@@$$$*&;;;;;;;1112222222222282555585883pJLLLLLLLLL",
103 | "LLKLLPCINyoOO@@@$*&&*;;;;;;;112222222255852855585888886pLLYLLLLL",
104 | "ILGIPCNu.OO@@$&&;&;;;;;;111121222282522855555855888850005bYIIPLL",
105 | "IIGIBy.+@@@$&&&&;;;;;;1112112222222255525585858088880850556AIILI",
106 | "ILnh4:#%%$&&&&;;;;;;1111222222222882285885588888880850050505pJII",
107 | "IYszttte9:*;;;;;;;;1121122222252282828588888885008800050000009vY",
108 | "IYMsdzttttt6:;;;;11111222222555282888885888888058005000000000009",
109 | "YIImtsszttttte6;212122222282225528828888888850808805008088080000",
110 | "YYTINrtssttttttt931125522552825588888888888808080800500000000000",
111 | "YIITILftzdstttttttq622222825585588288888888880880000000800000000",
112 | "YYYYYYYnttzdsttttttte6555552555528888888880808800508000000000000",
113 | "YYYYYYYTJfttzdkttttttte3555858888888888088088000000000000000w00w",
114 | "YTTYTYYYYTMrttxssttttttte585855888888008808008080000000000000000",
115 | "TTTTTTTTUYUYxttta
2 |
193 |
--------------------------------------------------------------------------------
/resources/icons/rib.xpm:
--------------------------------------------------------------------------------
1 | /* XPM */
2 | static char * C:\Users\usuario\AppData\Roaming\FreeCAD\Mod\AirPlaneDesign\resources\icons\rib_xpm[] = {
3 | "32 32 192 2",
4 | " c None",
5 | ". c #0B1520",
6 | "+ c #0C1621",
7 | "@ c #0B1620",
8 | "# c #0B1521",
9 | "$ c #0A1521",
10 | "% c #162A42",
11 | "& c #2B4E7A",
12 | "* c #3A669E",
13 | "= c #4170AC",
14 | "- c #4470A9",
15 | "; c #426DA2",
16 | "> c #3C618E",
17 | ", c #2D4A6D",
18 | "' c #1B2C42",
19 | ") c #0C1521",
20 | "! c #0C1724",
21 | "~ c #264874",
22 | "{ c #3A6BA8",
23 | "] c #3E6EAB",
24 | "^ c #4171AD",
25 | "/ c #4474AF",
26 | "( c #4777B1",
27 | "_ c #4A7AB3",
28 | ": c #4D7DB6",
29 | "< c #5080B8",
30 | "[ c #5483BA",
31 | "} c #4B72A2",
32 | "| c #263C57",
33 | "1 c #0C1623",
34 | "2 c #0B1421",
35 | "3 c #0C1422",
36 | "4 c #274A76",
37 | "5 c #3868A7",
38 | "6 c #3B6BA9",
39 | "7 c #4B7AB4",
40 | "8 c #4E7DB6",
41 | "9 c #5180B8",
42 | "0 c #5786BC",
43 | "a c #5A89BF",
44 | "b c #4E76A3",
45 | "c c #21354B",
46 | "d c #172D47",
47 | "e c #3566A5",
48 | "f c #3869A7",
49 | "g c #3B6CA9",
50 | "h c #3E6FAB",
51 | "i c #4272AD",
52 | "j c #4575B0",
53 | "k c #4878B2",
54 | "l c #4B7BB4",
55 | "m c #4E7EB6",
56 | "n c #5583BB",
57 | "o c #5886BD",
58 | "p c #5B89BF",
59 | "q c #5E8CC1",
60 | "r c #608EC1",
61 | "s c #395676",
62 | "t c #0D1723",
63 | "u c #0B1621",
64 | "v c #264C7A",
65 | "w c #3666A5",
66 | "x c #3969A7",
67 | "y c #3C6CA9",
68 | "z c #3F6FAC",
69 | "A c #4272AE",
70 | "B c #4C7BB4",
71 | "C c #4F7EB6",
72 | "D c #5281B9",
73 | "E c #5584BB",
74 | "F c #5887BD",
75 | "G c #5B8ABF",
76 | "H c #5E8DC1",
77 | "I c #6290C4",
78 | "J c #6593C6",
79 | "K c #51759F",
80 | "L c #13202F",
81 | "M c #0B1422",
82 | "N c #305E98",
83 | "O c #3667A5",
84 | "P c #396AA8",
85 | "Q c #3C6DAA",
86 | "R c #3F70AC",
87 | "S c #4373AE",
88 | "T c #4676B0",
89 | "U c #4978B2",
90 | "V c #4C7BB5",
91 | "W c #4F7EB7",
92 | "X c #5987BD",
93 | "Y c #5C8AC0",
94 | "Z c #5F8DC2",
95 | "` c #6896C8",
96 | " . c #5A82AC",
97 | ".. c #0A1420",
98 | "+. c #3363A1",
99 | "@. c #3667A6",
100 | "#. c #3A6AA8",
101 | "$. c #3D6DAA",
102 | "%. c #4070AC",
103 | "&. c #4676B1",
104 | "*. c #4979B3",
105 | "=. c #4C7CB5",
106 | "-. c #507FB7",
107 | ";. c #5382B9",
108 | ">. c #5685BB",
109 | ",. c #5988BE",
110 | "'. c #5C8BC0",
111 | "). c #5F8EC2",
112 | "!. c #6693C6",
113 | "~. c #6996C9",
114 | "{. c #6C99CB",
115 | "]. c #5D84AF",
116 | "^. c #2B5488",
117 | "/. c #3768A6",
118 | "(. c #3D6EAA",
119 | "_. c #4071AD",
120 | ":. c #4373AF",
121 | "<. c #4776B1",
122 | "[. c #4A79B3",
123 | "}. c #4D7CB5",
124 | "|. c #5382BA",
125 | "1. c #5685BC",
126 | "2. c #5D8BC0",
127 | "3. c #608EC2",
128 | "4. c #6391C5",
129 | "5. c #6694C7",
130 | "6. c #6997C9",
131 | "7. c #6C9ACB",
132 | "8. c #6F9DCD",
133 | "9. c #5C82AB",
134 | "0. c #0E1826",
135 | "a. c #0B1622",
136 | "b. c #152941",
137 | "c. c #3565A1",
138 | "d. c #3A6BA9",
139 | "e. c #5A88BE",
140 | "f. c #608EC3",
141 | "g. c #6794C7",
142 | "h. c #6A97C9",
143 | "i. c #6D9ACB",
144 | "j. c #709DCE",
145 | "k. c #729FCF",
146 | "l. c #486788",
147 | "m. c #111F31",
148 | "n. c #223F63",
149 | "o. c #2C4E7B",
150 | "p. c #315685",
151 | "q. c #355B89",
152 | "r. c #3B6293",
153 | "s. c #426A9D",
154 | "t. c #4B79B0",
155 | "u. c #618FC3",
156 | "v. c #6492C5",
157 | "w. c #6795C7",
158 | "x. c #6A98CA",
159 | "y. c #6D9BCC",
160 | "z. c #709ECE",
161 | "A. c #314861",
162 | "B. c #0C1622",
163 | "C. c #152537",
164 | "D. c #294261",
165 | "E. c #41658F",
166 | "F. c #5785B9",
167 | "G. c #6795C8",
168 | "H. c #6B98CA",
169 | "I. c #6E9BCC",
170 | "J. c #719ECE",
171 | "K. c #6D99C7",
172 | "L. c #172635",
173 | "M. c #0B1420",
174 | "N. c #22364E",
175 | "O. c #3F5E81",
176 | "P. c #5E89B9",
177 | "Q. c #719ECF",
178 | "R. c #517397",
179 | "S. c #0D1824",
180 | "T. c #273B52",
181 | "U. c #496A8F",
182 | "V. c #6B97C6",
183 | "W. c #293D53",
184 | "X. c #111E2D",
185 | "Y. c #3C5673",
186 | "Z. c #6891BE",
187 | "`. c #648CB7",
188 | " + c #0E1925",
189 | ".+ c #324963",
190 | "++ c #6288B3",
191 | "@+ c #304660",
192 | "#+ c #0B1522",
193 | "$+ c #101B29",
194 | "%+ c #3B5573",
195 | "&+ c #24374C",
196 | " ",
197 | " ",
198 | " ",
199 | " ",
200 | " . + + . ",
201 | " @ # # # # # # # # # $ ",
202 | " $ # % & * = - ; > , ' # # @ ",
203 | " ) ! ~ { ] ^ / ( _ : < [ } | 1 # 2 ",
204 | " 3 # 4 5 6 ] ^ / ( 7 8 9 [ 0 a b c # ) ",
205 | " # d e f g h i j k l m 9 n o p q r s t u ",
206 | " # v w x y z A j k B C D E F G H I J K L # ",
207 | "M # N O P Q R S T U V W D E X Y Z I J ` .L # ",
208 | "..# +.@.#.$.%.S &.*.=.-.;.>.,.'.).I !.~.{.].L # ",
209 | " # ^./.{ (._.:.<.[.}.-.|.1.,.2.3.4.5.6.7.8.9.0.a. ",
210 | " # b.c.d.] ^ / ( _ : 9 [ 0 e.2.f.4.g.h.i.j.k.l.# @ ",
211 | " # m.n.o.p.q.r.s.t.9 [ 0 a q u.v.w.x.y.z.k.k.A.# ",
212 | " ) # # # # # # B.C.D.E.F.q u.v.G.H.I.J.k.k.K.L.# ",
213 | " . M.# # 0.N.O.P.` H.I.Q.k.k.k.R.# .. ",
214 | " 3 $ # S.T.U.V.k.k.k.k.k.W.# ",
215 | " # # # X.Y.Z.k.k.k.`.t # ",
216 | " # # +.+++k.k.@+# ",
217 | " #+# 1 A.Z.++1 2 ",
218 | " 2 # $+%+&+# ",
219 | " # # a.# ",
220 | " # # # ",
221 | " #+u ",
222 | " ",
223 | " ",
224 | " ",
225 | " ",
226 | " ",
227 | " "};
228 |
--------------------------------------------------------------------------------
/resources/icons/wing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/wing.png
--------------------------------------------------------------------------------
/resources/icons/wing.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/wing.xcf
--------------------------------------------------------------------------------
/resources/icons/wing2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/wing2.png
--------------------------------------------------------------------------------
/resources/icons/wing2.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/icons/wing2.xcf
--------------------------------------------------------------------------------
/resources/nacelleTaskPanel.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | nacelleTaskPanel
4 |
5 |
6 | true
7 |
8 |
9 |
10 | 0
11 | 0
12 | 335
13 | 267
14 |
15 |
16 |
17 | Nacelle Task Panel
18 |
19 |
20 | -
21 |
22 |
-
23 |
24 |
-
25 |
26 |
27 | 10
28 |
29 |
30 | 1000
31 |
32 |
33 | 100
34 |
35 |
36 |
37 | -
38 |
39 |
40 | °
41 |
42 |
43 | 1
44 |
45 |
46 | 360.000000000000000
47 |
48 |
49 | 360.000000000000000
50 |
51 |
52 |
53 | -
54 |
55 |
56 | Lyon, model A
57 |
58 |
59 | true
60 |
61 |
62 |
63 | -
64 |
65 |
66 | Diameter :
67 |
68 |
69 |
70 | -
71 |
72 |
73 | Number of Points
74 |
75 |
76 |
77 | -
78 |
79 |
80 | Hoerner, ellipse/cos, Dmax at >
81 |
82 |
83 | false
84 |
85 |
86 |
87 | -
88 |
89 |
90 |
91 | 0
92 | 0
93 |
94 |
95 |
96 | mm
97 |
98 |
99 | 9999999.000000000000000
100 |
101 |
102 | 1000.000000000000000
103 |
104 |
105 |
106 | -
107 |
108 |
109 | 1.000000000000000
110 |
111 |
112 | 0.010000000000000
113 |
114 |
115 | 0.400000000000000
116 |
117 |
118 |
119 | -
120 |
121 |
122 | Type :
123 |
124 |
125 |
126 | -
127 |
128 |
129 | Duhamel, simplified
130 |
131 |
132 |
133 | -
134 |
135 |
136 | mm
137 |
138 |
139 | 9999999.000000000000000
140 |
141 |
142 | 400.000000000000000
143 |
144 |
145 |
146 | -
147 |
148 |
149 | NACA (4 digits)
150 |
151 |
152 |
153 | -
154 |
155 |
156 |
157 | 0
158 | 0
159 |
160 |
161 |
162 | Length :
163 |
164 |
165 |
166 | -
167 |
168 |
169 | Angle :
170 |
171 |
172 |
173 | -
174 |
175 |
176 | Make a BSpline
177 |
178 |
179 | true
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 | -
188 |
189 |
190 | false
191 |
192 |
193 |
194 |
195 |
196 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok
197 |
198 |
199 | false
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 | bbButtons
209 | accepted()
210 | nacelleTaskPanel
211 | accept()
212 |
213 |
214 | 133
215 | 219
216 |
217 |
218 | 133
219 | 120
220 |
221 |
222 |
223 |
224 | bbButtons
225 | rejected()
226 | nacelleTaskPanel
227 | reject()
228 |
229 |
230 | 133
231 | 219
232 |
233 |
234 | 133
235 | 120
236 |
237 |
238 |
239 |
240 | rbHoerner
241 | toggled(bool)
242 | sbXMaxRel
243 | setEnabled(bool)
244 |
245 |
246 | 186
247 | 95
248 |
249 |
250 | 302
251 | 95
252 |
253 |
254 |
255 |
256 |
257 |
--------------------------------------------------------------------------------
/resources/plane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/plane.png
--------------------------------------------------------------------------------
/resources/planelowres.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/resources/planelowres.png
--------------------------------------------------------------------------------
/resources/ribTaskPanel.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | ribTaskPanel
4 |
5 |
6 |
7 | 0
8 | 0
9 | 596
10 | 723
11 |
12 |
13 |
14 | Rib Task Panel
15 |
16 |
17 | -
18 |
19 |
-
20 |
21 |
22 | Thickness in mm
23 |
24 |
25 |
26 | -
27 |
28 |
29 | Make a Bspline
30 |
31 |
32 | true
33 |
34 |
35 |
36 | -
37 |
38 |
39 | DAT FILE
40 |
41 |
42 |
43 | -
44 |
45 |
46 |
47 | 0
48 | 0
49 |
50 |
51 |
52 | Chord
53 |
54 |
55 |
56 | -
57 |
58 |
59 | NACA Profil
60 |
61 |
62 |
63 | -
64 |
65 |
66 | Shape
67 |
68 |
69 | true
70 |
71 |
72 |
73 | -
74 |
75 |
76 | true
77 |
78 |
79 |
80 | -
81 |
82 |
83 | Finite TE(NACA)
84 |
85 |
86 |
87 | -
88 |
89 |
90 | -
91 |
92 |
93 | mm
94 |
95 |
96 | 9999999.000000000000000
97 |
98 |
99 | 0.000000000000000
100 |
101 |
102 |
103 | -
104 |
105 |
106 | ...
107 |
108 |
109 |
110 | -
111 |
112 |
113 | Number of Points
114 |
115 |
116 |
117 | -
118 |
119 |
120 | <html><head/><body><p>If selected the spline will be split between the upper and lower side of the airfoil.</p></body></html>
121 |
122 |
123 | Split splines
124 |
125 |
126 | true
127 |
128 |
129 |
130 | -
131 |
132 |
133 |
134 | 0
135 | 0
136 |
137 |
138 |
139 | mm
140 |
141 |
142 | 9999999.000000000000000
143 |
144 |
145 |
146 | -
147 |
148 |
149 | -
150 |
151 |
152 | Qt::Horizontal
153 |
154 |
155 |
156 | 40
157 | 20
158 |
159 |
160 |
161 |
162 |
163 |
164 | -
165 |
166 |
167 |
168 | 0
169 | 0
170 |
171 |
172 |
173 |
174 | -
175 |
176 |
177 | -
178 |
179 |
180 |
181 | X
182 |
183 |
184 |
185 |
186 | Y
187 |
188 |
189 |
190 |
191 | Z
192 |
193 |
194 |
195 |
196 | -
197 |
198 |
199 | Xfoil simulation
200 |
201 |
202 |
203 | -
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
--------------------------------------------------------------------------------
/resources/selectobject.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 716
10 | 417
11 |
12 |
13 |
14 | Dialog
15 |
16 |
17 |
18 |
19 | 360
20 | 380
21 | 341
22 | 32
23 |
24 |
25 |
26 | Qt::Horizontal
27 |
28 |
29 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok
30 |
31 |
32 |
33 |
34 |
35 | 10
36 | 60
37 | 691
38 | 311
39 |
40 |
41 |
42 |
43 |
44 |
45 | 10
46 | 10
47 | 441
48 | 41
49 |
50 |
51 |
52 | Select the wing/sélectionner l'aile
53 |
54 |
55 |
56 |
57 |
58 |
59 | buttonBox
60 | accepted()
61 | Dialog
62 | accept()
63 |
64 |
65 | 248
66 | 254
67 |
68 |
69 | 157
70 | 274
71 |
72 |
73 |
74 |
75 | buttonBox
76 | rejected()
77 | Dialog
78 | reject()
79 |
80 |
81 | 316
82 | 260
83 |
84 |
85 | 286
86 | 274
87 |
88 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/translations/AirPlaneDesign_en.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/translations/AirPlaneDesign_en.qm
--------------------------------------------------------------------------------
/translations/AirPlaneDesign_en.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Dialog
6 |
7 |
8 |
9 | Dialog
10 |
11 |
12 |
13 |
14 | General
15 |
16 |
17 |
18 |
19 | Fuselage Length
20 |
21 |
22 |
23 |
24 | Fuselage Width
25 |
26 |
27 |
28 |
29 | Fuselage Height
30 |
31 |
32 |
33 |
34 | Nose Lever
35 |
36 |
37 |
38 |
39 | Wing Position
40 |
41 |
42 |
43 |
44 |
45 | Shape
46 |
47 |
48 |
49 |
50 | Girder
51 |
52 |
53 |
54 |
55 | Wing
56 |
57 |
58 |
59 |
60 | <html><head/><body><p>Débuter par la saisie du nombre de panneaux</p><p><br/></p></body></html>
61 |
62 |
63 |
64 |
65 | 1
66 |
67 |
68 |
69 |
70 | Panel
71 |
72 |
73 |
74 |
75 | Profil
76 |
77 |
78 |
79 |
80 | File (dat)
81 | File (dat)
82 |
83 |
84 |
85 |
86 | Corde emplature
87 | Root Chord
88 |
89 |
90 |
91 |
92 | Corde saumon
93 | Tip chord
94 |
95 |
96 |
97 |
98 | Longueur paneau
99 |
100 |
101 |
102 |
103 | X emplature
104 |
105 |
106 |
107 |
108 | X saumon
109 |
110 |
111 |
112 |
113 | Z emplature
114 |
115 |
116 |
117 |
118 | Z saumon
119 |
120 |
121 |
122 |
123 | Rotation X
124 |
125 |
126 |
127 |
128 | Rotation Y
129 |
130 |
131 |
132 |
133 | RotationZ
134 |
135 |
136 |
137 |
138 | Nombre de nervure
139 |
140 |
141 |
142 |
143 | Nombre de paneaux/Number of panels:
144 |
145 |
146 |
147 |
148 | Fill in Sheet with an example
149 |
150 |
151 |
152 |
153 | Rudder
154 |
155 |
156 |
157 |
158 | Elevator
159 |
160 |
161 |
162 |
163 | Name
164 |
165 |
166 |
167 |
168 | Import DAT File
169 |
170 |
171 |
172 |
173 | Select the profil
174 |
175 |
176 |
177 |
178 | NACA Generator
179 |
180 |
181 |
182 |
183 | NACA
184 |
185 |
186 |
187 |
188 | Number of Points
189 |
190 |
191 |
192 |
193 |
194 | mm
195 |
196 |
197 |
198 |
199 | Chord in mm
200 |
201 |
202 |
203 |
204 |
205 | <html><head/><body><p>If select the rib will be created with BSpline</p><p>If not the rib will be created with with wire</p></body></html>
206 |
207 |
208 |
209 |
210 | Make a BSpline
211 |
212 |
213 |
214 |
215 | Thickness in mm
216 |
217 |
218 |
219 |
220 | Air Plane Design
221 |
222 |
223 | Air Plane &Design
224 |
225 |
226 |
227 |
228 | AirPlaneDesign
229 |
230 |
231 | Air Plane Design
232 |
233 |
234 |
235 |
236 | App::Property
237 |
238 |
239 | Profil type
240 |
241 |
242 |
243 |
244 | NacaProfil
245 |
246 |
247 |
248 |
249 |
--------------------------------------------------------------------------------
/translations/AirPlaneDesign_fr.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FredsFactory/FreeCAD_AirPlaneDesign/0df74506759248e0dc6331fce2bfd2c97e26b1de/translations/AirPlaneDesign_fr.qm
--------------------------------------------------------------------------------
/translations/AirPlaneDesign_fr.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Dialog
6 |
7 |
8 |
9 | Dialog
10 | Dialogue
11 |
12 |
13 |
14 | General
15 | Général
16 |
17 |
18 |
19 | Fuselage Length
20 | Longueur du fuselage
21 |
22 |
23 |
24 | Fuselage Width
25 | Largeur du fuselage
26 |
27 |
28 |
29 | Fuselage Height
30 | Hauteur du fuselage
31 |
32 |
33 |
34 | Nose Lever
35 | Levier nez
36 |
37 |
38 |
39 | Wing Position
40 | Position de l'aile
41 |
42 |
43 |
44 |
45 | Shape
46 | Forme
47 |
48 |
49 |
50 | Girder
51 | Poutre
52 |
53 |
54 |
55 | Wing
56 | Aile
57 |
58 |
59 |
60 | <html><head/><body><p>Débuter par la saisie du nombre de panneaux</p><p><br/></p></body></html>
61 |
62 |
63 |
64 |
65 | 1
66 |
67 |
68 |
69 |
70 | Panel
71 | Panneau
72 |
73 |
74 |
75 | Profil
76 | Profil
77 |
78 |
79 |
80 | File (dat)
81 | File (dat)
82 | Fichier (dat)
83 |
84 |
85 |
86 | Corde emplature
87 | Root Chord
88 |
89 |
90 |
91 |
92 | Corde saumon
93 | Tip chord
94 |
95 |
96 |
97 |
98 | Longueur paneau
99 |
100 |
101 |
102 |
103 | X emplature
104 |
105 |
106 |
107 |
108 | X saumon
109 |
110 |
111 |
112 |
113 | Z emplature
114 |
115 |
116 |
117 |
118 | Z saumon
119 |
120 |
121 |
122 |
123 | Rotation X
124 |
125 |
126 |
127 |
128 | Rotation Y
129 |
130 |
131 |
132 |
133 | RotationZ
134 |
135 |
136 |
137 |
138 | Nombre de nervure
139 |
140 |
141 |
142 |
143 | Nombre de paneaux/Number of panels:
144 |
145 |
146 |
147 |
148 | Fill in Sheet with an example
149 |
150 |
151 |
152 |
153 | Rudder
154 |
155 |
156 |
157 |
158 | Elevator
159 |
160 |
161 |
162 |
163 | Name
164 |
165 |
166 |
167 |
168 | Import DAT File
169 |
170 |
171 |
172 |
173 | Select the profil
174 |
175 |
176 |
177 |
178 | NACA Generator
179 |
180 |
181 |
182 |
183 | NACA
184 |
185 |
186 |
187 |
188 | Number of Points
189 |
190 |
191 |
192 |
193 |
194 | mm
195 |
196 |
197 |
198 |
199 | Chord in mm
200 | Corde en mm
201 |
202 |
203 |
204 |
205 | <html><head/><body><p>If select the rib will be created with BSpline</p><p>If not the rib will be created with with wire</p></body></html>
206 | <html><head/><body><p>Si sélection le profil sera créeé avec des BSpline</p><p>sinon le profil sera composé de "Wired" </p></body></html>
207 |
208 |
209 |
210 | Make a BSpline
211 | Faire une BSpline
212 |
213 |
214 |
215 | Thickness in mm
216 | Epaisseur en mm
217 |
218 |
219 |
220 | Air Plane Design
221 |
222 |
223 | Air Plane &Design
224 | Air Plane Design
225 |
226 |
227 |
228 | AirPlaneDesign
229 |
230 |
231 | Air Plane Design
232 | Air Plane Design
233 |
234 |
235 |
236 | App::Property
237 |
238 |
239 | Profil type
240 | Type de profil
241 |
242 |
243 |
244 | NacaProfil
245 | Profil Naca
246 |
247 |
248 |
249 |
--------------------------------------------------------------------------------
/wingribprofil/AG41d02f.dat:
--------------------------------------------------------------------------------
1 | 1 0.000469
2 | 0.994121 0.001042
3 | 0.982227 0.002323
4 | 0.968763 0.003775
5 | 0.955081 0.005195
6 | 0.94135 0.006622
7 | 0.927639 0.008044
8 | 0.913916 0.009492
9 | 0.900179 0.010943
10 | 0.886445 0.012383
11 | 0.872701 0.013807
12 | 0.858984 0.015211
13 | 0.845255 0.016603
14 | 0.83155 0.017975
15 | 0.817849 0.019327
16 | 0.804165 0.020657
17 | 0.790488 0.021962
18 | 0.77682 0.023241
19 | 0.763159 0.024492
20 | 0.75797 0.024959
21 | 0.755255 0.025204
22 | 0.753334 0.025376
23 | 0.751303 0.025628
24 | 0.74724 0.026129
25 | 0.736641 0.027419
26 | 0.722923 0.02906
27 | 0.712568 0.030277
28 | 0.695356 0.032252
29 | 0.681487 0.033796
30 | 0.667585 0.035302
31 | 0.656387 0.036485
32 | 0.65082 0.037063
33 | 0.639696 0.038198
34 | 0.62572 0.039587
35 | 0.613889 0.040729
36 | 0.597788 0.042236
37 | 0.583857 0.043494
38 | 0.569929 0.044709
39 | 0.558864 0.045645
40 | 0.549911 0.04638
41 | 0.541887 0.047023
42 | 0.527977 0.048103
43 | 0.514069 0.049137
44 | 0.500127 0.050125
45 | 0.486154 0.051065
46 | 0.472171 0.051954
47 | 0.458177 0.05279
48 | 0.444155 0.053574
49 | 0.430111 0.054301
50 | 0.416042 0.054972
51 | 0.401962 0.055581
52 | 0.387905 0.056119
53 | 0.373885 0.056585
54 | 0.3599 0.056976
55 | 0.345948 0.05729
56 | 0.332032 0.057523
57 | 0.31815 0.057673
58 | 0.304299 0.057733
59 | 0.29048 0.057702
60 | 0.276681 0.057573
61 | 0.262888 0.057341
62 | 0.249112 0.056999
63 | 0.235358 0.056541
64 | 0.221615 0.055959
65 | 0.207901 0.055241
66 | 0.19422 0.054389
67 | 0.180563 0.053385
68 | 0.166961 0.052219
69 | 0.153402 0.050876
70 | 0.139909 0.04934
71 | 0.126497 0.047592
72 | 0.113175 0.045609
73 | 0.099986 0.04337
74 | 0.086946 0.04084
75 | 0.074114 0.037994
76 | 0.061528 0.034784
77 | 0.04931 0.031172
78 | 0.037646 0.027115
79 | 0.026913 0.022645
80 | 0.017809 0.018019
81 | 0.011042 0.013753
82 | 0.006537 0.010206
83 | 0.003646 0.007329
84 | 0.001787 0.004936
85 | 0.000649 0.002874
86 | 9.4e-05 0.001083
87 | 1.5e-05 -0.00043
88 | 0.000304 -0.001828
89 | 0.001159 -0.003258
90 | 0.002687 -0.0047
91 | 0.004992 -0.006214
92 | 0.008404 -0.007903
93 | 0.013424 -0.009799
94 | 0.020346 -0.011788
95 | 0.029198 -0.013716
96 | 0.039936 -0.015495
97 | 0.051875 -0.016987
98 | 0.064442 -0.01817
99 | 0.077484 -0.019097
100 | 0.09112 -0.01982
101 | 0.105312 -0.020365
102 | 0.119847 -0.020754
103 | 0.134477 -0.021005
104 | 0.14909 -0.021136
105 | 0.163663 -0.02117
106 | 0.178199 -0.021128
107 | 0.192672 -0.021019
108 | 0.207078 -0.020856
109 | 0.221308 -0.020652
110 | 0.235501 -0.020411
111 | 0.249644 -0.020137
112 | 0.263775 -0.019836
113 | 0.277889 -0.019508
114 | 0.292011 -0.019159
115 | 0.306142 -0.018789
116 | 0.320293 -0.018402
117 | 0.334472 -0.018
118 | 0.348678 -0.017588
119 | 0.362904 -0.017164
120 | 0.377172 -0.016732
121 | 0.39147 -0.016291
122 | 0.405754 -0.015843
123 | 0.420054 -0.01539
124 | 0.434335 -0.014933
125 | 0.448593 -0.014474
126 | 0.46283 -0.014011
127 | 0.47705 -0.013544
128 | 0.491235 -0.013079
129 | 0.505398 -0.012611
130 | 0.519555 -0.012143
131 | 0.533703 -0.011679
132 | 0.547841 -0.011215
133 | 0.555482 -0.010965
134 | 0.565178 -0.010649
135 | 0.575578 -0.010312
136 | 0.589125 -0.009876
137 | 0.602668 -0.009444
138 | 0.609067 -0.009241
139 | 0.616344 -0.009012
140 | 0.629997 -0.008585
141 | 0.643632 -0.008162
142 | 0.653438 -0.007859
143 | 0.662467 -0.007584
144 | 0.670867 -0.00733
145 | 0.684497 -0.006923
146 | 0.698115 -0.006521
147 | 0.713093 -0.006089
148 | 0.724947 -0.005751
149 | 0.738278 -0.005381
150 | 0.743968 -0.00523
151 | 0.74801 -0.00512
152 | 0.753621 -0.004969
153 | 0.758243 -0.004844
154 | 0.765169 -0.004664
155 | 0.77862 -0.004316
156 | 0.792039 -0.003985
157 | 0.805444 -0.003661
158 | 0.819003 -0.003345
159 | 0.832557 -0.003043
160 | 0.846108 -0.002755
161 | 0.859681 -0.002481
162 | 0.873249 -0.002219
163 | 0.886806 -0.001974
164 | 0.900397 -0.001746
165 | 0.914005 -0.001525
166 | 0.927639 -0.001326
167 | 0.941287 -0.001136
168 | 0.954987 -0.000961
169 | 0.968688 -0.000794
170 | 0.982174 -0.000646
171 | 0.994112 -0.00053
172 | 1 -0.000469
173 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/AG40d +00f.dat:
--------------------------------------------------------------------------------
1 | AG40d +00f
2 | 1.00008 -0.00825
3 | 0.99415 -0.00744
4 | 0.98232 -0.00566
5 | 0.96892 -0.00364
6 | 0.95531 -0.00165
7 | 0.94164 0.00036
8 | 0.92800 0.00235
9 | 0.91435 0.00439
10 | 0.90068 0.00644
11 | 0.88701 0.00847
12 | 0.87334 0.01049
13 | 0.85969 0.01249
14 | 0.84603 0.01447
15 | 0.83239 0.01644
16 | 0.81876 0.01838
17 | 0.80514 0.02030
18 | 0.79152 0.02220
19 | 0.77792 0.02406
20 | 0.76432 0.02589
21 | 0.75915 0.02658
22 | 0.75639 0.02694
23 | 0.75284 0.02748
24 | 0.75190 0.02758
25 | 0.75095 0.02768
26 | 0.75000 0.02778
27 | 0.74731 0.02813
28 | 0.73672 0.02951
29 | 0.72301 0.03125
30 | 0.71266 0.03253
31 | 0.69545 0.03460
32 | 0.68159 0.03621
33 | 0.66769 0.03777
34 | 0.65649 0.03899
35 | 0.65092 0.03959
36 | 0.63980 0.04075
37 | 0.62582 0.04217
38 | 0.61398 0.04333
39 | 0.59788 0.04485
40 | 0.58394 0.04612
41 | 0.57001 0.04734
42 | 0.55894 0.04827
43 | 0.54998 0.04900
44 | 0.54196 0.04964
45 | 0.52804 0.05070
46 | 0.51413 0.05172
47 | 0.50018 0.05268
48 | 0.48620 0.05359
49 | 0.47221 0.05444
50 | 0.45821 0.05523
51 | 0.44418 0.05596
52 | 0.43013 0.05663
53 | 0.41605 0.05724
54 | 0.40196 0.05779
55 | 0.38790 0.05826
56 | 0.37387 0.05865
57 | 0.35988 0.05898
58 | 0.34592 0.05922
59 | 0.33200 0.05938
60 | 0.31811 0.05945
61 | 0.30425 0.05944
62 | 0.29043 0.05933
63 | 0.27663 0.05912
64 | 0.26283 0.05880
65 | 0.24905 0.05838
66 | 0.23529 0.05784
67 | 0.22155 0.05717
68 | 0.20784 0.05636
69 | 0.19415 0.05542
70 | 0.18050 0.05433
71 | 0.16690 0.05307
72 | 0.15335 0.05164
73 | 0.13986 0.05001
74 | 0.12645 0.04817
75 | 0.11314 0.04609
76 | 0.09996 0.04376
77 | 0.08694 0.04113
78 | 0.07412 0.03820
79 | 0.06155 0.03491
80 | 0.04935 0.03123
81 | 0.03769 0.02712
82 | 0.02697 0.02262
83 | 0.01787 0.01798
84 | 0.01110 0.01372
85 | 0.00658 0.01018
86 | 0.00368 0.00732
87 | 0.00180 0.00493
88 | 0.00065 0.00287
89 | 0.00009 0.00109
90 | 0.00001 -0.00043
91 | 0.00028 -0.00183
92 | 0.00113 -0.00327
93 | 0.00263 -0.00474
94 | 0.00489 -0.00632
95 | 0.00827 -0.00808
96 | 0.01325 -0.01008
97 | 0.02014 -0.01218
98 | 0.02897 -0.01423
99 | 0.03970 -0.01611
100 | 0.05163 -0.01770
101 | 0.06419 -0.01896
102 | 0.07723 -0.01994
103 | 0.09087 -0.02072
104 | 0.10506 -0.02130
105 | 0.11960 -0.02173
106 | 0.13423 -0.02202
107 | 0.14885 -0.02219
108 | 0.16343 -0.02227
109 | 0.17797 -0.02226
110 | 0.19244 -0.02219
111 | 0.20686 -0.02206
112 | 0.22109 -0.02190
113 | 0.23529 -0.02169
114 | 0.24944 -0.02146
115 | 0.26357 -0.02119
116 | 0.27769 -0.02090
117 | 0.29182 -0.02058
118 | 0.30595 -0.02024
119 | 0.32011 -0.01988
120 | 0.33429 -0.01950
121 | 0.34850 -0.01910
122 | 0.36273 -0.01869
123 | 0.37700 -0.01827
124 | 0.39130 -0.01783
125 | 0.40559 -0.01739
126 | 0.41990 -0.01693
127 | 0.43418 -0.01647
128 | 0.44844 -0.01601
129 | 0.46268 -0.01554
130 | 0.47691 -0.01507
131 | 0.49110 -0.01459
132 | 0.50526 -0.01411
133 | 0.51942 -0.01362
134 | 0.53357 -0.01314
135 | 0.54771 -0.01266
136 | 0.55536 -0.01240
137 | 0.56505 -0.01206
138 | 0.57546 -0.01171
139 | 0.58901 -0.01125
140 | 0.60255 -0.01079
141 | 0.60895 -0.01057
142 | 0.61623 -0.01033
143 | 0.62989 -0.00987
144 | 0.64353 -0.00942
145 | 0.65333 -0.00910
146 | 0.66236 -0.00880
147 | 0.67076 -0.00853
148 | 0.68440 -0.00809
149 | 0.69802 -0.00766
150 | 0.71300 -0.00719
151 | 0.72486 -0.00682
152 | 0.73819 -0.00641
153 | 0.74388 -0.00624
154 | 0.74795 -0.00611
155 | 0.75000 -0.00605
156 | 0.75350 -0.00607
157 | 0.75813 -0.00609
158 | 0.76506 -0.00613
159 | 0.77852 -0.00621
160 | 0.79194 -0.00629
161 | 0.80536 -0.00638
162 | 0.81892 -0.00649
163 | 0.83248 -0.00660
164 | 0.84604 -0.00673
165 | 0.85962 -0.00687
166 | 0.87319 -0.00702
167 | 0.88676 -0.00719
168 | 0.90035 -0.00738
169 | 0.91396 -0.00758
170 | 0.92760 -0.00780
171 | 0.94125 -0.00803
172 | 0.95495 -0.00828
173 | 0.96866 -0.00854
174 | 0.98215 -0.00882
175 | 0.99409 -0.00908
176 | 1.00004 -0.00921
177 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/AG41d +00f.dat:
--------------------------------------------------------------------------------
1 | AG41d +00f
2 | 1.00004 -0.00826
3 | 0.99419 -0.00748
4 | 0.98234 -0.00579
5 | 0.96894 -0.00387
6 | 0.95531 -0.00197
7 | 0.94164 -0.00006
8 | 0.92799 0.00184
9 | 0.91432 0.00376
10 | 0.90065 0.00569
11 | 0.88697 0.00761
12 | 0.87328 0.00951
13 | 0.85963 0.01140
14 | 0.84595 0.01327
15 | 0.83230 0.01511
16 | 0.81866 0.01694
17 | 0.80503 0.01875
18 | 0.79141 0.02053
19 | 0.77779 0.02229
20 | 0.76418 0.02401
21 | 0.75901 0.02466
22 | 0.75631 0.02500
23 | 0.75439 0.02524
24 | 0.75237 0.02556
25 | 0.75158 0.02564
26 | 0.75079 0.02571
27 | 0.75000 0.02579
28 | 0.74724 0.02613
29 | 0.73664 0.02742
30 | 0.72292 0.02906
31 | 0.71257 0.03028
32 | 0.69536 0.03225
33 | 0.68149 0.03380
34 | 0.66758 0.03530
35 | 0.65639 0.03648
36 | 0.65082 0.03706
37 | 0.63970 0.03820
38 | 0.62572 0.03959
39 | 0.61389 0.04073
40 | 0.59779 0.04224
41 | 0.58386 0.04349
42 | 0.56993 0.04471
43 | 0.55886 0.04564
44 | 0.54991 0.04638
45 | 0.54189 0.04702
46 | 0.52798 0.04810
47 | 0.51407 0.04914
48 | 0.50013 0.05013
49 | 0.48615 0.05106
50 | 0.47217 0.05195
51 | 0.45818 0.05279
52 | 0.44416 0.05357
53 | 0.43011 0.05430
54 | 0.41604 0.05497
55 | 0.40196 0.05558
56 | 0.38790 0.05612
57 | 0.37389 0.05659
58 | 0.35990 0.05698
59 | 0.34595 0.05729
60 | 0.33203 0.05752
61 | 0.31815 0.05767
62 | 0.30430 0.05773
63 | 0.29048 0.05770
64 | 0.27668 0.05757
65 | 0.26289 0.05734
66 | 0.24911 0.05700
67 | 0.23536 0.05654
68 | 0.22162 0.05596
69 | 0.20790 0.05524
70 | 0.19422 0.05439
71 | 0.18056 0.05339
72 | 0.16696 0.05222
73 | 0.15340 0.05088
74 | 0.13991 0.04934
75 | 0.12650 0.04759
76 | 0.11317 0.04561
77 | 0.09999 0.04337
78 | 0.08695 0.04084
79 | 0.07411 0.03799
80 | 0.06153 0.03478
81 | 0.04931 0.03117
82 | 0.03765 0.02712
83 | 0.02691 0.02264
84 | 0.01781 0.01802
85 | 0.01104 0.01375
86 | 0.00654 0.01021
87 | 0.00365 0.00733
88 | 0.00179 0.00494
89 | 0.00065 0.00287
90 | 0.00009 0.00108
91 | 0.00002 -0.00043
92 | 0.00030 -0.00183
93 | 0.00116 -0.00326
94 | 0.00269 -0.00470
95 | 0.00499 -0.00621
96 | 0.00840 -0.00790
97 | 0.01342 -0.00980
98 | 0.02035 -0.01179
99 | 0.02920 -0.01372
100 | 0.03994 -0.01550
101 | 0.05187 -0.01699
102 | 0.06444 -0.01817
103 | 0.07748 -0.01910
104 | 0.09112 -0.01982
105 | 0.10531 -0.02037
106 | 0.11985 -0.02075
107 | 0.13448 -0.02100
108 | 0.14909 -0.02114
109 | 0.16366 -0.02117
110 | 0.17820 -0.02113
111 | 0.19267 -0.02102
112 | 0.20708 -0.02086
113 | 0.22131 -0.02065
114 | 0.23550 -0.02041
115 | 0.24964 -0.02014
116 | 0.26377 -0.01984
117 | 0.27789 -0.01951
118 | 0.29201 -0.01916
119 | 0.30614 -0.01879
120 | 0.32029 -0.01840
121 | 0.33447 -0.01800
122 | 0.34868 -0.01759
123 | 0.36290 -0.01716
124 | 0.37717 -0.01673
125 | 0.39147 -0.01629
126 | 0.40575 -0.01584
127 | 0.42005 -0.01539
128 | 0.43434 -0.01493
129 | 0.44859 -0.01447
130 | 0.46283 -0.01401
131 | 0.47705 -0.01354
132 | 0.49123 -0.01308
133 | 0.50540 -0.01261
134 | 0.51955 -0.01214
135 | 0.53370 -0.01168
136 | 0.54784 -0.01121
137 | 0.55548 -0.01097
138 | 0.56518 -0.01065
139 | 0.57558 -0.01031
140 | 0.58913 -0.00988
141 | 0.60267 -0.00944
142 | 0.60907 -0.00924
143 | 0.61634 -0.00901
144 | 0.63000 -0.00859
145 | 0.64363 -0.00816
146 | 0.65344 -0.00786
147 | 0.66247 -0.00758
148 | 0.67087 -0.00733
149 | 0.68450 -0.00692
150 | 0.69812 -0.00652
151 | 0.71309 -0.00609
152 | 0.72495 -0.00575
153 | 0.73828 -0.00538
154 | 0.74397 -0.00523
155 | 0.74801 -0.00512
156 | 0.75000 -0.00507
157 | 0.75362 -0.00510
158 | 0.75825 -0.00513
159 | 0.76517 -0.00519
160 | 0.77863 -0.00532
161 | 0.79205 -0.00545
162 | 0.80546 -0.00560
163 | 0.81902 -0.00575
164 | 0.83258 -0.00593
165 | 0.84613 -0.00611
166 | 0.85970 -0.00631
167 | 0.87327 -0.00652
168 | 0.88683 -0.00675
169 | 0.90042 -0.00700
170 | 0.91403 -0.00725
171 | 0.92766 -0.00753
172 | 0.94131 -0.00781
173 | 0.95501 -0.00812
174 | 0.96870 -0.00843
175 | 0.98219 -0.00875
176 | 0.99412 -0.00905
177 | 1.00001 -0.00920
178 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/AG42d +00f.dat:
--------------------------------------------------------------------------------
1 | AG42d +00f
2 | 0.99999 -0.00827
3 | 0.99413 -0.00753
4 | 0.98228 -0.00597
5 | 0.96886 -0.00420
6 | 0.95522 -0.00245
7 | 0.94154 -0.00069
8 | 0.92787 0.00106
9 | 0.91419 0.00282
10 | 0.90050 0.00457
11 | 0.88680 0.00632
12 | 0.87310 0.00805
13 | 0.85943 0.00976
14 | 0.84574 0.01145
15 | 0.83208 0.01313
16 | 0.81841 0.01479
17 | 0.80477 0.01642
18 | 0.79113 0.01804
19 | 0.77750 0.01963
20 | 0.76388 0.02120
21 | 0.75871 0.02179
22 | 0.75600 0.02210
23 | 0.75422 0.02231
24 | 0.75300 0.02245
25 | 0.75178 0.02258
26 | 0.75057 0.02271
27 | 0.74686 0.02313
28 | 0.73625 0.02430
29 | 0.72253 0.02580
30 | 0.71217 0.02691
31 | 0.69495 0.02874
32 | 0.68108 0.03019
33 | 0.66717 0.03161
34 | 0.65598 0.03274
35 | 0.65041 0.03329
36 | 0.63929 0.03438
37 | 0.62531 0.03573
38 | 0.61348 0.03684
39 | 0.59739 0.03832
40 | 0.58346 0.03957
41 | 0.56954 0.04078
42 | 0.55848 0.04172
43 | 0.54953 0.04246
44 | 0.54151 0.04311
45 | 0.52761 0.04421
46 | 0.51371 0.04528
47 | 0.49978 0.04631
48 | 0.48581 0.04729
49 | 0.47184 0.04824
50 | 0.45785 0.04914
51 | 0.44384 0.05000
52 | 0.42980 0.05081
53 | 0.41574 0.05157
54 | 0.40167 0.05228
55 | 0.38763 0.05292
56 | 0.37361 0.05348
57 | 0.35963 0.05398
58 | 0.34569 0.05440
59 | 0.33178 0.05474
60 | 0.31790 0.05500
61 | 0.30406 0.05518
62 | 0.29024 0.05526
63 | 0.27644 0.05525
64 | 0.26266 0.05514
65 | 0.24888 0.05492
66 | 0.23513 0.05459
67 | 0.22138 0.05413
68 | 0.20767 0.05354
69 | 0.19398 0.05282
70 | 0.18032 0.05194
71 | 0.16672 0.05091
72 | 0.15315 0.04970
73 | 0.13965 0.04829
74 | 0.12624 0.04668
75 | 0.11291 0.04483
76 | 0.09971 0.04274
77 | 0.08666 0.04034
78 | 0.07382 0.03762
79 | 0.06122 0.03453
80 | 0.04900 0.03101
81 | 0.03735 0.02702
82 | 0.02664 0.02260
83 | 0.01757 0.01800
84 | 0.01085 0.01373
85 | 0.00640 0.01018
86 | 0.00356 0.00731
87 | 0.00174 0.00492
88 | 0.00064 0.00286
89 | 0.00010 0.00108
90 | 0.00002 -0.00043
91 | 0.00034 -0.00183
92 | 0.00123 -0.00326
93 | 0.00282 -0.00466
94 | 0.00520 -0.00609
95 | 0.00869 -0.00766
96 | 0.01378 -0.00940
97 | 0.02076 -0.01121
98 | 0.02966 -0.01297
99 | 0.04043 -0.01458
100 | 0.05240 -0.01593
101 | 0.06498 -0.01700
102 | 0.07803 -0.01783
103 | 0.09167 -0.01848
104 | 0.10586 -0.01896
105 | 0.12039 -0.01928
106 | 0.13502 -0.01947
107 | 0.14963 -0.01955
108 | 0.16420 -0.01952
109 | 0.17872 -0.01942
110 | 0.19319 -0.01925
111 | 0.20759 -0.01903
112 | 0.22181 -0.01877
113 | 0.23600 -0.01847
114 | 0.25015 -0.01815
115 | 0.26429 -0.01779
116 | 0.27844 -0.01741
117 | 0.29259 -0.01700
118 | 0.30675 -0.01659
119 | 0.32094 -0.01616
120 | 0.33514 -0.01573
121 | 0.34938 -0.01529
122 | 0.36365 -0.01485
123 | 0.37795 -0.01441
124 | 0.39230 -0.01396
125 | 0.40665 -0.01350
126 | 0.42103 -0.01304
127 | 0.43540 -0.01259
128 | 0.44975 -0.01213
129 | 0.46409 -0.01168
130 | 0.47843 -0.01122
131 | 0.49275 -0.01077
132 | 0.50705 -0.01031
133 | 0.52135 -0.00987
134 | 0.53566 -0.00942
135 | 0.54996 -0.00899
136 | 0.55769 -0.00875
137 | 0.56751 -0.00846
138 | 0.57805 -0.00814
139 | 0.59178 -0.00774
140 | 0.60551 -0.00735
141 | 0.61201 -0.00716
142 | 0.61939 -0.00695
143 | 0.63325 -0.00656
144 | 0.64710 -0.00618
145 | 0.65706 -0.00590
146 | 0.66624 -0.00565
147 | 0.67478 -0.00543
148 | 0.68865 -0.00506
149 | 0.70247 -0.00470
150 | 0.71711 -0.00434
151 | 0.72872 -0.00406
152 | 0.74176 -0.00376
153 | 0.74733 -0.00363
154 | 0.75000 -0.00357
155 | 0.75243 -0.00361
156 | 0.75692 -0.00366
157 | 0.76154 -0.00373
158 | 0.76846 -0.00383
159 | 0.78189 -0.00402
160 | 0.79528 -0.00424
161 | 0.80866 -0.00447
162 | 0.82218 -0.00471
163 | 0.83567 -0.00497
164 | 0.84915 -0.00524
165 | 0.86262 -0.00553
166 | 0.87605 -0.00583
167 | 0.88947 -0.00615
168 | 0.90288 -0.00648
169 | 0.91627 -0.00682
170 | 0.92964 -0.00717
171 | 0.94300 -0.00753
172 | 0.95635 -0.00790
173 | 0.96966 -0.00829
174 | 0.98274 -0.00866
175 | 0.99427 -0.00902
176 | 0.99996 -0.00918
177 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/AG43d +00f.dat:
--------------------------------------------------------------------------------
1 | AG43d +00f
2 | 0.99991 -0.00829
3 | 0.99405 -0.00762
4 | 0.98218 -0.00626
5 | 0.96874 -0.00471
6 | 0.95509 -0.00316
7 | 0.94139 -0.00162
8 | 0.92771 -0.00010
9 | 0.91401 0.00141
10 | 0.90029 0.00291
11 | 0.88658 0.00439
12 | 0.87286 0.00587
13 | 0.85916 0.00733
14 | 0.84546 0.00877
15 | 0.83177 0.01019
16 | 0.81809 0.01160
17 | 0.80443 0.01298
18 | 0.79077 0.01436
19 | 0.77713 0.01571
20 | 0.76349 0.01707
21 | 0.75832 0.01757
22 | 0.75423 0.01798
23 | 0.75218 0.01817
24 | 0.75190 0.01820
25 | 0.75117 0.01827
26 | 0.75000 0.01838
27 | 0.74640 0.01871
28 | 0.73618 0.01968
29 | 0.72245 0.02097
30 | 0.71208 0.02194
31 | 0.69485 0.02355
32 | 0.68099 0.02483
33 | 0.66715 0.02611
34 | 0.65605 0.02713
35 | 0.65053 0.02764
36 | 0.63952 0.02864
37 | 0.62573 0.02987
38 | 0.61408 0.03091
39 | 0.59827 0.03230
40 | 0.58460 0.03347
41 | 0.57096 0.03462
42 | 0.56012 0.03551
43 | 0.55135 0.03622
44 | 0.54349 0.03685
45 | 0.52984 0.03791
46 | 0.51618 0.03894
47 | 0.50246 0.03995
48 | 0.48868 0.04092
49 | 0.47486 0.04186
50 | 0.46097 0.04277
51 | 0.44699 0.04364
52 | 0.43297 0.04447
53 | 0.41888 0.04525
54 | 0.40478 0.04599
55 | 0.39075 0.04666
56 | 0.37682 0.04728
57 | 0.36297 0.04783
58 | 0.34919 0.04832
59 | 0.33549 0.04874
60 | 0.32184 0.04910
61 | 0.30824 0.04940
62 | 0.29467 0.04962
63 | 0.28108 0.04977
64 | 0.26744 0.04984
65 | 0.25373 0.04983
66 | 0.23998 0.04973
67 | 0.22617 0.04953
68 | 0.21231 0.04922
69 | 0.19841 0.04879
70 | 0.18444 0.04822
71 | 0.17043 0.04750
72 | 0.15640 0.04661
73 | 0.14239 0.04553
74 | 0.12843 0.04425
75 | 0.11454 0.04273
76 | 0.10080 0.04095
77 | 0.08730 0.03886
78 | 0.07422 0.03648
79 | 0.06157 0.03373
80 | 0.04928 0.03053
81 | 0.03754 0.02683
82 | 0.02674 0.02261
83 | 0.01760 0.01811
84 | 0.01084 0.01387
85 | 0.00637 0.01030
86 | 0.00352 0.00739
87 | 0.00172 0.00496
88 | 0.00064 0.00287
89 | 0.00011 0.00108
90 | 0.00002 -0.00043
91 | 0.00040 -0.00180
92 | 0.00134 -0.00316
93 | 0.00296 -0.00449
94 | 0.00538 -0.00583
95 | 0.00892 -0.00726
96 | 0.01408 -0.00881
97 | 0.02112 -0.01038
98 | 0.03006 -0.01189
99 | 0.04086 -0.01325
100 | 0.05283 -0.01439
101 | 0.06542 -0.01527
102 | 0.07846 -0.01594
103 | 0.09209 -0.01644
104 | 0.10627 -0.01678
105 | 0.12080 -0.01699
106 | 0.13541 -0.01707
107 | 0.15001 -0.01706
108 | 0.16456 -0.01696
109 | 0.17908 -0.01679
110 | 0.19353 -0.01656
111 | 0.20792 -0.01629
112 | 0.22213 -0.01596
113 | 0.23630 -0.01561
114 | 0.25043 -0.01523
115 | 0.26454 -0.01482
116 | 0.27863 -0.01440
117 | 0.29273 -0.01396
118 | 0.30684 -0.01352
119 | 0.32097 -0.01306
120 | 0.33513 -0.01259
121 | 0.34931 -0.01212
122 | 0.36352 -0.01164
123 | 0.37777 -0.01116
124 | 0.39204 -0.01068
125 | 0.40631 -0.01021
126 | 0.42059 -0.00973
127 | 0.43485 -0.00926
128 | 0.44909 -0.00879
129 | 0.46331 -0.00833
130 | 0.47751 -0.00788
131 | 0.49167 -0.00744
132 | 0.50582 -0.00700
133 | 0.51996 -0.00658
134 | 0.53409 -0.00617
135 | 0.54821 -0.00576
136 | 0.55584 -0.00555
137 | 0.56553 -0.00528
138 | 0.57591 -0.00500
139 | 0.58944 -0.00464
140 | 0.60297 -0.00429
141 | 0.60936 -0.00413
142 | 0.61664 -0.00394
143 | 0.63027 -0.00361
144 | 0.64389 -0.00329
145 | 0.65369 -0.00307
146 | 0.66271 -0.00287
147 | 0.67110 -0.00269
148 | 0.68471 -0.00241
149 | 0.69832 -0.00214
150 | 0.71328 -0.00186
151 | 0.72512 -0.00166
152 | 0.73843 -0.00144
153 | 0.74412 -0.00135
154 | 0.75000 -0.00126
155 | 0.75389 -0.00134
156 | 0.75850 -0.00144
157 | 0.76542 -0.00158
158 | 0.77885 -0.00187
159 | 0.79226 -0.00218
160 | 0.80565 -0.00251
161 | 0.81919 -0.00286
162 | 0.83273 -0.00322
163 | 0.84626 -0.00360
164 | 0.85981 -0.00400
165 | 0.87336 -0.00442
166 | 0.88690 -0.00486
167 | 0.90046 -0.00532
168 | 0.91405 -0.00579
169 | 0.92766 -0.00628
170 | 0.94128 -0.00678
171 | 0.95496 -0.00730
172 | 0.96863 -0.00785
173 | 0.98209 -0.00840
174 | 0.99400 -0.00891
175 | 0.99988 -0.00916
176 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/ag40d-02r-unreflexed.dat:
--------------------------------------------------------------------------------
1 | AG40-Unreflexed
2 | 1 -0.008246874
3 | 0.994054 -0.007440362
4 | 0.982165 -0.005655442
5 | 0.968707 -0.003632764
6 | 0.955028 -0.001641374
7 | 0.941303 0.000363622
8 | 0.927596 0.002362989
9 | 0.913882 0.004403601
10 | 0.900153 0.006448736
11 | 0.886424 0.008485871
12 | 0.872689 0.010505216
13 | 0.858978 0.012503723
14 | 0.845256 0.014488614
15 | 0.831558 0.016455667
16 | 0.817862 0.01840065
17 | 0.804186 0.020320936
18 | 0.790513 0.022215117
19 | 0.77685 0.024079949
20 | 0.763195 0.025910501
21 | 0.758006 0.026596595
22 | 0.755235 0.026961301
23 | 0.751672 0.027504648
24 | 0.747315 0.028133
25 | 0.736722 0.02951
26 | 0.723013 0.031247
27 | 0.71266 0.032532
28 | 0.695454 0.034604
29 | 0.681588 0.036212
30 | 0.667686 0.037773
31 | 0.656489 0.038994
32 | 0.65092 0.039589
33 | 0.639796 0.040751
34 | 0.625817 0.042169
35 | 0.613984 0.04333
36 | 0.59788 0.044855
37 | 0.583944 0.046121
38 | 0.570012 0.047339
39 | 0.558942 0.048272
40 | 0.549985 0.049003
41 | 0.541959 0.04964
42 | 0.528043 0.050704
43 | 0.514128 0.051716
44 | 0.500179 0.052677
45 | 0.4862 0.053585
46 | 0.472209 0.054436
47 | 0.458206 0.055229
48 | 0.444178 0.055962
49 | 0.430126 0.056635
50 | 0.416049 0.057244
51 | 0.401961 0.057786
52 | 0.387896 0.058256
53 | 0.373869 0.058654
54 | 0.359878 0.058976
55 | 0.345919 0.059218
56 | 0.331997 0.059377
57 | 0.318109 0.059451
58 | 0.304252 0.059436
59 | 0.29043 0.059325
60 | 0.276625 0.059117
61 | 0.262828 0.058803
62 | 0.249051 0.058379
63 | 0.235294 0.057838
64 | 0.221551 0.057169
65 | 0.207837 0.056364
66 | 0.194155 0.055424
67 | 0.180501 0.054331
68 | 0.1669 0.053074
69 | 0.153345 0.05164
70 | 0.139858 0.050012
71 | 0.126454 0.048171
72 | 0.113141 0.046094
73 | 0.099962 0.043759
74 | 0.086936 0.041134
75 | 0.074119 0.038197
76 | 0.061549 0.034907
77 | 0.049346 0.031231
78 | 0.037694 0.027122
79 | 0.026971 0.022619
80 | 0.017869 0.017982
81 | 0.011096 0.013717
82 | 0.006584 0.01018
83 | 0.003679 0.007316
84 | 0.001804 0.00493
85 | 0.000652 0.002875
86 | 0.000091 0.001085
87 | 0.000013 -0.000428
88 | 0.000284 -0.00183
89 | 0.001126 -0.003269
90 | 0.002626 -0.004743
91 | 0.004894 -0.006315
92 | 0.008268 -0.008084
93 | 0.01325 -0.010082
94 | 0.020143 -0.012183
95 | 0.028974 -0.014226
96 | 0.039695 -0.016113
97 | 0.051627 -0.017698
98 | 0.06419 -0.018957
99 | 0.077232 -0.019943
100 | 0.09087 -0.020715
101 | 0.105062 -0.021304
102 | 0.119601 -0.021732
103 | 0.134234 -0.022023
104 | 0.14885 -0.022192
105 | 0.163428 -0.022266
106 | 0.177968 -0.022262
107 | 0.192444 -0.02219
108 | 0.206857 -0.022064
109 | 0.22109 -0.021895
110 | 0.235287 -0.021692
111 | 0.249436 -0.021456
112 | 0.26357 -0.021192
113 | 0.277689 -0.0209
114 | 0.291816 -0.020583
115 | 0.305952 -0.020243
116 | 0.320107 -0.01988
117 | 0.33429 -0.019499
118 | 0.3485 -0.019103
119 | 0.36273 -0.01869
120 | 0.377003 -0.018266
121 | 0.391304 -0.017831
122 | 0.405592 -0.017386
123 | 0.419896 -0.016934
124 | 0.434181 -0.016474
125 | 0.448442 -0.016011
126 | 0.462684 -0.015541
127 | 0.476907 -0.015066
128 | 0.491095 -0.014588
129 | 0.505262 -0.014108
130 | 0.519422 -0.013624
131 | 0.533574 -0.013141
132 | 0.547715 -0.012658
133 | 0.555357 -0.012396
134 | 0.565055 -0.012063
135 | 0.575458 -0.011709
136 | 0.589006 -0.011247
137 | 0.602553 -0.010788
138 | 0.608953 -0.010571
139 | 0.616233 -0.010326
140 | 0.629888 -0.009871
141 | 0.643526 -0.00942
142 | 0.653333 -0.009098
143 | 0.662365 -0.008801
144 | 0.670765 -0.008529
145 | 0.6844 -0.008091
146 | 0.69802 -0.007656
147 | 0.712999 -0.007185
148 | 0.724857 -0.006818
149 | 0.738189 -0.006409
150 | 0.743882 -0.006236
151 | 0.74795 -0.006114
152 | 0.753502 -0.006070218
153 | 0.758125 -0.006093558
154 | 0.765054 -0.006130377
155 | 0.778506 -0.006205845
156 | 0.791927 -0.006291231
157 | 0.805336 -0.006383199
158 | 0.818895 -0.006487401
159 | 0.832453 -0.006601568
160 | 0.846006 -0.006727561
161 | 0.859583 -0.006869392
162 | 0.873153 -0.007021978
163 | 0.886712 -0.00719118
164 | 0.900308 -0.007378674
165 | 0.913918 -0.007572656
166 | 0.927552 -0.007793475
167 | 0.941205 -0.008026958
168 | 0.954907 -0.008279151
169 | 0.968612 -0.008538449
170 | 0.982101 -0.008816208
171 | 0.994042 -0.009073943
172 | 1 -0.009202874
173 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/ag41d-02r-unreflexed.dat:
--------------------------------------------------------------------------------
1 | AG41-Unreflexed
2 | 1 -0.008255874
3 | 0.994121 -0.0074777
4 | 0.982227 -0.005781605
5 | 0.968763 -0.003859719
6 | 0.955081 -0.001962224
7 | 0.94135 -0.0000560187
8 | 0.927639 0.001844488
9 | 0.913916 0.003771414
10 | 0.900179 0.005701828
11 | 0.886445 0.007621138
12 | 0.872701 0.009524797
13 | 0.858984 0.011407513
14 | 0.845255 0.013278648
15 | 0.83155 0.015128946
16 | 0.817849 0.016959104
17 | 0.804165 0.018766669
18 | 0.790488 0.020548989
19 | 0.77682 0.022304995
20 | 0.763159 0.024032758
21 | 0.75797 0.024680851
22 | 0.755255 0.025020603
23 | 0.753334 0.025259645
24 | 0.751303 0.025582526
25 | 0.74724 0.026129
26 | 0.736641 0.027419
27 | 0.722923 0.02906
28 | 0.712568 0.030277
29 | 0.695356 0.032252
30 | 0.681487 0.033796
31 | 0.667585 0.035302
32 | 0.656387 0.036485
33 | 0.65082 0.037063
34 | 0.639696 0.038198
35 | 0.62572 0.039587
36 | 0.613889 0.040729
37 | 0.597788 0.042236
38 | 0.583857 0.043494
39 | 0.569929 0.044709
40 | 0.558864 0.045645
41 | 0.549911 0.04638
42 | 0.541887 0.047023
43 | 0.527977 0.048103
44 | 0.514069 0.049137
45 | 0.500127 0.050125
46 | 0.486154 0.051065
47 | 0.472171 0.051954
48 | 0.458177 0.05279
49 | 0.444155 0.053574
50 | 0.430111 0.054301
51 | 0.416042 0.054972
52 | 0.401962 0.055581
53 | 0.387905 0.056119
54 | 0.373885 0.056585
55 | 0.3599 0.056976
56 | 0.345948 0.05729
57 | 0.332032 0.057523
58 | 0.31815 0.057673
59 | 0.304299 0.057733
60 | 0.29048 0.057702
61 | 0.276681 0.057573
62 | 0.262888 0.057341
63 | 0.249112 0.056999
64 | 0.235358 0.056541
65 | 0.221615 0.055959
66 | 0.207901 0.055241
67 | 0.19422 0.054389
68 | 0.180563 0.053385
69 | 0.166961 0.052219
70 | 0.153402 0.050876
71 | 0.139909 0.04934
72 | 0.126497 0.047592
73 | 0.113175 0.045609
74 | 0.099986 0.04337
75 | 0.086946 0.04084
76 | 0.074114 0.037994
77 | 0.061528 0.034784
78 | 0.04931 0.031172
79 | 0.037646 0.027115
80 | 0.026913 0.022645
81 | 0.017809 0.018019
82 | 0.011042 0.013753
83 | 0.006537 0.010206
84 | 0.003646 0.007329
85 | 0.001787 0.004936
86 | 0.000649 0.002874
87 | 0.000094 0.001083
88 | 0.00001 -0.00043
89 | 0.0003 -0.001828
90 | 0.00115 -0.003258
91 | 0.00268 -0.0047
92 | 0.00499 -0.006214
93 | 0.0084 -0.007903
94 | 0.01342 -0.009799
95 | 0.02034 -0.011788
96 | 0.02919 -0.013716
97 | 0.03993 -0.015495
98 | 0.05187 -0.016987
99 | 0.06444 -0.01817
100 | 0.07748 -0.019097
101 | 0.09112 -0.01982
102 | 0.10531 -0.020365
103 | 0.11984 -0.020754
104 | 0.13447 -0.021005
105 | 0.14909 -0.021136
106 | 0.16366 -0.02117
107 | 0.17819 -0.021128
108 | 0.19267 -0.021019
109 | 0.20707 -0.020856
110 | 0.2213 -0.020652
111 | 0.2355 -0.020411
112 | 0.24964 -0.020137
113 | 0.26377 -0.019836
114 | 0.27788 -0.019508
115 | 0.29201 -0.019159
116 | 0.30614 -0.018789
117 | 0.32029 -0.018402
118 | 0.33447 -0.018
119 | 0.34867 -0.017588
120 | 0.3629 -0.017164
121 | 0.37717 -0.016732
122 | 0.39147 -0.016291
123 | 0.40575 -0.015843
124 | 0.42005 -0.01539
125 | 0.43433 -0.014933
126 | 0.44859 -0.014474
127 | 0.46283 -0.014011
128 | 0.47705 -0.013544
129 | 0.49123 -0.013079
130 | 0.50539 -0.012611
131 | 0.51955 -0.012143
132 | 0.5337 -0.011679
133 | 0.54784 -0.011215
134 | 0.55548 -0.010965
135 | 0.56517 -0.010649
136 | 0.57557 -0.010312
137 | 0.58912 -0.009876
138 | 0.60266 -0.009444
139 | 0.60906 -0.009241
140 | 0.61634 -0.009012
141 | 0.62999 -0.008585
142 | 0.64363 -0.008162
143 | 0.65343 -0.007859
144 | 0.66246 -0.007584
145 | 0.67086 -0.00733
146 | 0.68449 -0.006923
147 | 0.69811 -0.006521
148 | 0.71309 -0.006089
149 | 0.72494 -0.005751
150 | 0.73827 -0.005381
151 | 0.74396 -0.00523
152 | 0.74801 -0.00512
153 | 0.75362 -0.005095336
154 | 0.75824 -0.005131572
155 | 0.76516 -0.005193076
156 | 0.77862 -0.005314824
157 | 0.79203 -0.005451826
158 | 0.80544 -0.005595828
159 | 0.819 -0.005753065
160 | 0.83255 -0.005923953
161 | 0.8461 -0.006108842
162 | 0.85968 -0.006308777
163 | 0.87324 -0.006520014
164 | 0.8868 -0.006748251
165 | 0.90039 -0.006994535
166 | 0.914 -0.007248517
167 | 0.92763 -0.007525198
168 | 0.94128 -0.007811576
169 | 0.95498 -0.008114699
170 | 0.96868 -0.008425822
171 | 0.98217 -0.008748616
172 | 0.99411 -0.009049316
173 | 1 -0.009193874
174 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/ag42d-02r-unreflexed.dat:
--------------------------------------------------------------------------------
1 | AG42-Unreflexed
2 | 1 -0.008267874
3 | 0.994122 -0.007529735
4 | 0.982219 -0.005968326
5 | 0.968749 -0.00419923
6 | 0.955058 -0.002442421
7 | 0.941318 -0.000680902
8 | 0.927601 0.001070814
9 | 0.913869 0.002829054
10 | 0.900122 0.004582818
11 | 0.886376 0.006327546
12 | 0.872623 0.008057519
13 | 0.858897 0.00976855
14 | 0.845158 0.011465034
15 | 0.831443 0.01314068
16 | 0.817732 0.014799187
17 | 0.804039 0.016436066
18 | 0.790353 0.018049701
19 | 0.776676 0.019645021
20 | 0.763009 0.021217992
21 | 0.757817 0.021809191
22 | 0.755099 0.022118047
23 | 0.753313 0.022327378
24 | 0.750566 0.022694247
25 | 0.746861 0.023129
26 | 0.736253 0.024301
27 | 0.722529 0.025799
28 | 0.712166 0.026913
29 | 0.694949 0.028739
30 | 0.681078 0.030186
31 | 0.667175 0.03161
32 | 0.655978 0.032737
33 | 0.65041 0.033291
34 | 0.639287 0.034383
35 | 0.625313 0.035729
36 | 0.613484 0.036843
37 | 0.59739 0.038323
38 | 0.583464 0.039568
39 | 0.569543 0.040778
40 | 0.558482 0.041717
41 | 0.549531 0.04246
42 | 0.541513 0.043112
43 | 0.527611 0.044214
44 | 0.513711 0.045278
45 | 0.499777 0.046306
46 | 0.485812 0.047293
47 | 0.471838 0.048238
48 | 0.457851 0.04914
49 | 0.443839 0.049998
50 | 0.429805 0.050809
51 | 0.415745 0.051571
52 | 0.401674 0.052279
53 | 0.387626 0.052918
54 | 0.373613 0.053485
55 | 0.359635 0.05398
56 | 0.345689 0.054401
57 | 0.331779 0.054743
58 | 0.317902 0.055005
59 | 0.304056 0.055178
60 | 0.290242 0.055263
61 | 0.276443 0.055252
62 | 0.262655 0.055139
63 | 0.248879 0.054919
64 | 0.235125 0.054586
65 | 0.221383 0.05413
66 | 0.207667 0.053542
67 | 0.193984 0.052819
68 | 0.180324 0.051945
69 | 0.166718 0.050909
70 | 0.153153 0.049698
71 | 0.139654 0.048293
72 | 0.126235 0.04668
73 | 0.112905 0.044835
74 | 0.099705 0.042735
75 | 0.086657 0.040342
76 | 0.073815 0.037625
77 | 0.061223 0.034531
78 | 0.049005 0.031011
79 | 0.03735 0.027024
80 | 0.02664 0.0226
81 | 0.017573 0.017996
82 | 0.010854 0.013734
83 | 0.006401 0.010185
84 | 0.003556 0.00731
85 | 0.00174 0.004917
86 | 0.000638 0.002861
87 | 0.000097 0.001078
88 | 0.00001 -0.000434
89 | 0.00033 -0.001831
90 | 0.00122 -0.003259
91 | 0.00282 -0.004656
92 | 0.00519 -0.006088
93 | 0.00868 -0.007656
94 | 0.01377 -0.009398
95 | 0.02076 -0.011214
96 | 0.02966 -0.012967
97 | 0.04043 -0.014578
98 | 0.05239 -0.015928
99 | 0.06497 -0.016996
100 | 0.07802 -0.01783
101 | 0.09166 -0.018477
102 | 0.10585 -0.018957
103 | 0.12039 -0.019282
104 | 0.13501 -0.019471
105 | 0.14962 -0.019546
106 | 0.16419 -0.019519
107 | 0.17872 -0.019418
108 | 0.19318 -0.019253
109 | 0.20758 -0.019034
110 | 0.2218 -0.018773
111 | 0.23599 -0.018475
112 | 0.25014 -0.018147
113 | 0.26429 -0.017789
114 | 0.27843 -0.017405
115 | 0.29259 -0.017005
116 | 0.30675 -0.016589
117 | 0.32093 -0.016165
118 | 0.33514 -0.015731
119 | 0.34938 -0.015294
120 | 0.36364 -0.014854
121 | 0.37795 -0.014408
122 | 0.3923 -0.013957
123 | 0.40665 -0.013501
124 | 0.42102 -0.013044
125 | 0.43539 -0.012588
126 | 0.44974 -0.012132
127 | 0.46409 -0.011676
128 | 0.47843 -0.011218
129 | 0.49274 -0.010768
130 | 0.50705 -0.010315
131 | 0.52135 -0.009868
132 | 0.53565 -0.009425
133 | 0.54996 -0.008986
134 | 0.55769 -0.008753
135 | 0.56751 -0.008458
136 | 0.57804 -0.008143
137 | 0.59177 -0.007743
138 | 0.60551 -0.007346
139 | 0.612 -0.007163
140 | 0.61938 -0.006952
141 | 0.63324 -0.006562
142 | 0.64709 -0.006178
143 | 0.65706 -0.005902
144 | 0.66624 -0.005654
145 | 0.67477 -0.005426
146 | 0.68865 -0.00506
147 | 0.70247 -0.004704
148 | 0.71711 -0.004341
149 | 0.72871 -0.004058
150 | 0.74176 -0.003758
151 | 0.74733 -0.003631
152 | 0.75243 -0.003606806
153 | 0.75692 -0.003662505
154 | 0.76153 -0.003728391
155 | 0.76845 -0.003825896
156 | 0.78188 -0.004022596
157 | 0.79528 -0.004235249
158 | 0.80865 -0.004464855
159 | 0.82217 -0.004704697
160 | 0.83566 -0.004966491
161 | 0.84914 -0.005238936
162 | 0.86261 -0.005524032
163 | 0.87605 -0.005829082
164 | 0.88947 -0.006144433
165 | 0.90288 -0.006475435
166 | 0.91627 -0.006817739
167 | 0.92965 -0.007171695
168 | 0.94301 -0.007529952
169 | 0.95637 -0.007902209
170 | 0.96969 -0.00828307
171 | 0.98277 -0.008661556
172 | 0.9943 -0.009014947
173 | 1 -0.009181874
174 |
--------------------------------------------------------------------------------
/wingribprofil/AGx/ag43d-02r-unreflexed.dat:
--------------------------------------------------------------------------------
1 | AG43-Unreflexed
2 | 1 -0.008290874
3 | 0.994122 -0.007622735
4 | 0.982211 -0.006255047
5 | 0.968731 -0.004708602
6 | 0.955033 -0.003155548
7 | 0.941286 -0.001618785
8 | 0.927559 -0.0000917197
9 | 0.913816 0.001415904
10 | 0.900057 0.002913086
11 | 0.886298 0.004398268
12 | 0.872535 0.00587559
13 | 0.858795 0.007333109
14 | 0.845047 0.008779908
15 | 0.831321 0.010198938
16 | 0.817601 0.011605759
17 | 0.803899 0.012990952
18 | 0.790202 0.01436597
19 | 0.77652 0.015723465
20 | 0.762847 0.017079646
21 | 0.757655 0.017584844
22 | 0.753555 0.017987932
23 | 0.751504 0.018186511
24 | 0.746396 0.018714
25 | 0.736182 0.019678
26 | 0.722449 0.020974
27 | 0.712079 0.021939
28 | 0.694854 0.023547
29 | 0.680994 0.024834
30 | 0.667152 0.026114
31 | 0.656047 0.027134
32 | 0.650529 0.027638
33 | 0.639521 0.028638
34 | 0.625729 0.029875
35 | 0.614079 0.030911
36 | 0.598268 0.032297
37 | 0.584604 0.03347
38 | 0.570964 0.034617
39 | 0.560118 0.035508
40 | 0.551347 0.036217
41 | 0.543486 0.036845
42 | 0.529844 0.037908
43 | 0.516181 0.038942
44 | 0.502461 0.039947
45 | 0.488681 0.040922
46 | 0.474855 0.041865
47 | 0.460966 0.04277
48 | 0.446995 0.043641
49 | 0.432972 0.04447
50 | 0.418879 0.045253
51 | 0.404777 0.045987
52 | 0.390748 0.046662
53 | 0.37682 0.047276
54 | 0.362969 0.047828
55 | 0.349192 0.048318
56 | 0.335488 0.048744
57 | 0.32184 0.049103
58 | 0.308245 0.049396
59 | 0.294671 0.049619
60 | 0.281084 0.04977
61 | 0.267439 0.049842
62 | 0.253734 0.049832
63 | 0.23998 0.04973
64 | 0.226171 0.049529
65 | 0.212313 0.049218
66 | 0.198409 0.048786
67 | 0.184437 0.048218
68 | 0.170434 0.047498
69 | 0.156398 0.04661
70 | 0.142394 0.045535
71 | 0.128435 0.044252
72 | 0.114544 0.04273
73 | 0.100804 0.040945
74 | 0.087299 0.038865
75 | 0.074221 0.036476
76 | 0.06157 0.033726
77 | 0.04928 0.03053
78 | 0.037539 0.026826
79 | 0.026738 0.022613
80 | 0.017603 0.01811
81 | 0.01084 0.01387
82 | 0.006368 0.010304
83 | 0.003523 0.007392
84 | 0.001718 0.004961
85 | 0.000637 0.002873
86 | 0.000106 0.001077
87 | 0.000021 -0.000433
88 | 0.000398 -0.001805
89 | 0.001337 -0.003164
90 | 0.002958 -0.004487
91 | 0.005376 -0.00583
92 | 0.008919 -0.007262
93 | 0.014077 -0.008805
94 | 0.021119 -0.010382
95 | 0.030061 -0.011886
96 | 0.040858 -0.013253
97 | 0.052834 -0.014389
98 | 0.065416 -0.015274
99 | 0.078462 -0.015943
100 | 0.092094 -0.016438
101 | 0.106275 -0.016779
102 | 0.120798 -0.016985
103 | 0.135412 -0.017072
104 | 0.150008 -0.01706
105 | 0.164564 -0.016963
106 | 0.179079 -0.016794
107 | 0.193533 -0.016564
108 | 0.207921 -0.016285
109 | 0.222129 -0.015964
110 | 0.236304 -0.01561
111 | 0.250428 -0.015228
112 | 0.264538 -0.014824
113 | 0.27863 -0.014401
114 | 0.292731 -0.013964
115 | 0.306843 -0.013516
116 | 0.320974 -0.013057
117 | 0.335131 -0.012591
118 | 0.349314 -0.012119
119 | 0.36352 -0.011643
120 | 0.377767 -0.011163
121 | 0.392043 -0.010684
122 | 0.406308 -0.010206
123 | 0.420588 -0.00973
124 | 0.43485 -0.009258
125 | 0.449087 -0.008791
126 | 0.463306 -0.008332
127 | 0.477507 -0.007882
128 | 0.491673 -0.007438
129 | 0.505819 -0.007005
130 | 0.519958 -0.006581
131 | 0.534089 -0.006167
132 | 0.54821 -0.005761
133 | 0.55584 -0.005546
134 | 0.565526 -0.005278
135 | 0.575914 -0.004995
136 | 0.589444 -0.004636
137 | 0.602973 -0.004287
138 | 0.609364 -0.004126
139 | 0.616635 -0.003944
140 | 0.63027 -0.003614
141 | 0.643891 -0.003294
142 | 0.653686 -0.003072
143 | 0.662706 -0.002874
144 | 0.671096 -0.002694
145 | 0.684712 -0.002411
146 | 0.698315 -0.002141
147 | 0.713276 -0.001864
148 | 0.725117 -0.001656
149 | 0.738434 -0.001436
150 | 0.74412 -0.001348
151 | 0.749907 -0.001262
152 | 0.753886 -0.001341619
153 | 0.758503 -0.00143575
154 | 0.765422 -0.00157822
155 | 0.778858 -0.00187213
156 | 0.792264 -0.002181992
157 | 0.805658 -0.002507436
158 | 0.819201 -0.00285508
159 | 0.832743 -0.003219689
160 | 0.84628 -0.003602124
161 | 0.85984 -0.004003361
162 | 0.873393 -0.004423354
163 | 0.886938 -0.004861067
164 | 0.900514 -0.005315863
165 | 0.914106 -0.005785217
166 | 0.927726 -0.006274548
167 | 0.941358 -0.006776298
168 | 0.955044 -0.007299932
169 | 0.968727 -0.007847462
170 | 0.982197 -0.008403558
171 | 0.994121 -0.0089057
172 | 1 -0.009158874
173 |
--------------------------------------------------------------------------------
/wingribprofil/ag40d-02r.dat:
--------------------------------------------------------------------------------
1 | 1 0.000478
2 | 0.994054 0.001077
3 | 0.982165 0.002447
4 | 0.968707 0.004
5 | 0.955028 0.005514
6 | 0.941303 0.00704
7 | 0.927596 0.008561
8 | 0.913882 0.010123
9 | 0.900153 0.011689
10 | 0.886424 0.013247
11 | 0.872689 0.014787
12 | 0.858978 0.016307
13 | 0.845256 0.017813
14 | 0.831558 0.019302
15 | 0.817862 0.020769
16 | 0.804186 0.022212
17 | 0.790513 0.023629
18 | 0.77685 0.025017
19 | 0.763195 0.026371
20 | 0.758006 0.026876
21 | 0.755235 0.027144
22 | 0.751672 0.027563
23 | 0.747315 0.028133
24 | 0.736722 0.02951
25 | 0.723013 0.031247
26 | 0.71266 0.032532
27 | 0.695454 0.034604
28 | 0.681588 0.036212
29 | 0.667686 0.037773
30 | 0.656489 0.038994
31 | 0.65092 0.039589
32 | 0.639796 0.040751
33 | 0.625817 0.042169
34 | 0.613984 0.04333
35 | 0.59788 0.044855
36 | 0.583944 0.046121
37 | 0.570012 0.047339
38 | 0.558942 0.048272
39 | 0.549985 0.049003
40 | 0.541959 0.04964
41 | 0.528043 0.050704
42 | 0.514128 0.051716
43 | 0.500179 0.052677
44 | 0.4862 0.053585
45 | 0.472209 0.054436
46 | 0.458206 0.055229
47 | 0.444178 0.055962
48 | 0.430126 0.056635
49 | 0.416049 0.057244
50 | 0.401961 0.057786
51 | 0.387896 0.058256
52 | 0.373869 0.058654
53 | 0.359878 0.058976
54 | 0.345919 0.059218
55 | 0.331997 0.059377
56 | 0.318109 0.059451
57 | 0.304252 0.059436
58 | 0.29043 0.059325
59 | 0.276625 0.059117
60 | 0.262828 0.058803
61 | 0.249051 0.058379
62 | 0.235294 0.057838
63 | 0.221551 0.057169
64 | 0.207837 0.056364
65 | 0.194155 0.055424
66 | 0.180501 0.054331
67 | 0.1669 0.053074
68 | 0.153345 0.05164
69 | 0.139858 0.050012
70 | 0.126454 0.048171
71 | 0.113141 0.046094
72 | 0.099962 0.043759
73 | 0.086936 0.041134
74 | 0.074119 0.038197
75 | 0.061549 0.034907
76 | 0.049346 0.031231
77 | 0.037694 0.027122
78 | 0.026971 0.022619
79 | 0.017869 0.017982
80 | 0.011096 0.013717
81 | 0.006584 0.01018
82 | 0.003679 0.007316
83 | 0.001804 0.00493
84 | 0.000652 0.002875
85 | 9.1e-05 0.001085
86 | 1.3e-05 0.000428
87 | 0.000284 0.00183
88 | 0.001126 0.003269
89 | 0.002626 0.004743
90 | 0.004894 0.006315
91 | 0.008268 0.008084
92 | 0.01325 0.010082
93 | 0.020143 0.012183
94 | 0.028974 0.014226
95 | 0.039695 0.016113
96 | 0.051627 0.017698
97 | 0.06419 0.018957
98 | 0.077232 0.019943
99 | 0.09087 0.020715
100 | 0.105062 0.021304
101 | 0.119601 0.021732
102 | 0.134234 0.022023
103 | 0.14885 0.022192
104 | 0.163428 0.022266
105 | 0.177968 0.022262
106 | 0.192444 0.02219
107 | 0.206857 0.022064
108 | 0.22109 0.021895
109 | 0.235287 0.021692
110 | 0.249436 0.021456
111 | 0.26357 0.021192
112 | 0.277689 0.0209
113 | 0.291816 0.020583
114 | 0.305952 0.020243
115 | 0.320107 0.01988
116 | 0.33429 0.019499
117 | 0.3485 0.019103
118 | 0.36273 0.01869
119 | 0.377003 0.018266
120 | 0.391304 0.017831
121 | 0.405592 0.017386
122 | 0.419896 0.016934
123 | 0.434181 0.016474
124 | 0.448442 0.016011
125 | 0.462684 0.015541
126 | 0.476907 0.015066
127 | 0.491095 0.014588
128 | 0.505262 0.014108
129 | 0.519422 0.013624
130 | 0.533574 0.013141
131 | 0.547715 0.012658
132 | 0.555357 0.012396
133 | 0.565055 0.012063
134 | 0.575458 0.011709
135 | 0.589006 0.011247
136 | 0.602553 0.010788
137 | 0.608953 0.010571
138 | 0.616233 0.010326
139 | 0.629888 0.009871
140 | 0.643526 0.00942
141 | 0.653333 0.009098
142 | 0.662365 0.008801
143 | 0.670765 0.008529
144 | 0.6844 0.008091
145 | 0.69802 0.007656
146 | 0.712999 0.007185
147 | 0.724857 0.006818
148 | 0.738189 0.006409
149 | 0.743882 0.006236
150 | 0.74795 0.006114
151 | 0.753502 0.005948
152 | 0.758125 0.00581
153 | 0.765054 0.005605
154 | 0.778506 0.005211
155 | 0.791927 0.004828
156 | 0.805336 0.004452
157 | 0.818895 0.004083
158 | 0.832453 0.003724
159 | 0.846006 0.003377
160 | 0.859583 0.003045
161 | 0.873153 0.002724
162 | 0.886712 0.00242
163 | 0.900308 0.002133
164 | 0.913918 0.001852
165 | 0.927552 0.001597
166 | 0.941205 0.001354
167 | 0.954907 0.001128
168 | 0.968612 0.000909
169 | 0.982101 0.000716
170 | 0.994042 0.000557
171 | 1 0.000478
172 |
--------------------------------------------------------------------------------
/wingribprofil/e205.dat:
--------------------------------------------------------------------------------
1 | E205 (10.48%)
2 | 1.00000 0.00000
3 | 0.99655 0.00039
4 | 0.98649 0.00174
5 | 0.97049 0.00427
6 | 0.94916 0.00778
7 | 0.92285 0.01196
8 | 0.89175 0.01668
9 | 0.85624 0.02199
10 | 0.81684 0.02786
11 | 0.77412 0.03419
12 | 0.72866 0.04088
13 | 0.68108 0.04777
14 | 0.63204 0.05470
15 | 0.58218 0.06147
16 | 0.53217 0.06782
17 | 0.48265 0.07342
18 | 0.43410 0.07785
19 | 0.38680 0.08081
20 | 0.34101 0.08214
21 | 0.29699 0.08177
22 | 0.25496 0.07970
23 | 0.21508 0.07606
24 | 0.17764 0.07111
25 | 0.14302 0.06507
26 | 0.11157 0.05811
27 | 0.08360 0.05040
28 | 0.05937 0.04211
29 | 0.03909 0.03344
30 | 0.02292 0.02461
31 | 0.01097 0.01589
32 | 0.00331 0.00766
33 | 0.00002 0.00055
34 | 0.00233 -0.00506
35 | 0.01065 -0.00988
36 | 0.02419 -0.01420
37 | 0.04291 -0.01776
38 | 0.06669 -0.02053
39 | 0.09534 -0.02252
40 | 0.12864 -0.02378
41 | 0.16627 -0.02436
42 | 0.20783 -0.02435
43 | 0.25290 -0.02384
44 | 0.30097 -0.02292
45 | 0.35149 -0.02168
46 | 0.40388 -0.02021
47 | 0.45751 -0.01859
48 | 0.51174 -0.01689
49 | 0.56591 -0.01516
50 | 0.61938 -0.01345
51 | 0.67149 -0.01180
52 | 0.72160 -0.01023
53 | 0.76911 -0.00876
54 | 0.81343 -0.00740
55 | 0.85400 -0.00614
56 | 0.89034 -0.00497
57 | 0.92195 -0.00380
58 | 0.94860 -0.00252
59 | 0.97017 -0.00125
60 | 0.98635 -0.00036
61 | 0.99651 -0.00003
62 | 1.00000 0.00000
63 |
--------------------------------------------------------------------------------
/wingribprofil/e207.dat:
--------------------------------------------------------------------------------
1 | E207 (12.04%)
2 | 1.00000 0.00000
3 | 0.99647 0.00045
4 | 0.98625 0.00202
5 | 0.97011 0.00489
6 | 0.94870 0.00881
7 | 0.92238 0.01337
8 | 0.89128 0.01841
9 | 0.85576 0.02400
10 | 0.81633 0.03011
11 | 0.77357 0.03666
12 | 0.72806 0.04352
13 | 0.68043 0.05055
14 | 0.63132 0.05759
15 | 0.58139 0.06441
16 | 0.53129 0.07079
17 | 0.48169 0.07638
18 | 0.43306 0.08075
19 | 0.38567 0.08362
20 | 0.33981 0.08483
21 | 0.29573 0.08430
22 | 0.25363 0.08205
23 | 0.21371 0.07819
24 | 0.17625 0.07300
25 | 0.14162 0.06669
26 | 0.11018 0.05944
27 | 0.08225 0.05143
28 | 0.05808 0.04282
29 | 0.03791 0.03383
30 | 0.02189 0.02468
31 | 0.01015 0.01565
32 | 0.00279 0.00714
33 | 0.00000 -0.00015
34 | 0.00304 -0.00626
35 | 0.01212 -0.01204
36 | 0.02628 -0.01750
37 | 0.04543 -0.02234
38 | 0.06943 -0.02649
39 | 0.09807 -0.02991
40 | 0.13109 -0.03257
41 | 0.16817 -0.03448
42 | 0.20893 -0.03565
43 | 0.25292 -0.03611
44 | 0.29966 -0.03586
45 | 0.34861 -0.03487
46 | 0.39937 -0.03302
47 | 0.45165 -0.03044
48 | 0.50495 -0.02744
49 | 0.55860 -0.02425
50 | 0.61189 -0.02102
51 | 0.66414 -0.01787
52 | 0.71467 -0.01488
53 | 0.76283 -0.01212
54 | 0.80796 -0.00963
55 | 0.84948 -0.00744
56 | 0.88681 -0.00555
57 | 0.91942 -0.00390
58 | 0.94699 -0.00239
59 | 0.96930 -0.00108
60 | 0.98598 -0.00026
61 | 0.99643 0.00000
62 | 1.00000 0.00000
63 |
--------------------------------------------------------------------------------
/wingribprofil/eppler/e205.dat:
--------------------------------------------------------------------------------
1 | E205 (10.48%)
2 | 1.00000 0.00000
3 | 0.99655 0.00039
4 | 0.98649 0.00174
5 | 0.97049 0.00427
6 | 0.94916 0.00778
7 | 0.92285 0.01196
8 | 0.89175 0.01668
9 | 0.85624 0.02199
10 | 0.81684 0.02786
11 | 0.77412 0.03419
12 | 0.72866 0.04088
13 | 0.68108 0.04777
14 | 0.63204 0.05470
15 | 0.58218 0.06147
16 | 0.53217 0.06782
17 | 0.48265 0.07342
18 | 0.43410 0.07785
19 | 0.38680 0.08081
20 | 0.34101 0.08214
21 | 0.29699 0.08177
22 | 0.25496 0.07970
23 | 0.21508 0.07606
24 | 0.17764 0.07111
25 | 0.14302 0.06507
26 | 0.11157 0.05811
27 | 0.08360 0.05040
28 | 0.05937 0.04211
29 | 0.03909 0.03344
30 | 0.02292 0.02461
31 | 0.01097 0.01589
32 | 0.00331 0.00766
33 | 0.00002 0.00055
34 | 0.00233 -0.00506
35 | 0.01065 -0.00988
36 | 0.02419 -0.01420
37 | 0.04291 -0.01776
38 | 0.06669 -0.02053
39 | 0.09534 -0.02252
40 | 0.12864 -0.02378
41 | 0.16627 -0.02436
42 | 0.20783 -0.02435
43 | 0.25290 -0.02384
44 | 0.30097 -0.02292
45 | 0.35149 -0.02168
46 | 0.40388 -0.02021
47 | 0.45751 -0.01859
48 | 0.51174 -0.01689
49 | 0.56591 -0.01516
50 | 0.61938 -0.01345
51 | 0.67149 -0.01180
52 | 0.72160 -0.01023
53 | 0.76911 -0.00876
54 | 0.81343 -0.00740
55 | 0.85400 -0.00614
56 | 0.89034 -0.00497
57 | 0.92195 -0.00380
58 | 0.94860 -0.00252
59 | 0.97017 -0.00125
60 | 0.98635 -0.00036
61 | 0.99651 -0.00003
62 | 1.00000 0.00000
63 |
--------------------------------------------------------------------------------
/wingribprofil/eppler/e207.dat:
--------------------------------------------------------------------------------
1 | E207 (12.04%)
2 | 1.00000 0.00000
3 | 0.99647 0.00045
4 | 0.98625 0.00202
5 | 0.97011 0.00489
6 | 0.94870 0.00881
7 | 0.92238 0.01337
8 | 0.89128 0.01841
9 | 0.85576 0.02400
10 | 0.81633 0.03011
11 | 0.77357 0.03666
12 | 0.72806 0.04352
13 | 0.68043 0.05055
14 | 0.63132 0.05759
15 | 0.58139 0.06441
16 | 0.53129 0.07079
17 | 0.48169 0.07638
18 | 0.43306 0.08075
19 | 0.38567 0.08362
20 | 0.33981 0.08483
21 | 0.29573 0.08430
22 | 0.25363 0.08205
23 | 0.21371 0.07819
24 | 0.17625 0.07300
25 | 0.14162 0.06669
26 | 0.11018 0.05944
27 | 0.08225 0.05143
28 | 0.05808 0.04282
29 | 0.03791 0.03383
30 | 0.02189 0.02468
31 | 0.01015 0.01565
32 | 0.00279 0.00714
33 | 0.00000 -0.00015
34 | 0.00304 -0.00626
35 | 0.01212 -0.01204
36 | 0.02628 -0.01750
37 | 0.04543 -0.02234
38 | 0.06943 -0.02649
39 | 0.09807 -0.02991
40 | 0.13109 -0.03257
41 | 0.16817 -0.03448
42 | 0.20893 -0.03565
43 | 0.25292 -0.03611
44 | 0.29966 -0.03586
45 | 0.34861 -0.03487
46 | 0.39937 -0.03302
47 | 0.45165 -0.03044
48 | 0.50495 -0.02744
49 | 0.55860 -0.02425
50 | 0.61189 -0.02102
51 | 0.66414 -0.01787
52 | 0.71467 -0.01488
53 | 0.76283 -0.01212
54 | 0.80796 -0.00963
55 | 0.84948 -0.00744
56 | 0.88681 -0.00555
57 | 0.91942 -0.00390
58 | 0.94699 -0.00239
59 | 0.96930 -0.00108
60 | 0.98598 -0.00026
61 | 0.99643 0.00000
62 | 1.00000 0.00000
63 |
--------------------------------------------------------------------------------
/wingribprofil/naca/naca0010.dat:
--------------------------------------------------------------------------------
1 | NACA 0010
2 | 1.0000 0.00105
3 | 0.9500 0.00672
4 | 0.9000 0.01207
5 | 0.8000 0.02187
6 | 0.7000 0.03053
7 | 0.6000 0.03803
8 | 0.5000 0.04412
9 | 0.4000 0.04837
10 | 0.3000 0.05002
11 | 0.2500 0.04952
12 | 0.2000 0.04782
13 | 0.1500 0.04455
14 | 0.1000 0.03902
15 | 0.0750 0.03500
16 | 0.0500 0.02962
17 | 0.0250 0.02178
18 | 0.0125 0.01578
19 | 0.0000 0.00000
20 | 0.0125 -0.01578
21 | 0.0250 -0.02178
22 | 0.0500 -0.02962
23 | 0.0750 -0.03500
24 | 0.1000 -0.03902
25 | 0.1500 -0.04455
26 | 0.2000 -0.04782
27 | 0.2500 -0.04952
28 | 0.3000 -0.05002
29 | 0.4000 -0.04837
30 | 0.5000 -0.04412
31 | 0.6000 -0.03803
32 | 0.7000 -0.03053
33 | 0.8000 -0.02187
34 | 0.9000 -0.01207
35 | 0.9500 -0.00672
36 | 1.0000 -0.00105
37 |
--------------------------------------------------------------------------------
/wingribprofil/naca/naca0012.dat:
--------------------------------------------------------------------------------
1 | NACA 0012 AIRFOILS
2 | 66. 66.
3 |
4 | 0.0000000 0.0000000
5 | 0.0005839 0.0042603
6 | 0.0023342 0.0084289
7 | 0.0052468 0.0125011
8 | 0.0093149 0.0164706
9 | 0.0145291 0.0203300
10 | 0.0208771 0.0240706
11 | 0.0283441 0.0276827
12 | 0.0369127 0.0311559
13 | 0.0465628 0.0344792
14 | 0.0572720 0.0376414
15 | 0.0690152 0.0406310
16 | 0.0817649 0.0434371
17 | 0.0954915 0.0460489
18 | 0.1101628 0.0484567
19 | 0.1257446 0.0506513
20 | 0.1422005 0.0526251
21 | 0.1594921 0.0543715
22 | 0.1775789 0.0558856
23 | 0.1964187 0.0571640
24 | 0.2159676 0.0582048
25 | 0.2361799 0.0590081
26 | 0.2570083 0.0595755
27 | 0.2784042 0.0599102
28 | 0.3003177 0.0600172
29 | 0.3226976 0.0599028
30 | 0.3454915 0.0595747
31 | 0.3686463 0.0590419
32 | 0.3921079 0.0583145
33 | 0.4158215 0.0574033
34 | 0.4397317 0.0563200
35 | 0.4637826 0.0550769
36 | 0.4879181 0.0536866
37 | 0.5120819 0.0521620
38 | 0.5362174 0.0505161
39 | 0.5602683 0.0487619
40 | 0.5841786 0.0469124
41 | 0.6078921 0.0449802
42 | 0.6313537 0.0429778
43 | 0.6545085 0.0409174
44 | 0.6773025 0.0388109
45 | 0.6996823 0.0366700
46 | 0.7215958 0.0345058
47 | 0.7429917 0.0323294
48 | 0.7638202 0.0301515
49 | 0.7840324 0.0279828
50 | 0.8035813 0.0258337
51 | 0.8224211 0.0237142
52 | 0.8405079 0.0216347
53 | 0.8577995 0.0196051
54 | 0.8742554 0.0176353
55 | 0.8898372 0.0157351
56 | 0.9045085 0.0139143
57 | 0.9182351 0.0121823
58 | 0.9309849 0.0105485
59 | 0.9427280 0.0090217
60 | 0.9534372 0.0076108
61 | 0.9630873 0.0063238
62 | 0.9716559 0.0051685
63 | 0.9791229 0.0041519
64 | 0.9854709 0.0032804
65 | 0.9906850 0.0025595
66 | 0.9947532 0.0019938
67 | 0.9976658 0.0015870
68 | 0.9994161 0.0013419
69 | 1.0000000 0.0012600
70 |
71 | 0.0000000 0.0000000
72 | 0.0005839 -.0042603
73 | 0.0023342 -.0084289
74 | 0.0052468 -.0125011
75 | 0.0093149 -.0164706
76 | 0.0145291 -.0203300
77 | 0.0208771 -.0240706
78 | 0.0283441 -.0276827
79 | 0.0369127 -.0311559
80 | 0.0465628 -.0344792
81 | 0.0572720 -.0376414
82 | 0.0690152 -.0406310
83 | 0.0817649 -.0434371
84 | 0.0954915 -.0460489
85 | 0.1101628 -.0484567
86 | 0.1257446 -.0506513
87 | 0.1422005 -.0526251
88 | 0.1594921 -.0543715
89 | 0.1775789 -.0558856
90 | 0.1964187 -.0571640
91 | 0.2159676 -.0582048
92 | 0.2361799 -.0590081
93 | 0.2570083 -.0595755
94 | 0.2784042 -.0599102
95 | 0.3003177 -.0600172
96 | 0.3226976 -.0599028
97 | 0.3454915 -.0595747
98 | 0.3686463 -.0590419
99 | 0.3921079 -.0583145
100 | 0.4158215 -.0574033
101 | 0.4397317 -.0563200
102 | 0.4637826 -.0550769
103 | 0.4879181 -.0536866
104 | 0.5120819 -.0521620
105 | 0.5362174 -.0505161
106 | 0.5602683 -.0487619
107 | 0.5841786 -.0469124
108 | 0.6078921 -.0449802
109 | 0.6313537 -.0429778
110 | 0.6545085 -.0409174
111 | 0.6773025 -.0388109
112 | 0.6996823 -.0366700
113 | 0.7215958 -.0345058
114 | 0.7429917 -.0323294
115 | 0.7638202 -.0301515
116 | 0.7840324 -.0279828
117 | 0.8035813 -.0258337
118 | 0.8224211 -.0237142
119 | 0.8405079 -.0216347
120 | 0.8577995 -.0196051
121 | 0.8742554 -.0176353
122 | 0.8898372 -.0157351
123 | 0.9045085 -.0139143
124 | 0.9182351 -.0121823
125 | 0.9309849 -.0105485
126 | 0.9427280 -.0090217
127 | 0.9534372 -.0076108
128 | 0.9630873 -.0063238
129 | 0.9716559 -.0051685
130 | 0.9791229 -.0041519
131 | 0.9854709 -.0032804
132 | 0.9906850 -.0025595
133 | 0.9947532 -.0019938
134 | 0.9976658 -.0015870
135 | 0.9994161 -.0013419
136 | 1.0000000 -.0012600
137 |
--------------------------------------------------------------------------------
/wingribprofil/naca/naca2412.dat:
--------------------------------------------------------------------------------
1 | NACA 2412
2 | 1.0000 0.0013
3 | 0.9500 0.0114
4 | 0.9000 0.0208
5 | 0.8000 0.0375
6 | 0.7000 0.0518
7 | 0.6000 0.0636
8 | 0.5000 0.0724
9 | 0.4000 0.0780
10 | 0.3000 0.0788
11 | 0.2500 0.0767
12 | 0.2000 0.0726
13 | 0.1500 0.0661
14 | 0.1000 0.0563
15 | 0.0750 0.0496
16 | 0.0500 0.0413
17 | 0.0250 0.0299
18 | 0.0125 0.0215
19 | 0.0000 0.0000
20 | 0.0125 -0.0165
21 | 0.0250 -0.0227
22 | 0.0500 -0.0301
23 | 0.0750 -0.0346
24 | 0.1000 -0.0375
25 | 0.1500 -0.0410
26 | 0.2000 -0.0423
27 | 0.2500 -0.0422
28 | 0.3000 -0.0412
29 | 0.4000 -0.0380
30 | 0.5000 -0.0334
31 | 0.6000 -0.0276
32 | 0.7000 -0.0214
33 | 0.8000 -0.0150
34 | 0.9000 -0.0082
35 | 0.9500 -0.0048
36 | 1.0000 -0.0013
37 |
--------------------------------------------------------------------------------