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

NxOpen запуск приложения не в автономном режиме


TheFatRat

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

Добрый день, возник вопрос по реализации внешнего файла при работе с NX.

Как можно открыть внешний файл не в автономном режиме. Я пытаюсь открыть созданию модель в NX с расширением prt, далее изменить ее по средствам NXOpen (dll уже написана и работает через ctr+U, во время выполнения этой dll я выбираю поверхности детали на которых буду строить кривые, то есть мне необходим контакт с моделью). Я открываю модель получаю сессию этой модели, но не могу с ней взаимодействовать она полностью выполняется в автономном режиме. И если я пере открою модель, то изменения будут применены.

Как можно использую exe файл открыть модель и сессию и редактировать ее в режиме реального времени и вообще возможно ли такое?

 

Пример кода который я использую для открытия и получения сессии:

    public static void Main(string[] args)
    {
        try
        {
            Process.Start("D:\\ABC.prt");

            PartLoadStatus partLoadstatus;
            Session.GetSession().Parts.OpenDisplay("D:\\ABC.prt", out partLoadstatus);
            theSession = Session.GetSession();
            theUfSession = UFSession.GetUFSession();


            theSession.ApplicationSwitchImmediate("UG_APP_MODELING");

            ListingWindow lw = theSession.ListingWindow;
            lw.Open();
            foreach (Body item in theSession.Parts.Work.Bodies)
                lw.WriteFullline(item.JournalIdentifier.ToString());

            //Создание блока
            FeatureSigns sign = FeatureSigns.Nullsign;
            double[] cornet_pt = { 100.0, 0.0, 0.0 };
            string[] edge_len = { "300.0", "100.0", "100.0" };
            Tag blk_obj_id = Tag.Null;
            theUfSession.Modl.CreateBlock1(sign, cornet_pt, edge_len, out blk_obj_id);

            theUfSession.Part.Save();
        }
        catch (NXException ex)
        {
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);

        }
    }

 

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


UnPinned posts

Что значит редактировать в режиме реального времени ? Не совсем понятно , вы хотите открыть деталь , сделать какие то изменения в ней и закрыть , через собственной исполняемый файл(exe) ? 

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

Что значит редактировать в режиме реального времени ? Не совсем понятно , вы хотите открыть деталь , сделать какие то изменения в ней и закрыть , через собственной исполняемый файл(exe) ? 

Когда я запускаю внешний файл exe для работы в nxopen он все процессы выполняет в пакетном режиме, я никак не могу воздействовать на эту сессию (окно nx даже не открывается). Мне необходимо запустить внешний exe Файл чтобы открылась актуальная сессия nxopen с нужным файлом и я смог в ней отредактировать модель по созданным мной шаблонам UI. После этого сохранить деталь. Часть работы выполняется в пакетном режиме, а часть в интерактивном (пример интерактивного ctr+u и выбор dll файла). Изучив документацию я нашел что есть третий режим  "Удаленный" клиент-серверное приложение, но для него чтобы работать с внешними интерфейсами UI необходимо экспортировать необходимые параметры, для классов UI, как они экспортируются на сервер я пока найти не смог, может кто-то делал нечто подобное?

Ссылка на сообщение
Поделиться на других сайтах
On 11/12/2022 at 6:28 AM, TheFatRat said:

Когда я запускаю внешний файл exe для работы в nxopen он все процессы выполняет в пакетном режиме, я никак не могу воздействовать на эту сессию (окно nx даже не открывается). Мне необходимо запустить внешний exe Файл чтобы открылась актуальная сессия nxopen с нужным файлом и я смог в ней отредактировать модель по созданным мной шаблонам UI. После этого сохранить деталь. Часть работы выполняется в пакетном режиме, а часть в интерактивном (пример интерактивного ctr+u и выбор dll файла). Изучив документацию я нашел что есть третий режим  "Удаленный" клиент-серверное приложение, но для него чтобы работать с внешними интерфейсами UI необходимо экспортировать необходимые параметры, для классов UI, как они экспортируются на сервер я пока найти не смог, может кто-то делал нечто подобное?

Для этого программа должна быть скомпилирована в режиме не "External" - исполняемый файл получается c расширением *.exe, а в режиме "Internal" - - исполняемый файл получается c расширением *.dll.

А вообще, непонятно, что вы подразумеваете под внешним файлом?

Ссылка на сообщение
Поделиться на других сайтах
12.11.2022 в 04:28, TheFatRat сказал:

Когда я запускаю внешний файл exe для работы в nxopen он все процессы выполняет в пакетном режиме, я никак не могу воздействовать на эту сессию (окно nx даже не открывается). Мне необходимо запустить внешний exe Файл чтобы открылась актуальная сессия nxopen с нужным файлом и я смог в ней отредактировать модель по созданным мной шаблонам UI. После этого сохранить деталь. Часть работы выполняется в пакетном режиме, а часть в интерактивном (пример интерактивного ctr+u и выбор dll файла). Изучив документацию я нашел что есть третий режим  "Удаленный" клиент-серверное приложение, но для него чтобы работать с внешними интерфейсами UI необходимо экспортировать необходимые параметры, для классов UI, как они экспортируются на сервер я пока найти не смог, может кто-то делал нечто подобное?

