AutoCAD Inventor :: ILogic Rule To Change Drawing View Layer
Jul 22, 2013
I am trying to piece together some code for an ilogic rule. This rule should look for a drawing view that is a flat pattern, if it finds one it should change the object layer to our "CNC" layer.
Currently have an iLogic rule in my drawing template that base on user input brings up the Drawing View dialog box (as though you click on base view). I want to know if there is some coding I can do to control or handle what happens if the user clicks the cancel command inside this dialog box. Possibly show a message box. Or even run another rule after the cancel button has been clicked?
I have a rule setup for drawings. I need the rule to first determine if the there is a flat pattern view present. In other words, if there is no flat patter view, I want to the rule to stop.
I am very green to ilogic and VB. Running Inventor 2013.
How to change the color of layer that will be used within a drawing files for special purposes.
Ideally the code will make the color Red, but change to Black prior to printing.
The "logic" behind the code currently is to differentiate a layer called "Burn" to a highly visible color for the purpose of review by others then, prior to printing, change the color to Black. The firm I'm currently working for uses gray-scale B sided printers only. The firm currently uses Blue for dimension and extension lines so to produce drawings that portray both type of objects "lightly".
Is there a way to convert an Inventor 2012 view scale from "0.5" to "1:2" or similar within an iLogic rule? I can extract the main view scale and plug it into a variable but the format isn't correct for the drawings I'm creating.
I can't for some reason get this rule to work, simply want to be able to choose what title block to use.
I created a text parameter with the multi-values: TES ELE and TES EQU
I have 2 title blocks in my template called TES ELE and TES EQU
Here is my code, basically, I want to rule to apply the title block based on the selection, which will be done on a form.
If Title = "TES ELE" ThenActiveSheet.TitleBlock = "TES ELE"ElseIf Title = "TES EQU" ThenActiveSheet.TitleBlock = "TES EQU"End IfInventorVb.DocumentUpdate()ThisApplication.ActiveView.Fit
I have found many threads in this forum and have used their solutions for this rule, but for some reason, my rule will not select the title block and place it in the drawing.
Here is a snap of my set-up and my template file is attached
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 would like a few rules to be triggered once the new drawing template is opened.select sheet size, I have been given a rule that already works, basically the rule selects a border and title block based on sheet size selection.
I would also like a rule to let me annotate in metric or imperial. this is where I require assistance. I am not sure the best way to achieve this rule. My programming is very basic.I have found some links here, but I can't seem to make them work in the drawing environment. Also these rules seems to change the units of an already created .ipt.
Rule #1 Link
Rule #2 Link
I am just looking for a rule to select either .in or mm from the styles library(i think) , before I even place a base view. Regardless of the original units used to make the model.
I want to be able to have All Work Planes set as 'Invisible' but create a Message.box or Icon that allows me to change the Visibility of any individual workplane(s) physically selected in the browser.
A rule written by another member should do the trick if the following line could be altered so as not to read 'For Each' oWorkPlane but instead for 'Each Selected' oWorkplane.
'For Each oWorkPlane In docFile.ComponentDefinition.WorkPlanes'
'get user input oInput = InputRadioBox("Select workplane visibility:", _ "Turn ON workplanes for all components", "Turn OFF workplanes for all components", "False", "iLogic") 'Define the open document (top level assembly) Dim openDoc As Document openDoc = ThisDoc.Document
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 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 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 have a spreadsheet and iLogic driven mater assy to generate different iterations.
I would like to change the scale of a base view on a drawing based on a parameter in my assembly. The idea is to get iLogic to change the view using a simple If / Else statement.
This is what I tried:
If Parameter("0 Generic Assembly v2.2.iam.BP") < 1570 Then ActiveSheet.View("VIEW1").Scale = 1/8 Else ActiveSheet.View("VIEW1").Scale = 1/10 EndIf
So basically the value of "BP" parameter (excel parameter in my assy) would drive the scale of the views. But its not working. Is it actually a sensible method? Can I use in the drawing environment the excel parameters in my assembly?
This is the error message I get when the rule is run:
"Error in rule: View Scale, in document: 0 Generic Assembly v2.2.idw
Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))"
Also using the same thinking I use iLogic to populate the drg number field on the drawing based on an excel parameter. The rule works but does not always updates the drawing no upon the parameter change or update/rebuild commands.
Like the title says I am looking to place views (and dimensions) on drawings using ilogic. I am new to both inventor and ilogic, most of my training came in SolidWorks. It needs to pull the part from an ipart that pulls the information from an excel file.
is there any way using iLogic or other method to automatically control the size of the 'break' in a drawing view? I have built a model which uses iLogic to control virtually everything, however the large variations in the length of the product mean that there are some interesting results when it comes to the broken drawing views updating.
it would be nice to locate the break at the absolute center of the view and then size it as a percentage of the view size along one axis or perhaps according to some other length based rule.
I'm trying to do this with iLogic, and i'm not getting anywhere. What I need, is to be able get to the iProperties of an associated model that is referenced into a drawing file. I want to make it easier to update the iProperties from the drawing file, without having to open the model file.
Factory Design Suite Ultimate 2012 AutoCAD 2012 | Inventor Professional 2012 | Vault Professional 2012
I am trying to rewrite Curtis Waguespack's ilogic code to modify drawing view labels from this post http: [URL]...
The completed label should appear like this
<Description> - Mk <Part Number> Est Unit Mass = X kg (Scale 1:1)
At this point I have 2 problems
1. I want to add the physical mass to the second line and would prefer to use the calculated physcial property rather than the a custom iproperty. If editing the view label, it would the property access under physcial properties.
2. I want to rewrite the code so it is selective or per view - in otherwords, I only want it to modify a single view I select once the code is run. At this point I know I need to remove the For loop but I dont have a clue as to how to make it selective.
'start of ilogic codeDim oDoc As DrawingDocument: oDoc = ThisDoc.DocumentoModel = ThisDoc.ModelDocumentDim oSheets As SheetsDim oSheet As SheetDim oViews As DrawingViewsDim oView As DrawingViewoSheets = oDoc.SheetsFor Each oSheet In oSheetsoViews = oSheet.DrawingViews For Each oView In oViews oView.ShowLabel = True
I want to be able to change the header on a PL in a drawing using iLogic.
I'm able to "find" the PL(s) on a drawing but can't seem to figure out how to access the header property My goal to to change the header to show the P/N of the assembly/part it's created from.
My Current code is below:
doc=ThisDrawing.Document oBOMs=doc.DrawingBOMs
For Each oBOM In oBOMs MessageBox.Show("Found a PL", "Title") Next oBom
In between the for/next loop is where I want to access the current BOM and change it's header depending on the related .iam/.ipt.