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

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

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




  • Сообщения

    • Bot
      Об авторах: Мария Золотова — BIM-специалист строительной компании, по первому образованию — театральный режиссер, Софья Минина — BIM-менеджер, по второму образованию — психолог, Владимир Талапов — BIM-эксперт, всего одно образование — математик. См. также BIM и Театр: искусство возможного. Часть 1, BIM и Театр: искусство возможного. Часть 2, BIM и Театр: искусство возможного. Часть 3. Информационное моделирование зданий и сооружений, как творческий процесс, имеет много общего с не менее творческим процессом постановки театральных спектаклей. Поэтому изучение театрального опыта, его наработанных взаимосвязей участников и методик их взаимодействия может существенно помочь становлению и использованию BIM в строительной отрасли. В этой части речь пойдет о тех, кто вроде бы непосредственно не участвует в постановке спектакля или информационном моделировании, но от кого эти процессы существенно зависят. «Кто платит, тот и заказывает музыку» Итак, кто же [...] View the full article
    • Guhl
      Понятия не имею
    • Александр 36
      А где можно скачать русифицированную версию
    • BASH_HD
      В Москве) но вообще по мнению японцев станок в Германии) но это не точно...   Аукцон и BAFA знали куда продали.
    • Alexandr97
    • Andrey_kzn
      Логика работы у них та же самая. И интерфейсные сигналы те же. Вы упускаете из виду сигнал готовность привода. Это DB3x.DBX93.5. Выстраивайте логическую цепь событий. Формирование сигнала DDX2.1 может быть завязано на готовность привода.  Не будет готовности привода, можете сколько угодно выставлять DBX2.1, ось никуда не поедет. А готовность может пропадать из-за дефекта энкодера, кабеля, разъёмов и т.п.  Надо сделать трассировку всех этих приводных сигналов,  заодно посмотрите также DBX93.7 и DBX21.7.  И понять, что какой сигнал пропадает первым.
    • Guhl
      Опять я забыл про это меню. Оно в корне лежит, а я туплю Спасибо  
    • gudstartup
      @Guhl все это настраивается здесь
    • Guhl
      У меня 25я версия, но может ревизия не та. Скачаю с рутрэкера, посмотрю 
    • mrVladimir
      Странно. Сейчас попробовал выборочно разные ЧПУ - везде есть такие пункты. А у Вас на других также нет этих панелей? Может что-то при установке не так пошло...  
×
×
  • Создать...