private void Handle_Form_Load(object sender, EventArgs e) { _document = AdnInventorUtilities.InvApplication.ActiveDocument; this.KeyPreview = true; this.KeyDown += new KeyEventHandler(LinkParametersForm_KeyDown); this.Text = "Link Parameters [Rule: " + _ruleName + "]"; _ruleOptionsForm = new RuleOptionsForm(); //Retrieve rule properties if rule exists IiLogicAutomation ruleApi = iLogicUtilities.GetiLogicAutomation(); iLogicRule rule = ruleApi.GetRule(_document, _ruleName); if (rule != null) { _ruleOptionsForm.FireDep = rule.FireDependentImmediately; _ruleOptionsForm.DontRunAuto = !rule.AutomaticOnParamChange; //_ruleOptionsForm.UpdateWhenDone = } _sourceParameterDict = new Dictionary <Parameter, ListViewItem>(); _targetParameterDict = new Dictionary <Parameter, ListViewItem>(); _currentParamFilter = ParamFilterEnum.kAll; Command.SourceComponent = null; Command.TargetComponent = null; _mappings = ParameterMappingInfo.GetMappings(_document, _ruleName); }
public static List <ParameterMappingInfo> GetMappings(Document document, string ruleName) { IiLogicAutomation ruleApi = iLogicUtilities.GetiLogicAutomation(); System.Collections.IEnumerable rules = iLogicUtilities.GetiLogicAutomation().get_Rules(document); iLogicRule rule = ruleApi.GetRule(document, ruleName); if (rule != null) { return(ParameterMappingInfo.GetMappingsFromRule(rule)); } return(new List <ParameterMappingInfo>()); }
public static IiLogicAutomation GetiLogicAutomation() { try { if (_iLogicAutomation == null) { Inventor.ApplicationAddIn addin = AdnInventorUtilities.InvApplication.ApplicationAddIns.ItemById[iLogicAddinGuid]; if (addin.Activated == false) { addin.Activate(); } _iLogicAutomation = (IiLogicAutomation)addin.Automation; } return(_iLogicAutomation); } catch { return(null); } }
public static void UpdateMappings( Document document, ComponentOccurrence targetOcc, List <ParameterMappingInfo> erasedMappings, List <ParameterMappingInfo> newMappings, string ruleName, bool fireDepRules, bool dontRunAuto, bool updateWhenDone) { try { IiLogicAutomation ruleApi = iLogicUtilities.GetiLogicAutomation(); iLogicRule rule = ruleApi.GetRule(document, ruleName); if (rule == null) { rule = ruleApi.AddRule(document, ruleName, string.Empty); } //First we will remove erased mappings foreach (ParameterMappingInfo mapping in erasedMappings) { string mappingStr = CreateMappingString(mapping); if (rule.Text.Contains(mappingStr)) { rule.Text = rule.Text.Replace(mappingStr, string.Empty); } } //Clean up rule, we will remove all empty sections here if (erasedMappings.Count > 0) { RemoveEmptySections(rule); } //Then add new mappings List <string> newMappingsStr = new List <string>(); foreach (ParameterMappingInfo mapping in newMappings) { string mappingStr = CreateMappingString(mapping); if (!rule.Text.Contains(mappingStr)) { newMappingsStr.Add(mappingStr); } } string updateStr = "iLogicVb.UpdateWhenDone = " + (updateWhenDone ? "True" : "False"); if (!rule.Text.Contains(updateStr)) { newMappingsStr.Add(updateStr); } if (newMappingsStr.Count > 0) { string startTag = "\n'<LinkParameters:Section:Start> This code section was generated by LinkParameters Add-In (Do NOT modify)\n"; string endTag = "'<LinkParameters:Section:End>" + " [Date: " + System.DateTime.Now.ToString() + "]\n"; rule.Text += startTag; foreach (string line in newMappingsStr) { rule.Text += line + "\n"; } rule.Text += endTag; } rule.FireDependentImmediately = fireDepRules; rule.AutomaticOnParamChange = !dontRunAuto; if (!dontRunAuto) { ruleApi.RunRuleDirect(rule); } } catch { } }