Anyway to combine lines and curves into a single element similar to a spline ?

Anyway to combine lines and curves into a single element similar to a spline ?

nick.seman
Advocate Advocate
1,600 Views
10 Replies
Message 1 of 11

Anyway to combine lines and curves into a single element similar to a spline ?

nick.seman
Advocate
Advocate

I have the following situation:  I am Projecting Cut Edges of the suface to create the red lines/curves within a sketch.  Some commands treat these multiple entities as a single "curve" such as the rectangular pattern command - If I select the sketch as a "direction", i.e. I can pattern points all along the curve from beginning to end.  However, If I create a Plane based on a point located along the curve, Inventor prompts me to select the point and then the curve at which time it only selects the element, not the entire curve.  This of course sets the plane perpendicular to the curve at the point (first pic) but if the point moves beyond the element to the next or previous element the plane orientation stays relative to the originally selected curve element not the current host element (second pic).

nickseman_3-1703899464222.png

nickseman_4-1703899480970.png

 

This is not the behavior if the sketch were a spline, the plane always stays perpendicular to the spline wherever the point is located.  The geometry are lines and simple curves, I have tried to use them to create a spline with matching geometry but am unable to accomplish that (Is that possible ?) - the geometry must match exactly.  Any ideas?

 

Thanks in advance,

Nick

 

 

 

 

 

0 Likes
Accepted solutions (1)
1,601 Views
10 Replies
Replies (10)
Message 2 of 11

swalton
Mentor
Mentor

You might get somewhere with a 3d curve that uses the arcs and lines.  I don't have a part to test (hint...) so I'm not sure if it will help.

 

When you move the point, can you re-define the plane to reference the proper line or arc?  It's not as clean but it might get you where you need to go.

Steve Walton
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature


Inventor 2025
Vault Professional 2025
0 Likes
Message 3 of 11

nick.seman
Advocate
Advocate

Hello Steve:

 

I did try this also using a 3d sketch with the same results.  I could create a rule that would determine what segment the point is located at, calculate its forward bearing, and set the angle of the work plane but I was hoping to figure out a way to get Inventor to treat the sketch as one element instead of multiple pieces.  I definitely want to avoid anyone having to do anything other than run a rule to set the plane orientation, i.e. no manual intervention.

 

Nick

0 Likes
Message 4 of 11

Ed__Jobe
Mentor
Mentor

What if you created a plane where the whole set of curves lies on the plane, i.e. through the axis of the red line? Then, start a sketch and project the edge onto the plane. The projected edge should act as one.

Ed


Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
How to post your code.

EESignature

0 Likes
Message 5 of 11

johnsonshiue
Community Manager
Community Manager
Accepted solution

Hi! I believe the quickest way is to create a Loft surface going through those vertical edges. The resultant Loft surface edges will be in one piece.

Many thanks!

 



Johnson Shiue (johnson.shiue@autodesk.com)
Software Test Engineer
0 Likes
Message 6 of 11

nick.seman
Advocate
Advocate

Johnson:

 

Thank you!   That approach seems to work.  I did have to include an edge of the loft into a 3D sketch, but the resulting graphic remains as one item, as opposed to individual lines and curves, when selecting it for placement of work planes.  Thanks again.

 

Nick

Message 7 of 11

fredform
Advocate
Advocate

Hi @johnsonshiue and @nick.seman,  

 

I am facing a similar challenge trying to constrain a plane or axis perpendicular to a curved surface made up of different radiuses/segments. I can't seem to replicate the solution offered here. How to make the loft create one continuous surface? Anything I've tried so far maintains the topology of multiple segments.

 

This is kinda what I want to achieve, although currently it is constrained to one radius (I would like the plane/axis to stay perpendicular to either radius):

fredform_0-1737766291782.png

 

 

Attached file is Inventor 2022.

 

Best regards,

Fredrik

0 Likes
Message 8 of 11

johnsonshiue
Community Manager
Community Manager

Hi! For this case, I don't see an easy solution. The Loft may work but you will have to redo the revolved surface. There isn't a constraint attached to the whole body. Could you elaborate the exact purpose of having such axis? Maybe there is another way to achieve it.

Many thanks!



Johnson Shiue (johnson.shiue@autodesk.com)
Software Test Engineer
0 Likes
Message 9 of 11

fredform
Advocate
Advocate

Hi Johnson,

 

