Jump to content

Вызов add-in из карты данных


Loginsan

Recommended Posts

Loginsan

Доброго времени суток! При изучении данного вопроса столкнулся с такой проблемой: не получается вызвать окно сообщения/форму при нажатии по кнопке в карте данных. Пример из руководства с вызовом Add-in работает, но если я пытаюсь просто вызвать окно сообщения (Например: 

                EdmVault5 vault = default(EdmVault5);
                vault = (EdmVault5)poCmd.mpoVault;
                vault.MsgBox(poCmd.mlParentWnd, "Окно сообщения");
) то ничего не происходит. В чём может быть проблема? Код на С# ниже. В самой кнопке Имя вызываемого add-in приложения "MyButton:Title"(как в руководстве).
 

using EdmLib;
using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestAddIn
{
    
    [ComVisible(true)]
    [Guid("9D17B8F8-AE3D-470B-8228-48F83F415B1D")]
    public class TestAddIn : IEdmAddIn5
    {

        public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr)
        {

            poInfo.mbsAddInName = "Тест";
            poInfo.mbsCompany = "Тест";
            poInfo.mbsDescription = "Тест";
            poInfo.mlAddInVersion = 1;


            poInfo.mlRequiredVersionMajor = 1;
            poInfo.mlRequiredVersionMinor = 1;

            //Notify the add-in when a file data card button is clicked
            poCmdMgr.AddHook(EdmCmdType.EdmCmd_CardButton);
        }

        public void OnCmd(ref EdmCmd poCmd, ref Array ppoData)
        {

            //Respond only to a specific button command
            //The button command to respond to begins with "MyButton:" and ends with the name of the 
            //variable to update in the card 
            if (Strings.Left(poCmd.mbsComment, 9) == "MyButton:")
            {

                EdmVault5 vault = default(EdmVault5);
                vault = (EdmVault5)poCmd.mpoVault;
                vault.MsgBox(poCmd.mlParentWnd, "Окно сообщения");
            }  
        }
    }
}

 

 

Link to post
Share on other sites


UnPinned posts
streamdown
2 часа назад, Loginsan сказал:

то ничего не происходит

а вы кнопке в карточке правильно прописали вызов? 

а сам аддон зарегистрирован без ошибок?

Link to post
Share on other sites
Loginsan
3 минуты назад, streamdown сказал:

а вы кнопке в карточке правильно прописали вызов? 

а сам аддон зарегистрирован без ошибок?

Да. Я попробовал вызвать класс с формой (См. ниже). И это работает. Но почему со стандартным окном оповещения работать не хочет я так и не понял.

if (Strings.Left(poCmd.mbsComment, 9) == "MyButton:")
{

                Form1 Form = new Form1();
                Application.Run(Form);

}

Link to post
Share on other sites
streamdown

Возможно, mlParentWnd равно нулю.

вызывайте штатное NET сообщение

MessageBox.Show("Юхууу");

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

Так это, а отладчиком то чего не пройдётесь?

Так же, вот это сделали на проекте?

    1. On the Build tab, select Any CPU for Platform target, de-select Prefer 32-bit, and select Register for COM interop.

Edited by streamdown
  • Нравится 1
Link to post
Share on other sites
Loginsan
18 минут назад, streamdown сказал:

Возможно, mlParentWnd равно нулю.

вызывайте штатное NET сообщение

MessageBox.Show("Юхууу");

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

Так это, а отладчиком то чего не пройдётесь?

Так же, вот это сделали на проекте?

    1. On the Build tab, select Any CPU for Platform target, de-select Prefer 32-bit, and select Register for COM interop.

ДотНетовский тоже пробовал. В конфиге проекта указывал Any CPU. Самое интересное, что сейчас заработали оба варианта))) (ДотНетовский и который я скидывал до этого. Магия PDM?????)

Link to post
Share on other sites
streamdown

Кэш чистили? Как только добавляете аддон в хранилище, он локально тусуется, пока не очистится кэш. Т.е. перекомпиляция и передобавление иногда не помогают.

Сделайте батник. И при изменении кода и заново помещении аддона в приложения, запускайте его.

TASKKILL /F /IM explorer.exe
TASKKILL /F /IM EdmServer.exe
TASKKILL /F /IM ConisioAdmin.exe
TASKKILL /F /IM AddInSrv.exe

