Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
New Custom Feature: HAVF Profiles - Standard Airfoil Profiles
We are releasing an exciting new Custom Feature!
Introducing HAVF Profiles, built in collaboration with Austin Holbrook and Greg Brown. This feature comes loaded with an extensive library of airfoil profiles, guaranteeing continuity at the leading edge and providing control over the core variables of the profile, such as chord length or angle of incidence.
We hope this feature will enhance your toolset when creating airfoils, not only with the preconfigured library of vectors but also with the tools to create custom libraries and vector profiles. Our user testing found greater surface quality and faster development times. We think the feature is robust, but let us know your thoughts in the comments.
You can find the custom feature here: https://cad.onshape.com/documents/33795c7f9b39612da14ee99a/v/5f0353863c39e4e7468cf450/e/7d0549e4402995ffee27b9c5
This project stemmed from a collaboration with RCTestFlight, as Daniel and Austin collaborate using Onshape. Find their propeller design competition here: https://youtu.be/oTpa0WVHspA
The feature will construct a profile using two Bezier splines, with guaranteed surface continuity at the leading edge. The custom feature comes with a library of profiles, but you can also create a custom profile using a vector approximation of the airfoils in this format:
1.00000000 0.00060380 0.79245558 0.01982307 0.20893634 0.09200306 0.28069787 0.01922811 0.31444604 0.07222109 0.00000000 0.05201070 0.00000000 0.00000000 0.00000000 -0.03961872 0.61853657 0.02424800 0.14054043 -0.03827816 0.56753783 0.00663705 0.93859584 -0.00533977 1.00000000 -0.00060620
Included in the custom feature is a segment of the Holbrook Aerospace Profile library; you can find an expanded library of airfoils on the Holbrook Aerospace website. [https://holbrookaerospace.com/product/album-2/]. If you wish to implement more vectors into your library, we have added the database Feature Studio tab, havfDatabaseExample.fs. As the airfoil profiles we included in the feature are proprietary the core library is hidden, you can add a second database or switch to your own set of vector profiles.
We are eager to see what you build with the new tool. Please add your comments so we can consider any future enhancements.
This is not an official Onshape feature, and maintenance is not guaranteed.
Comments
A few thoughts:
I wonder if there is a better approach to fitting a curve to the coordinate tables? If the goal is also to have any given profile blend smoothly into another, perhaps it would be better to space the CVs out in a consistent pattern along the chord length (X), and fit their Y positions so that the curves result in a good least squares fit to the coordinates? This would greatly improve the parameterization of the curves.
Learn more about the Gospel of Christ ( Here )
CADSharp - We make custom features and integrated Onshape apps! Learn How to FeatureScript Here 🔴
The tradition of spacing the x coordinates depending on the airfoil surface curvature and pitch relative to the chord at the location comes from the approximation made for classic airfoil software and makes sense there. Especially in the LE area it probably still does. Since there is a minimum control point density required for accuracy in the critical zones, equal spacing might result in much more control points in the less curved areas.
Note that I said “consistent” spacing, not equal spacing. I don’t know what the right answer is, but more density at the leading edge would make sense. There might even be a nice logarithmic spacing which is the most efficient. The first two CVs are going to need to be at the same X=0, but after that, the space between them will want to get gradually larger.
Many of the approximations I’ve seen end up with weird increased curvature at the trailing edge. I only know so much about airfoil design, but I assume that is an artifact, not the intended result. The NACA shapes have continuous mathematical definitions. I don’t know how to convert that directly to a Bézier, but at least the equations can be used to check the results.
https://en.wikipedia.org/wiki/NACA_airfoil
"I think the increased thickness factor of the AG03 foil on the far side of the loft is making most of the inconsistency. Your idea about spacing has some good points, especially for simpler foils like this. But I could solve more complex airfoils without crossing some X control points. For the sake of a low entropy library, I made all foils in this library have the same number of control points. I chose the current amount of inputs after a couple of weeks of trying to make them at different levels of detail, finding that this resolution was the minimum that I could make accurate fits for all airfoils with. I do think every foil has an ideal number of control points. It would be cool to see how that plays out in another version of the library, especially with spaced X inputs. I have a couple of ideas on how you could do that while still prioritizing accuracy."
The AG03 airfoil definitely has a nasty loop of CVs, but in very limited review of a few other profiles, zig-zags seemed to be common as well.
Technically, a single span Bézier is infinitely mathematically continuous, but that doesn't mean that it's always a smooth, fair curve. A degree-3 Bézier can create a cusp which is C^infinity, but only G^0 at the cusp. Onshape won't let you create cusps or self-intersecting loops, but mathematically, these degenerate cases exist.
With the degree of curves that you're creating, you won't see cusps or loops in the curve from a loop of CVs like you have, but you will get uneven parameterization. Notice how the isoparametric curves are bunched up where the CVs are looping.
When you're using the same curve at both end of surface, the parameterization doesn't matter so much, but watch what happens when you use different curves at the tip (see below). The isoparametric curves (which are straight lines in this case) fan out-or-in very differently depending on the parameterization of the tip curve. In this case, I'm using a boundary surface for the cleanest surface. If you use a loft instead of boundary it might do a better job of evening out the parameterization, but overall boundary would be a much better choice for downstream surfacing work.
Ans2): If you wanted to space out the X coordinates as evenly as possible, there are many ways that you could add that to the fitting function. There are often a few solution to an airfoil, especially for the more simple airfoils like the clarkY, n2412, etc (or ag03 in this case). I heavily disfavored reducing the control points count, because it reduced accuracy even with the simpler airfoils, and it added entropy to the library to have fewer coordinates for some airfoils, which I did not want. (Mostly for purposes related to the optimization utility of the library). I guess the question then is, if you add a spacing weight into the mix, how much do you prefer spacing to accuracy? I think the two best options would be to either A) Use the current library, and make X boundary conditions for all the X variables, each within their own range, and try to find better solution with those additional boundary conditions Add a spacing weight to the fitness function, and remove it near the end of a fitting optimization, pushing your solutions towards the most evenly spaced during almost the entire fitting optimization, until the last second when you prioritize accuracy.
That's just what I am thinking off the top of my head. Of course there are more options. But, what I think should be noted, is that some airfoils are just weird. There is no requirement for smoothness in the original coordinate database. Sometimes airfoils are just harder to find solutions to than others. Some airfoils that naturally have a lot of curvature are hard to fit. Some airfoils with low amount of coordinates can be hard to fit accurately to their original analog shape. Sometimes an airfoil coordinate file will appear normal, and have a very very very small disjoint in Y or X. With a library as large as 1600 airfoils, you will see all sorts of cases come up. Sometimes I think people underestimate how long some of these foils have been around, and how much of a game of telephone has been going on over the decades. So already, there is lots being lost, or redone differently, making all airfoils into splines. In some sense we are continuing the game of telephone here, but also making a new standard that won't require as much telephone in the future (hopefully). Once an airfoil is defined as a spline there is no more questions where the line lies, as there is between coordinates.
But, if there were a need, I do think there would be utility in making more solutions. But I think that might be an easy way to wade into deep waters. If you find a solution that is spaced more evenly, but is 10% less accurate, how do you decide which solution to keep? It's a big question. But the likely answer is that there is always a better solution. Perhaps when that becomes more apparent I will release an updated book of HAVF airfoil solutions. But! do not underestimate the solve time!!! I am not the best coder, but it did take me a while to run the compute for this library.
I think the best solution for now is the custom inputs. Having an airfoil be so adjustable and durable, means you can spend time making an airfoil. You are no longer adjusting a single profile on a single version of a single part. You can save the HAVF vector and use it forever. So there is much more incentive to make the adjustments you want. I will make more instructions about how to do that soon.
I'd be lying if I don't dream of having this all be simpler to do. Making a qualify hub interface or wing transitions is always a big job. Especially when you are about to go to tooling. If you'd think you get rid of most of the manual surfacing work by combing the existing library a certain way, that would certainly save me even more time. In your professional opinion, do you think this type of solution combing could decrease the surface modeling time by 90%? Do you think additional control points would need to be added to ensure no overlapping X control points for higher curvature foils? If more time could be saved, and you can get higher quality surfaces, I think there is a huge incentive to go back and take a second look. But the pessimist in my thinks that there is going to always be a large amount of manual surface work to do.
I think I have said about all I can. But I may actually not be the best person to ask. I have a lot of experience making the format, and dealing with the issues it creates, but I have been using it for a while now, and I may be used to the problems it causes. On last thing I would say, is that the HAVF format give a lot of power to the input. It's just raw splines and not safety rails. So if there is a bad input, you can totally make a bad airfoil, and cause yourself lot's of problems. I tried to exclude that as much as possible from the library in the book of course.
Of the airfoils that have overlapping X values, I would say a very small percentage of them have the discontinuous curvature. I have only found 2 in the last 9 or so months that I published. The library is not perfect, and neither is the format, but its very functional and useful. Like I have said before, I definitely have an interest in making more libraries, and this is undoubtedly utility in that pursuit, but I just don't have time right now.
I've seen this before in much more known contexts. Even if the numbers are correct to some number of decimal places to some perfect surface, they are rounded or truncated and fitting exactly to sampled points often produces bad surfaces.
I'm not an aeronautical engineer, but I've spent a lot of time trying to reconstruct really good surfaces from sampled data. In this case, if I were trying to develop a good algorithm, I would play with how to space out the CVs, the acceptable error band, and the number of CVs. In a perfect world, you'd also have some sort of "fairness" metric that you're optimizing for as well. Tons of research papers have been written on this topic, and there are a lot of different approaches.
I see a lot of people trying to work with airfoils or doing boat hulls using some level of incomplete information. Even when you have what seems like really good info, it can be really challenging without some sort of smoothing/fitting going on.
It seems like 7 or possibly a little higher would be better. When I've tried matching sampled curves with a curve that is too low of a degree, if I can get it to resolve, weird CV distribution often results. The minute I increase the degree to something that can manage the underlying constraints, the CV placement can be much more rational.
Let's assume you have a perfect mathematical definition of the airfoil, but you need to convert it to single span Béziers. In order to match an arbitrary perfect curve with G3 continuity at each end, you need at least a degree 7 curve (unless the perfect curve happens to be something more simple). If the middle of the airfoil has any complexity to it, you might need more than degree 7, or consider multi-span with lower degree (e.g. 5). One could argue that you don't need G3, but given the importance of the leading and trailing edges, I would assume that G3 matching would be a good idea.
https://www.youtube.com/watch?v=XH7auwT6p4Y
Hi
I saw the livestream "Design, Prototype, Fly: Behind the Scenes of Propeller Engineering" today.
One aspect I really enjoyed hearing was the open source and freely available aproach.
So here is my take on it. Over a year ago i developed the BezierAirfoilDesigner which is free and open source available on GitHub. It has allowed many people to do the same and more what Austin tries to do with the HAVF format, except there is no need to purchase a book. The latest version of the app has 201 downloads and 477 downloads over all versions.
https://github.com/marc-frank/BezierAirfoilDesigner
Using it I created this bezier curve fit of the AG03. The control point distribution is very clean.
Here are the control points in the .bez.dat format that has been used by this software:
AG03
1.0000000000000000 0.0006620000000000
0.5407881779306396 0.0478750578175452
0.2832687330676348 0.0659407753126509
0.1099098032037015 0.0583130212404137
0.0138200336718360 0.0385295801896016
0.0000000000000000 0.0067495733787609
0.0000000000000000 0.0000000000000000
0.0000000000000000 -0.0189113355181787
0.1558527243682143 -0.0132977046339958
0.1296095458933629 -0.0121306144620726
0.2038153136994605 -0.0126212315892537
0.5775243166434714 -0.0065806224573888
1.0000000000000000 -0.0005480000000000
This format is essentially the same as the Selig .dat airfoil format, just containing the control points of the bezier curve.
An alternative is the .bez format that allows some more flexibility:
AG03
Top Start
0.0000000000000000 0.0000000000000000
0.0000000000000000 0.0067495733787609
0.0138200336718360 0.0385295801896016
0.1099098032037015 0.0583130212404137
0.2832687330676348 0.0659407753126509
0.5407881779306396 0.0478750578175452
1.0000000000000000 0.0006620000000000
Top End
Bottom Start
0.0000000000000000 0.0000000000000000
0.0000000000000000 -0.0189113355181787
0.1558527243682143 -0.0132977046339958
0.1296095458933629 -0.0121306144620726
0.2038153136994605 -0.0126212315892537
0.5775243166434714 -0.0065806224573888
1.0000000000000000 -0.0005480000000000
Bottom End
These file formats have a simple name, don't draw attention to a paticular person, a tool has been written to import these files into Autodesk Fusion and have also been used as a data interchange format with other design software, the Airfoil Editor:
https://github.com/jxjo/PlanformCreator2/tree/main/AirfoilEditor_subtree
You can read more on this software in multiple different forums:
https://www.rc-network.de/threads/neue-app-bezierairfoildesigner.11962964/
https://www.rcgroups.com/forums/showthread.php?4390127-New-App-BezierAirfoilDesigner
https://forum.alofthobbies.com/index.php?threads/new-app-bezierairfoildesigner.3684/
It is planned to create another open GitHub repository to act as a free library of pre-fitted bezier airfoils where everybody can contribute. This offers continous addition of new airfoils and improvement of existing ones.
I also have about a million ideas I plan to implement in a rewrite V2 of the BezierAirfoilDesigner.
It might be useful to the Onshape team to be able to use this more open file format in addition to what has been created here.
Best Regards,
Marc Frank
Marc, there is nothing preventing anyone from using the HAVF format.
Although I have gone over it most thoroughly in my book, I have explained it openly on many occasions.
No doubt, others have done very similar things in the past.
So I hope you would consider an option to export any coordinates made in your tool in HAVF array (.bsa) format.
That way it can be used in this Onshape feature.
I am partial to the arrays because they paste so well into code and spreadsheets.
For instance, mixing solutions is very easy in array format in a spreadsheet by just averaging values from different rows.
But there is no monopoly on airfoil features in Onshape either.
If you want to differentiate your format in some way, the code for the "HAVF Profile" is open as well.
I believe you could use most of it to create another feature with other benefits you mentioned.
I like the ability of your program to use different number of control points.
The Onshape feature does not support that yet, but it can in the future.
As I indicated in an earlier post the HAVF format supports other CP counts, and it wouldn't be to hard to use the origin in the data as a divider between the two described splines.It could be used to create airfoils with uneven control point count between the splines.
But, if you have put this much effort into it I highly recommend that you buy the book.
Especially if each solution is taking about half an hour.
As I am sure you are aware from your experiences, there are lots of solutions to each airfoil.
Especially when you increase the control point count, the number of solutions starts to increase.
When making my book, only about 5% of the solutions I found made it into my book.
I had four of my workstations working on my library for a couple of months, just working on improving the solutions with the most error, until the entire library had an average error that I was happy with. So you can imagine how having this book in addition to an open library would be helpful.
I also just use my book to browse airfoils, and the PDF makes is easy to search through airfoils of certain thicknesses and camber very easily, as there is lots of information about each airfoil on every page, not just the HAVF coordiantes.
The book also has an intro about how the format works, its rules, 3 ways to create your own splines, and strategies to use the language to start optimizing geometry.
One thing I would like to note, is that separate from the solution for the spline coordinates my book attempts to correct as much entropy as possible from the original DAT (coordinate database). About 2/3rds of the airfoils in the public libraries violated at least one of the rules I set up, detailing what is required from the DAT file before the spline is fit to it. The AG03 is one of the more compliant airfoils based on the rules I set up. But crucially it does not have a leading edge point at 0,0 which HAVF requires. It looks as if you tool has already taken this into account, or at least the leading edge is anchored at the origin. But its these small errors that become the most annoying, especially when you are trying to mate the chord to a leading edge, or planform.
As for drawing attention to myself, I don't think I have been overly attention seeking in publishing my book.
Certainly publishing anything is an exercise in self importance, at least in some small measure.
But I have been perhaps lucky in the way that my book has been embraced by other people/youtube channels, and at Onshape.
As a business of course, my judgment has been that publishing anything in this way would be cause a net increase in clients.
And I don't feel to guilty about that strategy. I do hope it works XD.
But whether or not I am correct, morally or monetarily, I think there is plenty of room for anyone who want to publish toolscode/programs/libraries about these kinds of spline/vector based airfoils, HAVF or otherwise.
If anyone wanted to make their own HAVF foils, I published a method they could use within Onshape just before the live-stream.
So including the sample of solutions I provided in the stock feature, anyone can make their airfoils, or any existing airfoils within Onshape, meaning you should be able to do anything you want with the feature. Book or no book!
https://www.youtube.com/watch?v=3wYx2JUVkD8&lc=UgzgR1fanRrYGi46kSp4AaABAg