Is there a way to set the event trigger of an ilogic file that's already inside of a document? I have code that can automatically create and populate new rules across my assembly parts, but it would be nice to set certain rules to fire every time that part gets saved.
If it can't be accomplished outright from the API, would it be possible to throw an OnEvent (save event in this case) inside of the iLogic code, to get the same results? URL...
Is there any chance to define an event trigger which runs an iLogic rule when we check out an already open file? Problem is, that we need to synchronize iProperties on check out to clear "Approved by" when Vault State of Part is "under revision"
Vault Parameter "State" is mapped with iProperty "State".
I have an iPart which includes iLogic Rule. When I change iPart by table, iLogic Rules are not triggered.
In iLogic Utilities, there is a button "Rules Triggered by Events", If I use "Any Model Parameter Change", the update need long time, looks like Inventor is "No Response". I like the way "Material Change", but I need "part Number" change to trigger the rules. How can I do it? I tried other events as After Open, Before Save, etc, they are does not work.
I want to simply set a custom iproperty as the Description in each part file within my assembly. I can do this easily at part level with ilogic but I want to be able to run the rule from the assembly level and all the parts run the rule. I am struggling to find a way to do this.
I think this may be the best method I have found but I think it must be far easier?
I am working for customer with a simple item with his iLogic design. He has created a simple form to modify his iProperties. To modify the current material, a multi-value parameter was created and the following rule as a local rule;
He is now trying to make this an external rule but gets the following error
Error in rule: Mat2, in document: Mat2.iLogicVb iProperties.Material: is probably a bad material name.
The more info tab says:
System.ArgumentException: iProperties.Material: is probably a bad material name. at iLogic.CadPropertiesInRule.SetDocMaterial(Document doc, String matName) at LmiRuleScript.Main() at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem) at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)
I'm making some ilogic code for my new drawing templates and I'd like run part of the code only when the rule is trigger by the "after open document" trigger. Is there a way to check which trigger started an iLogic rule or would I be stuck making a second rule which is only triggered by the "after open document" trigger?
I have a symbol that when I insert it into my dwg, I would like it to trigger a rule to create custom properties and fill out those properties. Ive already created a rule that is 100% working, I am just curious if its possible to have that rule triggered when I insert a specific symbol?
I'm trying to create a rule in ilogic that would search through all child components (looking for both .ipt and .iam file types) looking for an ilogic rule within each child component with a particular name, and running that rule if it is found.
why this will not run as an external rule? It runs fine as an internal one.The error I get is object referance not set to an instance of an object?
'Updates rule when done iLogicVb.UpdateWhenDone=True 'Creates input list dialog box & allows the user to choose the state Product_Code=InputListBox("Enter Product Code", MultiValue.List("Product_Code"), Product_Code, Title :="Product Code", ListName :="Available Codes") 'Writes values to iProperty iProperties.Value("Project", "Cost Center")=Product_Code
Created in the template sheet metal rule. Why External ilogic rule is not working? User-valued parameter is created, sheet metal rule does not change.
name = ""For Each par In ThisDoc.Document.ComponentDefinition.Parameters.UserParameters If par.Name = "SMR" Then name = par.Name Exit For End IfNextIf name = "" Then Dim MyArrayList As New ArrayList For Each st In ThisDoc.Document.ComponentDefinition.SheetMetalStyles MyArrayList.add(st.Name) Next ThisDoc.Document.ComponentDefinition.Parameters.UserParameters.AddByValue("SMR", "", UnitsTypeEnum.kTextUnits) MultiValue.List("SMR") = MyArrayList Parameter("SMR") = SheetMetal.GetActiveStyle()End IfSheetMetal.SetActiveStyle(Parameter("SMR"))iLogicVb.UpdateWhenDone =TruePS:
My company has recently switched from the H drive to the G drive. This has resulted in a lot of old files still referring to the H drive where the External Ilogic rules used to be. I'm wondering if there's any automatic way to change that? Uploading a pic showing the event triggers as they are now.
Inventor 2014 Professional Windows 7 Professional 64 bit Intel Xeon E3-1240 @ 3.4 ghz Nvidia Quadro 600 8.00 gb RAM
I need import all new params, rules and forms from a new template to older parts. I'm trying to use an external rule to create a new iproperties and import params from xml file but I can't assign these parameters with these iproperties.
I need a way to run a rule which is saved in my top-level assembly using iLogic rule which is saved in a part file in the parent assembly.
I have even tried using an external rule in a txt file, but that gives the error "Component: This function can only be used in an assembly." - which makes no sense to me. I hope I am just missing something simple. I cant believe with all its other strengths, that iLogic would be so limited in that regard. Why is there not simply a snippet under the 'Run Other' that allows you to specify an assembly file and the rule name? (like there is for running a rule in a component from the assembly)
I have a few assemblies setup that are controlled with a bunch of iLogic rules to modify all related parts when parameters are changed at the assembly level. I also have an opening message that pops up when the assembly model is opened (After Open Document trigger) to tell people how to use the parameters to make modifications.
Now, when this assembly model is placed into a drawing I am getting random pop ups of the opening message when placing views of additional models in the same drawing. If you open the drawing and try to place a base view of another model, Inventor stops to think for a minute or so before having the opening message of the iLogic controlled model pop up. The only event trigger for this message is "After Open Document" and the model is not being opened; why it is being triggered in the drawing and/or how to make it stop?
I am currently using a vb.net application to control inventor using the API code.The API code is used to delete/suppress unwanted occurances from parts and sub-assemblies, depending on what is selected in the external application. It then puts all the parts and sub-assemblies together into a final assembly.
Most of the parts contain iLogic rules, to control dimensions, and these have been set to trigger when the part file is opened.I have noticed that in my final assemblies some of the parts don't appear as they should, however if i close the final assembly and open the individual part it appears to be correct. If i then open the final assembly it looks fine.
I think this might be due to the iLogic rule being triggered when the part is opened.Is there any way to trigger the rules using the API code while the final assembly is open, instead of closing it down and opening all the component parts and sub-assemblies?Or should we set the rules to trigger on a parameter change?
I have a ipt which is controlled via an ilogic form,this form is opened by ilogic code, which in turn is triggered when the ipt is opened.
my problem is when the part is placed within an assembly the said form is triggered and the same happens when the assembly is reopened!.... I would prefer if the form opened only when the ipt is opened or edited....
Is there a snippet of code for this? Or is it even possible?
I'm trying to find a way to trigger an "Add-Ins" button that we have customized, and have it pop up on the closing of a form. If you know a way to program how to close a form through iLogic, or find a way to see if it's still open
I'm not sure that I actually want to access the button per say, but instead launch the dialog box. I'm not sure if this differs your answer in any way, but I searched the customization forum and found little information.
I am using VB.net created a palette。 I need to call refresh drawing(my own function) when user close this palette. But I don't know which event I need to put my code in.
I have an ilogic external rule which contains functions that I use from rules in my local assembly document. I'm trying to access the value of a parameter in the document from the external rule's function. Attached is a simple version of what I'm trying to do. If I manually run the external rule, it seems to work just fine, but when I call on the function from a seperate rule, its unable to get the parameter value. I get an error stating, "'Parameter' is not declared. It may be inaccessible due to its protection level."
'this is the external rule. if I run this manually, it works
Public Class test_functionsSub Mainmyresult = ""thisisatest(myresult)MsgBox(myresult)End SubFunction thisisatest(ByRef resultcreated As String)resultcreated = "it worked - " & Parameter("ParameterInDocument")End FunctionEnd Class
'this is my rule in the assembly document trying to use the external rule's function
AddVbFile "z_testrule.iLogicVb"Dim external_rule As New test_functionsmyresult = ""external_rule.thisisatest(myresult)MsgBox(myresult)