Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

Making a Non Associative Spline Associative to defining points.

Status
Not open for further replies.

uglord78

Mechanical
Jun 22, 2007
12
0
0
US
I am working in NX7.5.3 and I am creating studio splines by selecting the points, one at a time. I noticed that it is possible to use the old spline operator and select all the points at once and create the spline. And then go back double click on it and assign associativity to the spline. The only problem is that the constraint of G0 is not assigned to the spline defining points. Does anyone know of a way to assign the G0 constraint?
 
Replies continue below

Recommended for you

Are the points you are selecting point objects or something else, like line end points, center points, etc?

If they are point objects, what creates them? Are they the result of a laser scan, CMM, or something else?

If I understand correctly, you want to use a rectangle selection like in the old spline command, but create an associative spline from the points?

 
cowski,

You are correct in your understanding. I want to a rectangle selection like the old spline operator would allow, and then create a spline that is associative to the defining points.

Background Information:
The points are being created from Sections through curves.
 
I think, without better knowing, that you need to drag one at a time to a point. Then that point will be G0 to that point.

Regards,
Tomas
 
Here's a quick journal that tries to mimic the point selection of the old spline dialog. I don't guarantee the point order will always be 100% correct - let me know if it messes up.

Code:
[COLOR=green]'NX 7.5[/color]
[COLOR=green]'April 24, 2012[/color]
[COLOR=green]'www.nxjournaling.com[/color]
[COLOR=green]'eng-tips thread561-320527[/color]
[COLOR=green]'Journal to create studio spline through existing point objects[/color]
[COLOR=green]'allows rectangle select of points, similar to old spline dialog[/color]
[COLOR=green]'resulting studio spline will be associative to the selected point objects[/color]

[COLOR=blue]Option[/color] [COLOR=blue]Strict[/color] [COLOR=blue]Off[/color]  
[COLOR=blue]Imports[/color] System  
[COLOR=blue]Imports[/color] NXOpen  
[COLOR=blue]Imports[/color] NXOpen.UF  

