I''l start by explaining my setup before the problem:
Top Level
Top Level Sub Assemblies
All other assemblies/parts
The Problem
When a drop-down option is changed, the Data Rule is triggered, which changes all the numerical values in the Data Part, which in turn triggers the Configuration Rule in any top level sub assemblies.
What I'm finding is that when an sub-assembly is replaced by the Configuration Rule, the parts inside newly placed sub-assembly require their iLogic rules to be run manually for any of the optional changes to take effect.
I am assuming the reason for this is that they are not present in the model when the numerical values of the Data Part were changed, so there is nothing triggering their rules to run.
Has anyone experienced a similar issue, knows of a work around or a change to the workflow to overcome it?
Hello,
what I do is only replace standard parts, they don't change, so no need to run rule there.
why not put All assemblies in your sollution, and turn of the one's you don't need, then they will be there for the updat
what I did recently, was in the main assy create a rule that loops throug all components. in some components that needed parameter/properties changes, I put in a property with a value. when the loop runs in to one of those properties , depending on the value it changes some, at least one property. after that the component is updated with the "any property change" trigger.
Thanks for you responses.
I used to take the approach of putting all my assemblies in the model and suppress what I don't need, but it made the models very heavy/slow to use and in order to have an accurate BOM I had to also set the BOM reference. It may just be me, but I hate working will a level of detail, it doesn't seem fit for purpose when used with iLogic to control the BOM.
I'm experimenting with iAssemblies just now, are they good for this kind of application? what are its pitfalls?
Hi,
We have tried to use both Suppress and iPart/iAssemblies before..
In my opinion these 2 solution does not work very well..
LoD is only working for to level components.
Setting parts to Reference and Visible=False is might something that would work.
We have tried 2 different ways to solves these kind of problems.
First one is hard.. Use API to place components. (This is the one that we are using our self)
Second one is a little bit easier but not as good as the first one..
It's a tecnique that we call "NoPart" and it's basiclly using one single and very small part that we have set as Reference in Document Settings.
And switch between that little part and a component by using Replace. This is much better than using Suppress..
We call it "NoPart" because we named our little part to NoPart.ipt.. 🙂
/Rikard
I'm using the API to delete and place components using iMates, I really like it as it keeps the model light and there's no worrying about what is visible/invisible or incorrect BOM references. However it's no use if the parts that are placed need their rules run manually after placement :@
I began using the RunOther rule, but it just becomes another thing to manage.
Hi,
I don't understand if you have more problem.. (English is not my first language.)
You should not have to run them manually if you do it right.
RunOther in Document should take care of that problem..
SyntaxEditor Code Snippet
iLogicVb.RunRule("PartA:1", "ruleName")
/Rikard
I wish not to have to explicitly list part names and their rules. It then becomes something else that needs to be managed/kept up to date in the code.
I had hoped Inventor could recognize the parameters in the replacement parts had changed and ran their respective rules.