09-19-2019
02:18 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
09-19-2019
02:18 AM
Hi, I usually use an external rule similar to the one I share below to add an internal rule.
You must be careful when you try to add a quotation mark character, you must duplicate it within the rule, otherwise you will have error.
Sub Main Dim oDoc As Document = ThisDoc.Document If oDoc.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject AndAlso iProperties.Volume > 0 Then Dim RuleName As String = "Thickness_Rule" Dim RuleText As String = "'Example of Ilogic Rule" & vbCrLf & _ "iProperties.Value(""Project"", ""Stock Number"") = ""t = "" & Thickness & "" mm""" Dim RuleAlreadyExists As Boolean = False ' Define the iLogic addin Dim iLogicAddIn As ApplicationAddIn = ThisApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}") ' Get the iLogic automation object Dim iLogic As Object = iLogicAddIn.Automation ' Get the list of iLogic rules in the current Inventor document Try iLogic.DeleteRule(oDoc, RuleName) iLogic.AddRule(oDoc, RuleName, RuleText) Catch iLogic.AddRule(oDoc, RuleName, RuleText) End Try Dim EventPropSet As Inventor.PropertySet EventPropSet = GetiLogicEventPropSet(ThisApplication.ActiveDocument) EventPropSet.Add(RuleName, "AfterAnyParamChange", 1000) EventPropSet.Add(RuleName, "PartBodyChanged ", 1200) EventPropSet.Add(RuleName, "AfterDocSave",800) 'After Open Document : AfterDocOpen : 400 'Close(Document) : DocClose : 500 'Before Save Document : BeforeDocSave : 700 'After Save Document : AfterDocSave : 800 'Any Model Parameter Change : AfterAnyParamChange : 1000 'Part Geometry Change** : PartBodyChanged : 1200 'Material Change** : AfterMaterialChange : 1400 'Drawing View Change*** : AfterDrawingViewsUpdate : 1500 'iProperty(Change) : AfterAnyiPropertyChange : 1600 'Feature Suppression Change** : AfterFeatureSuppressionChange : 2000 'Component Suppression Change* : AfterComponentSuppressionChange : 2200 'iPart / iAssembly Change Component* : AfterComponentReplace : 2400 'New Document : AfterDocNew : 2600 InventorVb.DocumentUpdate() End If End Sub Function GetiLogicEventPropSet(cDocument As Document) As Inventor.PropertySet On Error Resume Next iLogicEventPropSet = cDocument.PropertySets.Item("iLogicEventsRules") If iLogicEventPropSet Is Nothing Then iLogicEventPropSet = cDocument.PropertySets.Item("_iLogicEventsRules") End If If iLogicEventPropSet.InternalName <> "{2C540830-0723-455E-A8E2-891722EB4C3E}" Then Call iLogicEventPropSet.Delete iLogicEventPropSet = cDocument.PropertySets.Add("iLogicEventsRules", "{2C540830-0723-455E-A8E2-891722EB4C3E}") End If If iLogicEventPropSet Is Nothing Then iLogicEventPropSet = cDocument.PropertySets.Add("iLogicEventsRules", "{2C540830-0723-455E-A8E2-891722EB4C3E}") End If If iLogicEventPropSet Is Nothing Then MsgBox ("Unable to create the Event Triggers property for this file!", , "Event Triggers Not Set") Err.Raise(1) Exit Function End If On Error GoTo 0 Return iLogicEventPropSet End Function
I hope this helps with your problem. Regards
Please accept as solution and give likes if applicable.
I am attaching my Upwork profile for specific queries.
Sergio Daniel Suarez
Mechanical Designer
| Upwork Profile | LinkedIn