Перейти к публикации

#C подключение к events.


Рекомендованные сообщения

Написал дополнение для Solid Edge. Создал в нем CommandBar. Как мне задать действие при нажатии кнопулек в этом Command Bar'е? И еще, как получить доступ к Mouseclick event. Мне надо получать координаты курсора при нажатии на левую кнопку.

Ссылка на сообщение
Поделиться на других сайтах


Еще проблема. После создания командбара он сразу становится неактивным, с чем это связано и как исправить. вот часть кода.

private object _application;

private AddIn _addIn;

public void OnConnection(object application, SeConnectMode ConnectMode, AddIn addIn)

{

try

{

_application = application;

_addIn = addIn;

addIn.Description = "Myadd"; System.Windows.Forms.MessageBox.Show("con");

}

catch (Exception ex)

{

System.Windows.Forms.MessageBox.Show("Error loadding the addin" + ex.Message.ToString());

}

}

public void OnConnectToEnvironment(string EnvCatID, object pEnvironmentDispatch, Boolean bFirstTime)

{

System.Windows.Forms.MessageBox.Show("Env"+EnvCatID);

if (EnvCatID == CATID_SEDraft)

{

System.Windows.Forms.MessageBox.Show("draft");

try

{

string[] commandNames = new string[3];

commandNames[0] = "cmdAbout\n\nAbout System\nAbout";

commandNames[1] = "cmdDuplicateFile\n\nDuplicate File\nDuplicate";

commandNames[2] = "cmdTester\n\nTester \nDebug";

int[] commandIDs = new int[3];

commandIDs[0] = 101;

commandIDs[1] = 102;

commandIDs[2] = 103;

Array cmdid = commandIDs;

Array cmdname = commandNames;

_addIn.SetAddInInfo(Marshal.GetHINSTANCE(this.GetType().Module).ToInt32(), EnvCatID, "ManagedMenu", 1, 2, 1, 2, cmdid.Length, ref cmdname, ref cmdid);

if (bFirstTime)

{

SolidEdgeFramework.Environment env = (SolidEdgeFramework.Environment)pEnvironmentDispatch;

env.CommandBars.LargeButtons = true;

env.CommandBars.Add("ManagedMenu", SolidEdgeFramework.SeBarPosition.seBarTop, true, true);

_addIn.AddCommandBarButton(EnvCatID, "ManagedMenu", 101);

_addIn.AddCommandBarButton(EnvCatID, "ManagedMenu", 102);

_addIn.AddCommandBarButton(EnvCatID, "ManagedMenu", 103);

System.Windows.Forms.MessageBox.Show("ft");

}

}

catch (System.Exception ex)

{

System.Windows.Forms.MessageBox.Show("hzzz");

}

}

}

Ссылка на сообщение
Поделиться на других сайтах

Итак командбар я победил. Осталось получить доступ к нажатию мышки. По нажатию надо получить координаты курсора. Неужели никто не знает как это делать?

Ссылка на сообщение
Поделиться на других сайтах

Заходим в папку где установлен SE и смотрим макросы которые для примера приложены, есть там подобная. У меня вот так .....\Solid Edge ST4\Custom\MouseEvents. Правда они еще от царя Гороха писаны и на VB, но для понимания достаточно.

Ссылка на сообщение
Поделиться на других сайтах

Без эвентов:

private void Form1_MouseMove(object sender, MouseEventArgs e)

		{

			button1.Text = "X=" + e.X.ToString() + "\nY=" + e.Y.ToString()+"\nBX="+button1.Location.X.ToString()+"\nBY="+button1.Location.Y.ToString();

		}

C эвентами:

<noindex>http://msdn.microsoft.com/en-us/library/sy...eeventargs.aspx</noindex>

public Form1()

15			{

16				InitializeComponent();

18				 

19				//make full screen

20				this.FormBorderStyle = FormBorderStyle.None;

21				this.TopMost = true;

22				//this.WindowState = FormWindowState.Maximized;

23	 

24				mouseCoords = MousePosition;  //initialize private data member.

25	 

26				//delegate(s) to handle mouse events

27				//this.pictureBox1.MouseMove += delegate{Application.Exit(); };

28				this.MouseMove += new MouseEventHandler(this.Form1_MouseMove);

34			}

35	 

36			//Methods to handle the Mouse Events.

37	 

38			//user moves the mouse (check to see if they actually did) then SS closes.

39			private void Form1_MouseMove(object sender, MouseEventArgs e)

40			{

41				//check to see if we have coordinates

42				if (!mouseCoords.IsEmpty)

43				{

44					//if coordinates have been changed from whenZ8 the object was first

45					//initialized, close the SS.

46					Point temp;

47					temp = new Point(e.X, e.Y);

48					if (mouseCoords != temp)

49					{

50						this.Close();

51					}

52					mouseCoords = new Point(e.X, e.Y);

// Тут можно динисать, что делать с полученными координатами.

53				}

54			}

Можно поиграться с сэндером, типа где именно отлавливать перемещение.

Ссылка на сообщение
Поделиться на других сайтах
  • 2 года спустя...

Здравствуйте. После создания командбара он сразу становится неактивным, если не сложно выложите плиз часть кода.

Пробовал так, но не получилось:

 

 string[] commandNames = new string[4];
            commandNames[0] = "CreateNewTcsDoc\n\nСоздать документ \nСоздать документ";
            //commandNames[1] = "CreateLinkedDocs\n\nСоздать вложенные документы/связи\nСоздать вложенные документы/связи";
            //commandNames[2] = "CreateNewInDoc\n\nСоздать документ с входимостью на основе файла \nСоздать документ с входимостью на основе файла";
            //commandNames[3] = "CreateNewOutDoc\n\nСоздать документ с применяемостью на основе файла \nСоздать документ с применяемостью на основе файла";
 
            int[] commandIDs = new int[4];
            commandIDs[0] = 101;
            //commandIDs[1] = 102;
            //commandIDs[2] = 103;
            //commandIDs[3] = 104;
 
            Array cmdid = commandIDs;
            Array cmdname = commandNames;
 
      
 
 _addIn.SetAddInInfo(Marshal.GetHINSTANCE(this.GetType().Module).ToInt32(), EnvCatID, "TechnologiCS", Win32ResourceIDs.BMP.CreateDocs, Win32ResourceIDs.BMP.CreateDocs, 1, 2, cmdid.Length, ref cmdname, ref cmdid);
 

SolidEdgeFramework.Environment env = (SolidEdgeFramework.Environment)pEnvironmentDispatch;

env.CommandBars.LargeButtons = true;
 
SolidEdgeFramework.CommandBar comBar = env.CommandBars.Add("TechnologiCS", SolidEdgeFramework.SeBarPosition.seBarTop, true, false);
 
comBar.Visible = true;
comBar.Enabled = true;
 
 
SolidEdgeFramework.CommandBarButton pButton = _addIn.AddCommandBarButton(EnvCatID, "TechnologiCS", 101);
            
pButton.Style = SolidEdgeFramework.SeButtonStyle.seButtonIconAndCaption;
pButton.Enabled = true;
pButton.Visible = true;
Изменено пользователем bitteehan
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...