Hi @MjDeck ,
Like I said in my previous reply, The Code you provided is working fine.
But I want to get below Condition.
Condition:
After I pick the required action from Input list Box, The particular action working fine.
But after completing the Work I want to get Input List Box again. Below Is the Code I Have tested please help me with this.
Sub Main
Dim choices As New List(Of String)
choices.Add("PickOption")
choices.Add("Exit")
Dim choice = InputListBox("Select action", choices, choices(0))
If String.IsNullOrEmpty(choice) Then Exit Sub
Select Case choice
Case choices(0)
PickOption()
Case choices(1)
Exit Sub
End Select
End Sub
Sub PickOption()
Dim oAsm As AssemblyDocument = ThisApplication.ActiveDocument
Dim oAsmCompDef As AssemblyComponentDefinition = oAsm.ComponentDefinition
Dim comp As ComponentOccurrence
Dim oAxis1 As WorkAxis
Dim oAxis2 As WorkAxis
Dim oproxyAxis2 As WorkAxisProxy
Dim oAConstraint As AngleConstraint
Line1 :
comp = ThisApplication.CommandManager.Pick(
SelectionFilterEnum.kAssemblyOccurrenceFilter,
"Select a components")
If comp Is Nothing Then Exit Sub
' If there are selected components we can do something
On Error Resume Next
oAxis1 = oAsmCompDef.WorkAxes.Item ("Y Axis")
oAxis2 = comp.Definition.WorkAxes("Y Axis")
comp.CreateGeometryProxy(oAxis2, oproxyAxis2)
If Not ConstraintExists(comp, ObjectTypeEnum.kAngleConstraintObject, oproxyAxis2, oAxis1) Then
oAConstraint = oAsmCompDef.Constraints.AddAngleConstraint(oproxyAxis2, oAxis1, 0, 78594)
'78594 refers to the undirected angle constraint solution type. 78593 refers to
'directed (which is default), and 78595 is the referenced vector solution
oAConstraint.ConstraintLimits.MaximumEnabled = True
oAConstraint.ConstraintLimits.Maximum.Expression = "45 deg"
oAConstraint.ConstraintLimits.MinimumEnabled = True
oAConstraint.ConstraintLimits.Minimum.Expression = "0 deg"
If oAConstraint.HealthStatus = oAConstraint.HealthStatus.kInconsistentHealth Then
oAConstraint.Delete
oAxis1 = oAsmCompDef.WorkAxes.Item("Y Axis")
oAxis2 = comp.Definition.WorkAxes("Z Axis")
comp.CreateGeometryProxy(oAxis2, oproxyAxis2)
If Not ConstraintExists(comp, ObjectTypeEnum.kAngleConstraintObject, oproxyAxis2, oAxis1) Then
oAConstraint = oAsmCompDef.Constraints.AddAngleConstraint(oproxyAxis2, oAxis1, 0, 78594)
'78594 refers to the undirected angle constraint solution type. 78593 refers to
'directed (which is default), and 78595 is the referenced vector solution
oAConstraint.ConstraintLimits.MaximumEnabled = True
oAConstraint.ConstraintLimits.Maximum.Expression = "45 deg"
oAConstraint.ConstraintLimits.MinimumEnabled = True
oAConstraint.ConstraintLimits.Minimum.Expression = "0 deg"
If oAConstraint.HealthStatus = oAConstraint.HealthStatus.kInconsistentHealth Then
oAConstraint.Delete
oAxis1 = oAsmCompDef.WorkAxes.Item("Y Axis")
oAxis2 = comp.Definition.WorkAxes("X Axis")
comp.CreateGeometryProxy(oAxis2, oproxyAxis2)
If Not ConstraintExists(comp, ObjectTypeEnum.kAngleConstraintObject, oproxyAxis2, oAxis1) Then
oAConstraint = oAsmCompDef.Constraints.AddAngleConstraint(oproxyAxis2, oAxis1, 0, 78594)
'78594 refers to the undirected angle constraint solution type. 78593 refers to
'directed (which is default), and 78595 is the referenced vector solution
oAConstraint.ConstraintLimits.MaximumEnabled = True
oAConstraint.ConstraintLimits.Maximum.Expression = "45 deg"
oAConstraint.ConstraintLimits.MinimumEnabled = True
oAConstraint.ConstraintLimits.Minimum.Expression = "0 deg"
End If
End If
End If
End If
End If
oAConstraint.ConvertToAngleConstraint(oproxyAxis2, oAxis1, 0, 78593)
GoTo Line1
End Sub
Function ConstraintExists(comp As ComponentOccurrence, constraintType As ObjectTypeEnum, entityOne As Object, entityTwo As Object) As Boolean
For Each existing As AssemblyConstraint In comp.Constraints
If existing.Type = constraintType Then
If (existing.EntityOne Is entityOne And existing.EntityTwo Is entityTwo) Or (existing.EntityOne Is entityTwo And existing.EntityTwo Is entityOne) Then
'Logger.Info("Constraint exists for component {0}", comp.Name)
Return True
End If
End If
Next
Return False
End Function
Thanks & Regards,
Manoj Sampath