AutoCAD Inventor :: ILogic Driven From Sub Assembly
Jul 1, 2013
I have a parent assembly that contains multiple sub assemblies, two of which need to synchronize with each other.In the parent assembly, I have created a user form that controls the sizes and quantities of all the different sub assemblies.
Sub assembly 1 contains a bracket for supporting 4 rows of pipes.Based on the width selected from the main parent assembly, the length of this bracket can vary.
The spacing of the 4 mounting positions is also determined from the length of the bracket.Sub assembly 2 is an assembly containing all the pipes.The pipes are spaced apart to suit the bracket using a component pattern, and it is this distance that I want to control from the parent assembly.This is just one of the basic scripts I've tried.
Parameter("Piping assembly:1", "Pipe_Spacing_B")=Pipe_Spacing
Pipe_Spacing_A is the spacing of the bracket
Pipe_Spacing_B is the component pattern in the piping assembly
Pipe_Spacing is the parameter in the parent assembly to be driven by the bracket parameters.
I have very little iLogic experience & have being learning as I go along with this project.My best guess is that the code can't loop back on itself. On a slightly different note, I have also noticed that the sub assemblies don't update properly.
If I adjust the width to X and regenerate the model, some of the sub assembly updates. To fully update, I have to go back into the user form, change the size to Y & then change it back again to X and then regenerate.
I want to use I logic to adjust an assembly constraint based on T/F value passed from a master sketch.
I have passed the paramater T/F and/or a user paramater as described in this thread using link (neet trick).. but when the code fires it only works on the true application and not the false.. if i open the rule and then close it the update button becomes available and when updated the false condition updates sucessfully. I have tried just re-running the rule to no avail. It seams that the only way I can get it to triger a false condition is to open the rule... close it and update.
The setup is: I have a rule which first gets a number of user parameters via input boxes.This rule then runs a number of other rules, using:
iLogicVb.RunRule("Rule 1")iLogicVb.RunRule("Rule 2")iLogicVb.RunRule("Rule 3").Each of these rules control parameters, part/feature/constraint suppression etc. in the top level and subassemblies/parts based on the previously obtained user parameters.
All the rules have the 'Don't run automatically' option selected, so all should only run as intended when I manually run the first rule.When I run the first rule, I enter all the parameters, and the subsequent rules run.The problem is, the suppression states etc. in the subassemblies/parts do not update.
Looking at the parameters dialog box after the rules have run, all user parameters have updated with the new values.If I run the first rule again the subassemblies/parts update correctly.
It appears that the rules that control the suppression states etc. of the subassemblies run using the initial values of the user parameters, i.e. the values as they were before the user input is obtained, rather than the new values.This is confusing me, as the code is structured as follows:
I have an assembly I've put together in Inventor 2011. I tried to make an adaptive spring to use with a shock that goes in a car. I'd like the spring to change size as the shock extends and contracts.
I went through the process of creating an adaptive spring, and it worked, but I could only change the length of the spring by using the "Drive Constraint" feature, which only allows me to adjust the spring when I'm using the "Drive Constraint" menu. It plays like a movie. What I want is a part that just moves like you would expect when you push/pull the ends of the shock. I don't want to have to drive it like a movie.
So then I thought that I could just simulate a spring by making a series of rings (toroids). I could constrain the bottom ring and top ring to the shock geometry and then have the other rings position themselves according to the distance between the top and bottom rings.
SO, I have 5 rings. The bottom ring is grounded the top ring has a Limit Constraint that sets the top ring anywhere between 3 and 7 inches above the bottom ring.
How do I create a driven dimension on an assembly that will automatically update the distance between the top and bottom ring?
I would like to call that dimension "HEIGHT", and then I could use parameters to set the middle ring a distance (HEIGHT/2) above the bottom ring, I could set the ring below the middle to (HEIGHT/4), and I could set the ring above the middle to (HEIGHT*3/4).
I should then be able to move the upper ring up and down and the other rings reposition themselves automatically to keep even spacing between the rings on either side.
I tried making a sketch in the assembly and using the "Project Geometry" function to add the location of the upper and lower rings to the sketch. I then used the "Dimension" function to create a driven dimension between the upper and lower rings. When I finished the sketch the other rings all updated exactly as anticipated, but when I moved the top ring the projected outline did NOT move, so the other rings did not continue to update.
lease do NOT link me to adaptive coil video tutorials or explain how driven dimensions work when making parts. I am not looking for that, I am looking for how to create driven dimensions between two placed components in an ASSEMBLY.
In 2012 when in a sketch in an assembly all the stuff under "Format" is grayed out.
You cannot make a dimension driven, nor can you make a line construction or a centerline and you can't change a sketch point into a center point. Do I have some setting wrong?
I have a flange that I use iLogic and the parameters list to update the different styles. My problem is that my flange won't update until after I hit save and update. My other square flange is not this way. As soon as I change the parameter in my square flange it immediately updates. Is there anyway I can get my round flange to update immediately like my square flange? I attached pictures below.
We have an iLogic assembly with to parts in it. Maybe to cylindrical parts. The iLogic rules should do the following.
1. Start a Rule after open document.
2. This Rule starts a Rule in the first cylindrical component.
3. This Rule ask the user for a diameter.
4. The assembly gives this new parameter value to the second component
5. Then the assembly calls another rule in the second component to change it with the new parameter
Everything is working fine when the following combinations are taking place:
1. I open up the assembly out of vault or from a local drive or an accessible server drive
2. I insert the assembly as sub assembly in another assembly from a local drive or an accessible server drive
It don't work with the following situation:
- I insert the assembly as sub assembly in another assembly out of vault
Then the user becomes the dialog "Choose a diameter" twice.
I don't know why, but I have the idea it has something to do with the functionality of inventor to insert a component more than once. If you insert a component in an assembly Inventor gives you the opportunity to add more than one occurence after each other.
change that behaviour? Maybe a switch to change that inventor "add more than one occurence" behaviour.
I want to be able to control the location/position of a component in an assembly. This is easy enough through the iProperties/Occurrence tab and then adjust the location of the X,Y, and Z offsets. Is this possible using iLogic? I have been unable to find a function to access via iLogic. Ultimately I am trying to translate a component about an axis not a pattern.
I am trying to make a dxf from each sheet metal part in an assembly with ilogic: (I have cut and and paste different codes from this forum in an poor attempt...)
Sub Main Dim oApp As Inventor.Application = ThisApplication Dim oAssy As Inventor.AssemblyDocument = oApp.ActiveDocument For Each oSubDoc as Inventor.Document In oAssy.AllReferencedDocuments If oSubDoc.DocumentType = kPartDocumentObject Then Dim oPartPropset As Inventor.PropertySet = oSubDoc.PropertySets("Design Tracking Properties") Dim oPartParam As Inventor.PropertySet = oSubDoc.PropertySets("Inventor User Defined Properties") [code].....
I wish to set the properties of an assembly using i Logic. I have the values of the properties in a part that is in the assembly. I wish to pass those values from the part to the assemblies i properties. I tried using the following code, but it gives an error saying it can not find the document "MyAssy.iam"
I got here on in my templates, two types of weight - net and gross. I've changed the main property MASS of each PART to be the GROSS weight, so when i have one assembly i always get the total gross weight.
And when i wanna get the NET, I open the BOM, show the proper column with this net weight and then export do XLS to sum all of then..
Now the doubt is, to get the things easier, is there a way to put some code in the assemblies, that could sum all the properties "X" from each part and sub assembly to get the total net weight ?
I am very new to this whole concept of having ilogic based rules to drive your part design. I have even gotten as far as creating a ipart and having ilogic rules be able to suppress, unsuppress, change values and dimensions using ilogic rules. I now want to be able to use ilogic rules to drive some of the various(yet similiar) assemblies that I create all the time.
For instance, If I have just a flat plate as the base component with a shaft welded to it that varies in length for my assemblies. Since the shaft varies in length, I went ahead and created iparts for all the lengths of the shafts. I can manually change which shaft I want represented in the assembly, but I would like to to know how do I get Ilogic to place the different shafts based on user parameters???
I've looked into component place iparts, but can't seem to get the code to work. The list of iparts tree within the model doesn't pop up in the model tab in the ilogic rule, only the base component.
How to run iLogic Rule which I created for .ipt file in assembly?
As I have a myPart.ipt file with iLogic Rules which could create part1.ipt, part2.ipt, ..... (hundreds of them).
Now, I want creats iLogic Rule in myAssembly.iam to run the iLogic Rules in myPart.ipt in order I could create correct .ipt file to be used in myAssembly.iam.
I have the same ilogic part placed in the same assembly, and i am trying to drive two different configurations of the same part and when i apply the configuration it changes both of the parts but to only one of the configurations.
Is there a way to drive them seperately even though they are the same part.
My task consist in exporting a BOM of an iLogic assembly.
Is any way to get an accurate BOM of other LOD other than the master. If so, is it only available in certain Inventor releases?
I am trying to accomplish this through API, but I get error when in different LOD than master. iLogic assembly has some parts suppress thats why we need to create a new BOM.
Before using iLogic, I created lot of iAssembly and iPart. I could change iPart factory member when I need in iAssembly.Now, I want to move everything to iLogic.
how could I change the part by iLogic code?
For example:
I generated "Part1.ipt" and "Part2.ipt",...... (I have hundred of member)
In my assembly, sometimes, I need use Part1.ipt, sometimes I need use Part2.ipt.
Which is the iLogic Code I should to use?
Inventor 2009, WIN XP. Autodesk Inventor Professional 2013 (64 Bit) SP2 Windows 7 Professional Service Pack 1 Intel(R) Xeon(R) CPU E5645 12.0 GB Memory
I need to be able to pick a face on a part in an assembly inside a iLogic rule. How can I set up the events to suspend the code to have the user pick the face?
I have made an iLogic external module who copy the iProperties from an Excel files, when i open the module from the *.ipt file il works perfectly. But i need this function from *.iam files.
Something like this: when i click with right button in one selected part of assembly i can open the module only for this part and when i save it save the change for all modify part of *.
I would like to count all my parts in the main assembly and assign that amount to each part.
Example: Main assembly has: 10 Parts A and 5 Parts B. I would like to run a rule that "sends" that "10" to Part A.ipt and the "5" to Part B.ipt
I would like to assign it to iProperties.Status.Status. I start to understand iLogic more and more but it is nice to get a little boost in the right direction.
I need to modify all the ipt in an assembly, but I don't kow how many ipt I have, and I don't know the name. Can I have with iLogic the list of all the ipt used in the assembly ? For example, to modify the Part Number in all the components.
Im after programmatically mating 2 components together in an assembly. My stages are as follows:
1)Create New Assembly
2)Add .ipt's
3) One-by-one, mate all the parts together (each part has a plane named "WPStart" and "WPEnd". In each part im after the WPStart being flush mated with the WPEnd of the 2nd part - see image attached. In addition I would like to mate al the XZ planes in each of the parts fluch together and likewize the YZ planes.
I'm configuring a band with different supports. Each support is configured with a range; 600-900, 900-1200, 1200-1500 etc. those ranges can be adjust by 50mm and those steps are specified by the pos reps (see attached image).
All the different supports are put in the top assembly and in this assembly I want to switch between the positional representations. I tried to use: