pyGeo
- class pygeo.pyGeo.pyGeo(initType, *args, **kwargs)[source]
pyGeo is a (fairly) complete geometry surfacing engine. It performs multiple functions including producing surfaces from cross sections and globally fitting surfaces. The actual b-spline surfaces are of the pySpline Surface type.
The initialization type, initType, specifies what type of initialization will be used. There are currently 3 initialization types: plot3d, iges, and liftingSurface
- Parameters:
- initTypestr, {‘plot3d’, ‘iges’, ‘liftingSurface’}
A key word defining how this geo object will be defined.
- fileNamestr
Used for ‘plot3d’ and ‘iges’ only. Name of file to load.
- xsectionslist of filenames
List of the cross section coordinate files. Length = N
- scalelist or array
List of the scaling factors (chord) for cross sections. Length = N
- offsetList or array
List of x-y offset to apply before scaling. Length = N
- XsecList or array
List of spatial coordinates as to the placement of cross sections. Size (N, 3)
- x, y, zlist or array
If Xsec is not given, x,y,z arrays each of length N can be given individually.
- rotList or array
List of x-y-z rotations to apply to cross sections. Length = N
- rotX, rotY, rotZlist or arrays
Individual lists of x,y, and z rotations. Each of length N
- nCtlint
Number of control points to use for fitting. If it is None, local interpolation is performed which typically yields better results when a small number of sections. When trying to match wing geometries, a larger number of sections are often required. In this case, the number of control points also needs to be increased to prevent the file from becoming overly large.
- kSpanint
The spline order in span-wise direction. 2 for linear, 3 for quadratic and 4 for cubic
- kuint
Spline order in u (for plot3d input files only)
- kvint
Spline order in v (for plot3d input files only)
- nCtluint
Number of control points in u (for plot3d input files only)
- nCtlvint
Number of control points in v (for plot3d input files only)
- doConnectivity(fileName=None, nodeTol=0.0001, edgeTol=0.0001)[source]
This is the only public edge connectivity function. If fileName exists it loads the file OR it calculates the connectivity and saves to that file.
- Parameters:
- fileNamestr
Filename for con file
- nodeTolfloat
The tolerance for identical nodes
- edgeTolfloat
The tolerance for midpoint of edges being identical
- fitGlobal()[source]
Perform a global B-spline surface fit to determine the coefficients of each patch. This is only used with an plot3D init type
- getBounds(surfs=None)[source]
Determine the extents of the collection of surfaces
- Parameters:
- surfslist or array
Indices of surfaces defining subset for which to get the bounding box
- Returns:
- xMinarray of length 3
Lower corner of the bounding box
- xMaxarray of length 3
Upper corner of the bounding box
- projectCurve(curve, *args, surfs=None, **kwargs)[source]
Project a pySpline curve onto the pyGeo object
- Parameters:
- curvepySpline.Curve object
Curve to use for the intersection
- surfslist or array
Indices of surface defining subset for which to get the bounding box
- Returns:
- Try it and see!
Notes
This algorithm is not efficient at all. We basically do the curve-surface projection algorithm for each surface the loop back over them to see which is the best in terms of closest distance. This intent is that the curve actually intersects one of the surfaces.
- projectPoints(points, *args, surfs=None, **kwargs)[source]
Project on or more points onto the nearest surface.
- Parameters:
- pointslist or array
Singe point (size 3) or list of points size (N,3) points to project onto the surfaces
- surfslist or array
Indices of surface defining subset for which to use for projection
- Returns:
- ufloat or array
u parameter values of closest point
- vfloat or array
v parameter values of closest point
- PIDint or int array
Patch index corresponding to the u,v parameter values
- writeIGES(fileName)[source]
Write the surface to IGES format
- Parameters:
- fileNamestr
File name of iges file. Should have .igs extension.
- writeTecplot(fileName, orig=False, surfs=True, coef=True, directions=False, surfLabels=False, edgeLabels=False, nodeLabels=False)[source]
Write the pyGeo Object to Tecplot dat file
- Parameters:
- fileNamestr
File name for tecplot file. Should have .dat extension
- surfsbool
Flag to write discrete approximation of the actual surface
- coef: bool
Flag to write b-spline coefficients
- directionsbool
Flag to write surface direction visualization
- surfLabelsbool
Flag to write file with surface labels
- edgeLabelsbool
Flag to write file with edge labels
- nodeLabelsbool
Falg to write file with node labels