Доступ к Python-интерфейсу Enovia из Excel / VBA?

Мы используем программное обеспечение под названием Enovia.

Я хотел бы запросить Enovia из Excel / VBA.

После некоторых поисков у Enovia появился программный интерфейс Abaqus.

http://www.3ds.com/products-services/simulia/services/training-courses/course-descriptions/introduction-to-the-abaqus-scripting-interface/

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

Я нашел два проекта, которые могли бы позволить Excel / VBA общаться с компонентами Python или, по крайней мере, со сценариями Python.

Они следующие

Python для Excel http://opentradingsystem.com/PythonForExcel/main.html

И прекращенный выпуск Excelpython github.com/ericremoreynolds/excelpython, который стал интегрированным в xlwings xlwings.org

Я не знаком ни с Python, ни с этими двумя проектами. Я не уверен, что они позволят мне делать то, что я хочу.

Я в порядке с изучением некоторого Python, чтобы сделать это, но моя основная программа и пользовательский интерфейс в Excel.

Я думаю, что мог бы сделать несколько простых скриптов на Python, а затем вызвать их через интерпретатор python из excel с shellexecute, но я думаю, что это не очень элегантное решение.

Любой совет приветствуется

Спасибо!

6 ответов

Решение

Эновия использует MQL язык для написания сценариев. Есть несколько доступных руководств, таких как http://emdros.org/MQL-Programmers-Guide.pdf

Я бы порекомендовал некоторые тренинги, такие как http://www.techniatranscat.com/services/education/mql-and-tcl-intro как это не очень распространенный язык.

Не путать с языком финансовой торговли MQL4/MQL5 от MetaQuotes Software Corp.

ENOVIA не имеет интерфейса программирования Python.

Abaqus - это программа моделирования FEA, которая может быть написана с помощью собственного интерфейса программирования Python.

ENOVIA - это программное решение PLM. Это разные программы для совершенно разных приложений. В качестве интерфейсов программирования вы можете посмотреть на это

Короче говоря, вам может потребоваться обратиться в местную службу поддержки Dassault Systemes, чтобы указать правильное направление.

Используя tcl и mql вы можете решить проблему

TCL | MQL

Используйте TCL для просмотра листа Excel, это очень просто. Используйте «/t» для разделения данных.

Последняя версия Enovia 3DEXPERIENCE поддерживает веб-сервисы на основе Rest. вы можете создать API для отдыха в enovia и вызвать службу отдыха, используя скрипт vb в excel.

Платформа веб-сервиса 3DEXPERIENCE Enovia Rest

Вышеупомянутая платформа Rest может быть недоступна в версии 2014X. Вы должны попробовать службу на основе SOAP или JAX-RS.

Опция 1

Enovia — это приложение на основе Java, которое не поддерживает VBA ADK для прямой работы с внутренними данными. Однако веб-служба может использоваться для связи между приложениями разных платформ или управляться разными ADK программирования.

Для этого вам нужно создать свой собственный сервис (REST/SOAP). Для этого вам понадобится доступ к серверу, и сначала вам нужно написать код Java (служба Rest/SOAP) и обновить класс/jar на сервере 2014 (tomcat). Затем вы можете использовать эту услугу в своей функции vba. Опять же, вам нужно решить, какие данные будут использоваться, будь то xml или json, это отдельная тема.

Вариант 2

Как я уже говорил ранее, Enovia — это приложение на основе Java, оно предоставляет JAVA ADK для расширения своей функциональности.

Пример кода показывает, как можно получить контекст и работать с Enovia ADK.

      matrix.db.Context ctx = new matrix.db.Context("http://myserver-nocas:8080/enovia");
ctx.setUser("Test Everything");
ctx.setPassword("");
ctx.connect();
System.out.println("Is context set "+ctx.isConnected());

Как вы упомянули, что в настоящее время вы используете 3DEXPERIENCE, тогда 3DPassport может заблокировать соединение с указанным выше URL-адресом, поэтому вам необходимо передать URL-адрес NO-CAS.

Вы можете получить контекст, запустив приведенный выше код Java из вашего локального eclipse. Используя этот ADK, вы также можете вызывать MQL-запросы и работать без проблем.

      import com.matrixone.apps.domain.util.MqlUtil;
String strPartFamily  = MqlUtil.mqlCommand(ctx,"temp query bus Part * * select attribute[Length]");

Но опять же, это решение на основе Java, а не VBA.

Наконец, 3DEXPERIENCE предоставляет консоль MQL на сервере, чтобы работать со всеми данными, используя SQL-подобные запросы, более удобным для разработчиков способом. Enovia также предоставляет веб-консоль MQL, но для этого вам потребуется лицензия (администратор должен иметь доступ).

Другие вопросы по тегам