Так и должно быть , так как вы используете в своем приложении (exe) библиотеки NX , то есть используете nx как стороннюю библиотеку. Почему бы вам просто не привязаться к событиям в NX и их не обработать ? Например при открытии детали выполнить какие то действия.  А то что вы хотите сделать вряд ли возможно так как вы хотите получить полный доступ к процессу который не вами создан. То есть это все равно что скрестить человека с лошадью , да вы можете ездить на лошади (то есть через интерфейс с ней взаимодействовать ) но вы не можете соединиться с ней полностью и иметь общий мозг. 

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

Так и должно быть , так как вы используете в своем приложении (exe) библиотеки NX , то есть используете nx как стороннюю библиотеку. Почему бы вам просто не привязаться к событиям в NX и их не обработать ? Например при открытии детали выполнить какие то действия.  А то что вы хотите сделать вряд ли возможно так как вы хотите получить полный доступ к процессу который не вами создан. То есть это все равно что скрестить человека с лошадью , да вы можете ездить на лошади (то есть через интерфейс с ней взаимодействовать ) но вы не можете соединиться с ней полностью и иметь общий мозг. 

Нашел пример в NX 12.0\UGOPEN\SampleNXOpenApplications\.NET\RemotingExample, Клиент-серверного приложения у меня получилось вывести сообщение на экран theUI.NXMessageBox, но я не могу выводить диалоговое окно BlockDialog выходит ошибка в методах Initialize_cb, Apply_cb, Show().

 

Код для клиента

static void Main(string[] args)
    { 
        theSession = (Session)Activator.GetObject(typeof(Session), "http://localhost:4567/NXOpenSession");
        UFSession theUFSession = (UFSession)Activator.GetObject(typeof(UFSession), "http://localhost:4567/UFSession");
        theUI = (UI)Activator.GetObject(typeof(UI), "http://localhost:4567/theUI");

            string TheDialogName = "C:\\Users\\User\\YandexDisk\\MyDocuments\\source\\NXOpen\\Massive.dlx";

            theUI.NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "asdasd");

            theDialog = theUI.CreateDialog(TheDialogName);
            theDialog.AddInitializeHandler(new BlockDialog.Initialize(Initialize_cb));
            theDialog.AddApplyHandler(new BlockDialog.Apply(Apply_cb));
            theDialog.AddOkHandler(new BlockDialog.Ok(Apply_cb));
            theDialog.Show();
        }

Код для сервера

 

 public static void Run()
    {
        DoLog("In NXOpenRemotingService.Main - getting session\n");
        theSession = Session.GetSession();
        theUFSession = UFSession.GetUFSession();
        theUI = UI.GetUI();
            DoLog("Starting NX Service\n");

            LifetimeServices.LeaseTime = System.TimeSpan.FromDays(10000);

            SoapServerFormatterSinkProvider provider = new SoapServerFormatterSinkProvider();
            provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

            // Create the IDictionary to set the port on the channel instance.

            IDictionary props = new Hashtable();
            props["port"] = port;

            // Create a new http channel with the given provider and properties
            ChannelServices.RegisterChannel(new HttpChannel(props, null, provider), false);

            DoLog("\n\n");
            DoLog("Exporting Session object");
            RemotingServices.Marshal(theSession, "NXOpenSession");

            DoLog("Exporting UFSession Object");
            RemotingServices.Marshal(theUFSession, "UFSession");

            DoLog("Exporting theUI Object");
            RemotingServices.Marshal(theUI, "theUI");

            DoLog("NX Service started on port " + port + "\n");

}

 

 

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

Нашел пример в NX 12.0\UGOPEN\SampleNXOpenApplications\.NET\RemotingExample, Клиент-серверного приложения у меня получилось вывести сообщение на экран theUI.NXMessageBox, но я не могу выводить диалоговое окно BlockDialog выходит ошибка в методах Initialize_cb, Apply_cb, Show().

 

Код для клиента

static void Main(string[] args)
    { 
        theSession = (Session)Activator.GetObject(typeof(Session), "http://localhost:4567/NXOpenSession");
        UFSession theUFSession = (UFSession)Activator.GetObject(typeof(UFSession), "http://localhost:4567/UFSession");
        theUI = (UI)Activator.GetObject(typeof(UI), "http://localhost:4567/theUI");

            string TheDialogName = "C:\\Users\\User\\YandexDisk\\MyDocuments\\source\\NXOpen\\Massive.dlx";

            theUI.NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "asdasd");

            theDialog = theUI.CreateDialog(TheDialogName);
            theDialog.AddInitializeHandler(new BlockDialog.Initialize(Initialize_cb));
            theDialog.AddApplyHandler(new BlockDialog.Apply(Apply_cb));
            theDialog.AddOkHandler(new BlockDialog.Ok(Apply_cb));
            theDialog.Show();
        }

