AutoCAD Inventor :: ILogic Error When Saving Part Files After First Few Times
May 1, 2013
The goal of this project is to take a base part file, save new copies as needed, then modify the copies. They're rings for storage tanks that share the same tank diameter but differ in height and thickness. I have a SaveAsCopy rule in my template ring part that I run externally from my main assembly after passing down the new file names to the part rule. Since I'm testing a lot, I'm always deleting the parts from the assembly, then clearing out the new copies from my folder and running the rule again. Eventually after 1-5 times inventor starts giving me an error.
The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
The More Info Tab:
System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) at Inventor.Document.SaveAs(String FileName, Boolean SaveCopyAs) at LmiRuleScript.Main() at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem) at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)
The two other posts on here that deal with that error say it involves enumerating an array that is being changed and looking for an entry that is gone. I have a feeling it has to do with a left over variable (but this is all in iLogic rules so they get cleared at the end of the rule?), temporary files or remnant file references. It works again if I close the assembly and open it back up. Inventor 2013 SP 1.1
In testing my latest automation project, I've found that I can't save copies of a part multiple times (after deleteing the files off the disk) unless I close out of the top level assembly document, and reopen it. I used Process Monitor and determined that Inventor is trying to save to an existing file instead of creating a new file.
I'm having an issue where when I run my RULES the model updates 99% of the assembly components. The 1% will update if I run the RULE again with the same inputs. What am I missing?
I am working on the part builder tutorials for AutoCAD Civil 3D 2014. Every time I click "Save Part Family", I get the error message "Error Saving XML File".
I'm linking an excel file to an .ipt file with iLogic code determining if the Material type is a certian value it will find the correct material thickness. These file work great when working on them thru Vault but when I "Save As Template" and create this file where our other template files are located (not Vault) this fuction does not work. I have realized that I had to place the a copy of the excel file in the same file folder as the template ipt, but even this does not fix the issue.
I recieve this error:
Error in rule: Material, in document: Part6
'MWW Materials (Inventor).xlsx' could not be found. Check the spelling of the file name, and verify that the file location is correct.
If you are trying to open the file from your list of most recently used files, make sure that the file has not been renamed, moved, or deleted.
It seems completly countintutive that just saving the file as a template file would cause this not to work when all files that are required are located in the same file folder. Maybe I need a reference to the excel document within the iLogic code.
Our Autocad parts lists used to calculate the weight of parts times the quantities. Now we are using Inventor and I see that the weight shown on a parts list is the weight of an individual part - although the quantity could be 2 , 3 (more than one). Is there a way to have the total weight shown equal to MASS times ITEM QTY?
I want to duplicate a solid body 4 times in a part file. i did that by going for circular pattern. But after creating that, i had to add on few more features. I did that in parent solid body. then I noticed that other 3 solid body is not getting updated. I know in assembly file it gets updated but any way in part file.
I`m looking for the iLogic code that can change one parameter (user defined) for each (ipt) part in assembly (iam)
The one below doesn`t work.
Sub Main Dim oApp As Inventor.Application = ThisApplication Dim oAssy As Inventor.AssemblyDocument = oApp.ActiveDocument For Each oSubDoc as Inventor.Document In oAssy.AllReferencedDocuments On Error Resume Next Parameter(oSubDoc, "FH") = 15.26 Next End Sub
I am trying to make parts in part builder but when I try saving I get the error message "error saving XML file". I tried changing the setting on the files for saving but that doesn't seem to work.
I'm trying to do a save as of a previously created and validated part. When I create a new chapter and try to save the part in the new chapter, I get an error message saying "ERROR SAVING COLE FILE". What is a COLE file and why am I getting this error? Could there be a problem because the original part was created in 2013, and now I'm working in 2014?
We recently changed the location of our CAD Standards (such as Pipe Network Catalog). Can I simply copy the Pipe Network Catalog and paste it to the new location and have everything work the same or do I have to do something special?
I would like to save parameters marked as Key to an XML-file (from an Inventor addin, VB.NET):
Dim addIn As ApplicationAddIn = m_inventorApp.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}") 'iLogic addin addIn.Activate() Dim iLogicAddin As Object = addIn.Automation iLogicAddin.ParametersXmlSave(invDoc, "c: emp ext.xml", iLogicAddin.XmlSaveOption.KeysOnly) This doesn't run: "Public member 'XmlSaveOption' on type 'iLogicAutomation' not found."
I need to derive a part in a model (not assembly and as a separate solid), to remove it and make a cavity. However, I need inventor to prompt what file is to be derived through iLogic.
I will make a detail drawing of the parts in the assembly.
In the detail part IDW I would like to have the qty needed for the assembly 1,2,4 ect.
So how I think the ilogic should work.
In the detail drawing have a rule named QTY when ran auto or manually Will pompt to pick the Top Level Assembly the parts are in.
The user will look for the top level assembly select it.
The rule would filter out all parts but the detail part number and return the QTY of parts needed for the assembly.
I only need the Qty.
I know this is done by the number of Occurrences in the assembly this I can find but what I can't find is how the user would look up the assembly and set it to parts only.
Like the pic below when doing a parts list.
I don't need the select view because it is a part and it would return QTY of 1 but the assembly may have 5.
I have an assembly which I want to replace one of the parts with one of four other parts.
My code reads:
Select Case Width Case "750" Component.Replace("part:1", "L:Drawingspart2", True) End Select
This works fine and when 750 is selected, part1 is replaced with part2.
My problem is then if I want to select "1000" I don't know the part name which I will be replaced by part3 as this could be part1, part2, part4,or part5.
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.
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
Apparently the occurrences tab setting aren't easily accessible through the code snippets in ilogic.
How would one go about writing a rule that, in essense, would say:
If x = "whatever" then
occurrence.enabled = false
else
occurrence.enabled = true
end if
I've been reading that LOD's and suppression aren't the best course of action for assemblies especially when you're dealing with 20-40 parts as I am. I've got an assembly and parts controlled by a spreadsheet and when things are clicked off in the spreadsheet they need to be off in the model/drawings/bills etc. I have it working (to an extent) with suppression of parts in the assembly, but that casues LOD errors in the drawings. Research says parts are best disabled which is what i'm trying to do.
I got this code earlier from Curtis_Waguespack, and i would like to add a setting... When i run this rule it Derives the assembly, but LOD is set to Master, i would like it to be set to my own (Configurator) LOD...
I don't seem to be able to find anything in this code, that defines LOD...
So far im doing ok with the standard ilogic code, but when it´s API or VBA code im lost.. which leads me to this.. i've been searching the forum back and forth to find a code that performs the feature "Shrinkwrap", and somehow everything i have found so far does not work... even the code example in Inventors help menu under programming, Therefore im trying to solve this with Curtis's code as staring point..
'set a reference to the assembly component definintion.'this assumes an assembly document is open.Dim oAsmCompDef As AssemblyComponentDefinitionoAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition 'define the path and file nameDim sPathandName As StringsPathandName = ThisDoc.PathAndFileName(False)
I have created a ilogic rule that should set the size and the cut length of my parts. Most of the time the rule behave as I want it to. But sometime it gives me a error. See attached picture. By the way, I have included this rule in my custom content center parts (beam's etc). The rule is:
'Turn off workfeatures ThisDoc.Document.ObjectVisibility.AllWorkFeatures = False
'check if the part has any geometry If Measure.ExtentsLength="0" Then [code]........
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 make an External Rule that would make an iLogic Internal Rule (with the same code every time). I guess what I really need is a way to drive an Ilogic rule into every part that does not have the rule in the part already.
I know what you’re thinking and just using the External Rule doesn’t work for what I want to do. I need it to be an iLogic Internal Rule.
I have a couple of dozen features in my part, of which only one will be active at any time. The feature tree may be subject to additions, so I am looking for an ilogic rule that will first suppress all of the features in the part, and then switch on the specific feature I require (using a parameter). Any code to suppress ALL features?
I am using Ilogic to control visibility of a subassembly in a subassembly of my main assembly. It works correctly inside of the subassembly just not from the Main Assembly. If I use IsActive instead it works but I can't use this because the dimensions in the associated drawings lose there attachment points using IsActive. I can change my assembly by removing the middle sub assembly but will require writing a lot more code.