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

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


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

Доброго времени суток! При изучении данного вопроса столкнулся с такой проблемой: не получается вызвать окно сообщения/форму при нажатии по кнопке в карте данных. Пример из руководства с вызовом 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, "Окно сообщения");
            }  
        }
    }
}

 

 

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


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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, streamdown сказал:

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

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

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

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

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

}

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

Возможно, 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.

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
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?????)

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

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

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

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

START explorer.exe

 

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
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?

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Loginsan сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Loginsan сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, streamdown сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • vad0000
      Покажите эту схему Нажмите на ЧПУ - ручное позиционирование осей. Фото
    • A_1
      Здравствуйте. Это можно сделать через команду Изменить параметры.
    • vladimir.songin
      Для оси X, по схеме, активация всегда активна. В шкаф посмотрю попозже. Сегодня поеду на этот завод. Тем не менее, чтобы ось X в подвигать, нужно активировать этот выход. На схеме указано, что 2006 это: proportional valve ON.  схема.jpg 24В, которые активируют привод оси X, появляются после того, как запускаем гидравлику и отрабатывает реле безопасности. Я думаю что с разрешением на движение оси X всё нормально, потому что если: Включить ось X Передвинуть ось X куда-нибудь к середине Перезапустить станок и нажать старт то ось X едет в конец до упора, (значит с разрешением всё ОК) отрабатывает концевик оси X, (Нажать концевик пораньше и проверить останавливается ось X по концевику или по упору не пробовал) позиционируется ось R Балка едет до упора вверх.  Станок дальше не работает.  Если всё то же без оси X, то станок работает, но ось X соответственно не движется.  Что касается оси R, ранее я ввёл в заблуждение. Для того, чтобы подвигать ось R, нужно активировать выход не 2006 а 1102. 
    • Artas28
    • ДОБРЯК
      Интересная методика испытаний. Сначала предложить изменить собственные частоты изделия, которое испытывается. А потом сказать
    • Bot
      В год 35-летия компании вклад АСКОН в развитие российской индустрии информационных технологий отмечен Министерством цифрового развития, связи и массовых коммуникаций Российской Федерации. Сооснователь и председатель совета директоров АСКОН Александр Голиков награжден Почетной грамотой Минцифры России. Государство особо подчеркнуло его заслуги в обеспечении замещения зарубежных отраслевых решений и программного обеспечения. Смотреть полностью
    • vladimir.songin
      Вы ведь тоже понимаете, что решаю не я. Я бы с удовольствием соскочил с этого дела, но только путём решения вороса каким-либо образом.  Никогда не оставляю после себя нерешённых задач.  Я всё передал и предложил в соответствии с нашими с вами договорённостями.  К сожаление решение вышестоящих немного не такое, как я ожидал.  Пытаюсь добить тему до конца. Много уже изучил, знаю и понимаю. Ось Х точно рабочая. Ничего с ней не нужно делать. Это мне уже понятно.  P.S. За любую помощь буду в любом случае благодарен. 
    • vad0000
      А Вы откройте шкаф, и посмотрите. Статус привода до активации 2006, и после
    • gudstartup
      чтобы пропустить просто закомментируйте его и все G5.1Q1 включает G5.1Q0 выключает или если позволит изменить то 1604.0=0
    • vladimir.songin
      Ось Х поедет, нужно только активировать перед этим выход 2006, а когда доедет, то отработает вход 2020. 2020 это концевик оси Х. При этом, на вашем скрине в поле энкодера правильное значение. А у меня ENC = Input0. 2006 это скорее всего RUN. При его активации могу подвигать ось X и R. С другоими осями другие проблемы и их я отключил пока вообще.  Screenshot 2024-04-19 082359.png 20240415_083254077_iOS.jpg 20240415_083303964_iOS.jpg 20240415_083340099_iOS.jpg По моим ссылкам получается фото и видео  посмотреть?  
×
×
  • Создать...