AutoCAD Inventor :: ILogic To Remove Component Visibility From Drawings Environment
Aug 21, 2013
I am looking for a way to create an external rule that will allow me to turn off the visibility of bolt generator items in the model while I am looking at the drawing. Bolts may be buried several subassemblies (4 - 6) deep.
I have an assembly which is made with a sub assembly. The sub assembly has iLogic code that both resizes it's parts and suppresses parts that arn't needed after a change in length.
I'd like to set up a keyboard shortcut so that when I press the 'V' key, inventor toggles the visibility of the selected part or assembly. However, "Visibility" seems to be about the only command that doesn't exist in the list of keyboard shortcuts*. I found this post in which someone says it's not possible, but might be using VBA. I've done some iLogic but know nothing about Inventor's inner-working VBA. I'm wondering if there's some workaround, VBA or otherwise, that'll allow me to toggle visibility using the 'V' key.
*actually it does but it says it's only available for use in Inventor Studio. Go figure.
Using: Autodesk Inventor 2013 Product Design Suite
I am using this code to turn visibility of components off in IDw file, what I need top turn visibility of a component of in a subassembly.
'oDrawingDocument = ThisApplication.ActiveDocument 'Get the first view 'Dim oView As Inventor.DrawingView 'oView = oDrawingDocument.ActiveSheet.DrawingViews.Item(2)
In my neverending battle to find a way to turn off unneeded components in an assembly, I'm trying my hand at modifying component visibility with a custom View Rep. View reps seemed to pose fewer issues than LOD's (in that you can have a drawing and model open at the same time without a million error messages)......until I tried to make a pattern.
When first placing a new subassembly component into an assembly, it will automatically place in the "Last Saved" View Rep. Since certain parts may be invisible in my "skeletal" subassembly, this is ideal. HOWEVER, when I try to pattern this subassembly, all of the occurrences absolutely insist on displaying at the "Master" View Rep. This makes no sense to me whatsoever and destroys yet another workflow at the 99% mark. I understand that I can change the view rep manually, but manual workarounds and corrections defeat the point of using iLogic to manipulate our models.
Am I the only CAD user who wants the simple ability to "turn off" an assembly component? iAssemblies are not an option due to the shear number of combinations of unneeded components.
What I am trying to do is insert a part into an assembly file using iLogic. I basically want to mimic Inventor’s “Place” command using ilogic, maybe something like this:
While making a drawing and there is something which I want to turn visibilty of for a while, I will select from a sub-menu "Visibility" (see the attachment) But what I must do if I want to turn the visibility on again for example to that hole shown in screen shot?
I have an iassembly model with iparts in it. I am trying to make one absolutely complete model rather than have several models with redundant parts in it. For example having the full assembly and making a Top Line Drawing from that, but then also making a drawing from the individual components.
So for example I have a Top Line assembly drawing with a tank with all the fittings, gauges, and instrument panels shown. Then I would want to make another set of drawings showing the tank itself, fittings, gauges, and the instrument panel. My main issue is with the tank drawing; the tank drawing is supposed to be simply the tank so I would need to remove the fittings, gauges, instrument panel etc.
I would like to know if there is a way to "Hide" or "Supress" the components that I do not need for a particular drawing without taking them out of the model; yet at the same time removing it from the BOM because they wont be necessary at this level.
I'm trying to play around with iLogic for creating dynamically dimensioned subassemblies. I've created my dimensioning rules that link to the parts I wish to change dimensions on.
And I've tested this in the SubAssembly I've created and all appears fine. However when I go to insert the sub assembly into the main assembly I get the following error:
Parameter: The component named "Bridge Spine:1" was not found.
I've noticed that the new sub assembly has created new parts with the extension -01 on the end of each part (As expected) It appears that this link is being lost in the rule for the new sub assembly. i.e the rule is looking for Bridge Spine:1 instead of Bridge Spine-01:1
I am trying to set the appearance of sub-components in an assembly using iLogic.
Dim oDoc As Inventor.AssemblyDocument = ThisApplication.ActiveDocument Dim oCompDef As Inventor.ComponentDefinition = oDoc.ComponentDefinitionDim oCompOcc As Inventor.ComponentOccurrence 'parts in the assemblyFor Each oCompOcc In oCompDef.OccurrencesoCompOcc.Definition.Document.ActiveRenderStyle = oCompOcc.Definition.Document.RenderStyles("HVGM")Next
I have a code which I want to rotate a part. I have a text parameter 6 and 7. If one of the values is active I want to give the component a certain rotation.
Under the 'Hoekkoppeling' parameter is the angle constraint.
Below the
If Parameter ("KlemHoekstuk-01: 1", "KoppelingType") = 7 Then Hoekkoppeling = 60 deg ElseIf Parameter ("KlemHoekstuk-01: 1", "KoppelingType") = 6 Then Angle = -60 deg End If
I now get always an error on the second and fourth line.
I feel that the specify for the value is incorrectly.
I'm making drawings of assemblies in Inventor 2012 and was wondering how to turn off the visibility of specific solid bodies within a single part containing multiple bodies, or make it match the visibility in the assembly and part file itself.
In particular my situation is that I have a camera whose part model includes a solid body for its view cone. The visibility of this solid is turned off, so when opening the camera itself, or the assembly containing it, it doesn't appear, but when I place that assembly or part in a drawing it's included, and the only way I've figured out to get rid of it is to turn the whole camera's visibility off within the drawing.
I've noticed that one can turn off the visibility of an entire component pattern by manually right-clicking the pattern in the browser and unchecking "Visibility". However, when one tries to automate this process with the following code, only the first element of the pattern is made invisible.
Is there a better way to do this, or will I be forced to develop a "workaround" like first changing the number of elements to 1?
I've been desperately trying to find a way to "turn off" unneeded assembly components without iAssemblies or LOD's, but Inventor always finds a way to stop me. This workflow of turning off visibility and setting BOM status to "Reference" would work if only I can make patterns invisible, also.
I created a simple Part with some parameters to drive dimensions. Saved the part. I created an Assembly. Saved the assembly. Clicked Place iLogic Component. The Place iLogic Component window appeared Selected the Part. I can see the preview window (Part-01) & the parameter window... Used default values. Hit OK NO PART INSERTED! Using Inventor Pro 2014 64-BitLudesroc
How to modify the code below to delete suppressed parts in a pattern (entire pattern)?
Dim oComp As ComponentOccurrenceDim oComps As ComponentOccurrencesoComps = ThisDoc.Document.ComponentDefinition.OccurrencesFor Each oComp In oCompsIf Component.IsActive(oComp.Name) = False Then oComp.DeleteNext
Code works fine if there are single instances of the part. It throws a error when you have a suppressed pattern.
I have a wall of frames, if you will, and some frames within this wall are different sizes. When doing the BOM, I want to be able to combine anything that has the same stock number as well as the same cut length. The only way I have thought to do this so far is to cycle through each stock number and if the cut length is the same, I override the quantity of one and change the BOM Structure of the other to "Reference".
How can I change the BOM Structure to reference without selecting the part or going through the BOM Editor? Is there some VBA code I could utilize? I am striking out by solely using iLogic.
Is there code for changing the color (or other properties) of the visible edges of a component in a drawing view, the same way I can do it manually by right-clicking a component and choosing Properties?
I wrote this rule to change the color of each individual drawing curve:
Edit: Ignore the "<!". It's the only way I could get the iLogic code to successfully post in the message
Spoiler (Highlight to read)<!Dim drawViews AsDrawingView For Each drawViews In ThisApplication.ActiveDocument.ActiveSheet.DrawingViews occ3 = drawViews.ReferencedDocumentDescriptor.ReferencedDocument.ComponentDefinition.Occurrences.ItemByName("GF_Plenum:1") Dim newColor3 As Color newColor3 = ThisApplication.TransientObjects.CreateColor(0,255,255)
If I set this to true, then when I "place iLogic component", I don't get the form displayed or the parameter table or the model preview.
If set True, displays the form when placing this model as a component in an assembly. This setting affects Place Component and Place iLogic Component. If the template file has a form, this setting also affects Create In-Place Component.
The commented code does not work. I want to be able to open a part and change its size parameters before i open the assembly. this code will run as an external rule in a new empty file.
If i can do it without opening the part, that is even better. Test can I open a part, change a param, then close part.
Dim fname As String fname ="C:Workspacemy_progchanF_BB_L.ipt" Dim pDoc as PartDocument = ThisApplication.Documents.Open(fname,False) pDoc = ThisApplication.Documents.Open(fname)
These are just attempts to find a syntax that works. I need the method to change the parameter.
I have a simple code below trying to iterate through all the assembly component and copy the iProperties > Occurrece Name (i.e. "Part1:1") and paste it to iProperties > Project tab > Part Number field for each individual part in assembly.
' set a reference to the assembly component definintion. ' This assumes an assembly document is open. Dim oAsmCompDef As AssemblyComponentDefinition oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
'Iterate through all of the occurrences Dim oOccurrence As ComponentOccurrence For Each oOccurrence In oAsmCompDef.Occurrences Dim oName As String oName = oOccurrence.Name iProperties.Value(oOccurrence.Name, "Project", "Part Number") = oName MessageBox.Show(oOccurrence.Name, "iLogic") Next
The Debug message shows the correct output for every iteration, but when I check each part's properties they all have the Occurrence Name of the last part in the aseembly.
So I have been going round and round in circles on this one iam trying to use replace component within ilogic which is fine with switching one part for another but I want a drop down of parts so it replaces which ever one is active the problem I am having is establishing which one is active. So below is what I have so far but the problem is you cant seem to reference a part that is not in the assembly so I keep getting the error
The component named "Flange 1" was not found for example. I just need a way of establishing which one is currently in the assembly but with out referencing components that are not there.
If Component.IsActive("Flange 1")=True Then current = 1 If Component.IsActive("Flange 2")=True Then current = 2 If Component.IsActive("Flange 3")=True Then current = 3 If part = 1 And current = 2 Then Component.Replace("flange 2", "Flange 1.ipt", True) End If If part = 1 And current = 3 Then Component.Replace("flange 3", "Flange 1.ipt", True) End If If part = 2 And current = 1 Then Component.Replace("flange 1", "Flange 2.ipt", True) End If If part = 2 And current = 3 Then Component.Replace("flange 3", "Flange 2.ipt", True) End If If part = 3 And current = 1 Then Component.Replace("flange 1", "Flange 3.ipt", True) End If If part = 3 And current = 2 Then Component.Replace("flange 2", "Flange 3.ipt", True) End If
I found this code to create a custom iProperty in the current, open document:
Dim propertyName As String = "MyProperty"Dim propertyValue as String = "Test Value"customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")Try prop = customPropertySet.Item(propertyName)Catch ' Assume error means not found customPropertySet.Add("", propertyName)End TryiProperties.Value("Custom", propertyName) = propertyValue
I have a iLogic rule that goes through each component of an assembly, counts how many times it occurs in the assembly, and then assigns that value to an iProparty (i.e. it inserts the total quantity of the part in some iProperty). Currently, however, it assigns the value to a default iProperty value, "Authority". I'd like, instead, for it to assign it to a custom iProperty called "Total QTY". However, I don't know how to tell Inventor to do the above code for a component in the assembly rather than the assembly itself. Below is my entire code. I've labeled where I'm guessing the above code should go. How I'd modify the above code to create the iProperty in the component being processed by the rule at that point?
Current
''True comment: Begin '''Commented-out Begin '''PartDocumentObject = 12290''AssemblyDocumentObject = 12291Dim openDoc As DocumentopenDoc = ThisDoc.DocumentDim docFile As DocumentIf openDoc.DocumentType = 12291 Then''If the open document is an assembly:''For each document referenced in this document:For [code]......
I want to be able to hide a part of an assembly in one projected view of the 2d drawing but not all, however when I do so the hidden lines stay hidden lines. They do not change. I know you can change the hidden line properties to make them continuous lines but is there a setting that will allow these lines to change automatically?