[COLOR=blue]Module[/color] Module1  

    [COLOR=blue]Sub[/color] Main()  

        [COLOR=blue]Dim[/color] theSession [COLOR=blue]As[/color] Session [COLOR=blue]=[/color] Session.GetSession()  
        [COLOR=blue]Dim[/color] workPart [COLOR=blue]As[/color] Part [COLOR=blue]=[/color] theSession.Parts.Work  
        [COLOR=blue]Dim[/color] displayPart [COLOR=blue]As[/color] Part [COLOR=blue]=[/color] theSession.Parts.Display  
        [COLOR=blue]Dim[/color] lw [COLOR=blue]As[/color] ListingWindow [COLOR=blue]=[/color] theSession.ListingWindow  
        [COLOR=blue]Dim[/color] splineThruPoints() [COLOR=blue]As[/color] NXObject  
        [COLOR=blue]Dim[/color] axisToSort [COLOR=blue]As[/color] [COLOR=blue]String[/color]  

        [COLOR=blue]Dim[/color] markId1 [COLOR=blue]As[/color] Session.UndoMarkId  
        markId1 [COLOR=blue]=[/color] theSession.SetUndoMark(Session.MarkVisibility.Visible, "Studio Spline")  

        lw.Open()  
        splineThruPoints [COLOR=blue]=[/color] SelectObjects("Select objects")  

        [COLOR=blue]Dim[/color] startPoint [COLOR=blue]As[/color] Point  
        startPoint [COLOR=blue]=[/color] SelectPoint("Select Start Point")  

        [COLOR=blue]Dim[/color] endPoint [COLOR=blue]As[/color] Point  
        endPoint [COLOR=blue]=[/color] SelectPoint("Select End Point")  

        axisToSort [COLOR=blue]=[/color] increasingAxis(startPoint, endPoint)  

        [COLOR=blue]Dim[/color] xCoords(splineThruPoints.GetUpperBound(0)) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  
        [COLOR=blue]Dim[/color] yCoords(splineThruPoints.GetUpperBound(0)) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  
        [COLOR=blue]Dim[/color] zCoords(splineThruPoints.GetUpperBound(0)) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  
        [COLOR=blue]Dim[/color] pointTags(splineThruPoints.GetUpperBound(0)) [COLOR=blue]As[/color] Tag  
        [COLOR=blue]Dim[/color] i [COLOR=blue]As[/color] [COLOR=blue]Integer[/color] [COLOR=blue]=[/color] 0  

        [COLOR=blue]For[/color] [COLOR=blue]Each[/color] obj [COLOR=blue]As[/color] Point [COLOR=blue]In[/color] splineThruPoints  
            xCoords(i) [COLOR=blue]=[/color] obj.Coordinates.X  
            yCoords(i) [COLOR=blue]=[/color] obj.Coordinates.Y  
            zCoords(i) [COLOR=blue]=[/color] obj.Coordinates.Z  
            pointTags(i) [COLOR=blue]=[/color] obj.Tag  
            i [COLOR=blue]+=[/color] 1  
        [COLOR=blue]Next[/color]  

        [COLOR=blue]If[/color] axisToSort [COLOR=blue]=[/color] "X" [COLOR=blue]Then[/color]  
            System.Array.Sort(xCoords, pointTags)  
            [COLOR=blue]If[/color] startPoint.Coordinates.X <> xCoords(0) [COLOR=blue]Then[/color]  
                System.Array.Reverse(xCoords)  
                System.Array.Reverse(pointTags)  
            End [COLOR=blue]If[/color]  
        [COLOR=blue]ElseIf[/color] axisToSort [COLOR=blue]=[/color] "Y" [COLOR=blue]Then[/color]  
            System.Array.Sort(yCoords, pointTags)  
            [COLOR=blue]If[/color] startPoint.Coordinates.Y <> yCoords(0) [COLOR=blue]Then[/color]  
                System.Array.Reverse(yCoords)  
                System.Array.Reverse(pointTags)  
            End [COLOR=blue]If[/color]  
        [COLOR=blue]Else[/color]  
            System.Array.Sort(zCoords, pointTags)  
            [COLOR=blue]If[/color] startPoint.Coordinates.Z <> zCoords(0) [COLOR=blue]Then[/color]  
                System.Array.Reverse(zCoords)  
                System.Array.Reverse(pointTags)  
            End [COLOR=blue]If[/color]  
        End [COLOR=blue]If[/color]  

        [COLOR=blue]Dim[/color] nullFeatures_StudioSpline [COLOR=blue]As[/color] Features.StudioSpline [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]  

        [COLOR=blue]Dim[/color] studioSplineBuilder1 [COLOR=blue]As[/color] Features.StudioSplineBuilder  
        studioSplineBuilder1 [COLOR=blue]=[/color] workPart.Features.CreateStudioSplineBuilder(nullFeatures_StudioSpline)  
        studioSplineBuilder1.Associative [COLOR=blue]=[/color] [COLOR=blue]True[/color]  
        studioSplineBuilder1.InputCurveOption [COLOR=blue]=[/color] Features.StudioSplineBuilder.CurveOption.Retain  
        studioSplineBuilder1.SplineMethod [COLOR=blue]=[/color] Features.StudioSplineBuilder.Method.ThroughPoints  
        studioSplineBuilder1.Degree [COLOR=blue]=[/color] 3  
        studioSplineBuilder1.IsPeriodic [COLOR=blue]=[/color] [COLOR=blue]False[/color]  
        studioSplineBuilder1.MatchKnots [COLOR=blue]=[/color] Features.StudioSplineBuilder.MatchKnotsType.None  

        [COLOR=blue]Dim[/color] knots1(-1) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  
        studioSplineBuilder1.SetKnots(knots1)  

        [COLOR=blue]Dim[/color] parameters1(-1) [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  
        studioSplineBuilder1.SetParameters(parameters1)  

        [COLOR=blue]Dim[/color] nullDirection [COLOR=blue]As[/color] Direction [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]  
        [COLOR=blue]Dim[/color] nullScalar [COLOR=blue]As[/color] Scalar [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]  
        [COLOR=blue]Dim[/color] nullOffset [COLOR=blue]As[/color] Offset [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]  

        [COLOR=blue]Dim[/color] geometricConstraintData1(splineThruPoints.GetUpperBound(0)) [COLOR=blue]As[/color] Features.GeometricConstraintData  
        [COLOR=blue]For[/color] i [COLOR=blue]=[/color] 0 [COLOR=blue]To[/color] splineThruPoints.GetUpperBound(0)  
            geometricConstraintData1(i) [COLOR=blue]=[/color] studioSplineBuilder1.ConstraintManager.CreateGeometricConstraintData()  
            geometricConstraintData1(i).Point [COLOR=blue]=[/color] Utilities.NXObjectManager.Get(pointTags(i))  
            geometricConstraintData1(i).AutomaticConstraintDirection [COLOR=blue]=[/color] Features.GeometricConstraintData.ParameterDirection.Iso  
            geometricConstraintData1(i).AutomaticConstraintType [COLOR=blue]=[/color] Features.GeometricConstraintData.AutoConstraintType.None  
            geometricConstraintData1(i).TangentDirection [COLOR=blue]=[/color] nullDirection  
            geometricConstraintData1(i).TangentMagnitude [COLOR=blue]=[/color] nullScalar  
            geometricConstraintData1(i).Curvature [COLOR=blue]=[/color] nullOffset  
            geometricConstraintData1(i).CurvatureDerivative [COLOR=blue]=[/color] nullOffset  
            geometricConstraintData1(i).HasSymmetricModelingConstraint [COLOR=blue]=[/color] [COLOR=blue]False[/color]  
        [COLOR=blue]Next[/color]  

        studioSplineBuilder1.ConstraintManager.SetContents(geometricConstraintData1)  

        [COLOR=blue]Dim[/color] feature1 [COLOR=blue]As[/color] Features.Feature  
        feature1 [COLOR=blue]=[/color] studioSplineBuilder1.CommitFeature()  

        studioSplineBuilder1.Destroy()  

        lw.Close()  

    End [COLOR=blue]Sub[/color]  

    [COLOR=blue]Function[/color] SelectObjects(ByVal prompt [COLOR=blue]As[/color] [COLOR=blue]String[/color]) [COLOR=blue]As[/color] NXObject()  

        [COLOR=blue]Dim[/color] selobj() [COLOR=blue]As[/color] NXObject [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]  
        [COLOR=blue]Dim[/color] theUI [COLOR=blue]As[/color] UI [COLOR=blue]=[/color] UI.GetUI  
        [COLOR=blue]Dim[/color] title [COLOR=blue]As[/color] [COLOR=blue]String[/color] [COLOR=blue]=[/color] "Selection"  
        [COLOR=blue]Dim[/color] includeFeatures [COLOR=blue]As[/color] [COLOR=blue]Boolean[/color] [COLOR=blue]=[/color] [COLOR=blue]False[/color]  
        [COLOR=blue]Dim[/color] keepHighlighted [COLOR=blue]As[/color] [COLOR=blue]Boolean[/color] [COLOR=blue]=[/color] [COLOR=blue]False[/color]  
        [COLOR=blue]Dim[/color] selAction [COLOR=blue]As[/color] Selection.SelectionAction [COLOR=blue]=[/color] _  
            Selection.SelectionAction.ClearAndEnableSpecific  

        [COLOR=blue]Dim[/color] scope [COLOR=blue]As[/color] Selection.SelectionScope [COLOR=blue]=[/color] Selection.SelectionScope.WorkPart  
        [COLOR=blue]Dim[/color] selectionMask_array(1) [COLOR=blue]As[/color] Selection.MaskTriple  

        [COLOR=blue]With[/color] selectionMask_array(0)  
            .Type [COLOR=blue]=[/color] UFConstants.UF_point_type  
            .Subtype [COLOR=blue]=[/color] UFConstants.UF_point_subtype  
            .SolidBodySubtype [COLOR=blue]=[/color] 0  
        End [COLOR=blue]With[/color]  

        [COLOR=blue]Dim[/color] resp [COLOR=blue]As[/color] Selection.Response [COLOR=blue]=[/color] theUI.SelectionManager.SelectObjects( _  
            prompt, title, scope, selAction, _  
            includeFeatures, keepHighlighted, selectionMask_array, selobj)  

        [COLOR=blue]Return[/color] selobj  

    End [COLOR=blue]Function[/color]  

    [COLOR=blue]Function[/color] SelectPoint(ByVal prompt [COLOR=blue]As[/color] [COLOR=blue]String[/color]) [COLOR=blue]As[/color] Point  

        [COLOR=blue]Dim[/color] selobj [COLOR=blue]As[/color] Point [COLOR=blue]=[/color] [COLOR=blue]Nothing[/color]  
        [COLOR=blue]Dim[/color] theUI [COLOR=blue]As[/color] UI [COLOR=blue]=[/color] UI.GetUI  
        [COLOR=blue]Dim[/color] title [COLOR=blue]As[/color] [COLOR=blue]String[/color] [COLOR=blue]=[/color] "Selection"  
        [COLOR=blue]Dim[/color] includeFeatures [COLOR=blue]As[/color] [COLOR=blue]Boolean[/color] [COLOR=blue]=[/color] [COLOR=blue]False[/color]  
        [COLOR=blue]Dim[/color] keepHighlighted [COLOR=blue]As[/color] [COLOR=blue]Boolean[/color] [COLOR=blue]=[/color] [COLOR=blue]False[/color]  
        [COLOR=blue]Dim[/color] selAction [COLOR=blue]As[/color] Selection.SelectionAction [COLOR=blue]=[/color] _  
            Selection.SelectionAction.ClearAndEnableSpecific  
        [COLOR=blue]Dim[/color] cursor [COLOR=blue]As[/color] Point3d  
        [COLOR=blue]Dim[/color] scope [COLOR=blue]As[/color] Selection.SelectionScope [COLOR=blue]=[/color] Selection.SelectionScope.WorkPart  
        [COLOR=blue]Dim[/color] selectionMask_array(1) [COLOR=blue]As[/color] Selection.MaskTriple  

        [COLOR=blue]With[/color] selectionMask_array(0)  
            .Type [COLOR=blue]=[/color] UFConstants.UF_point_type  
            .Subtype [COLOR=blue]=[/color] UFConstants.UF_point_subtype  
            .SolidBodySubtype [COLOR=blue]=[/color] 0  
        End [COLOR=blue]With[/color]  

        [COLOR=blue]Dim[/color] resp [COLOR=blue]As[/color] Selection.Response [COLOR=blue]=[/color] theUI.SelectionManager.SelectObject( _  
            prompt, title, scope, selAction, _  
            includeFeatures, keepHighlighted, selectionMask_array, selobj, cursor)  

        [COLOR=blue]Return[/color] selobj  

    End [COLOR=blue]Function[/color]  

    [COLOR=blue]Function[/color] increasingAxis(ByVal point1 [COLOR=blue]As[/color] Point, [COLOR=blue]ByVal[/color] point2 [COLOR=blue]As[/color] Point) [COLOR=blue]As[/color] [COLOR=blue]String[/color]  

 [COLOR=green]'which axis has the greatest distance between start and end points? - sort by that axis[/color]
 [COLOR=green]'possibly a bad assumption, but it's a start[/color]
        [COLOR=blue]Dim[/color] maxLength [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  
        [COLOR=blue]Dim[/color] maxAxis [COLOR=blue]As[/color] [COLOR=blue]String[/color]  
        [COLOR=blue]Dim[/color] length [COLOR=blue]As[/color] [COLOR=blue]Double[/color]  

        maxLength [COLOR=blue]=[/color] Math.Abs(point2.Coordinates.X [COLOR=blue]-[/color] point1.Coordinates.X)  
        maxAxis [COLOR=blue]=[/color] "X"  

        length [COLOR=blue]=[/color] Math.Abs(point2.Coordinates.Y [COLOR=blue]-[/color] point1.Coordinates.Y)  
        [COLOR=blue]If[/color] length > maxLength [COLOR=blue]Then[/color]  
            maxLength [COLOR=blue]=[/color] length  
            maxAxis [COLOR=blue]=[/color] "Y"  
        End [COLOR=blue]If[/color]  

        length [COLOR=blue]=[/color] Math.Abs(point2.Coordinates.Z [COLOR=blue]-[/color] point1.Coordinates.Z)  
        [COLOR=blue]If[/color] length > maxLength [COLOR=blue]Then[/color]  
            maxLength [COLOR=blue]=[/color] length  
            maxAxis [COLOR=blue]=[/color] "Z"  
        End [COLOR=blue]If[/color]  

        [COLOR=blue]Return[/color] maxAxis  

    End [COLOR=blue]Function[/color]  

    [COLOR=blue]Public[/color] [COLOR=blue]Function[/color] GetUnloadOption(ByVal dummy [COLOR=blue]As[/color] [COLOR=blue]String[/color]) [COLOR=blue]As[/color] [COLOR=blue]Integer[/color]  

 [COLOR=green]'Unloads the image when the NX session terminates[/color]
        GetUnloadOption [COLOR=blue]=[/color] NXOpen.Session.LibraryUnloadOption.AtTermination  

    End [COLOR=blue]Function[/color]  

End [COLOR=blue]Module[/color]


 
Status
Not open for further replies.
Back
Top