├── .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 | [![Total alerts](https://img.shields.io/lgtm/alerts/g/FredsFactory/FreeCAD_AirPlaneDesign.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/FredsFactory/FreeCAD_AirPlaneDesign/alerts/) [![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/FredsFactory/FreeCAD_AirPlaneDesign.svg?logo=lgtm&logoWidth=18)](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 | ![AirPlaneDesign-UI-screen](resources/WingResult.png) 8 | 9 | ![WingProfile-screenshot](resources/AirplaneDesign001.png) 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 | ![DAT folder](resources/Ribsfolder.png) 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 | ![DAT folder](resources/RIBSGUI1.png) 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 | ![RibGUI](resources/RibGUI.png) 64 | 65 | 66 | 2.Create a wing 67 | 68 | 69 | ![WingGUI](resources/WingGUI.png) 70 | 71 | The result 72 | 73 | ![WingGUI](resources/WingResult.png) 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 | Capture d’écran 2021-08-03 à 18 41 35 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 | 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 | 14 | 16 | 18 | 22 | 26 | 27 | 30 | 34 | 35 | 37 | 41 | 45 | 46 | 52 | 57 | 58 | 64 | 69 | 70 | 76 | 81 | 82 | 88 | 91 | 95 | 99 | 103 | 107 | 111 | 115 | 116 | 117 | 123 | 128 | 129 | 135 | 140 | 141 | 150 | 159 | 160 | 162 | 163 | 165 | image/svg+xml 166 | 168 | 169 | 171 | 172 | 174 | 176 | 178 | 180 | 181 | 182 | 183 | 188 | 192 | 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 | --------------------------------------------------------------------------------