I often use multiple versions of components in my assemblies so I can validate the top level assy works in all it's expected configurations. Basic, engineering really.
To that end, if I have different versions of component A, I supress all except the version I am working with. I have discovered though, that supressing the component does not supress the contraints that component has to an unsupressed component in the assy.
Really ? The purpose of suppressing something is to essentially eliminate it from existance without deleting it from the file so it can be brought back quickly in all its glory.
If I have to track down every contraint there is for a supressed component and supress them independently, that is an incredible consumption of time.
Is there a switch or setting I am missing here?
Doug
Solved! Go to Solution.
Solved by Curtis_Waguespack. Go to Solution.
Solved by Curtis_Waguespack. Go to Solution.
Solved by Curtis_Waguespack. Go to Solution.
Your example is good but to achieve what i think the OP is looking for you need to have the top block mate to the other side of the assembly.
i know the image above didn't really change but it was the best i could do quickly with mspaint that i thought would get the point across.
Hi bryantsonnier,
Attached is the data set. I think I see the goal now: Suppress one constraint then activate another to move a component. Attached is an example. Files were last saved using Inventor 2015.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com
Thank you. Ok, it seems to work here, but i had a set up where i was using one set screw and depending on the "configuration" it would mate to a hole on one part or another and it would show the mates were excluded but the part wouldn't move. I tried manually moving it hoping that would shake it up but nothing. I just ended up adding another set screw and either exclude or include it depending on the "configuration".
I will try this again when it comes up in my designs. Again thank you.
Hi bryantsonnier,
The other way to do this would be to add the constaint to the iAssembly table and change the offset value. In some cases this approach might be more straight forward. The attached file demonstrates this (just use the part files from the previous post).
I hope this helps.
Best of luck to you in all of your Inventor pursuits,
Curtis
http://inventortrenches.blogspot.com
Yea I can't think of a reason why you wouldn't want the affected constraints to automatically be suppressed by default when a component is suppressed. Nearly every other CAD software does this.
The original reason was because suppress was intended to be used for managing capacity (memory) but the component was still part of the design (in the BOM, etc.) so it should still be part of the solve. We use cached geometry from the suppressed component so that the other "side" of the constraint didn't go flying off into space or allow other constraints that conflicted with the original for when you unsuppressed it.
That is the historical reason anyway.
With suppression being more design now (with model states especially) maybe an option to suppress/unsuppress constraints along with the component is warranted. Flexible assemblies will complicate this a bit...
This is a quick and automatic way to do this too:
Dim oAsm As AssemblyDocument = ThisApplication.ActiveDocument
Dim oAsmDef As AssemblyComponentDefinition = oAsm.ComponentDefinition
Dim oOccs As ComponentOccurrences = oAsmDef.Occurrences
Dim oAsmCons As AssemblyConstraints = oAsmDef.Constraints
For Each oAsmCon As AssemblyConstraint In oAsmCons
Dim oOcc1 As ComponentOccurrence = oAsmCon.OccurrenceOne
Dim oOcc2 As ComponentOccurrence = oAsmCon.OccurrenceTwo
If oOcc1 IsNot Nothing AndAlso oOcc2 Is Nothing Then
If oOcc1.Suppressed = True Then
oAsmCon.Suppressed = True
Else
oAsmCon.Suppressed = False
End If
ElseIf oOcc1 Is Nothing AndAlso oOcc2 IsNot Nothing Then
If oOcc2.Suppressed = True Then
oAsmCon.Suppressed = True
Else
oAsmCon.Suppressed = False
End If
ElseIf oOcc1 IsNot Nothing AndAlso oOcc2 IsNot Nothing Then
If oOcc1.Suppressed = True Or oOcc2.Suppressed = True Then
oAsmCon.Suppressed = True
Else
oAsmCon.Suppressed = False
End If
End If
Next