I am quite new to programming using C#. I have some experience with simple VBA.
I am writing a addin for Autodesk Inventor to use in our company. The addin is a custom property editor.
So far my code is working. The trouble I have now is that when the method CreateDescription()
is called from an event from the form, the strings in the method are filled. But, when I do the same from when the OK or Apply button is clicked, the strings stay empty.
Probably there is something I'm overlooking, but since I'm a newbie I don't know what it is.
Thank you.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Inventor;
namespace XXX_Property_Editor
{
public partial class FormPropertyEditor : Form
{
public FormPropertyEditor()
{
InitializeComponent();
string progId = "Inventor.Application";
Type inventorApplicationType = Type.GetTypeFromProgID(progId);
Inventor.Application invApp = (Inventor.Application)Marshal.GetActiveObject(progId);
Document oDoc = (Document)invApp.ActiveDocument;
PropertySets oPropertySets = oDoc.PropertySets;
}
#region Buttons
private void buttonOK_Click(object sender, EventArgs e)
{
InitializeComponent();
string progId = "Inventor.Application";
Type inventorApplicationType = Type.GetTypeFromProgID(progId);
Inventor.Application invApp = (Inventor.Application)Marshal.GetActiveObject(progId);
//Get the active document in Inventor
Document oDoc = (Document)invApp.ActiveDocument;
//Get corrent Windows username
string userName = System.Environment.UserName;
string txtDescription = CreateDescription();
SetProperty setProperty = new SetProperty();
setProperty.EditDesignTrackingProperty("Description", txtDescription, oDoc);
setProperty.EditSummaryProperty("Title", txtDescription, oDoc);
setProperty.EditDocumentSummaryProperty("Company", "MHS", oDoc);
setProperty.EditSummaryProperty("Author", userName, oDoc);
setProperty.EditDesignTrackingProperty("Designer", userName, oDoc);
setProperty.EditDesignTrackingProperty("Engineer", userName, oDoc);
//setProperty.CreateAndEditCustomProperty("Loation", "xxx, xxx", oDoc);
//setProperty.EditDesignTrackingProperty("Project", "GPA0012345", oDoc);
this.Close();
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonApply_Click(object sender, EventArgs e)
{
InitializeComponent();
string progId = "Inventor.Application";
Type inventorApplicationType = Type.GetTypeFromProgID(progId);
Inventor.Application invApp = (Inventor.Application)Marshal.GetActiveObject(progId);
//Get the active document in Inventor
Document oDoc = (Document)invApp.ActiveDocument;
//Get corrent Windows username
string userName = System.Environment.UserName;
string txtDescription = CreateDescription();
MessageBox.Show(txtDescription);
SetProperty setProperty = new SetProperty();
setProperty.EditDesignTrackingProperty("Description", txtDescription, oDoc);
setProperty.EditSummaryProperty("Title", txtDescription, oDoc);
setProperty.EditDocumentSummaryProperty("Company", "XXX", oDoc);
setProperty.EditSummaryProperty("Author", userName, oDoc);
setProperty.EditDesignTrackingProperty("Designer", userName, oDoc);
setProperty.EditDesignTrackingProperty("Engineer", userName, oDoc);
}
#endregion
#region Description
private void comboBoxPrefix_SelectionChangeCommitted(object sender, EventArgs e)
{
this.labelDescription.Text = CreateDescription();
}
private void comboBoxDescription1_SelectionChangeCommitted(object sender, EventArgs e)
{
this.labelDescription.Text = CreateDescription();
}
private void comboBoxDescription2_SelectedIndexChanged(object sender, EventArgs e)
{
this.labelDescription.Text = CreateDescription();
}
private void textBoxFreeText_TextChanged(object sender, EventArgs e)
{
this.labelDescription.Text = CreateDescription();
}
private string CreateDescription()
{
string txtPrefix = this.comboBoxPrefix.GetItemText(comboBoxPrefix.SelectedItem);
string txtDescription1 = this.comboBoxDescription1.GetItemText(comboBoxDescription1.SelectedItem);
string txtDescription2 = this.comboBoxDescription2.GetItemText(comboBoxDescription2.SelectedItem);
string txtFree = this.textBoxFreeText.Text;
string txtDescription = txtPrefix + "_" + txtDescription1 + " " + txtDescription2 + " " + txtFree;
MessageBox.Show(txtPrefix);
MessageBox.Show(txtDescription1);
MessageBox.Show(txtDescription2);
MessageBox.Show(txtFree);
return txtDescription;
}
#endregion
}
}