TLDR: Is there a way to make an assembly choose from existing iParts or create new iParts from an iPart factory based on parameters set within that assembly?
I am attempting to create an assembly factory which chooses component parts of the right (specified) length, or if they don't already exist, to create new ones accordingly. In this instance, one of the component parts is a rod of variable length. Several lengths of rod have already been created to choose from, but there are an indefinite number of possible variations. For this reason, I have made a custom iPart with its length as the defining variable between its different versions. This allows new variations to be created as necessary.
I would like a parameter in the assembly to drive which rod is selected out of the existing set, or to create a new one if necessary.
One option already explored was to have the rod be a normal part, and simply have an iLogic rule in the assembly set the rod length to a user-specified parameter. The problem with this is that the part is then the same length for all assemblies, which breaks all but the most recent assembly. The rod component was made into an iPart to avoid this problem, but now every instance of the part would have to be placed in each new assembly by hand, which is impractical given the large number of these parts on the real assembly. I would like to do this same kind of thing, except with iParts from a factory.
Should I make this an iAssembly? How could parameters drive part selection in this way? Is there any mechanism which would allow for such an 'assembly factory'? Let me know if you need more information. I'm just getting started learning iLogic and configurators, so any solutions, suggestions, or comments you may have are greatly appreciated. Thanks.
Images of an example part and assembly are attached below.
Rod iPart. Note length is the differentiating variable:
Assembly. Would like the 'value' column on the right to take a variable, rather than a fixed number.
Solved! Go to Solution.
TLDR: Is there a way to make an assembly choose from existing iParts or create new iParts from an iPart factory based on parameters set within that assembly?
I am attempting to create an assembly factory which chooses component parts of the right (specified) length, or if they don't already exist, to create new ones accordingly. In this instance, one of the component parts is a rod of variable length. Several lengths of rod have already been created to choose from, but there are an indefinite number of possible variations. For this reason, I have made a custom iPart with its length as the defining variable between its different versions. This allows new variations to be created as necessary.
I would like a parameter in the assembly to drive which rod is selected out of the existing set, or to create a new one if necessary.
One option already explored was to have the rod be a normal part, and simply have an iLogic rule in the assembly set the rod length to a user-specified parameter. The problem with this is that the part is then the same length for all assemblies, which breaks all but the most recent assembly. The rod component was made into an iPart to avoid this problem, but now every instance of the part would have to be placed in each new assembly by hand, which is impractical given the large number of these parts on the real assembly. I would like to do this same kind of thing, except with iParts from a factory.
Should I make this an iAssembly? How could parameters drive part selection in this way? Is there any mechanism which would allow for such an 'assembly factory'? Let me know if you need more information. I'm just getting started learning iLogic and configurators, so any solutions, suggestions, or comments you may have are greatly appreciated. Thanks.
Images of an example part and assembly are attached below.
Rod iPart. Note length is the differentiating variable:
Assembly. Would like the 'value' column on the right to take a variable, rather than a fixed number.
Solved! Go to Solution.
Solved by A.Acheson. Go to Solution.
iAssemblies do not accept custom iparts so that option is out.
The only configuration that is going to be robust would be an ilogic assembly and use place ilogic component to place the assembly and any custom part will be automatically saved to the workspace. You cannot control the filename with this method. Any iproperty changes will need to be done manually or with ilogic script after the configuration has been placed. See video of how to it works here
This method should solve the issue of parts in your current assembly being changed in previous assembly. This is due to the parts being an independent file.
While it would be possible to place factory member by code and create a new member in the factory and place the member to the assembly this may not work out to well in practice. An ipart factory should live in library folder and be read only so when the assembly files get copied the ipart member are skipped.
iAssemblies do not accept custom iparts so that option is out.
The only configuration that is going to be robust would be an ilogic assembly and use place ilogic component to place the assembly and any custom part will be automatically saved to the workspace. You cannot control the filename with this method. Any iproperty changes will need to be done manually or with ilogic script after the configuration has been placed. See video of how to it works here
This method should solve the issue of parts in your current assembly being changed in previous assembly. This is due to the parts being an independent file.
While it would be possible to place factory member by code and create a new member in the factory and place the member to the assembly this may not work out to well in practice. An ipart factory should live in library folder and be read only so when the assembly files get copied the ipart member are skipped.
A.Acheson, thank you for your answer, it was most illuminating.
After some experimentation, I was able to create a sort of dynamic assembly where I could change both component parts and features of the assembly cleanly just by manipulating some variables in the assembly itself. This makes the process of modifying an assembly quick and easy. When these changes affect part dimensions, it will automatically create new part files for these variants. I'll explain how to set this up for those who might be curious:
I hope this will help anyone looking to automate modifying their assemblies without using iParts and iAssemblies. This approach is, in my opinion, more intuitive, elegant, and flexible than staring down giant inscrutable tables of parts and configurations, though perhaps this is merely a reflection of my lack of experience with iAssemblies. Either way, I hope this will be at least somewhat useful, best of luck.
A.Acheson, thank you for your answer, it was most illuminating.
After some experimentation, I was able to create a sort of dynamic assembly where I could change both component parts and features of the assembly cleanly just by manipulating some variables in the assembly itself. This makes the process of modifying an assembly quick and easy. When these changes affect part dimensions, it will automatically create new part files for these variants. I'll explain how to set this up for those who might be curious:
I hope this will help anyone looking to automate modifying their assemblies without using iParts and iAssemblies. This approach is, in my opinion, more intuitive, elegant, and flexible than staring down giant inscrutable tables of parts and configurations, though perhaps this is merely a reflection of my lack of experience with iAssemblies. Either way, I hope this will be at least somewhat useful, best of luck.
Can't find what you're looking for? Ask the community or share your knowledge.