I know how to get a parameter into my list of custom iProperties.What I want to do is take the iProperty lbmass and add it to the list of user parameters. Is there any way to do this without using iLogic?
I have a template part that I would like to save automatically once the parameters dialog box is closed. I would also like the Save As filename to automatically be filled in with a iProperty named "Part Name". I already have the "Part Name" description grabbing information from parameters. Is this possible? And is the best way to trigger the event after an "iProperty change" or "Any Model Parameter Change"?
I am migrating our old Inventor data to our new system. I will do an ilogic script for that.
I know how to add custom iProperties with iLogic but how can I remove them? Is it possible with iLogic? I would like to clean out all old iProperties that we don't need anymore.
I am trying to use the iProperties.Value("part1", "Summary", "iProperty") function to get the filename or complete filepath of a component within a subassembly. I know that these iProperties exist because I can insert them onto a drawing, and I see them in the general tab of the iProperty window.
I get an error message indicating that the General tab can't be found. How might I go about getting this filename iProperty, or is there an easier way?
I want to use Ilogic to construct a code part name.
My question is perform a code of about 12 characters. For example the parameter "Lenght" is 600mm but in the expressione result It must be "000000000600" (a string of 12 characters)
I've been using iLogic. I'm creating a template assembly that will be used for multiple jobs. Therefore, the job number will be changing. I want a custom iProperty in ALL parts and sub-assemblies (cleverly call it "Job #" maybe) that I can include an a separate property called "Drawing #" which whose value will be [some text]-<Job #>-[some more text]. I want to be able to update all the "some text" parts manually for each component, but I want the Job # to update automatically. I need this property because I have a column in all my Parts Lists called "Drawing #" which tells the drawing number for any given part or assembly.
Ultimately what I want to do is open a text or Excel file, enter the job number, open my Inventor drawing, and have every Drawing # entry in every parts list magically update to the correct job number.
I've managed to use iLogic to do just that with a single .ipt/.iam file. But I have dozens upon dozens of components in the main assembly. I'd like to run some rule or hit some button or do something that will cause the Job # property to update for ALL sub-assemblies and parts, so that all my parts lists reflect the change.
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 had wanted to find a way to engrave/emboss the part number on a part model and have it be parametrically tied to the part number iProperty. Since it doesn't appear that I can create a text box and insert the iProperty directly, here's what I did to work around this. (I setup my part templates to have this out of the box....)
1. Within, the IPT file, add a user text parameter called "PartNo" and set its initial value to any text value.
2. Create your sketch for your text to be engraved. Insert the User parameter you just created.
3. Create the engraving/embossing for your text.
4. Create the following iLogic rule:
' Requires a User Text Parameter called "PartNo" prior to running' Set the appropriate event trigger to tasteIf Parameter("PartNo") <> iProperties.Value("Project", "Part Number") ThenParameter("PartNo") = iProperties.Value("Project", "Part Number")InventorVb.DocumentUpdate()End If
5. I set this rule to fire using the "iProperty Change" event trigger. So if the iProperty is set or changed, your text will update. Obviously, you can set this to run with whatever trigger you like.
I want to have a Blank size custom iproperty using flat extents length and width this is what i did but gives error is there a way to get this to work the way I want it to? I dont want a Length and width to be seperated would like it all in one.
I created a sketch that I would like to use in an iFeature. The sketch dimensions are controlled with an ilogic rule referencing a multi value text user parameter, eg the text parameter pull down menu controls the size of the part.
Is there an easy way to get this parameter into an ifeature or derived part?
I have an iLogic template part that has a multi value parameter. In this case the product code can be selected from a list of 4 codes. In futre we may need 5 and the 5th may need to be available to older parts.
I would like to avoid having to add the 5th as an option to every part we've ever made when the 5th becomes required.
I'd like to have the list of codes stored in an external file (Possibly an xml) and the template part reference that file to acquire it's list of available codes. That way I can add codes to the xml and all the files will have their list of available codes updated.
I have a Multi-Value Parameter "MV" that I want to populate using a Named Range from an Excel file that is already populating other parameters for the same file.
I currently have the file working by populating "MV" by using the snippet from iLogic below...
The reason I don't like this method is because if ever that range changes... all the iLogic code will have to be updated as well. How to set a Multi-Value Parameter using a Named Range from an Excel file? I assumed the below snippet would work but I am receiving
"Array was not a one-dimensional array." as an error.
I'm looking to see if there is a way to link the revision number to a custom iProperty in the same part. Our laser requires a specific output for programming, but I only want this to show up on actual lasered parts as we don't need it on parts that are sawcut. Basically what I would like to do is create a custom iProperty that I can link to the title block for that reads RV:<Revision>. Is there a way to do this? I'd rather not create a separate drawing template for lasered parts as we've got about 100 templates for our various customers the way it is.
For example. I have Roperev=Roperev_1. Roperev_1 is determined by an excel equation. I need Roperev to produce a nominal number because this parameter dries a coil revolution and I need the revolution to be a whole number.
I can not just round the excel result because the excel result needs to be multiplied by 2.53 to get the resultant for Roperev_1
I have built a vb interface using a tutorial from AU. Now I would like to do the same without the interface.
Inventor uses ilogic to pass parameters to the dll - the dll does the number crunching & returns values to Inventor - no interface required.
The tutorial uses an OK button to fire values back & forth - how can I do this without a button? I would like this to fire in the background without a form appearing.
I have several part models that are very simple and are basically long cylinders. I want to create an external ilogic rule that i can run in each part file that can identify the largest sketch parameter dimension. So basically it will find the Length of the cylinder due to it being a larger dimension and then rename the parameter.
I could just name the cylinder length sketch parameter the same in each part file, but I wanted to attempt to make it more universal for all users. So if a new user forgets to properly label his part parameters, the ilogic program can identify what parameter it should be looking for and rename it properly.
In 2009 Inventor iLogic, we have a button to delete all parameters and rules. But now, in 2013 Inventor iLogic, I only find a button to delete all rules. Where is the button to delete all parameters?
I am trying to populate a multi-value user parameter with a list composed of the various materials available from the iProperties "Physical" tab. So far I have this:
For Each material In iProperties.Materials Bracket_Material.Items.Add(material) Next iProperties.Material=Bracket_Material Running the Rule gets this error message: Rule Compile Errors in Material_Rule, in _Mounting_bracket.ipt
Error on Line 2 : 'Bracket_Material' is not declared. It may be inaccessible due to its protection level.
I think I am doing the "Bracket_Material.Items.Add(material) " line wrong, but I don't know enough VB to fix it. It seems to me it IS declared in the Parameters table - isn't adding the parameter to the parameter table sufficient to declare it?
Eventually I want to add the Bracket_Material Parameter to a form so the user can select material from drop down list and assign it to part.
I wish I perform the following code with iLogic. Is it possible to change a model parameter to a reference parameter?
If My_Expression Then' My dimension "d0" is a Driven Dimension' or' My dimension "d0" is a Reference ParameterElse' My dimension "d0" is NOT a Driven Dimension' or' My dimension "d0" is a Model ParameterEnd If
The rule iterates through an assembly looking for parameters. If it finds them it 'pushes' the value down from the top level Assembly into the sub-components.
It works well, but each component updates dynamically as the parameter value is changed. This looks a bit jerky and weird.Is there any way to write the script so the the updates all happen at once at the end?
' set a reference to the assembly component definintion.' This assumes an assembly document is open.Dim oAsmCompDef As AssemblyComponentDefinitionoAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition'Iterate through all of the occurrencesDim oOccurrence As ComponentOccurrenceFor Each oOccurrence In oAsmCompDef.Occurrences'check for and skip virtual components'(in case a virtual. [code]...