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

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

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




  • Сообщения

    • TVM
      Для общего развития интересовался. И на предложение, спроектировать крышечку - там все просто, не ведусь. 
    • Gorich
    • Нанософт разработка
      Одним из эффективных способов осуществления строительного надзора является использование результатов лазерного сканирования с построением 3D-моделей, что дает наиболее полную информацию о строительных объектах с привязкой к пространственным, инфраструктурным и центральным инженерным коммуникациям. Институт «Сибгипробум», активно работающий над совершенствованием мониторинга и созданием цифровых двойников, использует комбинацию технологий «Платформа nanoCAD + ReClouds» как бесшовную инженерную среду для проектирования и для работы с облаками точек. Комплексную поддержку при внедрении программных решений предоставила компания «Бюро САПР» – премьер- и фокус-партнер компании «Нанософт» по направлениям «Конструкции», «Инженерия» и «Землеустройство».   О компании АО «Сибгипробум» – институт, на протяжении 65 лет специализирующийся в области проектирования предприятий лесной и целлюлозно-бумажной промышленности, объектов глубокой химико-механической переработки древесины, а также разрабатывающий проекты экологических и энергетических объектов. В проектной деятельности институт активно использует технологии лазерного сканирования и информационного моделирования. Исходная ситуация ·        Отсутствие возможности оперативного повсеместного контроля строительства на промплощадке. ·        Отсутствие актуальной трехмерной модели объекта, которую в дальнейшем можно было бы сопоставить с облаком точек. ·        Сжатые сроки, которые не позволяли создать трехмерную модель. Задачи цифрового мониторинга ·        Поиск изменений между отчетными периодами. ·        Подсчет объемов монтажа. ·        Поиск пространственно-временных коллизий. Сравнение облака точек в двух отчетных периодах на графике строительства – S-кривой. Красным подсвечено то, что изменено (это было сделано на другой платформе)   Оптимальное технологическое решение можно выбрать в зависимости от степени сложности точечной задачи в рамках цифрового мониторинга. Продемонстрируем это на конкретных примерах. Прикладная задача 1: проверка проектного положения монтируемого оборудования и конструкций. Выбранная технология: Платформа nanoCAD для совмещения 2D-чертежей с облаком точек. Алгоритм работы технологии: загрузка исходного облака точек формата LAS в nanoCAD импортом NPC → создание удобной ПСК для сравнения облака точек в нужном ракурсе → копирование чертежа и совмещение по «точкам доверия» (например, по колоннам здания) → создание сечения → поиск отклонений. Полученный прикладной результат: разрез на определенной отметке показал отклонение по колоннам здания, из-за чего стена построена «криво». Благодаря этим данным авторский надзор перепроверил расчетные значения и скорректировал решения. В результате эту стену пришлось укреплять дополнительными металлоконструкциями. Плюсы и минусы технологии Плюсы: Минусы: ·        не требуется трехмерная модель; ·        простая технология, которую может освоить каждый; ·        низкие требования к аппаратному обеспечению; ·        низкая стоимость контроля проектных решений без выезда на площадку. ·        трудозатратно, если требуется проверить несколько разных разделов в одной точке; ·        проверка происходит в рамках одного сечения; ·        каждый раз в новом месте проверки требуется совмещение чертежа и облака точек.     Поиск отклонений в конструкциях путем совмещения 2D-чертежей с облаком точек в Платформе nanoCAD   Прикладная задача 2: анализ деформации оборудования – цилиндрической печи. Выбранная технология: ReClouds для сравнения облака точек печи с ее 3D-моделью. Алгоритм: загрузка исходного облака точек (в формате LAS) и цилиндра, выполненного в виде 3D-солида, равного диаметру печи → совмещение 3D-моделей → использование команды ReClouds Сравнение → побор опытным путем радиуса отклонения (вылет точки от нормативного положения) → создание градиентного графика отклонений → поиск отклонений. Полученный прикладной результат: выявлены отклонения трубы от нормативного положения: вмятина и провисание. Наглядный способ проинформировать проектировщиков и строителей, на какие участки следует обратить внимание, чтобы принять решения о ремонте, частичной или полной замене. Эффективность использования ReClouds ·        Автоматизация обработки данных 3D-сканирования. ·        Работа в знакомой инженерной среде с интуитивно понятным интерфейсом. ·        Высокая скорость работы. ·        Минимум финансовых и аппаратных ресурсов. ·        Интеграция со специализированными решениями. ·        Гибридность используемых технологий: Платформа nanoCAD и ReClouds позволяют одновременно работать с 3D-моделью, 2D-чертежом и облаком.                                         Анализ деформации цилиндрической печи с помощью ReClouds. Справа красным и зеленым цветом подсвечена сама труба   Отклонения трубы от эталонного 3D-солида: слева видна вмятина, справа – провисание трубы Мнение пользователя Павел Владимирович Коротких, главный специалист – руководитель группы отдела по цифровизации инженерных процессов и данных, АО «Сибгипробум»   «Когда геополитическая ситуация обострилась и были введены санкции, перед нашим институтом, как и перед предприятиями многих других отраслей, встала задача импортозамещения.   Много где возникали сложности, но было очень отрадно знать, что базовое инженерное ПО нам есть чем заменить. Этим ПО стала Платформа nanoCAD, которая оказалась намного большим, чем просто скопированный зарубежный продукт.   Из стандартного функционала хотелось бы отметить, во-первых, Диспетчер чертежа, который позволяет удобно осуществлять менеджмент чертежей; а, во-вторых, базовые операции при работе с облаками точек: импорт/экспорт, настройки визуализации, подрезку, сечения и т.д.   Использование ReClouds – вертикального приложения к Платформе nanoCAD – дало нам расширенные возможности взаимодействовать с облаками точек, при этом оставаясь в единой инженерной среде.   Обнадеживает активное развитие продуктов со стороны разработчика и неуклонно растущее комьюнити пользователей».   О компании «Нанософт» «Нанософт» – российский разработчик инженерного ПО: технологий автоматизированного проектирования (CAD/САПР), информационного моделирования (BIM/ТИМ) и сопровождения объектов промышленного и гражданского строительства (ПГС) на всех этапах жизненного цикла, а также сквозной цифровизации всех процессов в производстве. Миссия компании – формирование условий для массового оснащения российского рынка лицензионными, качественными и доступными отечественными программными продуктами. «Нанософт» помогает своим заказчикам достичь импортонезависимости в области инженерного ПО и нацелена на развитие собственных технологий в фокусе реальных потребностей. Это позволяет гарантированно защитить критически важную ИТ-инфраструктуру, что особенно актуально сейчас, когда западные вендоры уходят с рынка, замораживают поставки ПО и техническую поддержку. Все программные продукты компании включены в Единый реестр российских программ для электронных вычислительных машин и баз данных. Официальный сайт: nanocad.ru.  
    • Raven
      Спасибо всем кто, ответил Проблема была в том что в БД свойство было строковое не массив, хотя в бизнес-моделере свойство с таким же именем было массивом типизированых ссылок.
    • Raven
      Привет. Подскажите почему может не отображаться пункт меню Вид - Применяемость
    • Gorich
      Я вот не совсем понял где и что смотреть...а руководство по эксплуатации от станка ну так сказать такое себе...там какие то совсем основы... нашел там типо какой то общий сброс...это не сможет помочь?)
    • Viktor2004
      а как проверить шпиндель, хорошо ли он держит инструмент? Не снимая шпиндель и не разбирая его
    • gudstartup
    • gudstartup
      почитайте руководство по эксплуатации я думаю или в сервисе или в пусконаладке нажмите кнопку plc  вы сигнал определили?
    • Gorich
×
×
  • Создать...