This part is a master/skeleton part to constrain and position other components. One plane controls the angular position around the vertical origin axis, the other controls the radial offset from the origin. The axis is created from the intersection of these two planes and is used for constraining components in an assembly.

 

Using a workpoint that references the curved face and axis is useful to create additional planes that allow either perpendicular placement of components at this point, or otherwise angled around this point if that makes sense.. Basically what I am creating is a configurable pipe/nozzle that can be positioned and oriented in a number of ways, determined by the user/iLogic form. Using this master part and work features seems to me the most robust and secure way of solving this positioning problem.

 

Unfortunately what Inventor seems to lack in this regard, is a way to treat a set of curves as one continuous line segment, to which a perpendicular or tangent constraint could be applied.

 

I'm curious to hear your thoughts on this approach or if you have a suggestion for a different one.

 

Best,

Fredrik

0 Likes
Message 10 of 11

johnsonshiue
Community Manager
Community Manager

Hi! Another possibility is to do in an assembly using Transitional constraint. Then derive the assembly as a part. In theory, it should work but there could be other limitations in this approach.

Many thanks!



Johnson Shiue (johnson.shiue@autodesk.com)
Software Test Engineer
0 Likes
Message 11 of 11

fredform
Advocate
Advocate

Hi again,

 

Took me a while to get time to continue this project but I did manage to create a solution in the end...

 

I also tried your suggestion but it didn't seem feasible to use transitional constraints on a curved cylindrical surface, at least I couldn't get it to work in any reliable fashion. Instead I ventured down the programming route and created the attached code. This was far more complex than I had wished but it does work and serves my purposes.

 

The basic principle is to determine which face the work axis should be referencing based on the radius position, and once know, redefine the work axis with the "correct" inputs.

 

Attached is a part file which demonstrates this code (Inventor 2025).

 

Dim partDoc As PartDocument = ThisDoc.Document
Dim partDef As PartComponentDefinition = partDoc.ComponentDefinition

' Positioning axis
Dim posAxis As WorkAxis = partDef.WorkAxes.Item("ref axis (vertical)")
' Positioning work point
Dim posPoint As WorkPoint = partDef.WorkPoints.Item("Position point")

' Work axis perpendicular to face
Dim faceAxis As WorkAxis = partDef.WorkAxes.Item("Position Axis")

' Get absolute value used for positioning (non-negative)
Dim radiusValue As Double = Math.Abs(radialPos)

Dim faceRef As String = Nothing
Dim facePoint As WorkPoint = Nothing
' Set reference to face name depending on radial position value
Select Case radiusValue
Case < IR
	faceRef = "Main Radius"
	facePoint = partDef.WorkPoints.Item("Main radius origin point")
Case > IR
	faceRef = "Secondary Radius"
	If radialPos < 0 Then
		facePoint = partDef.WorkPoints.Item("Secondary radius origin point (negative direction)")
	Else
		facePoint = partDef.WorkPoints.Item("Secondary radius origin point (positive direction)")
	End If
End Select

' Get the face object
Dim namedEnt = iLogicVb.Automation.GetNamedEntities(ThisDoc.Document)
Dim f As Inventor.Face = namedEnt.FindEntity(faceRef)

' Set necessary transient geometry variables
Dim planeNormal As UnitVector = partDef.WorkPlanes.Item("Top face ref").Plane.Normal
Dim TGpoint As Point = partDef.WorkPoints.Item("ref point (top face)").Point

Dim foundEnts As ObjectsEnumerator = Nothing
Dim locPoints As ObjectsEnumerator = Nothing
Dim body As SurfaceBody = f.Parent
' Get the first intersection point
Call body.FindUsingRay(TGpoint, planeNormal, 0.00001, foundEnts, locPoints, True)
Dim p As Point = locPoints.Item(1)

If locPoints.Count > 0 Then
	' Redefine the positioning workpoint (constrained to face)
	posPoint.SetByCurveAndEntity(posAxis, f, p) ' (proximity point (p) is used to ensure the work point is placed correctly, if other solutions are also possible)
	
	' Redefine the face axis (perpendicular to face)
	faceAxis.SetByTwoPoints(posPoint, facePoint)
Else
	MsgBox("Failed to locate intersection.", MessageBoxIcon.Warning,"Error: " & iLogicVb.RuleName)
	Return
End If

 

 

Best,

Fredrik

0 Likes