Draft: importAirfoilDAT, added proper docstrings to public functions

This commit is contained in:
vocx-fc
2019-08-04 21:58:52 -05:00
committed by Yorik van Havre
parent 4b4ed9c804
commit c63b9d798a

View File

@@ -39,8 +39,23 @@ if open.__module__ in ['__builtin__','io']:
useDraftWire = True
def decodeName(name):
"decodes encoded strings"
"""Decode encoded name.
Parameters
----------
name : str
The string to decode.
Returns
-------
tuple
(string)
A tuple containing the decoded `name` in 'latin1',
otherwise in 'utf8'.
If it fails it returns the original `name`.
"""
try:
decodedName = name
except UnicodeDecodeError:
@@ -54,15 +69,45 @@ def decodeName(name):
decodedName = name
return decodedName
def open(filename):
"called when freecad opens a file"
"""Open filename and parse.
Parameters
----------
filename : str
The path to the filename to be opened.
Returns
-------
App::Document
The new FreeCAD document object created, with the parsed information.
"""
docname = os.path.splitext(os.path.basename(filename))[0]
doc = FreeCAD.newDocument(docname)
doc.Label = decodeName(docname[:-4])
process(doc,filename)
def insert(filename,docname):
"called when freecad imports a file"
"""Get an active document and parse.
If no document exists, it is created.
Parameters
----------
filename : str
The path to the filename to be opened.
docname : str
The name of the active App::Document if one exists, or
of the new one created.
Returns
-------
App::Document
The active FreeCAD document, or the document created if none exists,
with the parsed information.
"""
groupname = os.path.splitext(os.path.basename(filename))[0]
try:
doc=FreeCAD.getDocument(docname)
@@ -72,10 +117,27 @@ def insert(filename,docname):
importgroup.Label = decodeName(groupname)
process(doc,filename)
def process(doc,filename):
# The common airfoil dat format has many flavors
# This code should work with almost every dialect
def process(doc,filename):
"""Process the filename and provide the document with the information.
The common airfoil dat format has many flavors.
This code should work with almost every dialect.
Parameters
----------
filename : str
The path to the filename to be opened.
docname : str
The name of the active App::Document if one exists, or
of the new one created.
Returns
-------
App::Document
The active FreeCAD document, or the document created if none exists,
with the parsed information.
"""
# Regex to identify data rows and throw away unused metadata
regex = re.compile(r'^\s*(?P<xval>(\-|\d*)\.\d+(E\-?\d+)?)\,?\s*(?P<yval>\-?\s*\d*\.\d+(E\-?\d+)?)\s*$')
afile = pythonopen(filename,'r')