START explorer.exe

 

Edited by streamdown
  • Нравится 1
Link to post
Share on other sites
Loginsan
14.05.2022 в 22:33, streamdown сказал:

Кэш чистили? Как только добавляете аддон в хранилище, он локально тусуется, пока не очистится кэш. Т.е. перекомпиляция и передобавление иногда не помогают.

Сделайте батник. И при изменении кода и заново помещении аддона в приложения, запускайте его.


TASKKILL /F /IM explorer.exe
TASKKILL /F /IM EdmServer.exe
TASKKILL /F /IM ConisioAdmin.exe
TASKKILL /F /IM AddInSrv.exe

START explorer.exe

 

Я перезагружал комп) За батник благодарю!!!
P.S. Может знаете как получить путь к файлу, из карты данных которого вызывается add-in?

Link to post
Share on other sites
Loginsan
2 часа назад, Loginsan сказал:

Я перезагружал комп) За батник благодарю!!!
P.S. Может знаете как получить путь к файлу, из карты данных которого вызывается add-in?

Решил вопрос через poCmd.mlCurrentFolderID, но может есть какие-то изящные способы (получить путь не из БД)?

Link to post
Share on other sites
streamdown
19 минут назад, Loginsan сказал:

получить путь не из БД

Вся PDM - это обёртка над БД, включая API.

Link to post
Share on other sites
Loginsan
2 часа назад, streamdown сказал:

Вся PDM - это обёртка над БД, включая API.

Это я понимаю.
Большое спасибо за ответы!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • Maik812
      Есть такая штука https://tc-image.3dn.ru/forum/16 Чел превратил аля блокнот в целую систему с макросами и скриптами. там же могут и помочь написать. Но вроде она сеняет текст вставляет и ищит и заменяет.
    • Killerchik
      Про проверенных мною в Вашем первом сообщении ничего не было. Только о поставщиках в Китае. А их искать не вижу проблем, Али и 1688.
    • Viktor2004
      Активирована функция MANUAL HANDLE INTERRUPT Активируется она у меня вот этой кнопкой, а как у вас, надо смотреть описание станка  
    • Guhl
      Ещё там упоминается А10.0 с текстом "... (К9.7=1) " Активирует А10.0 сигнал R329.7, катушка которого отсутствует. Может у вас там какой-нибудь Power Mate есть еще со своим ладдером? Если вы в cross reference выделите К9.7 и нажмёте delete, то из address map оно пропадет
    • Guhl
      Парень из промоил приезжал, исправлял значение таймера на разжим/зажим патрона Когда его попросили о чем-то еще, то он сразу стал звонить менеджеру, потому что это уже другая неисправность и за нее типа отдельный счет выставлять надо Кстати, на соседнем похожем станке от них еще есть гарантия даже Раз дают гарантию, значит пнр делали?
    • gudstartup
      и вы думаете что приедут парни в куртках с надписью промойл и все разрулят? на них пнр кто производил? сервисную книжку вы не найдете потому что ее нет как и гарантийного сервиса
    • Guhl
      Насколько я понял, символьное имя ему присвоили, но в диаграмме не использовали
    • vudOZuru
      Здравствуйте! Подскажите пожалуйста, может кто сталкивался. На производстве  есть токарный станок Doosan Puma 280, стойка Fanuc. Со станком наблюдается такая проблема. В режиме автомат, mda, во время работы программы активен маховик. Только координата Z. Индикатор на кнопке не горит, на главном окне значения не меняются, меняются в окне Ofsset. Проблема в том что уходит привязка если случайно задеть маховик. Долго не понимали в чём проблема когда стали выходить детали с браком и уходила привязка. Заметили случайно когда станок вывели в нули и покрутили маховик, индикатор нулевой точки по Z потух. Может у кого-то было, подскажите где искать. Где в параметрах поставить блокировку на маховик в этих режимах кроме ручного.
    • ShadoWofXaoS
      Интересно, вопрос решился положительно? Столько времени прошло... )
    • Guhl
      Не нашёл я его серийного номера Есть только фото Если вы как-то связаны с промоилом и вам нужна более точная информация, то могу ее запросить и сказать где стоит станок (его официально покупали)  
×
×
  • Create New...