Top Down Modelling with Configurations

Top Down Modelling with Configurations

JEA2022
Contributor Contributor
5,926 Views
27 Replies
Message 1 of 28

Top Down Modelling with Configurations

JEA2022
Contributor
Contributor

I'm new-ish to Inventor and have been struggling to do decent Top-Down design in a way that makes mass producing drawings with lots of different configurations quick and efficient.


What I want 

  1. Have a top level something that I can draw all my parts in together and define in system wide parameters that do not change per configuration (eg wall thickness if everything is from the same material)
  2. Have individual part/assembly files that I can designate which configuration (A, B, C, D in the image below) I want use Model States/iPart/iAssembly  
  3. Have drawings for each ipt/iam with multiple sheets showing identical dimensioning for each configuration (eg Config A goes on S1- Sheet 1, B to S2)

UPRS - Frame 5 (1).jpg

 I have watched a lot of videos (1 ,2,3,4,5) and read a few Top-Down design guides (6,7 ,8 )  but have thus far been unsuccessful in finding an effective way of doing what I want. This answer given by @BDCollett here seems to indicate that it is possible to do exactly what I want to be able to do for Attempt 2 below, but I haven't been able to do so. Other answers (eg this by @CCarreiras ) seem to indicate that this kind of task is better suited to iLogic, however as you will see below I have had issues where iLogic works fine in parts/assemblies but trying to get dwgs to show the right geometry does not work. If anyone has any ideas/tips pointers I would greatly appreciate it.


Attempt 1: Skeleton Modelling
This is the method I still use as it is the fastest, however it still requires a lot of repetitive tasks that are time consuming and very inefficient. Issues are:

  • Use of iLogic to pass parameters from Master Assy to Master Part does not seem to be the intended purpose, as although the Assy performs as expected, the geometry does not change in drawings using configurations  
  • This method does not involve individual part configurations (whether by iPart or Model State) as to update the geometry shown on the drawings, the underlying model configuration must be manually changed, meaning it is much faster to just change the assembly file (instead of each individual part file).

UPRS - Frame 6 (2).jpg

Attempt 2: Multi-Body Modelling
This method is so close to working but fails because I cannot programmatically edit from which configuration a Derived Feature comes from (in my image below I show that this can be done via iLogic but as with above, this does not translate to being able to update the geometry on the drawings).
Additional issues include:

  • If any of my sub parts are sheet metal parts I have to make my Master Part a sheet metal part, ruling out the us of Rule Fillet and other useful tools
  • Because I cannot choose the Model State/ iPart representation of a derived solid I have to create a full set of ipt files for each configuration. I am sure this could be automated using iLogic 
  • However, when creating drawings I want each sheet to be essentially identical (same views, same sections, same dimension locations), however as the "Component File" of a drawing view cannot be changed after placement this means that I have to recreate every sheet from scratch which is significantly more time consuming that my Skeleton Modelling Attempt

UPRS - Frame 7.jpg

 

0 Likes
Accepted solutions (2)
5,927 Views
27 Replies
Replies (27)
Message 21 of 28

BDCollett
Advisor
Advisor

@tomasz.sztejka wrote:

My attempt to switching configuration was rather complex and only partially successful. Certainly not stable, but time flows, maybe new version of Inventor is better in that manner.

 

I did create a code which copied f(x) params from spreadsheet to each file in a project. Sounds simple, but is not, since correct parameter must get to correct part, regardless where it is used in assembly tree. Linking parameters will not work due to restrictions put on it by Inventor (boolean, text, spreadsheet layout etc.).

 

Then I wrote a code which was able to deduce the "who depends on me?" tree, order parts "bottom up" and run copying and updating code on each file in order of appearance.

 

The stoppers were:

 1. Dealing with multiple occurrences of same part in different configurations. Impossible due to lack of "overlay parameters" concept in internal Inventor design. Model state suggests that it does exist now, at least internally, but I have not played with it.

 2. Inability to "suppress" part in assembly without creating wobbly, hidden "Level Of Detail" which needs to be referenced later in upper level assemblies  and etc for suppression to work at all assembly and drawing levels. Notice without a dedicated iLogic there is no GUI to set "conditional suppression" in assembly while it is in part.

Notice, at the time I tested it part which was suppressed DID appear in BOM. I could not figure out a reliable method to remove it from BOM.

 3. iParts and iAssemblies are absolutely no go. Too messy to deal with them and with configuration.

 4. The whole project is "switched" to specified configuration and any previous configuration is lost. One needs either to copy project for each configuration, what is a pain in where the sun doesn't shine when one needs to keep an archive and provide updates to base project, or export it in "frozen" format (dwf, pdf, stp etc.) to an archive. Vault is practically killed by it.

 5. As usual in Inventor, if change is significant update of part or assembly may produce peculiar result.

 6. Maintenance of iLogic is a pain since, opposite to VBA, it can't link to "per application" code. If iLogic is used in 1000 of documents to do the same job and You need to change the iLogic code, then You need to change it in 1000 documents. Or at least I am too dumb to figure out how could it be done otherwise.

 

My final result was: Inventor cannot efficiently support configurations. It can be forced in very simple cases (iParts/iAssemblies) but in generic - no.


Based on this I can only think that you are over thinking the iLogic. I see this often and the same problems that people get into with an absolute mess of complicated iLogic rules and far too many of them. You should not need a rule in every part, especially not 1000's of parts with individual rules, that is a recipe for disaster. 

If anything, you use a global rule if it needs to apply to every part.

Link the spreadsheet to the master part, then the spreadsheet remains static and the other parameters dynamic when you copy. Simple.

 

"2. Inability to "suppress" part in assembly without creating wobbly, hidden "Level Of Detail" "

There is no such thing as "Level Of Detail" anymore, there are Model States. I don't quite understand the wording you are using here with "In part" and things not showing up in the BOM. 

 

I have made iLogic configurable assemblies for years. I keep it simple, have a single Master part and use Copy Design with Vault. 

I keep a Master copy that has no changes and copy from that. 

 

Instead of trying to make the software mold to the way you are trying to do things, you may have to adjust your methods and workflow to suit the software a little more.

Message 22 of 28

Frederick_Law
Mentor
Mentor

iPart and iAssembly handle suppression properly.

As long as you can keep the generated files up to date.

 

LoD was designed for "large assembly simplification", not to suppress parts or assemblies like config.

Hence everyone try that and failed.

 

I'm testing model state and iPart.

I got some unsuppressed iMate suppressed in generated iPart.

Restarting IV to test.

 

PS: Something glitched in the file.  Need to delete and recreate iMate.

0 Likes
Message 23 of 28

JEA2022
Contributor
Contributor

@BDCollett wrote:

@JEA2022 wrote:

  • Pass these (via iLogic) to a master part file that has
    • no configurations
    • all the parameters/sketches

 

@BDCollett  can I ask how exactly you pass the parameter to the Master part file from the assembly?

I was using this code but if I update my filenames each time with a prefix (eg 1x1_MASTER) then the iLogic no longer works as it requires the Master Part to simply be called MASTER.ipt.

 

Public Sub Main()
    CopyUserParams()
End Sub

Private Sub CopyUserParams()
    If ThisDoc.Document.DocumentType <> Inventor.DocumentTypeEnum.kAssemblyDocumentObject Then
        MsgBox("The active document must be an assembly.")
        Return
    End If

    Dim AsmDoc As Inventor.AssemblyDocument = ThisDoc.Document
    Dim MasterDoc As Inventor.PartDocument = Nothing

    For Each RefDoc As Inventor.Document In AsmDoc.AllReferencedDocuments
        ' Look for part documents.
        If RefDoc.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject Then
            Dim PartDoc As Inventor.PartDocument = RefDoc
            If PartDoc.DisplayName = "MASTER.ipt" Then
                MasterDoc = PartDoc
            End If
        End If
    Next

    If MasterDoc Is Nothing Then
        MsgBox("The part document called 'MASTER.ipt' couldn't be found.")
        Exit Sub
    End If

    Dim RefDocUserParams As UserParameters = MasterDoc.ComponentDefinition.Parameters.UserParameters

    ' Add the assembly parameters to the part.
    For Each AsmUserParam As UserParameter In AsmDoc.ComponentDefinition.Parameters.UserParameters
        ' Check to see if the parameter already exists.
        Dim CheckParam As UserParameter = Nothing
        Try
            CheckParam = RefDocUserParams.Item(AsmUserParam.Name)
        Catch ex As Exception
            CheckParam = Nothing
        End Try

        If CheckParam Is Nothing Then
            ' Create the missing parameter.
            RefDocUserParams.AddByExpression(AsmUserParam.Name, AsmUserParam.Expression, AsmUserParam.Units)
        Else
            ' Update the value of the existing parameter.
            CheckParam.Expression = AsmUserParam.Expression
        End If
    Next
	iLogicVb.UpdateWhenDone = True
End Sub

 



 

I think it is related to the issue above but when I attempt to use Design Copy it throws an error about changing the assembly references: Error adjusting references for document file

If you had tips on resolving that also I would appreciate it

0 Likes
Message 24 of 28

tomasz.sztejka
Advocate
Advocate

First I wasn't talking about a single assembly. I was talking about a whole product which is a chain of numerous assemblies. Single assembly never was a problem, I have iAssembly for that.

 

I must agree, I am overthinking the iLogic. I am a programmer and have a hard time to switch from thinking in terms of "big programming" to scripting. I am used to "libraries" and etc.

 

>(...)If anything, you use a global rule if it needs to apply to every part.(...)

 

I never realized that can You have a "global" iLogic which can be applied by the trigger, which is stored in some external file and is following changes made to it. I was living under an impression that iLogic is about rules in files and "snippets" which are just copied. Again, I was probably thinking too much as a programmer and did not test something.

 

>(...) there are Model States(...)

 

who has it, that has it. I don't have them. Each time I suppress a part new Level Of Detail is created. Part suppressed that way do appear in BOM. Do Model State allow to "remove" part from assembly (including BOM)? By BOM I do mean all: table on drawing, BOM export from Inventor assembly and BOM seen by Vault.

 

>(...) I don't quite understand the wording(...)

 

Quite understandable. English is not my primary language and I never took a good training in it. I meant, that in part design environment I can right click and suppress the feature conditionally. For an example if some parameter is such and such. This is a superb function since my goal is to provide a method for configuring products in Inventor which will be usable for guys with zero ability in iLogic. Sadly however there is no such GUI functionality in assembly environment. I can't imagine why.

 

You said You do use Copy Design, right? How do You manage changes then? I mean the following scenario:

 - during a year I do create about 50 different configurations;

 - after that time I need to make a change which affects 45 of them and all configurations I will do from that point.

 

My question is: how and where do You apply that change so that it would propagate to all configurations You made (in case if customer will repeat the order) and to all future ones?

 

Thanks for sharing Your knowledge.

 

Message 25 of 28

swalton
Mentor
Mentor

@tomasz.sztejka wrote:

 

>(...) there are Model States(...)

 

who has it, that has it. I don't have them. Each time I suppress a part new Level Of Detail is created. Part suppressed that way do appear in BOM. Do Model State allow to "remove" part from assembly (including BOM)? By BOM I do mean all: table on drawing, BOM export from Inventor assembly and BOM seen by Vault.

 


Model States were introduced in Inventor 2022.  They replace Level-Of-Detail.  

See: https://knowledge.autodesk.com/support/inventor/learn-explore/caas/CloudHelp/cloudhelp/2022/ENU/Inve...

Steve Walton
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature


Inventor 2025
Vault Professional 2025
0 Likes
Message 26 of 28

JEA2022
Contributor
Contributor

@BDCollett wrote:

I have made iLogic configurable assemblies for years. I keep it simple, have a single Master part and use Copy Design with Vault. 

I keep a Master copy that has no changes and copy from that. 


Apologies for all the questions but am very keen to learn from a pro, there isn't much out there on Top Down configurations:

  1. How do you include purchased parts in your workflow for this? Do you import them into your master part? What about if you have multiple instances dependent on the configuration? Do you pass parameters from your master part back to the assembly file?
  2. What iLogic do you use to link the assembly to the master part? I have linked mine here but I have to manually edit it if I want to use Design Copy as it depends on searching for a file called "MASTER.ipt" not "1x1_MASTER" etc
0 Likes
Message 27 of 28

BDCollett
Advisor
Advisor

@tomasz.sztejka wrote:

First I wasn't talking about a single assembly. I was talking about a whole product which is a chain of numerous assemblies. Single assembly never was a problem, I have iAssembly for that.

I must agree, I am overthinking the iLogic. I am a programmer and have a hard time to switch from thinking in terms of "big programming" to scripting. I am used to "libraries" and etc.

 


Yes, I understand, you want to have numerous Assemblies that are all similar but then may want to update them all at the time.  

