четверг, 15 марта 2018 г.

Приложение NX Open на Java

    Приложение буду писать в среде разработки Eclipse Oxygen.2. Приложение выглядит стандартно. Класс, стандартный метод main + ещё метод getUnloadOption. Дольше настраивать всё, чтобы приложение заработало.


Пишем в методе main:


try {
  Session theSession = (Session) SessionFactory.get("Session");
  UFSession ufSession = (UFSession) SessionFactory.get("UFSession");

  theSession.listingWindow().open();
  theSession.listingWindow().writeLine("Hello!");

  //theSession.listingWindow().closeWindow();
} catch (NXException e) {
  e.printStackTrace();
} catch (RemoteException e) {
  e.printStackTrace();
}

Добавляем в наш класс метод getUnloadOption:

public static final int getUnloadOption() {
  return BaseSession.LibraryUnloadOption.IMMEDIATELY;
}

 Необходимо подключить файл (или все jar'ы) NXOpen.jar и NXOpenUF.jar. Прописываем путь до native библиотек (которые находятся в той же папке, что и jar файлы).


Если не указать путь, то получим ошибку:
Caused by: java.lang.UnsatisfiedLinkError: no libnxopenjavacore in java.library.path

Чтобы запускать приложение из Eclipse ещё необходимо указать путь до dll.


Если путь не будет указан, то приложение будет вылетать по исключительной ситуации и писать что не видит зависимые библиотеки с libnxopenjavacore.dll
Caused by: java.lang.UnsatisfiedLinkError: C:\Siemens\nx10\UGII\libnxopenjavacore.dll: Can't find dependent libraries

Проверяем файл ugii_env_ug.dat в папке, где находится ugraf.exe (UGII или в новых версиях NXBIN) Если там в переменной окружения UGII_JAVA_HOME написана какая-то чушь, то в файле ugii_env.dat записываем правильный путь до Java 8. Это специальный файл для пользовательских настроек.

Если путь будет настроен некорректно, то NX будут сообщать вам о том, что надо подправить путь.


Надо чтобы было что-то подобное:
UGII_JVM_LIBRARY_DIR="C:\Program Files\Java\jre1.8.0_141\bin\server"
UGII_JAVA_HOME="C:\Program Files\Java\jre1.8.0_141"

Стандартным образом подвешиваем класс к пользовательской команде в NX. В выпадающем списке выбираем NX Open, т.к. это приложение как-никак, а не файл журнала.

На этом пока всё.


5 комментариев:

  1. Добрый день.Создаю плагин в eclipse, при экспорте одни ошибки на nxopen (The import nxopen cannot be resolved). Библиотеки подключила, ошибка не исчезает.В чем может быть проблема?

    ОтветитьУдалить
  2. Добрый день! Как минимум, можно попробовать очистить проект (Project -> Clean) или попробовать переподключить библиотеки (jar) в пути построения (build path).

    ОтветитьУдалить
  3. С плагинами всё немного сложнее. Просто так, JAR библиотеки не подключить, т.к. плагины реализуют спецификацию OSGi. Я не пробовал интегрировать NXOpen в Eclipse, поэтому чётко не могу что-то посоветовать. Необходимо создать плагин и поместить туда библиотеки NXOpen, а уже этот плагин использовать в своём проекте. У NXOpen ещё native библиотеки есть, что тоже усложняет задачу. В общем, надо пробовать. В сети нет примеров. Мне интересна эта задача, но времени не хватает. Попробую решить, если что-то получится, то напишу заметку.

    ОтветитьУдалить
  4. Коротко в заметке - https://millionones.blogspot.com/2019/02/nx-open-eclipse.html
    Надеюсь поможет. NX Open должен быть в плагине обёртке, который должен экспортировать пакеты NX Open, тогда не должно быть ошибок в стиле - cannot be resolved.

    ОтветитьУдалить
  5. Спасибо за ответ. Помогло добавив библиотеки в папку плагина и выбрав классы как было указано в статье по ссылке. Буду разбираться дальше

    ОтветитьУдалить

Определение параметров CHS (Cylinder, Head, Sector) карт CF с помощью утилиты IDEINFO

 Столкнулся с проблемкой подключения карт CF к материнской плате LTC-SL REV-B и WD386SX-LPX. В БИОС этих плат нет автоопределения накопителе...