Convert spline to tangent arcs (parametrically)?
Convert spline to tangent arcs (parametrically)?
(OP)
Hi,
I'm in a situation where I need to convert a spline into a series of arcs (due to an inexplicable factory request). The arcs need to match as close as possible to the original spline and they must be tangent to each other to preserve some smoothness. The spline is flush against a plane (it's a 2D spline, not 3D). I want to be able to specify the number of arcs, more or less evenly spaced. For example, the spline will be represented by 10 arcs. The arcs should be parametric, so if the shape or length of the spline changes, the arcs will act like well-behaved children and automatically update themselves to reflect the new spline shape. What is the best way to achieve this?
The Simplify Curve command is good, but doesn't fulfill all my requirements (not associative, cannot specify count, tangency uncertain).
This is what I've tried: Create a series of Point features defined as percentages along the spline, then create a sketch with 10 arcs, making the arc endpoints constrained to the points, and making the arcs tangent to each other. However, this solution fails because the arcs get over-constrained.
What could be the solution to this problem?
NX10.0 Win8.1 64bit i7-3770K 16GB QuadroK2200
I'm in a situation where I need to convert a spline into a series of arcs (due to an inexplicable factory request). The arcs need to match as close as possible to the original spline and they must be tangent to each other to preserve some smoothness. The spline is flush against a plane (it's a 2D spline, not 3D). I want to be able to specify the number of arcs, more or less evenly spaced. For example, the spline will be represented by 10 arcs. The arcs should be parametric, so if the shape or length of the spline changes, the arcs will act like well-behaved children and automatically update themselves to reflect the new spline shape. What is the best way to achieve this?
The Simplify Curve command is good, but doesn't fulfill all my requirements (not associative, cannot specify count, tangency uncertain).
This is what I've tried: Create a series of Point features defined as percentages along the spline, then create a sketch with 10 arcs, making the arc endpoints constrained to the points, and making the arcs tangent to each other. However, this solution fails because the arcs get over-constrained.
What could be the solution to this problem?
NX10.0 Win8.1 64bit i7-3770K 16GB QuadroK2200





RE: Convert spline to tangent arcs (parametrically)?
I experimented with a command I've not used before, but I feel it's pretty slick and it's all associative.
1. Use Insert -> Datum/Point -> Point Set to put 21 associative points on the spline, from 0 to 100 percent of the spline's arc length.
2. Use Insert -> Curve -> Arc/Circle to create 10 associative 3 point arcs. Each consecutive arc will use the same point that defined the endpoint of the previous arc.
3. Use Insert -> Derived Curve -> Smooth Curve String and select all 10 of the associative arcs as the Section Curves. For the fixed curves, again select the 10 arcs. Set your Continuity Level to G1 (tangency); DO NOT select Add Transition Fillets; set the Merge pulldown to None (else you'll end up with a spline again); set your desired Distance/Angular Thresholds and Maximum Deviation requirement (I used 0.001mm, 0.25°, 0.001mm in that order, top to bottom).
You should end up with 10 arcs that are now all tangent and are within 0.001mm of the points that defined the associative arcs. Again, not having your spline MIGHT affect the outcome, particularly with tangency.
Hope this works out for what you need.
Tim Flater
NX Designer
NX 9.0.3.4 Win7 Pro x64 SP1
Intel Xeon 2.53 GHz 6GB RAM
NVIDIA Quadro 4000 2GB
RE: Convert spline to tangent arcs (parametrically)?
Face Analysis Reflections (zebra stripes) applied to the faces will show you where the Smooth Curve String has issues, if any.
Tim Flater
NX Designer
NX 9.0.3.4 Win7 Pro x64 SP1
Intel Xeon 2.53 GHz 6GB RAM
NVIDIA Quadro 4000 2GB
RE: Convert spline to tangent arcs (parametrically)?
If it were me, I'd use the Sketch method and just live with the deviation on the "midpoint" of the arc. It probably depends on the shape of the spline and how close you/manufacturing need to match the original spline.
Tim Flater
NX Designer
NX 9.0.3.4 Win7 Pro x64 SP1
Intel Xeon 2.53 GHz 6GB RAM
NVIDIA Quadro 4000 2GB
RE: Convert spline to tangent arcs (parametrically)?
The Smooth Curve String method is the clear winner. You said that there was a problem with the tangency. This can be solved by NOT selecting any Fixed Curves and adjusting the Settings like this:
Distance Threshold: 0.1 mm
Angular Threshold: 5 deg
Maximum Deviation: 0.0001 mm
These settings will ensure that the resulting curve is smooth and with same number or arcs even when drastically changing the shape of the original spline, yet keeping the shape almost exactly the same as the original spline (much more so than the Sketch method).
Attached are images for proof (thin lines on the surface mean it's tangent).
RE: Convert spline to tangent arcs (parametrically)?
It will give you tangent arcs, which is pretty difficult using other methods.
It doesn't let you specify the number of arcs directly, but it lets you specify a deviation tolerance, which seems more useful, to me. If you want some specific number of arcs (and I can't imagine why you would), just play with the deviation tolerance until you get what you want.
It's not associative, but you can join the arcs together to get a spline (a rational one has exactly circular segments) and then you can replace your old spline by this new one in whatever features it appears. I suppose you could do this same replacement just by using the arcs (without joining them into a new spline), but the spline might be easier to manage.
RE: Convert spline to tangent arcs (parametrically)?
I tried adjusting all settings, but what happened when editing the original spline was tangency being lost along some face edges and you could visibly see these rough areas using Face Analysis -> Reflections and especially so with Radius Analysis. Not suggesting you avoid your chosen method, just throwing caution into the wind.
My gut tells me this method may work great for some spline shapes and edits but might be a total failure with other spline shapes. Sharp transitions might become more problematic.
Glad we got something suitable for you, nonetheless.
Tim Flater
NX Designer
NX 9.0.3.4 Win7 Pro x64 SP1
Intel Xeon 2.53 GHz 6GB RAM
NVIDIA Quadro 4000 2GB
RE: Convert spline to tangent arcs (parametrically)?
But where does it let you choose deviation tolerance? With NX10 you have to change the Distance Tolerance in modeling preferences (not very user friendly).
Now, if this tool had a dialog box where you could specify the tolerance, and was associative too, Simplify Curves would definitely be the right tool for the job.
Tim, yes, the result is bad if there is a sharp bend in the spline.
In any case, the obnoxious factory has now requested that the arcs have their radius set to whole integers(!). This forces me to manually sketch up the arcs constrained with radius dimensions, which is a real nightmare.
NX10.0 Win8.1 64bit i7-3770K 16GB QuadroK2200
RE: Convert spline to tangent arcs (parametrically)?
Tim Flater
NX Designer
NX 9.0.3.4 Win7 Pro x64 SP1
Intel Xeon 2.53 GHz 6GB RAM
NVIDIA Quadro 4000 2GB
RE: Convert spline to tangent arcs (parametrically)?
Craziness. Tell them you modeled it in angstroms and the radii are all whole integers.
RE: Convert spline to tangent arcs (parametrically)?
I agree that changing the modeling tolerance is annoyingly inconvenient.
The requirement for integer radii completely changes the problem, and I don't see any way to solve it, other than writing a huge amount of math code.