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

#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 пользователей

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




  • Сообщения

    • lem_on
      ну с дуру известно что сломать можно.
    • Viktor2004
      руку привязки так сломать легко
    • lem_on
      По моему вполне логично если станок вывалится в ошибку если рука не доехала до места. У меня так же если кулачки или деталь на пути, просто пихаеш ее до места и станок опять активен. Но нынешние пановья даже не могут написать модель станка.
    • Viktor2004
      Я согласен что скорее всего проблема механическая Но если логика прописана криво и возможно не предусмотрела остановку в промежуточном состоянии, разве не логично будет попробовать принудительно подав напряжение дернуть эту руку вверх-вниз? Возможно то что туда попало выпадет  
    • Guhl
      Если оставить за скобками вопрото том, что до м19 работает нормально, а после нет, то вы не считали сколько у него реально импульсов на оборот? с помощью стороннего плк, например  А если ориентацию м5 снимать, а не м20?
    • lem_on
      Что это за станок такой в котором сразу ладер ковырять надо, даже не смотря на возможность механической проблемы? Или профдеформация?
    • Viktor2004
      не сразу я понял в чем вопрос. Долго соображал что такое режим управления скоростью. При завершении ориентации PMC снимает сигнал G70.6 ? И если он после снятия сигнала продолжает удерживать шпиндель, при каких условиях эта ориентация все же снимается? После нажатия аварийного грибка или еще как?
    • Viktor2004
      Ладдер пришлите. Будем принудительно пробовать поднимать и опускать
    • streamdown
      Коллеги приветствую! IPS 8. Подскажите пожалуйста, кто какое серверное железо использует? Интересуют параметры при одновременной работе, ну например, 400 пользователей онлайн
    • gudstartup
      так он так и позиционируется по m19 pmc выдает g70.6 а чпу отвечает f45.7 но ориентацию и смещение в 4077 он отрабатывает нормально шпиндель встает ровно и смена происходит хорошо. вопрос почему после ввода команды управления скоростью он все еще продолжает контролировать число импульсов между нуль метками хотя в принципе уже должен отменить позиционный контроль и просто считать обороты по 0 метке как он это делает без М19? это все понятно но почему оно продолжает проверять это после завершения ориентации мне непонятно
×
×
  • Создать...