Create an ''expression'' in a component from an assembly?

Hello !

in VB Journaling, is it possible to create an '' expression '' in a component from an assembly?

The selection mode is the tag of the part or the name of the part in my assembly.

I found in your examples and on Gtac that to create an expression, the part must be workpart.

In fact, how to associate a part tag or its name with an active workpart or make a work part from a tag or a name of part in the assembly?

In fact, from an assembly, i want to copy the value of an expression to the value of the same expresssion but in another part in an assembly.
Example:
I want to copy the Lenght value of part "A" to the "Lenght" value of part "B". Everything must be done from an assembly. Now, in my code, I am able to have the Tag or the name of each of the two parts.

Best Regards!
-------------------------------------------------------------------

Try
Selection.SelectionScope.AnyInAssembly

'Dim SelectionMask(0) As Selection.MaskTriple
With SelectionMask(0)
.Type = UFConstants.UF_component_type
.Subtype = UFConstants.UF_all_subtype '0
.SolidBodySubtype = 0
End With

selection0.SetSelectionFilter(Selection.SelectionAction.ClearAndEnableSpecific, SelectionMask)
selection01.SetSelectionFilter(Selection.SelectionAction.ClearAndEnableSpecific, SelectionMask)

Catch ex As Exception
'---- Enter your exception handling code here -----
theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString)
End Try

part "A" = sel_obj_source As NXObject
part "B" = sel_obj_cible As NXObject

'------------------------------------------------------------------------------
'Fonction de rappel: update_cb
'------------------------------------------------------------------------------
Public Function update_cb(ByVal block As NXOpen.BlockStyler.UIBlock) As Integer

Dim s As Session = Session.GetSession()
Dim ufs As NXOpen.UF.UFSession = NXOpen.UF.UFSession.GetUFSession()
Dim sel_obj_source As NXObject
Dim sel_obj_cible As NXObject
Dim subtype As Integer
Dim theUI As UI = ui.GetUI
Dim numsel As Integer = theUI.SelectionManager.GetNumSelectedObjects()
Dim c_part As Part = Nothing

Try

If block Is selection0 Then
'----------------------------------------
'Active les boutons OK/APPLY
ActifSelection0 = 0

StatusProgressionSource (sel_obj_source)
Echo("Retour Source")
'----------------------------------------
'Si action sur la sélection01 (Composante cible)
ElseIf block Is selection01 Then

'----------------------------------------
'Active les boutons OK/APPLY
ActifSelection01 = 0

StatusProgressionCible (sel_obj_source, sel_obj_cible)
Echo("Retour Cible")

'Si action sur le bouton0 (Réinitialisation)
ElseIf block Is button0 Then
Dim blockSelPL1 As PropertyList = selection0.GetProperties()
Dim emptyArray1(-1) As TaggedObject
Dim blockSelPL2 As PropertyList = selection01.GetProperties()
Dim emptyArray2(-1) As TaggedObject

blockSelPL1.SetTaggedObjectVector("SelectedObjects", emptyArray1)
ActifSelection0 = 0
blockSelPL2.SetTaggedObjectVector("SelectedObjects", emptyArray2)
ActifSelection01 = 0

'Focus sur "Selection0" après la réénitialisation
selection0.focus()
ufs.Ui.CloseListingWindow()
Echo("Réinitialisation...")

'---- Enter your code here -----

'Si action sur le bouton0 (Réinitialisation)
ElseIf block Is button01 Then
'---- Enter your code here -----

'Si action sur le toggle (Afficher la fenetre d'information)
ElseIf block Is toggle0 Then
'---- Enter your code here -----
Try
If Toggle0.value = False then
'Toggle0.value = True
IgnoreEcho = True
Echo("Case décoché.")
ufs.Ui.CloseListingWindow()
Else If Toggle0.value = True Then
'Toggle0.value = False
IgnoreEcho = False
Echo("Case coché.")

Echo("_______________________________________________________________")
Echo("Heure de fin: " & CType(TimeOfDay(), String))
Echo("Nombre de pièce traité: ")
Echo("Fin du rapport")
End If