I am not a programmer, I know enough iLogic to get by and ask for help from those that do know code to achieve what I require.

 

>(...)If anything, you use a global rule if it needs to apply to every part.(...)

 

I never realized that can You have a "global" iLogic which can be applied by the trigger, which is stored in some external file and is following changes made to it. I was living under an impression that iLogic is about rules in files and "snippets" which are just copied. Again, I was probably thinking too much as a programmer and did not test something.

 Global iLogic rules are a great way to apply rules to numerous parts or assemblies without needing the rule embedded.

 


>(...) there are Model States(...)

 

who has it, that has it. I don't have them. Each time I suppress a part new Level Of Detail is created. Part suppressed that way do appear in BOM. Do Model State allow to "remove" part from assembly (including BOM)? By BOM I do mean all: table on drawing, BOM export from Inventor assembly and BOM seen by Vault.

Apologies, I got mixed up with who the reply was to as originally @JEA2022 was referring to using Model States with his multibody models in this discussion.

Yes Model States allow you to remove parts from the BOM.

Vault, little different. You need to use ITEMS to expose the different "States" and their BOM. Otherwise, you only see the PRIMARY one.

 

 

>(...) I don't quite understand the wording(...)

 

Quite understandable. English is not my primary language and I never took a good training in it. I meant, that in part design environment I can right click and suppress the feature conditionally. For an example if some parameter is such and such. This is a superb function since my goal is to provide a method for configuring products in Inventor which will be usable for guys with zero ability in iLogic. Sadly however there is no such GUI functionality in assembly environment. I can't imagine why.

 


I understand. Yes that is a nice feature, it would indeed be great to have something simple like that in an Assembly.

 

 

 

You said You do use Copy Design, right? How do You manage changes then? I mean the following scenario:

 - during a year I do create about 50 different configurations;

 - after that time I need to make a change which affects 45 of them and all configurations I will do from that point.

 

My question is: how and where do You apply that change so that it would propagate to all configurations You made (in case if customer will repeat the order) and to all future ones?

 


I covered this a bit in previous comments. It would take some forethought about the design and what may change.

You would need to have parameters that are global and shared between them, however being able to choose which models get the changes would be tricky. You could always suppress the link to the master on the assemblies you did not want to change.

The standard rules should apply. If the Form/Fit or Function has changed, it's a new design. New Part Number. You are not selling the same one to the customer. That way you still have a version of the old one that you have out in the world for reference.

 


 can I ask how exactly you pass the parameter to the Master part file from the assembly?

 


I add a copy of the Master Part to the Assembly, keep it hidden.

Then it is a very simple rule:

 

Parameter("MasterPart", "Parametername") = Parametername

 

In the assembly, use the same parameter names as in your master part.

In the assembly, you will want to rename the browser names to remove the ":1" etc. This way, when you copy design, the code will not need to be updated.

 

Message 28 of 28

BDCollett
Advisor
Advisor

@JEA2022 wrote:

@BDCollett wrote:

I have made iLogic configurable assemblies for years. I keep it simple, have a single Master part and use Copy Design with Vault. 

I keep a Master copy that has no changes and copy from that. 


Apologies for all the questions but am very keen to learn from a pro, there isn't much out there on Top Down configurations:

  1. How do you include purchased parts in your workflow for this? Do you import them into your master part? What about if you have multiple instances dependent on the configuration? Do you pass parameters from your master part back to the assembly file?
  2. What iLogic do you use to link the assembly to the master part? I have linked mine here but I have to manually edit it if I want to use Design Copy as it depends on searching for a file called "MASTER.ipt" not "1x1_MASTER" etc

  1.  Usually if the purchased parts dimensions are critical to the design, I may add them as sketch blocks for reference. The parameters may be manual, but if they need to be more robust, I may link a skeletal model that has the important dimensions derived in. Usually purchased parts are not something that has dimensions that change often.
    If the configuration of the master part also changes certain things about the location or even type of purchased part, that is designed into the Master. Using Design Views, you can achieve a lot of different features that are all overlapping. Only turn on the bodies and sketches that are relevant etc. Using the Master to even locate parts in the Assembly can work well (as long as they are stationary).
  2. In my above comment I explain linking the master to the assy. It's important to rename the browser name to "MASTER" instead of "MASTER:1" so the code can always find it even if the file name changes.