What is the purpose of converting this NURBS surface on export?

What is the purpose of converting this NURBS surface on export?

CADacombs
Enthusiast Enthusiast
606 Views
4 Replies
Message 1 of 5

What is the purpose of converting this NURBS surface on export?

CADacombs
Enthusiast
Enthusiast

A G2 fillet between 2 planar faces results in a procedurally-calculated surface with an associated NURBS surface that is degree 4 with knot multiplicities [5,1,5] in the fillet direction (per the API).  As expected for G2, the 3 rows of control points on each side are coplanar their respective planar face.

When exported to STEP, IGES, or ACIS, the fillet direction of the NURBS surface is converted to degree 3 with knot multiplicities [4,1,1,1,1,1,1,4].  The 3rd row of control points on each side are slightly not coplanar with their respective planar face.

 

What is the purpose of exporting an approximation of the NURBS surface that is associated with the fillet?

 

Green faces are the original fillet, red faces are the export-to-STEP-import, each with sketch points at surface control point locations of the fillets:

CADacombs_0-1671253992377.png

 

Surface of green fillet face:
Surface type: Nurbs
Degrees (U x V): 4 x 3
CP Counts (U x V): 6 x 7
KnotsU  Count:11 SpanCt:2 Multiplicities: 5,1,5
   [0,4]0.000 [5]0.500 [6,10]1.000  Deltas:0.500
KnotsV  Count:11 SpanCt:2 Multiplicities: 4,3,4
   [0,3]-10.000 [4,6]0.000 [7,10]10.000  Deltas:10.000
Weights: None
Properties (U x V): Open x Open

Surface of red translated fillet face:
Surface type: Nurbs
Degrees (U x V): 3 x 1
CP Counts (U x V): 10 x 2
KnotsU  Count:14 SpanCt:7 Multiplicities: 4,1,1,1,1,1,1,4
   [0,3]0.000 [4]0.143 [5]0.286 [6]0.429 [7]0.571 [8]0.714 [9]0.857 [10,13]1.000  Deltas:0.143
KnotsV  Count:4 SpanCt:1 Multiplicities: 2,2
   [0,1]0.000 [2,3]20.000  Deltas:20.000
Weights: None
Properties (U x V): Open x Open

 

Thank you,

Steve 

607 Views
4 Replies
Replies (4)
Message 2 of 5

TrippyLighting
Consultant
Consultant

@jeff_strater Can you tag the correct Fusion 360 team with this question and perhaps solicit a time-near answer?


EESignature

0 Likes
Message 3 of 5

jeff_strater
Community Manager
Community Manager

This is way outside of my area of expertise.  But, the formulation of the question does not quite reflect the internal implementation, at least as I understand it.  This part:  "A G2 fillet between 2 planar faces results in a procedurally-calculated surface" is correct.  However, as I understand it (which could be wrong), this part:  "with an associated NURBS surface that is degree 4 with knot multiplicities [5,1,5] in the fillet direction (per the API)." is not.  Can you point me to where this is documented?  You mention "per the API".  This is the documentation I found for solid fillet in the Fusion API:  solid fillet and this for surface fillet:  surface fillet .  I don't see any mention of the degree of the surface.

 

Fusion's modeler deals with complex surface as "procedural surfaces".  That is, the surface is stored as the inputs to the algorithm, which are evaluated as needed to sample the surface for any query operations (faceting, etc).  I don't believe there is an associated NURBS surface that plays any part in surface evaluation at run time.  Standard formats such as IGES or STEP do not support procedural surfaces, so Fusion needs to approximate these surfaces on export.  That's why is is misleading to infer any properties about the native surfaces by their STEP export.

 

as I said, that is just my understanding, and I am not an expert.


Jeff Strater
Engineering Director
Message 4 of 5

CADacombs
Enthusiast
Enthusiast

Here is the script I had used to report the underlying surface definition:

https://github.com/CADacombs/fusion360python/blob/main/Inspect_Geom.py

The report is displayed in the Text Commands panel.  I haven't found a property or method that states whether a surface is procedurally calculated, so my script currently uses the BRepFace.convert method and reports (in additional to the original NURBS surface properties) either the converted NURBS surface properties or that no conversion had occurred.

 

The following is taken from an .smt exported from the .f3d I had provided.  It is part of the definition of the green fillet.

spline-surface $-1 -1 $-1 reversed { g2_blend_spl_sur 22800 1 1 @Anonymous blend_support_surface plane -20 0 0 0 -0 1 1 -0 -0 forward_v I I I I null_curve nullbs 0 0 0 nullbs 0 nullbs 
	@21 blend_support_surface plane 0 0 0 1 -0 0 0 0 -1 forward_v I I I I null_curve nullbs 0 0 0 nullbs 0 nullbs 
	straight -10 0 -10 0 -1 0 F -41.00000099999999748 F 41.00000099999999748 -10 -10 
	no_radius 
	F 0 F 1 
	I I 
	1 0.001000000000000000021 9.999999999999999124e-06 
	1 
	full nubs 4 3 open open none none 3 5 
	0 4 0.5 1 1 4 

The first lines indicate that the surface is procedural, but the last 2 lines are the start of the associated NURBS surface definition.  Here, it is indicated as being non-rational, degree 4 x 3, and that the knots in the degree-4 direction are [0,0,0,0,0.5,1,1,1,1]  (Clamped end knot multiplicities in ASM and ACIS files are equal to the degree, not degree+1 as per Fusion's API.)

 

 

Message 5 of 5

MichaelT_123
Advisor
Advisor

Hi Mr CADaCombs,

 

Before I try to divulge into the foundation's question … I must say:

You have done lofty deductivist work. Sir Sherlock Holmes would be impressed, and Mr Watson would throw his own accolades also.

Now go to the question.

What is the purpose of converting this NURBS surface on export?

Fillets (chamfers and other CAD frills) are generally topologically very complex manifolds (surfaces); thus, also descriptive data-size-hangry and expensive to compute. At the same time, their role in the actual designs is secondary. In most cases, they are not put under the rigours of various design tolerances.

The parameters of a fillet you have unsheathed are the perfect example of how to find a compromise and optimize the outcome.

The converted fillet representation decreased Degrees (U x V):  from 4 x 3 to 3 x 1 and also reduced CP Counts (U x V):  from 6 x 7 to 10 x 2. The compounded saving is substantial, particularly considering that the fillet's actual shape has not been affected (in a significant way).

Other reasons might be more technically subtle. One, is that various CAD formats have different degrees (or ways) of representing topological objects. NURBS representation is widely accepted these days, so it is safe to assume that the F360 kernel has one universal exhaust pipe serving many internal pistons… in our case, combinations of different representations (procedural, NURBS,…) of intersecting surfaces (being foundations for a fillet). Finding out the analytical form of an edge(s) of two intersecting procedural surfaces in a general case is extremely difficult (or even impossible). Hence, the natural shape of an edge curve description is a spline(s). … surprise, surprise … generating an avenue simultaneously for further manifold representation simplification. ( note in Degrees (U x V) V went from 3 to 1). Hence, such a spline(s) (of various degrees) is the natural backbone (the first axis, V in our case) of UV mapping. Algorithmically speaking, intersecting base surfaces become the secondary inputs here, whose representation is not (generally can't be) included in the exported data, … as the exhaust pipe is agnostic to pistons generatedfumes.

 

With Regards

MichaelT

MichaelT