Catch ex As Exception
'---- Enter your exception handling code here -----
theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString)

End Try

'Bouton INVISIBLE, mais actif !!!
ElseIf block Is button01 Then
'---- Enter your code here -----

'Toggle INVISIBLE, mais actif !!!!
ElseIf block Is toggle01 Then
'---- Enter your code here -----

End If

Catch ex As Exception
'---- Enter your exception handling code here -----
theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString)
End Try

Try

If ActifSelection0 = 0 and ActifSelection01 = 0 then
ufs.Ui.CloseListingWindow()
ECHO("Programme pour dupliquer les dimenssions d'une planche vers une autre.")
ECHO("Heure de depart: " & CType(TimeOfDay(), String))
ECHO("_______________________________________________________________")
Echo("0-0")
Echo("Dupplication impossible !")
Echo("Composante source et cible manquante.")
Echo("")
Echo("Nombre de selection pour la composante source: 0")
Echo(" Chemin: Vide")
Echo(" Nom fichier: Vide")
Echo(" Tag: Vide")
Echo(" Type: Vide")
Echo(" Subtype: Vide")
Echo(" Objet de type: Vide")
Echo("")
Echo("Nombre de selection pour la composante cible: 0")
Echo(" Chemin: Vide")
Echo(" Nom fichier: Vide")
Echo(" Tag: Vide")
Echo(" Type: Vide")
Echo(" Subtype: Vide")
Echo(" Objet de type: Vide")
Echo("")
Echo("Veuillez sélectionner une composante source et cible de type planche.")

Else If ActifSelection0 = 0 and ActifSelection01 = 1 then
ufs.Ui.CloseListingWindow()
ECHO("Programme pour dupliquer les dimenssions d'une planche vers une autre.")
ECHO("Heure de depart: " & CType(TimeOfDay(), String))
ECHO("_______________________________________________________________")
Echo("0-1")
Echo("Dupplication impossible !")
Echo("Composante source manquante.")
Echo("")
Echo("Nombre de selection pour la composante cible: 0")
Echo(" Chemin: Vide")
Echo(" Nom fichier: Vide")
Echo(" Tag: Vide")
Echo(" Type: Vide")
Echo(" Subtype: Vide")
Echo(" Objet de type: Vide")
Echo("")
Echo("Nombre de selection pour la composante cible: " & CibleValObjet)
Echo(" Chemin: " & CibleValChemin)
Echo(" Nom fichier: " & CibleValNom)
Echo(" Tag: " & CibleValTag)
Echo(" Type: " & CibleValType)
Echo(" Subtype: " & CibleValSubtype)
Echo(" Objet de type: " & CibleValObjetType)

If LireAttribueCibleStatus = 1 Then
Echo(" UM_STD_DIM: " & ValAttCible_UM_STD_DIM)
Echo(" UM_STD_SCALE_LAB: " & ValAttCible_UM_STD_SCALE_LAB)
Echo(" UM_STD_SCALE_DIM: " & ValAttCible_UM_STD_SCALE_DIM)
End If

Echo("")
Echo("Veuillez sélectionner une composante source de type planche.")

Else If ActifSelection0 = 1 and ActifSelection01 = 0 then
ufs.Ui.CloseListingWindow()
ECHO("Programme pour dupliquer les dimenssions d'une planche vers une autre.")
ECHO("Heure de depart: " & CType(TimeOfDay(), String))
ECHO("_______________________________________________________________")
Echo("1-0")
Echo("Dupplication impossible !")
Echo("Composante cible manquante.")
Echo("")
Echo("Nombre de selection pour la composante source: " & SourceValObjet)
Echo(" Chemin: " & SourceValChemin)
Echo(" Nom fichier: " & SourceValNom)
Echo(" Tag: " & SourceValTag)
Echo(" Type: " & SourceValType)
Echo(" Subtype: " & SourceValSubtype)
Echo(" Objet de type: " & SourceValObjetType)

