Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations IDS on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Generate Tractrix geometry in NX

Status
Not open for further replies.

AndersSande

Industrial
Jul 1, 2005
18
Hi,
I've been asked if NX can generate a geometry that's is a ''tractrix''. Ref this wikipedia page: The geometry is a variant of ''surface blend'' controlled by an expression. This one: x=t-\tanh(t),y=1/{\cosh(t) x=t-\tanh(t),y=1/{\cosh(t). ( from the Wikipedia page)
I'm running NX 12, but solution for newer versions is also possible.

Any suggestions?

Anders
 
Replies continue below

Recommended for you

I think that shape is/should be possible, at least as a curve.
the wikipedia page notes that a surface of revolution of this shape can be used as a loudspeaker.
Most surfaces are built from curves, The surface shape is a derivative of the curve shape-s.
are you looking to define a surface directly with this shape and skip the "curve stage" ?

Regards,
Tomas

Never try to teach a pig to sing. I wastes your time and it annoys the pig.:)
 
If I could have NX to make a expression controlled 'Face blend' from the given expression, I would be happy.
No need for the curve, a 'Face blend' will do the trick.

Regards,
Anders
 
Hello,

I was used NX Journal for create spline sililar to tractrix.
Mayby it's usefull for You:
(You must change Rk and Rm)

Code:
Imports System
Imports NXOpen

Module Horn_trackix

    Sub Main(ByVal args() As String)



        Dim theSession As NXOpen.Session = NXOpen.Session.GetSession()
        Dim workPart As NXOpen.Part = theSession.Parts.Work
        Dim displayPart As NXOpen.Part = theSession.Parts.Display
        Dim lw As ListingWindow = theSession.ListingWindow
        lw.Open()
        Dim markId1 As NXOpen.Session.UndoMarkId = Nothing
        markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start")

        Dim nullNXOpen_NXObject As NXOpen.NXObject = Nothing
        Dim studioSplineBuilderEx1 As NXOpen.Features.StudioSplineBuilderEx = Nothing
        studioSplineBuilderEx1 = workPart.Features.CreateStudioSplineBuilderEx(nullNXOpen_NXObject)

        Dim origin1 As NXOpen.Point3d = New NXOpen.Point3d(0.0, 0.0, 0.0)
        Dim normal1 As NXOpen.Vector3d = New NXOpen.Vector3d(0.0, 0.0, 1.0)
        Dim plane1 As NXOpen.Plane = Nothing
        plane1 = workPart.Planes.CreatePlane(origin1, normal1, NXOpen.SmartObject.UpdateOption.WithinModeling)

        studioSplineBuilderEx1.DrawingPlane = plane1
        studioSplineBuilderEx1.OrientExpress.ReferenceOption = NXOpen.GeometricUtilities.OrientXpressBuilder.Reference.WcsDisplayPart
        studioSplineBuilderEx1.MovementMethod = NXOpen.Features.StudioSplineBuilderEx.MovementMethodType.View
        studioSplineBuilderEx1.OrientExpress.AxisOption = NXOpen.GeometricUtilities.OrientXpressBuilder.Axis.Passive
        studioSplineBuilderEx1.OrientExpress.PlaneOption = NXOpen.GeometricUtilities.OrientXpressBuilder.Plane.Passive
        studioSplineBuilderEx1.Extender.StartValue.RightHandSide = "0"
        studioSplineBuilderEx1.Extender.EndValue.RightHandSide = "0"
        studioSplineBuilderEx1.InputCurveOption = NXOpen.Features.StudioSplineBuilderEx.InputCurveOptions.Hide
        studioSplineBuilderEx1.MatchKnotsType = NXOpen.Features.StudioSplineBuilderEx.MatchKnotsTypes.None

        Dim Rm As Integer = 460 ' Mouth radius (mm*10) 'edit 2020.04.23
        Dim Rk As Integer = 75 ' Throat radius (mm*10) 'edit 2020.04.23

        For R As Integer = Rm To Rk Step -1

            Dim Rs As Double = Rm / 10
            Dim Rr As Double = R / 10
            Dim x As Double
            x = Rs * Math.Log((Rs + (Rs ^ 2 - Rr ^ 2) ^ 0.5) / Rr) - (Rs ^ 2 - Rr ^ 2) ^ 0.5

            'lw.WriteLine(x & ",   " & Rr)

            Dim coordinates1 As NXOpen.Point3d = New NXOpen.Point3d(0, Rr, x)
            Dim point1 As NXOpen.Point = Nothing
            point1 = workPart.Points.CreatePoint(coordinates1)
            Dim geometricConstraintData1 As NXOpen.Features.GeometricConstraintData = Nothing
            geometricConstraintData1 = studioSplineBuilderEx1.ConstraintManager.CreateGeometricConstraintData()
            geometricConstraintData1.Point = point1
            studioSplineBuilderEx1.ConstraintManager.Append(geometricConstraintData1)

        Next

        Dim nXObject1 As NXOpen.NXObject = Nothing
        nXObject1 = studioSplineBuilderEx1.Commit()
        studioSplineBuilderEx1.Destroy()


        theSession.DeleteUndoMark(markId1, Nothing)
    End Sub
End Module

Best Regards

MANok
NX12
TC10
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor