FreeCAD-Doc/localwiki/Macro_Airfoil_Import_%26_Scale-de.html
2018-07-19 18:47:02 -05:00

420 lines
18 KiB
HTML

<html><head><title>Macro Airfoil Import %26 Scale/de</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Macro Airfoil Import %26 Scale/de</h1></div>
<div id="mw-content-text" lang="de" dir="ltr" class="mw-content-ltr"><hr/><div class="mw-parser-output"><table class="fcinfobox wikitable ct" width="100%" style="float: right; width: 230px; margin-left: 10px;">
<tr>
<td class="ctTitle">
<h3><span class="mw-headline" id="Macro_Airfoil_Import_.26_Scale"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Text-x-python.png" class="image"><img alt="Text-x-python.png" src="32px-Text-x-python.png" width="32" height="32" srcset="/wiki/images/2/2c/Text-x-python.png 1.5x" /></a> Macro Airfoil Import &amp; Scale</span></h3>
</td></tr>
<tr>
<th class="ctOdd">Beschreibung
</th></tr>
<tr>
<td class="ctEven left">Trace the perimeter of a Airfoil from a .dat file.
</td></tr>
<tr>
<th class="ctOdd">Autor
</th></tr>
<tr>
<td class="ctEven"><a href="https://www.freecadweb.org/wiki/index.php?title=User:Quick61" title="User:Quick61">quick61</a>
</td></tr>
<tr>
<th class="ctOdd">Link
</th></tr>
<tr>
<td class="ctEven"><a href="https://www.freecadweb.org/wiki/index.php?title=Macros_recipes/de" title="Macros recipes/de">Liste von Macros</a><br /><a href="https://www.freecadweb.org/wiki/index.php?title=How_to_install_macros/de" title="How to install macros/de">How to install macros</a><br /><a href="https://www.freecadweb.org/wiki/index.php?title=Customize_Toolbars/de" title="Customize Toolbars/de">How to customize toolbars</a>
</td></tr>
<tr>
<th class="ctOdd">Version
</th></tr>
<tr>
<td class="ctEven macro-version">1.5 , 2.0 and 2.1
</td></tr>
<tr>
<th class="ctOdd">Datum zuletzt geändert
</th></tr>
<tr>
<td class="ctEven macro-date">2014-10-02
</td></tr>
<tr>
<th class="ctOdd">
</th></tr>
<tr>
<td class="ctToc"><br /><div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#Macro_Airfoil_Import_.26_Scale"><span class="tocnumber">1</span> <span class="toctext">Macro Airfoil Import &amp; Scale</span></a></li>
<li class="toclevel-1 tocsection-1"><a href="#How_To_Use_-_Version_1.5"><span class="tocnumber">2</span> <span class="toctext">How To Use - Version 1.5</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#Select_The_File"><span class="tocnumber">2.1</span> <span class="toctext">Select The File</span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#Enter_Chord_Length"><span class="tocnumber">2.2</span> <span class="toctext">Enter Chord Length</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-4"><a href="#How_To_Use_-_Version_2"><span class="tocnumber">3</span> <span class="toctext">How To Use - Version 2</span></a>
<ul>
<li class="toclevel-2 tocsection-5"><a href="#Editing_The_Default_Selection"><span class="tocnumber">3.1</span> <span class="toctext">Editing The Default Selection</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-6"><a href="#The_Macros"><span class="tocnumber">4</span> <span class="toctext">The Macros</span></a>
<ul>
<li class="toclevel-2 tocsection-7"><a href="#Version_1.5"><span class="tocnumber">4.1</span> <span class="toctext">Version 1.5</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#Version_2"><span class="tocnumber">4.2</span> <span class="toctext">Version 2</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="#Version_2.1"><span class="tocnumber">4.3</span> <span class="toctext">Version 2.1</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-10"><a href="#Link"><span class="tocnumber">5</span> <span class="toctext">Link</span></a></li>
</ul>
</div>
</td></tr>
</table>
<p><br />
</p><p>This Macro, when run, will first provide the user with a file browser to locate and select a .dat airfoil text file. Once selected, a chord length is entered and upon pressing the OK button, a properly scaled airfoil is produced. There are two versions provided here. Version 1.5 should work on FreeCAD versions, 0.13 stable as well as all 0.14 versions. Version 2 should only be used with FreeCAD versions equal to or greater than 0.14 3077 and will work best with versions built with OCE/OCC versions 6.7 or greater.
</p><p>See also <a href="Common_Airfoil_Data_Import.html" title="Common Airfoil Data Import">Common Airfoil Data Import</a>
</p><p><br />
<a href="https://www.freecadweb.org/wiki/index.php?title=File:Macro_Airfoil_Import_%26_Scale_00.png" class="image"><img alt="Macro Airfoil Import &amp; Scale 00.png" src="480px-Macro_Airfoil_Import_%26_Scale_00.png" width="480" height="423" srcset="/wiki/images/4/43/Macro_Airfoil_Import_%26_Scale_00.png 1.5x" /></a>
</p>
<div style="clear:both"></div>
<p><br />
</p>
<h2><span class="mw-headline" id="How_To_Use_-_Version_1.5">How To Use - Version 1.5</span></h2>
<h3><span class="mw-headline" id="Select_The_File">Select The File</span></h3>
<p>Running the Macro will first present the user with a file browser that will allow you to select the desired airfoil .dat file. Browse to where you have saved the airfoil file, select it and press Open.
</p>
<div class="center"><div class="floatnone"><a href="https://www.freecadweb.org/wiki/index.php?title=File:File_browser.png" class="image" title="File browser window for importing .dat airfoil files"><img alt="File browser window for importing .dat airfoil files" src="File_browser.png" width="859" height="496" /></a></div></div>
<h3><span class="mw-headline" id="Enter_Chord_Length">Enter Chord Length</span></h3>
<p>Once the airfoil file has been selected, a new dialog will appear asking for a chord length. Any length may be entered, in millimeters. Once your desired length is entered, the Macro will produce a Draft Wire (DWire) following the points described in the previously selected .dat airfoil file at the scale you entered for the chord length.
</p>
<div class="center"><div class="floatnone"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Chord_length.png" class="image" title="Chord length dialog for import and scale macro v1.5"><img alt="Chord length dialog for import and scale macro v1.5" src="Chord_length.png" width="378" height="146" /></a></div></div>
<p>The Airfoil, properly scaled, should now be ready for use in your project.
</p>
<h2><span class="mw-headline" id="How_To_Use_-_Version_2">How To Use - Version 2</span></h2>
<p>File selection is the same as version 1.5. With version 2 you now have the choice to either have the resulting airfoil made with a Draft Wire (DWire) or a Basic Spline (BSpline). As with version 1.5, you enter the desired chord length. Additionally you can now select which type of foil you want. Simply click on the BSpline radio button or leave as is for for the default DWire.
</p>
<div class="center"><div class="floatnone"><a href="https://www.freecadweb.org/wiki/index.php?title=File:V2_scale.png" class="image" title="Version 2 Airfoil Import and scale dialog with choice of DWire or BSpline"><img alt="Version 2 Airfoil Import and scale dialog with choice of DWire or BSpline" src="V2_scale.png" width="378" height="189" /></a></div></div>
<h3><span class="mw-headline" id="Editing_The_Default_Selection">Editing The Default Selection</span></h3>
<p>If you primarily wish to have your imported and scaled airfoils made with BSplines rather than DWires, the Marco may be edited to default to the Bspline. This is done by editing the line -
</p>
<pre>##exampleCode##
self.radio1.setChecked(True) </pre>
<p><br />
- and changing it to -<br />
</p>
<pre>##exampleCode##
self.radio2.setChecked(True) </pre><br />
<p>A note on this is included within the text of the macro.
</p>
<h2><span class="mw-headline" id="The_Macros">The Macros</span></h2>
<h3><span class="mw-headline" id="Version_1.5">Version 1.5</span></h3>
<pre># # # #
#
# AIRFOIL IMPORT &amp; SCALE v1.5
#
# Imports and scales an Airfoil in the form of a Draft Wire (DWire)
#
# # # #
from PySide import QtCore, QtGui
from PySide.QtGui import QLineEdit
import FreeCAD, FreeCADGui, Draft
import importAirfoilDAT
# Select .dat airfoil data file to be imported
filename = QtGui.QFileDialog.getOpenFileName(QtGui.qApp.activeWindow(),'Open An Airfoil File','*.dat')
class p():
def proceed(self):
try:
# This produces a scaled Airfoil with a DWire
scalefactor=float(self.s1.text())
f1=str(filename)
importAirfoilDAT.insert(f1,"Unnamed")
Draft.scale(App.ActiveDocument.ActiveObject,delta=App.Vector(scalefactor,scalefactor,scalefactor),center=App.Vector(0,0,0),legacy=True)
except:
FreeCAD.Console.PrintError("Error, not a valid .dat file\n")
self.close()
def close(self):
self.dialog.hide()
def __init__(self):
self.dialog = None
self.s1 = None
# Make dialog box and get the scale size
self.dialog = QtGui.QDialog()
self.dialog.resize(350,100)
self.dialog.setWindowTitle("Airfoil Import &amp; Scale")
la = QtGui.QVBoxLayout(self.dialog)
t1 = QtGui.QLabel("Chord Length")
la.addWidget(t1)
self.s1 = QtGui.QLineEdit()
la.addWidget(self.s1)
# Add OK / Cancel buttons
#ori okbox = QtGui.QDialogButtonBox(self.dialog)
#ori okbox.setOrientation(QtCore.Qt.Horizontal)
#ori okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel -PIPE- QtGui.QDialogButtonBox.Ok)
# modify original code for install with addon-install cause -PIPE- 05-12-2016 FC 0.16
okbox = QtGui.QDialogButtonBox(self.dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Ok)
cancelbox = QtGui.QDialogButtonBox(self.dialog)
cancelbox.setOrientation(QtCore.Qt.Horizontal)
cancelbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel)
cancelbox.move(0,62)
la.addWidget(okbox)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), self.proceed)
QtCore.QObject.connect(cancelbox, QtCore.SIGNAL("rejected()"), self.close)
QtCore.QMetaObject.connectSlotsByName(self.dialog)
self.dialog.show()
self.dialog.exec_()
p() </pre>
<h3><span class="mw-headline" id="Version_2">Version 2</span></h3>
<div id="itsfree" style="text-align:center;color:black;background:#FDE0A8;margin:1em 7em;padding:0.5em 2em;border:2px solid #FF5706;"><b>Warning - Using this Macro with versions of FreeCAD lesser than 0.14, revision 3077 will not produce the expected results when using the BSpline option and can result in FreeCAD crashing and loss of unsaved data!</b></div>
<pre>
# # # #
#
# AIRFOIL IMPORT &amp; SCALE v2.
#
# Imports and scales an Airfoil in the form of a Draft Wire (DWire) or Basic Spline (BSpline)
#
# For FreeCAD Versions = or &gt; 0.14 Revision 3077
#
# Works best with OCC/OCE = or &gt; 6.7
#
# # # #
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QLineEdit, QRadioButton
import FreeCAD, FreeCADGui, Draft
import importAirfoilDAT
# Select .dat airfoil data file to be imported
filename = QtGui.QFileDialog.getOpenFileName(QtGui.qApp.activeWindow(),'Open An Airfoil File','*.dat')
class p():
def proceed(self):
if self.radio1.isChecked():
try:
# This produces a scaled Airfoil with a DWire
scalefactor=float(self.s1.text())
f1=str(filename)
importAirfoilDAT.insert(f1,"Unnamed")
Draft.scale(App.ActiveDocument.ActiveObject,delta=App.Vector(scalefactor,scalefactor,scalefactor),center=App.Vector(0,0,0),legacy=True)
except:
FreeCAD.Console.PrintError("Error, not a valid .dat file\n")
self.close()
if self.radio2.isChecked():
try:
# This produces a scaled Airfoil with a BSpline
scalefactor=float(self.s1.text())
f1=str(filename)
importAirfoilDAT.insert(f1,"Unnamed")
points = FreeCAD.ActiveDocument.ActiveObject.Points
Draft.makeBSpline(points, closed=True)
Draft.scale(App.ActiveDocument.ActiveObject,delta=App.Vector(scalefactor,scalefactor,scalefactor),center=App.Vector(0,0,0),legacy=True)
App.getDocument("Unnamed").removeObject("DWire")
except:
FreeCAD.Console.PrintError("Error, not a valid .dat file\n")
self.close()
def close(self):
self.dialog.hide()
def __init__(self):
self.dialog = None
self.s1 = None
# Make dialog box and get the scale size
self.dialog = QtGui.QDialog()
self.dialog.resize(350,100)
self.dialog.setWindowTitle("Airfoil Import &amp; Scale")
la = QtGui.QVBoxLayout(self.dialog)
t1 = QtGui.QLabel("Chord Length")
la.addWidget(t1)
self.s1 = QtGui.QLineEdit()
la.addWidget(self.s1)
# Add radio buttons to select between DWire and BSpline
self.radio1 = QRadioButton("Make DWire")
self.radio2 = QRadioButton("Make BSpline")
# set default to DWire &amp; make radio buttons - Change self.radio1.setChecked(True) to
# self.radio2.setChecked(True) to set BSpline as default
self.radio1.setChecked(True)
la.addWidget(self.radio1)
la.addWidget(self.radio2)
# Add OK / Cancel buttons
okbox = QtGui.QDialogButtonBox(self.dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
la.addWidget(okbox)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), self.proceed)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), self.close)
QtCore.QMetaObject.connectSlotsByName(self.dialog)
self.dialog.show()
self.dialog.exec_()
p()
</pre>
<h3><span class="mw-headline" id="Version_2.1">Version 2.1</span></h3>
<p>Updated by mangtronix to use PySide instead of PyQt (used in older versions of FreeCAD)
</p>
<pre>
# # # #
#
# AIRFOIL IMPORT &amp; SCALE v2.1
#
# Imports and scales an Airfoil in the form of a Draft Wire (DWire) or Basic Spline (BSpline)
#
# For FreeCAD Versions = or &gt; 0.14 Revision 3703
#
# Works best with OCC/OCE = or &gt; 6.7
#
# # # #
from PySide import QtCore, QtGui
from PySide.QtGui import QLineEdit, QRadioButton
import FreeCAD, FreeCADGui, Draft
import importAirfoilDAT
# Select .dat airfoil data file to be imported
# PySide returns a tuple (filename, filter) instead of just a string like in PyQt
filename, filefilter = QtGui.QFileDialog.getOpenFileName(QtGui.qApp.activeWindow(),'Open An Airfoil File','*.dat')
class p():
def proceed(self):
global filename
if self.radio1.isChecked():
#if True:
try:
# This produces a scaled Airfoil with a DWire
scalefactor=float(self.s1.text())
f1=str(filename)
importAirfoilDAT.insert(f1,"Unnamed")
Draft.scale(App.ActiveDocument.ActiveObject,delta=App.Vector(scalefactor,scalefactor,scalefactor),center=App.Vector(0,0,0),legacy=True)
except Exception, e:
FreeCAD.Console.PrintError("Error, not a valid .dat file\n")
self.close()
if self.radio2.isChecked():
try:
# This produces a scaled Airfoil with a BSpline
scalefactor=float(self.s1.text())
f1=str(filename)
importAirfoilDAT.insert(f1,"Unnamed")
points = FreeCAD.ActiveDocument.ActiveObject.Points
Draft.makeBSpline(points, closed=True)
Draft.scale(App.ActiveDocument.ActiveObject,delta=App.Vector(scalefactor,scalefactor,scalefactor),center=App.Vector(0,0,0),legacy=True)
App.getDocument("Unnamed").removeObject("DWire")
except:
FreeCAD.Console.PrintError("Error, not a valid .dat file\n")
self.close()
def close(self):
self.dialog.hide()
def __init__(self):
self.dialog = None
self.s1 = None
# Make dialog box and get the scale size
self.dialog = QtGui.QDialog()
self.dialog.resize(350,100)
self.dialog.setWindowTitle("Airfoil Import &amp; Scale")
la = QtGui.QVBoxLayout(self.dialog)
t1 = QtGui.QLabel("Chord Length")
la.addWidget(t1)
self.s1 = QtGui.QLineEdit()
la.addWidget(self.s1)
# Add radio buttons to select between DWire and BSpline
self.radio1 = QRadioButton("Make DWire")
self.radio2 = QRadioButton("Make BSpline")
# set default to DWire &amp; make radio buttons - Change self.radio1.setChecked(True) to
# self.radio2.setChecked(True) to set BSpline as default
self.radio1.setChecked(True)
la.addWidget(self.radio1)
la.addWidget(self.radio2)
# Add OK / Cancel buttons
okbox = QtGui.QDialogButtonBox(self.dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
la.addWidget(okbox)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), self.proceed)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), self.close)
QtCore.QMetaObject.connectSlotsByName(self.dialog)
self.dialog.show()
self.dialog.exec_()
p()
</pre>
<h2><span class="mw-headline" id="Link">Link</span></h2>
<p>Discussion on <a rel="nofollow" class="external text" href="http://forum.freecadweb.org/viewtopic.php?f=22&amp;t=5554&amp;p=45137&amp;hilit=Airfoil#p45137">Forum</a>
</p><p><a rel="nofollow" class="external text" href="http://aerospace.illinois.edu/m-selig/ads/coord_database.html#N">UIUC Applied Aerodynamics Group Departement of Aerospace Engineering</a>
</p>
</div>
</div>
</div><div class="printfooter">
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Macro_Airfoil_Import_%26_Scale/de&amp;oldid=241107">http://www.freecadweb.org/wiki/index.php?title=Macro_Airfoil_Import_%26_Scale/de&amp;oldid=241107</a>"</div>
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
</body></html>