If LireAttribueSourceStatus = 1 Then
Echo(" UM_STD_DIM: " & ValAttSource_UM_STD_DIM)
Echo(" UM_STD_SCALE_LAB: " & ValAttSource_UM_STD_SCALE_LAB)
Echo(" UM_STD_SCALE_DIM: " & ValAttSource_UM_STD_SCALE_DIM)
End If

Echo("")
Echo("Nombre de selection pour la composante cible: 0")
Echo(" Chemin: Vide")
Echo(" Nom fichier: Vide")
Echo(" Tag: Vide")
Echo(" Type: Vide")
Echo(" Subtype: Vide")
Echo(" Objet de type: Vide")
Echo("")
Echo("Veuillez sélectionner une composante cible de type planche.")

Else If ActifSelection0 = 1 and ActifSelection01 = 1 then
ufs.Ui.CloseListingWindow()
ECHO("Programme pour dupliquer les dimenssions d'une planche vers une autre.")
ECHO("Heure de depart: " & CType(TimeOfDay(), String))
ECHO("_______________________________________________________________")

If ActifSelection0 = 1 and ActifSelection01 = 1 and LireAttribueSourceStatus = 1 then
Echo("1-1-1_Duplication")
Else If ActifSelection0 = 1 and ActifSelection01 = 1 Then
Echo("1-1")
End If

Echo("")
Echo("Nombre de selection pour la composante source: " & SourceValObjet)
Echo(" Chemin: " & SourceValChemin)
Echo(" Nom fichier: " & SourceValNom)
Echo(" Tag: " & SourceValTag)
Echo(" Type: " & SourceValType)
Echo(" Subtype: " & SourceValSubtype)
Echo(" Objet de type: " & SourceValObjetType)

If LireAttribueSourceStatus = 1 Then
Echo(" UM_STD_DIM: " & ValAttSource_UM_STD_DIM)
Echo(" UM_STD_SCALE_LAB: " & ValAttSource_UM_STD_SCALE_LAB)
Echo(" UM_STD_SCALE_DIM: " & ValAttSource_UM_STD_SCALE_DIM)
End If

Echo("")
Echo("Nombre de selection pour la composante cible: " & CibleValObjet)
Echo(" Chemin: " & CibleValChemin)
Echo(" Nom fichier: " & CibleValNom)
Echo(" Tag: " & CibleValTag)
Echo(" Type: " & CibleValType)
Echo(" Subtype: " & CibleValSubtype)
Echo(" Objet de type: " & CibleValObjetType)

If LireAttribueCibleStatus = 1 Then
Echo(" UM_STD_DIM: " & ValAttCible_UM_STD_DIM)
Echo(" UM_STD_SCALE_LAB: " & ValAttCible_UM_STD_SCALE_LAB)
Echo(" UM_STD_SCALE_DIM: " & ValAttCible_UM_STD_SCALE_DIM)
End If

Echo("")
Echo("Dupplication possible de " & theCompSource.Name & " vers " & theCompCible.Name & ".")

ManipulationDesChaines(ValAttSource_UM_STD_SCALE_DIM,ValAttSource_UM_STD_SCALE_LAB,ValAttSource_UM_STD_OPT_LAB,ValAttSource_UM_STD_OPT_DIM)

End If

Catch ex As Exception
'---- Enter your exception handling code here -----
theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString)
End Try

update_cb = 0
End Function

Do you want to create an interpart expression, where an expression in the assembly drives the value of an expression in the component? Or do you want to create an independent expression in the component part file that has the same initial value as an expression in the assembly file?

IIRC, the file that will own the new expression doesn't necessarily need to be the work part, but it will need to be fully loaded.

Hi!
Yes in my program I make sure the part is loaded. No prob about that.

Yes, want to create (modify the value) an independent expression in the target component part file that has the same initial value as an expression in the assembly file.

The expression will already be created in the target part, I just want to copy the value of the "X name" expression of the source component to the expression "X name" of the target component.

Thank you !

Pat