Код для сервера

 

 public static void Run()
    {
        DoLog("In NXOpenRemotingService.Main - getting session\n");
        theSession = Session.GetSession();
        theUFSession = UFSession.GetUFSession();
        theUI = UI.GetUI();
            DoLog("Starting NX Service\n");

            LifetimeServices.LeaseTime = System.TimeSpan.FromDays(10000);

            SoapServerFormatterSinkProvider provider = new SoapServerFormatterSinkProvider();
            provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

            // Create the IDictionary to set the port on the channel instance.

            IDictionary props = new Hashtable();
            props["port"] = port;

            // Create a new http channel with the given provider and properties
            ChannelServices.RegisterChannel(new HttpChannel(props, null, provider), false);

            DoLog("\n\n");
            DoLog("Exporting Session object");
            RemotingServices.Marshal(theSession, "NXOpenSession");

            DoLog("Exporting UFSession Object");
            RemotingServices.Marshal(theUFSession, "UFSession");

            DoLog("Exporting theUI Object");
            RemotingServices.Marshal(theUI, "theUI");

            DoLog("NX Service started on port " + port + "\n");

Суммируя, я так до конца и непонял что вы хотите сделать . Я могбы попытаться помочь , но напишите конкретно что вы хотите сделать , чем точнее напишите тем точнее и будет ответ ,я так думаю

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • IgnatvKudrin
      Для нашего производства требуются постоянно инструментальные пружины для штампов. Сейчас заказы обрабатываются довольно долго - до 2-х месяцев. А у нас сроки на штампы 1-2 месяца с испытанием, доработкой и т.п. Хотелось бы найти поставщика, у которого уже есть склад с данными пружинами или кто может доставить за 1 месяц.   Пружины стандартные по ISO, но на всякий случай приложил каталог. Вот список пружин, которые нужны очень срочно:   LR 32 x 44 - 1 шт. LR 25 x 51 - 2 шт. LB 63 x 89 - 7 шт. LB 32 x 102 - 10 шт. LB 32 x 89 - 20 шт. LB 32 x 76 - 12 шт. LB 32 x 51 - 6 шт. LB 25 x 127 - 9 шт.   Готов выслушать все предложения. Возможно даже есть те, кто сможет изготовить подобные пружины с такими же параметрами. 20231101.pdf
    • bubblyk
      Знатоки форума, подскажите, как смоделировать простую (на первый взгляд) задачу термомеханики в упругой постановке.   Есть брусок правильный формы ака кирпич, в котором генерируется НЕРАВНОМЕРНОЕ удельное тепловыделение (HGEN). Задняя и передняя поверхности конвективно охлаждаются с известными (но различными) коэффициентами теплоотдачи и температурами жидкости/газа. Свойства кирпича (теплофизика + механика) принимаются зависящими от температуры. Постановка - стационарная Собственно вопрос : как грамотно смоделировать температурное поле в кирпиче с учетом температурного расширения?   Исходный код приложил.     Надеюсь на коллективный разум и опыт! EPTH2D.mac p.s.   Если есть опыт решения этой задачи в Ansys WB, тоже можно сюда приложить командные вставки.
    • OutXL
      Это было давно использовал NC-Link  и данную инструкцию. The Maho.docx
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • alexqwq10
      В данных корпусах ничего лишнего быть не должно. Максимум шпильки заземления, в количестве предусмотренном для конкретного корпуса. Рассматривал очень много подобных корпусов разных производителей и данная проблема актуальна для подавляющего большинства.
    • MFS
      Коллеги, приветствую, нужно штамповать на горячую из алюминиевого сплава (АК6 или около того) заготовки размером 280*180*12. Подскажите, пожалуйста, параметры пресса для такой заготовки - размеры, усилия. А есл дадите пример такой марки и модели, более менее подходящей для этой работы (нашего или импортного), то будет и еще лучше. Заранее спасибо!
    • Elbaro
      Добрый день. Уже несколько дней пытаюсь найти на просторах инета макрос, позволяющий менять материал выделенных деталей в сборке. У меня есть макрос это делающий, но только в открытой детали, заставить его работать в сборке не получается. Может кто поделится ссылкой или часть кода? Спасибо.
    • maxx2000
      @ANT0N1DZE чтобы ответить на этот вопрос надо вспомнить что экранирует СВЧ, а что для него прозрачно.
    • Александр1979
      В параметре 4018 задаётся метод позиционирования. Какой тип выбран у вас?
    • Bot
      АСКОН, российский разработчик инженерного программного обеспечения и ИТ-интегратор, подвел итоги 2023 года. Выручка компании выросла на 47% и достигла 5,6 млрд рублей, штат сотрудников увеличился до 1250 человек. Клиентская база пополнилась тысячью предприятий и сегодня с решениями АСКОН работают почти 16 000 заказчиков из всех отраслей промышленности и строительства. Смотреть полностью
×
×
  • Создать...