AutoCAD Inventor :: ILogic Code Not Working For Presentation Files In Drawing
Jun 2, 2013
I have found some code which extracts the part number from the iproperties of a model and adds it to the custom iproperties of a drawing but this will only work on iam or ipt files.
Here's the code, I added the lines referring to the docment type as an attempt to fix the error but it didn't work...
If (ThisDrawing.ModelDocument Is Nothing) Then ReturnIf ThisDrawing.ModelDocument.DocumentType = kPresentationDocumentObject Then modelName = IO.Path.GetFileName(ThisDrawing.ModelDocument.FullFileName)End IfIf
I've poked around a little and made simple rules to manipulate iproperties, save filetypes, change drawing borders etc. but am now looking for a bit more and am struggling (i.e. completely lost.) I want to automate the creation of an assembly drawing from an existing presentation file. Here is the basic break-down:
- Using Inventor 2011
- Presentation(*.ipn) file is present and saved in same directory
- Each presentation VIEW is numbered and named (e.g. "1 - PCB Installation", "2 - Battery Insertion", etc.)
iLogic/VBA Code should:
- Select presentation file (either auto or allow user browse/select)
- Create a page in the drawing (*.idw) for each VIEW from the presentation file
- Create a base view on each page for each presentation VIEW (in numbered order)
- Each base view orientation will be derived from Saved Camera
- Each drawing page will be named using the name from the corresponding presentation VIEW name
- Each page will have a prompted entry in the Title Block that will be defaulted to the presentation VIEW name
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".
At my company we use part numbers as file names for everything. for example, part number 09090P00100000, will be saved as 09090P00100000.ipt and will have a drawing saved as 09090P00100000.idw.
Within the drawing template file, i want to set up an ilogic rule that will check that the part present in the drawing corresponds to the file name of the drawing. This rule will run after saving and will just display a warning if the file names do not correspond.
I just need some code that will get the file name of the part displayed in the drawing. Note that we use iparts so the code must get the member file name and not the factory file name.
Dim oDrawingDoc As DrawingDocument oDrawingDoc = ThisApplication.ActiveDocument Dim oSheet As Sheet oSheet = oDrawingDoc.ActiveSheet
Autodesk Inventor Professional 2011 Windows 7 Enterprise, 64-bit
We have about 1000 drawings with VBA code that copies information from the title block into the drawing file custom properties. We have done this to get the information into a ACAD block to meet our clients requirements. It is an autosave routine so it runs whenever the file is saved in Inventor. We would like to make a change to the VBA code so we need to replace the autosave routine in the file with another.
Manual steps are:
Open the file
Enter VBA editor
Delete the autosave routine (without exporting)
Import the new autosave routine
Exit the VBA editor
Save and close the file
I'm sure we would write a routine to do this. However the effort from scratch may be more that just manually processing the files.
I have exploded my assembly in a presentation file, but I have not been able to record it. I have recorded videos previously, but this time the record button simply does not stay pressed. I have tried recording the video as WMV and as AVI.
I created a IPN from an IAM for an exploded view. When I put the base view of that exploded assembly into a drawing, one of the main components is invisible. So when I mouse over the edge of the view, the bounding box does not even reach high enough to possibly include this component. All other components are visible in their correct exploded positions. I tried deleting the view and placing it again, but it does the same thing. The colored and shaded preview just before view placement shows all parts where they should be.
I am looking for a way to log out of vault from within Inventor using iLogic codes. I have created an iLogic rule that automates export an assembly drawing and all sub component drawings. In my code, I have suppressed all Inventor prompts but I do not have a way to suppress Vault prompts. I can manually log off from vault and run this rule without any problems. However, if I forget to do so, I am stuck responding to update requests from vault and check out requests constantly for each and every file.
I recently created some iLogic based components. I wonder how difficult it is to protect the iLogic code, similar as VBA code which can be password protected.
The reason being:
1. Of course, to hide & protect the creator's modeling logic;
2. To avoid the relation between parameters being messed up by the end user unintensionally.
I did have the opportunity to raise the question during the Portathon event and the answer was that the protection not directly available, though the workaround could be mixing with some Inventor API coding in .NET.
However, this might defeat one of the benefits of iLogic, simple and ease to use, gentlr learning curve, especially for users with VBA experience. .NET might not be so easy for a lot of engineers from mechanical or other disciplines.
1 Disable the "Edit" button for iLogic components, including rules, forms, etc.;
2. Put all code that are to be protected in an external file, and then make that file unreadable (password protected, or other protection) to un-intended user, however, readable to those who have proper access privelege.
A while back I figured out how to put a few characters before and after several lines of code in iLogic to make it compress to one line or expand to its full size inside the code editor. I belive this is a fairly common VBA command, but I can't figure out how to do it again.
Inventor 2014 HP Pavilion dv6t-6b00 Intel Core i7 2670QM AMD Radeon HD 6490M 8gb RAM Windows 7 64 bit 3Dconnexion SpaceExplorer
I am trying to use a code window plugin on my website, and would like to create a temple for iLogic code. Is there any way to output iLogic code in a format that would work?
I cannot modify any of the existing templates because iLogic requires information as to whether to make some text brown or blue, and it would need some form of output to do that.
The instruction page is here: [URL]
I have been manually highlighting or using images, but both have their problems. (cut & paste will lead to a pile of errors with the manual highlighting). I can create the css file, but need some form of output beyond cut & paste to work with.
If something is worked out, it will be added to the program and be available to everyone free (this is a Wordpress plugin).
Self built computer with;
Quad core processor 16 gigs ram Raptor Raid main drives 2 x 1TB Caviar Black storage drives local 2 x 1TB Caviar Black storage drives network backup
Main Software; Product Design Suite Premium Windows 7 Home Premium [URL]
I have a iLogic rule for saving drawings (dwg) to a pdf file in a designated folder. Everything worked well until this Monday morning. Now I get the message: Error in rule: Save2PDF, in document: 13006-027 propflens-1.dwg Value cannot be null.
However, I have one iLogic routine that is giving me an error whenever I run it. Selecting continue allows it run as expected. Basically, it is to remind designers to set the material type to other than “Default”.
Here is the Materialsddd = 0' deleted parameter materialName = ThisDoc.Document.ComponentDefinition.Material.Name If materialName = "Default" Then MultiValue.List("MName") = iProperties.Materials MName = InputListBox("Select Material", MultiValue.List("MName"), Mname, Title := "Select Type", ListName := "MM List") iProperties.Material = Mname iLogicVb.UpdateWhenDone = True The Parameter MName does exist as a mulitlist parameter.
I was working with ilogic, Adding a new rule and all of a sudden I got an error and when I double click on a parameter to add it to the code, the format changed.
It used to look like this when I added a parameter: Parameter("vertical seperation:1", "partitionthickness") but now when I double click on a parameter I get this: vertical seperation.ipt.partitionthickness
Also when I right click on a parameter and select display current state, It does the same thing, for some reason the code does not display like it used to.
I got an error when this first happened and I tried reproduce the error again but it did not appear again. This affected all my parts and even in different projects.
I re installed inventor because I thought there might be a file link broken but it did not fix it.
I have put together some ilogic code which is embedded within a part template, this auto populates the iproperties with the profiles length,width and thickness, and also automatically updates when any changes are made to the said profile When I hit save.
This works a treat when creating new parts, the problem arises when re-using old parts from previous jobs (Which is a regular occurrence),prior to when the code was created.
So I have to run the code as an external rule, but this has caught me,and a few other people out, as we have forgotten to run the rule after making a change to the part so the iproperties aren't automatically updated.
My question is, is there a snippet of code that I could add to my code, which embeds the the externally ran rule to the Ipt?
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've managed to cobble this code together to turn some sketch visibilities on and off. However, what I'd really like to do is have a single sketch containing some blocks, and turn the visibility of the blocks on and off... How to call the blocks -
'Iterate through the sketches collection'Turn the edging indicators On And Off For Each oSketch In oDoc.ComponentDefinition.Sketches Select Case oSketch.NameCase "Front Edged"If E01 = True Then oSketch.Visible = TrueElse oSketch.Visible = FalseEnd IfCase "Top Edged"If E02 = True Then oSketch.Visible = TrueElse oSketch.Visible = FalseEnd IfCase "Back Edged"If E03 = True Then oSketch.Visible = TrueElse oSketch.Visible = FalseEnd IfCase "Base Edged"If E04 = True Then oSketch.Visible = TrueElse oSketch.Visible = FalseEnd IfEnd SelectNext
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.