Submitted by ankum16 on Tue, 10/01/2013 - 22:46
Forums:
Hi all,
I am trying to read a wavelink coordinateSystem.
UFWave.LinkedFeatureInfo info;
theUfSession.Wave.AskLinkedFeatureInfo(waveLinkCoordinateSystem1.Tag, out info);
I am using below method to read LinkedFeatureInfo. but it just tells about source_part_name and I am looking for the Component instead of name. Somehow I am able to find OwningPart but Owning component is NULL.
My requirement is to SetWorkComponent(), after finding this owningComponent. If I use just SetWork( PART) then it does not make correct component as workComponent and picks up some other component with same instance.
re: reading wave link
You are working in an assembly and you have a reference to a wave-linked coordinate system, now you want to find the component that owns the source csys and set that as the work part. Is this correct?
re: wave link
Can you provide a small example file? Email it to: info@nxjournaling.com.
re: wave links
Here's my first stab at it. There MUST be an easier way; let me know how it goes...
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.Features
Imports NXOpen.UF
Module Module1
Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession()
Sub Main()
Dim workPart As Part = theSession.Parts.Work
Dim initialPart As Part = theSession.Parts.Work
Dim lw As ListingWindow = theSession.ListingWindow
lw.Open()
Dim myModelingTolerance As Double
theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
Dim featArray() As Feature = theSession.Parts.Work.Features.GetFeatures()
For Each myFeature As Feature In featArray
'lw.WriteLine(myFeature.GetFeatureName)
'lw.WriteLine(myFeature.FeatureType)
'lw.WriteLine("")
If myFeature.GetFeatureName.ToUpper.Contains("LINKED DATUM COORDINATE SYSTEM") Then
lw.WriteLine("feature: " & myFeature.GetFeatureName)
Dim myDatumCsys = myFeature
Dim myDatumPoint As Point
lw.WriteLine("location: " & myDatumCsys.Location.ToString)
For Each temp As NXObject In myDatumCsys.GetEntities
'lw.WriteLine("entity: " & temp.GetType.ToString)
If temp.GetType.ToString.ToLower.Contains("point") Then
myDatumPoint = temp
End If
Next
lw.WriteLine("")
lw.WriteLine("linked datum csys found")
Dim sourceTag As Tag
Dim linkBroken As Boolean = True
theUfSession.Wave.IsLinkBroken(myFeature.Tag, linkBroken)
If linkBroken Then
lw.WriteLine("link to parent geometry is broken")
Else
theUfSession.Wave.AskLinkSource(myFeature.Tag, True, sourceTag)
If sourceTag = Tag.Null Then
lw.WriteLine("could not fully load parent file...")
Else
Dim myTaggedObj As TaggedObject
Dim sourceCsys As CartesianCoordinateSystem
Dim sourceFile As Part
myTaggedObj = theSession.GetObjectManager.GetTaggedObject(sourceTag)
lw.WriteLine("object source type: " & myTaggedObj.GetType.ToString)
sourceCsys = myTaggedObj
sourceFile = sourceCsys.OwningPart
lw.WriteLine("parent file: " & sourceFile.FullPath)
Dim partTag As Tag = sourceFile.Tag
Dim occTags() As Tag
theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)
lw.WriteLine("number of occurences: " & occTags.Length.ToString)
For Each temp As Tag In occTags
Dim myComp As Assemblies.Component
myComp = Utilities.NXObjectManager.Get(temp)
lw.WriteLine("")
lw.WriteLine("component name: " & myComp.Name)
lw.WriteLine("component display name: " & myComp.DisplayName)
lw.WriteLine("")
'make comp work part, create point at csys origin, measure dist datum csys to point
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Make Work Part")
Dim partLoadStatus1 As PartLoadStatus
theSession.Parts.SetWorkComponent(myComp, PartCollection.RefsetOption.Current, PartCollection.WorkComponentOption.Visible, partLoadStatus1)
workPart = theSession.Parts.Work
partLoadStatus1.Dispose()
Dim sourcePoint As Point
sourcePoint = workPart.Points.CreatePoint(sourceCsys.Origin)
sourcePoint.SetVisibility(SmartObject.VisibilityOption.Visible)
If MeasureDistance(myDatumPoint, sourcePoint) < myModelingTolerance Then
Exit For
Else
'reset work part
Dim markId2 As Session.UndoMarkId
markId2 = theSession.SetUndoMark(Session.MarkVisibility.Visible, "Make Work Part")
Dim nullAssemblies_Component As Assemblies.Component = Nothing
Dim partLoadStatus2 As PartLoadStatus
theSession.Parts.SetWorkComponent(nullAssemblies_Component, PartCollection.RefsetOption.Current, PartCollection.WorkComponentOption.Visible, partLoadStatus2)
workPart = theSession.Parts.Work
partLoadStatus2.Dispose()
End If
Next
End If
End If
End If
Next
lw.WriteLine("")
lw.Close()
End Sub
Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double
Dim result As Double
Try
Dim nullNXObject As NXObject = Nothing
Dim measureDistanceBuilder1 As MeasureDistanceBuilder
measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)
measureDistanceBuilder1.InfoWindow = False
measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
Dim nullUnit As Unit = Nothing
Dim measureDistance1 As MeasureDistance
measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)
result = measureDistance1.Value
'measureDistance1.Information()
measureDistance1.Dispose()
Catch ex As NXException
MsgBox(ex.Message)
Return Nothing
End Try
Return result
End Function
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image when the NX session terminates
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
'----Other unload options-------
'Unloads the image immediately after execution within NX
'GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
'Unloads the image explicitly, via an unload dialog
'GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Explicitly
'-------------------------------
End Function
End Module
Reading a wavelink which is already created
I had already tried something like - theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags); but occTags is coming as Null.
This issue got solved using two methods and I think that is the only way to solve this.
theUFSession.Wave.AskLinkXform(theFeature.Tag, out xform);
theUFSession.So.AskAssyCtxtPartOcc()
This way I got the component instead of part.
Thanks all.
Regards,
Ankita
~ Ankita
Life is beautiful. :)
re: reading wave link
That sounds like a better solution than what I posted.
Thanks for posting back with the info!
Re: Wavelink
Can you post your code?
NX 8.5
NX 9.0
Trying to accomplish something similar
I believe I'm trying to do the same thing. I have some components that contains many features, some linked, some not linked. For the linked features I'd like to get the owning component of the other side of the link. So for example, I have a component with some drilled false bodies, these false bodies are wave linked to bodies within another component, this is the component that I want to eventually get.
Let me know if that was a confusing description.
Here's where I am now:
For Each feature As Feature In _workPart.Features.GetFeatures
Lw.WriteLine(feature.GetFeatureName)
Lw.WriteLine(feature.GetType.ToString)
Dim sourceTag As Tag
Dim linkBroken As Boolean = True
UfSession.Wave.IsLinkBroken(feature.Tag, linkBroken)
If Not linkBroken Then
UfSession.Wave.AskLinkSource(feature.Tag, True, sourceTag)
If sourceTag = Tag.Null Then
Lw.WriteLine("Not found")
Else
Dim myTaggedObj As TaggedObject = NxSession.GetObjectManager.GetTaggedObject(sourceTag)
Lw.WriteLine("object soucre type: " & myTaggedObj.GetType.ToString)
End If
End If
Next
This is the error I'm receiving:
So from what I can tell, it's breaking because I am not passing in a linked_feature. I tried the method UF_GDT_is_linked_feature but that returned a similar error.
NX 8.5
NX 9.0
re: find linked features
You should only pass wave linked features to those functions.
The following code shows one way to find linked features:
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.UF
Module Module1
Sub Main()
Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession
If IsNothing(theSession.Parts.Work) Then
'active part required
Return
End If
Dim workPart As Part = theSession.Parts.Work
Dim lw As ListingWindow = theSession.ListingWindow
lw.Open()
For Each theFeature As Features.Feature In workPart.Features
If theFeature.FeatureType.Contains("LINKED") Then
lw.WriteLine("Linked feature found:")
lw.WriteLine(" " & theFeature.GetFeatureName)
lw.WriteLine("")
End If
Next
lw.Close()
End Sub
End Module
Thanks you!
Really appreciate the help. Thanks.
NX 8.5
NX 9.0
Arguments to AskAssyCtxtPartOcc
Hi,
I have an idealized part with wavelink bodies that were created from components in the master part. I'm trying to find the components used to create the wavelinks, but I can only find the part prototype. I'm trying to use the solution in this post, using methods: theUFSession.Wave.AskLinkXform(theFeature.Tag, out xform) and theUFSession.So.AskAssyCtxtPartOcc(), but I don't understand the 2nd argument to pass to AskAssyCtxtPartOcc. Can someone explain what the to_part_occ should be and how to retrieve it?
Thanks
re: AskAssyCtxtPartOcc
The second argument, "to_part_occ", should be the tag of the component that owns the linked feature.
Below is a short journal illustrating the use of AskAssyCtxtPartOcc.
To use it, create a small assembly: add a part as a component - specify a number of duplicates (spread them out - use the "scatter" option). Add a new empty part as a component and create a wave linked mirror body feature in the new part; pick any component instance you like to be the parent of the mirror body. Give the "parent component" a unique name, this will help when testing the journal (RMB the component, properties, general, enter name, OK). Run the journal with the assembly as the displayed/work part. The journal will process all the components and report the parent component of the linked mirror body. Parts must be fully loaded for the journal to work, journal only reports the first linked mirror body found in each component. The same strategy will work for other linked features, this journal only looks specifically for linked mirror bodies.
Option Strict Off
Imports System
Imports NXOpen
Imports NXOpen.Assemblies
Imports NXOpen.UF
Module Module1
Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession()
Dim lw As ListingWindow = theSession.ListingWindow
Sub Main()
If IsNothing(theSession.Parts.BaseWork) Then
'active part required
Return
End If
Dim workPart As Part = theSession.Parts.Work
lw.Open()
Const undoMarkName As String = "NXJ journal"
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName)
Try
Dim c As ComponentAssembly = theSession.Parts.Display.ComponentAssembly
If Not IsNothing(c.RootComponent) Then
'lw.WriteLine("processing components...")
ProcessChildren(c.RootComponent, 0)
Else
'*** insert code to process piece part
'lw.WriteLine("Part has no components")
End If
Catch e As Exception
theSession.ListingWindow.WriteLine("Failed: " & e.ToString)
End Try
lw.Close()
End Sub
Sub ProcessChildren(ByVal comp As Component, _
ByVal indent As Integer)
'lw.WriteLine("component: " & comp.DisplayName)
Dim linkedFeature As Features.Feature
For Each child As Component In comp.GetChildren()
Dim part1 As Part = child.Prototype.OwningPart
linkedFeature = ProcessFeatures(part1)
If Not IsNothing(linkedFeature) Then
Dim theXformTag As Tag
Dim fromPartOccTag As Tag
Dim fromComp As Assemblies.Component
theUfSession.Wave.AskLinkXform(linkedFeature.Tag, theXformTag)
theUfSession.So.AskAssyCtxtPartOcc(theXformTag, child.Tag, fromPartOccTag)
fromComp = Utilities.NXObjectManager.Get(fromPartOccTag)
lw.WriteLine("linked from part: " & fromComp.Prototype.OwningPart.Leaf & " [component name: " & fromComp.Name & "]")
lw.WriteLine("")
End If
ProcessChildren(child, indent + 1)
Next
End Sub
Function ProcessFeatures(ByVal thePart As Part) As Features.Feature
'return first linked mirror feature
For Each myfeature As Features.Feature In thePart.Features
If myfeature.FeatureType = "LINKED_MIRROR" Then
lw.WriteLine("linked mirror body feature found in part: " & thePart.Leaf)
Return myfeature
End If
Next
Return Nothing
End Function
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image immediately after execution within NX
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
End Function
End Module
Many thanks.
Many thanks.
Finding the Parent Part of a feature
Hello,
I'm attempting to find the parent part name of a feature on the current work part. This feature is wavelinked to a part file that is not present in this sub-assembly. I'm wondering how to obtain this parent part name string, I believe this is possible because NX can pull up the information while we try to edit the feature.
Please reference this photo to help understand what we're trying to do.
http://imgur.com/wPLaExH
Thank you
NX 8.5
NX 9.0
re: parent of wave link feature
The code below should do what you want. I was working on it for an article on wave features, but got pulled away. The code could use a bit more testing and polish; post back or email me (info@nxjournaling.com) if you run into any issues. The code was written/tested on NX 9, but I don't think it uses any functionality exclusive to NX 9; it should work on 8.5.
'NX 9
'Journal acts on the currently displayed part. A report will be
'generated for the linked features in the part.
'the report takes the form:
'name of part
'[summary]
' number of linked features: number broken links
' list of features with broken links
' list of external parts used by wave linked features
'[detail]
' list of wave linked features
' feature name
' part referenced by link
'Journal code references classes:
' WaveLinkReport
' WaveFeature
Option Strict Off
Imports System
Imports System.Collections.Generic
Imports NXOpen
Imports NXOpen.UF
Imports NXOpen.Assemblies
Module wave_links_part_only
Dim theSession As Session = Session.GetSession()
Dim theUfSession As UFSession = UFSession.GetUFSession
Dim lw As ListingWindow = theSession.ListingWindow
Sub Main()
If IsNothing(theSession.Parts.Work) Then
'active part required
Return
End If
Dim workPart As Part = theSession.Parts.Work
lw.Open()
Const undoMarkName As String = "report wave links"
Dim markId1 As Session.UndoMarkId
markId1 = theSession.SetUndoMark(Session.MarkVisibility.Visible, undoMarkName)
Dim theWaveLinks As New WaveLinkReport(theSession.Parts.Display)
ReportWaveLinks(theWaveLinks, False)
lw.Close()
End Sub
Sub ReportWaveLinks(ByVal someLinkReport As WaveLinkReport, ByVal suppressNull As Boolean)
If suppressNull And someLinkReport.WaveFeatures.Count = 0 Then
Return
End If
lw.WriteLine(New String("=", someLinkReport.Part.FullPath.Length))
lw.WriteLine(someLinkReport.Part.FullPath)
lw.WriteLine(New String("=", someLinkReport.Part.FullPath.Length))
If someLinkReport.WaveFeatures.Count = 0 Then
'no wave features to report
lw.WriteLine(" this part contains no wave linked features")
lw.WriteLine("")
Return
End If
If someLinkReport.WaveFeatures.Count = 1 Then
lw.WriteLine("There is " & someLinkReport.WaveFeatures.Count.ToString & " linked feature: " & someLinkReport.NumberOfBrokenLinks.ToString & " broken")
Else
lw.WriteLine("There are " & someLinkReport.WaveFeatures.Count.ToString & " linked features: " & someLinkReport.NumberOfBrokenLinks.ToString & " broken")
End If
For Each tempBroken As WaveFeature In someLinkReport.BrokenLinks
lw.WriteLine(" " & tempBroken.Feature.GetFeatureName)
Next
lw.WriteLine("")
lw.WriteLine("Wave link feature unique parent parts:")
For Each tempString As String In someLinkReport.UniqueWaveParents
lw.WriteLine(" " & tempString)
Next
lw.WriteLine("")
lw.WriteLine("Wave link features [" & someLinkReport.WaveFeatures.Count.ToString & "]")
lw.WriteLine(New String("-", 30))
For Each temp As WaveFeature In someLinkReport.WaveFeatures
lw.WriteLine(temp.Feature.GetFeatureName)
If temp.IsBroken Then
If temp.IsAccepted Then
lw.WriteLine(" %% LINK BROKEN/ACCEPTED")
Else
lw.WriteLine(" !! LINK BROKEN")
End If
End If
'lw.WriteLine(" Wave parent(s):")
For Each parent As String In temp.WaveParents
lw.WriteLine(" " & parent)
Next
lw.WriteLine("")
Next
lw.WriteLine("")
End Sub
Public Function GetUnloadOption(ByVal dummy As String) As Integer
'Unloads the image immediately after execution within NX
GetUnloadOption = NXOpen.Session.LibraryUnloadOption.Immediately
End Function
End Module
Public Class WaveLinkReport
Private cSession As Session = Session.GetSession
Private cUfSession As UFSession = UFSession.GetUFSession
Private cPart As Part
Public Property Part() As Part
Get
Return cPart
End Get
Set(ByVal value As Part)
cPart = value
Me.ExamineFeatures()
Me.FindUniqueParents()
End Set
End Property
Private cWaveFeatures As New List(Of WaveFeature)
Public ReadOnly Property WaveFeatures() As List(Of WaveFeature)
Get
Return cWaveFeatures
End Get
End Property
Private cUniqueWaveParents As New List(Of String)
Public ReadOnly Property UniqueWaveParents() As List(Of String)
Get
Return cUniqueWaveParents
End Get
End Property
Public ReadOnly Property NumberOfBrokenLinks() As Integer
Get
Return cBrokenLinks.Count
End Get
End Property
Private cBrokenLinks As New List(Of WaveFeature)
Public ReadOnly Property BrokenLinks() As List(Of WaveFeature)
Get
Return cBrokenLinks
End Get
End Property
Public Sub New(ByVal thePart As Part)
Me.Part = thePart
End Sub
Private Sub ExamineFeatures()
For Each tempFeature As Features.Feature In cPart.Features
If IsWaveFeature(tempFeature) Then
Dim newWaveFeature As New WaveFeature(tempFeature)
cWaveFeatures.Add(newWaveFeature)
End If
Next
End Sub
Private Function IsWaveFeature(ByVal theFeature As Features.Feature) As Boolean
Dim wave2 As Boolean = False
'check for wave linked sketch
'linked sketches can be internal to another feature (such as an extrude)
'so check for a WaveSketch feature before running the .IsInternal check
If TypeOf (theFeature) Is NXOpen.Features.WaveSketch Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'some features create links within the part file (extract face, instance geometry, etc)
'if the feature .IsInternal, odds are good it links to something in this part file
'and not an external file
If theFeature.IsInternal Then
wave2 = Me.IsWaveFeature2(theFeature)
'skip features such as "mirror geometry" or "instance geometry" that do not link to another part
Return False
End If
'check for wave linked datum
If TypeOf (theFeature) Is NXOpen.Features.WaveDatum Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'check for wave linked point
If TypeOf (theFeature) Is NXOpen.Features.WavePoint Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'check for wave linked curve
If TypeOf (theFeature) Is NXOpen.Features.CompositeCurve AndAlso theFeature.FeatureType = "LINKED_CURVE" Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'check for wave linked face
If TypeOf (theFeature) Is NXOpen.Features.ExtractFace AndAlso theFeature.FeatureType = "LINKED_FACE" Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'check for wave linked region
If TypeOf (theFeature) Is NXOpen.Features.ExtractFace AndAlso theFeature.FeatureType = "LINKED_REGION" Then
Return True
End If
'check for wave linked body
If TypeOf (theFeature) Is NXOpen.Features.ExtractFace AndAlso theFeature.FeatureType = "LINKED_BODY" Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'check for wave linked mirror body
If TypeOf (theFeature) Is NXOpen.Features.MirrorBody AndAlso theFeature.FeatureType = "LINKED_MIRROR" Then
Return True
End If
'check for wave linked routing object
If TypeOf (theFeature) Is NXOpen.Features.WaveRouting Then
wave2 = Me.IsWaveFeature2(theFeature)
Return True
End If
'none of the above...
Return False
End Function
Private Function IsWaveFeature2(ByVal theFeature As Features.Feature) As Boolean
Dim lw As ListingWindow = cSession.ListingWindow
lw.Open()
'lw.WriteLine("feature: " & theFeature.GetFeatureName)
'lw.WriteLine("owning part: " & theFeature.OwningPart.Leaf)
Dim theSourceEntityTag As NXOpen.Tag = NXOpen.Tag.Null
Dim owningSourcePartTag As Tag = NXOpen.Tag.Null
Dim allowLoad As Boolean = True
Dim owningPartName As String = ""
Try
'.AskLinkSource throws error if link is internal to the part being processed
'(simple hole, mirror geometry)
cUfSession.Wave.AskLinkSource(theFeature.Tag, allowLoad, theSourceEntityTag)
cUfSession.Obj.AskOwningPart(theSourceEntityTag, owningSourcePartTag)
cUfSession.Part.AskPartName(owningSourcePartTag, owningPartName)
Catch ex As NXException
If ex.ErrorCode = 1105004 Then
'first parameter passed in was invalid (not linked to external geometry?)
'lw.WriteLine("NX exception: " & ex.ErrorCode & ", " & ex.Message)
'lw.WriteLine("")
Return False
Else
'lw.WriteLine("NX exception: " & ex.ErrorCode & ", " & ex.Message)
'lw.WriteLine("")
Return False
End If
Catch ex As Exception
lw.WriteLine("Exception: " & ex.Message)
lw.WriteLine("")
End Try
lw.WriteLine("source part: " & owningPartName)
lw.WriteLine("current part: " & theFeature.OwningPart.FullPath)
'lw.WriteLine("")
If owningPartName.ToUpper = theFeature.OwningPart.FullPath.ToUpper Then
'lw.WriteLine("IsWaveFeature2: False")
'lw.WriteLine("")
Return False
Else
'lw.WriteLine("IsWaveFeature2: True")
'lw.WriteLine("")
Return True
End If
lw.Close()
End Function
Private Sub FindUniqueParents()
For Each tempWF As WaveFeature In Me.WaveFeatures
If tempWF.IsBroken Then
cBrokenLinks.Add(tempWF)
End If
For Each tempString As String In tempWF.WaveParents
If Not cUniqueWaveParents.Contains(tempString) Then
cUniqueWaveParents.Add(tempString)
End If
Next
Next
cUniqueWaveParents.Sort()
End Sub
End Class
Public Class WaveFeature
Private cSession As Session = Session.GetSession
Private cUfSession As UFSession = UFSession.GetUFSession
Private cFeature As Features.Feature
Public Property Feature() As Features.Feature
Get
Return cFeature
End Get
Set(ByVal value As Features.Feature)
cFeature = value
Me.ExamineFeature()
End Set
End Property
Private cParents As New List(Of String)
Public ReadOnly Property WaveParents() As List(Of String)
Get
Return cParents
End Get
End Property
Private cIsBroken As Boolean = True 'assume link is broken
Public ReadOnly Property IsBroken() As Boolean
Get
Return cIsBroken
End Get
End Property
Private cIsAccepted As Boolean = False 'assume it is not broken intentionally
Public ReadOnly Property IsAccepted() As Boolean
Get
Return cIsAccepted
End Get
End Property
Public Sub New(ByVal theFeature As Features.Feature)
Me.Feature = theFeature
End Sub
Private Sub ExamineFeature()
Dim sourcePart As String = ""
Dim sourceId As String = ""
cUfSession.Wave.IsLinkBroken(cFeature.Tag, cIsBroken)
If cIsBroken Then
cIsBroken = True
cUfSession.Wave.AskBrokenLinkSourcePart(cFeature.Tag, sourcePart, sourceId)
cParents.Add(sourcePart)
cUfSession.Wave.AskLinkAcceptBroken(cFeature.Tag, cIsAccepted)
Else
'link NOT broken
'ref: nx_api4930
Dim theInfo As UFWave.LinkedFeatureInfo
cUfSession.Wave.AskLinkedFeatureInfo(cFeature.Tag, theInfo)
Dim sources() As String = theInfo.source_part_name.Split(",")
'wave feature may have multiple parents; e.g. the mirror body
' mirror plane may be owned by a file other than the file that owns the body
For Each prtSource As String In sources
cParents.Add(prtSource)
Next
End If
End Sub
End Class
Thanks
Thanks, the Journal worked great!
NX 8.5
NX 9.0