iLogic Assembly requires multiple update button presses
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello, I have the beginning of a large assembly. Right now the assembly has 8 pieces of angle, based on the design requirements, I have created a form that drives Length, Height and Width. There is a dummy part file that holds the parameters and then linked to the parts inside the assembly.
The angle lengths, position and suppression change based on the 3 driving parameters. I have managed to write the rules to make the assembly work, but I have noticed that I sometimes need to press update button on the form multiple times to ensure the changes update. This isn't really an issue right now, but I only have 8 parts in the assembly, if I have 200, will it still only be a few clicks or will it amplify and how will I know when the assembly is fully updated? I am not a programmer, so I assume the reason for multiple update clicks is because of my ilogic rule syntax.
Here is a picture of the assembly and form:
Here is the rule in the assembly that suppresses the parts based on the form inputs.
'LINKED ASSEMBLY USER PARAMETERS TO PARAMETERS DUMMY FILE
Parameter("PARAMETER_FILE", "LINKED_HEIGHT") = CANOPY_HEIGHT
Parameter("PARAMETER_FILE", "LINKED_WIDTH") = CANOPY_WIDTH
Parameter("PARAMETER_FILE", "LINKED_LENGTH") = CANOPY_LENGTH
'SUPPRESS PARTS BASED ON MASTER PARAMETERS
If LINKED_LENGTH <= 245 Then
Component.IsActive("SIDE_A_ANGLE2_TOP")=False
Component.IsActive("SIDE_A_ANGLE3_TOP")=False
Component.IsActive("SIDE_A_ANGLE4_TOP")=False
Component.IsActive("SIDE_A_ANGLE6_BOTTOM")=False
Component.IsActive("SIDE_A_ANGLE7_BOTTOM")=False
Component.IsActive("SIDE_A_ANGLE8_BOTTOM")=False
Else
Component.IsActive("SIDE_A_ANGLE2_TOP")=True
Component.IsActive("SIDE_A_ANGLE3_TOP")=True
Component.IsActive("SIDE_A_ANGLE4_TOP")=True
Component.IsActive("SIDE_A_ANGLE6_BOTTOM")=True
Component.IsActive("SIDE_A_ANGLE7_BOTTOM")=True
Component.IsActive("SIDE_A_ANGLE8_BOTTOM")=True
End If
If LINKED_LENGTH <= 473 Then
Component.IsActive("SIDE_A_ANGLE3_TOP")=False
Component.IsActive("SIDE_A_ANGLE4_TOP")=False
Component.IsActive("SIDE_A_ANGLE7_BOTTOM")=False
Component.IsActive("SIDE_A_ANGLE8_BOTTOM")=False
Else
Component.IsActive("SIDE_A_ANGLE3_TOP")=True
Component.IsActive("SIDE_A_ANGLE4_TOP")=True
Component.IsActive("SIDE_A_ANGLE7_BOTTOM")=True
Component.IsActive("SIDE_A_ANGLE8_BOTTOM")=True
End If
iLogicVb.UpdateWhenDone = True
Here is a rule from one of the angle parts, they are all written roughly the same way, just have different lengths.
'length requires only one angle, unsuppress miter2 to ensure both ends are mitered
If LINKED_LENGTH <= 245 Then
Feature.IsActive("MITER2")=True
LENGTH = LINKED_LENGTH+ANGLES_OFFSET*2+6
'length requires 2 angles with second angle set to 36" for splice
ElseIf LINKED_LENGTH <= 284.5 Then
Feature.IsActive("MITER2")=False
LENGTH = LINKED_LENGTH-36+4
'length requires 2 angles, angle one is full length, second angle > than 36"
ElseIf LINKED_LENGTH <= 383 Then
Feature.IsActive("MITER2")=False
LENGTH =252
'length requires 2 angles, split evenly up to 40 feet max
ElseIf LINKED_LENGTH <= 473 Then
Feature.IsActive("MITER2")=False
LENGTH = LINKED_LENGTH/2+3.5
'length requires 4 angles, 2 sections, each section has small angle set to 36" for splice
ElseIf LINKED_LENGTH <= 569 Then
Feature.IsActive("MITER2")=False
LENGTH = ((LINKED_LENGTH+7)/2)-36
'length requires 4 angles, 2 equal sections, second angle on each section > 36"
ElseIf LINKED_LENGTH > 569 Then
Feature.IsActive("MITER2")=False
LENGTH = 252
End If
InventorVb.DocumentUpdate()
thanks
Sean
Product Designer at Teksign Inc.
Inventor 2016 SP1
Dell Precision 3660
i7-12700 @ 2.40GHz-4.90GHz
32GB DDR5 4400MHz RAM
NIVDIA RTX A2000 6GB