Fusion360 API

Автор Тема: Fusion360 API  (Прочитано 13562 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ВалериянАвтор темы

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
    • spliner.ru
  • Skype: muftejev
Fusion360 API
« : 21-02-2016, 14:02:00 »
В моем приложении весь функционал содержится в DLL-программе.

В API AutoCAD есть много вариантов вызова DLL-программы. Там все прекрасно.

К сожалению, в API Fusion я не нашел команд вызова DLL-программы в скриптах JScript, Python.
Может эти команды есть?
Слишком важная команда для любого API.


Недавно в API Fusion появилась возможность написания скриптов на C++.
Попробовал отредактировать простейший пример TestScript.
Кнопка Edit. Переходит в Vision Studio C++.
При перестройке проекта транслятор дает множество ошибок типа

Ошибка   1   error MSB8008: указанный набор инструментов платформы (v110) не установлен или недопустим. Убедитесь, что выбрано поддерживаемое значение PlatformToolset.   C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.Targets   514   6   TestScript
   13   IntelliSense: встроенный спецификатор можно использовать только в объявлениях функций   c:\users\муфтеев\appdata\roaming\autodesk\autodesk fusion 360\api\cpp\include\core\application\application.h   315   1   
   40   IntelliSense: идентификатор "BOOL" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   30   1   TestScript
   45   IntelliSense: идентификатор "DLL_PROCESS_ATTACH" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   34   7   TestScript
   48   IntelliSense: идентификатор "DLL_PROCESS_DETACH" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   37   7   TestScript
   46   IntelliSense: идентификатор "DLL_THREAD_ATTACH" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   35   7   TestScript
   47   IntelliSense: идентификатор "DLL_THREAD_DETACH" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   36   7   TestScript
   43   IntelliSense: идентификатор "DWORD" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   30   40   TestScript
   42   IntelliSense: идентификатор "HMODULE" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   30   23   TestScript
   44   IntelliSense: идентификатор "LPVOID" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   30   54   TestScript
   49   IntelliSense: идентификатор "TRUE" не определен   c:\users\муфтеев\appdata\local\autodesk\webdeploy\production\66ed5e8cf991ec00ace7e4d2638113959b38c0dd\cpp\samples\testscript\testscript.cpp   40   9   TestScript
   7   IntelliSense: имя, за которым следует выражение "::", должно определять класс или пространство имен   c:\users\муфтеев\appdata\roaming\autodesk\autodesk fusion 360\api\cpp\include\core\application\application.h   107   22   
   8   IntelliSense: имя, за которым следует выражение "::", должно определять класс или пространство имен   c:\users\муфтеев\appdata\roaming\autodesk\autodesk fusion 360\api\cpp\include\core\application\application.h   126   5   
   10   IntelliSense: имя, за которым следует выражение "::", должно определять класс или пространство имен   c:\users\муфтеев\appdata\roaming\autodesk\autodesk fusion 360\api\cpp\include\core\application\application.h   133   5   


Видимо, нужно правильно установить системные переменные в Windows?

Где найти руководство по созданию проекта C++ Visual Studio 10 или 12 для скриптов Fusion?



Отмечено как Решение Александр Ривилис 21-02-2016, 15:37:06

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Fusion360 API
« Ответ #1 : 21-02-2016, 14:51:42 »
Ошибка   1   error MSB8008: указанный набор инструментов платформы (v110) не установлен или недопустим. Убедитесь, что выбрано поддерживаемое значение PlatformToolset.
Требуется установленный VS 2012 (т.е. v110). Ну или попробуй поменять Platform Toolset на тот, который соответствует твоему Visual Studio:



Судя по этой теме можно использовать практически любую C++ IDE. Во всяком случае любую VS C++ IDE:
http://forums.autodesk.com/t5/api-and-scripts/question-on-fusion-360-ide-for-cpp-programming/td-p/5804258

К сожалению, в API Fusion я не нашел команд вызова DLL-программы в скриптах JScript, Python.
Может эти команды есть?
Слишком важная команда для любого API.
Увы. Судя по всему тебе придётся переписать этот функционал. Или написать C++ addon из которого при помощи LoadLibrary() загружать свой dll-файл, ну и как-то вызывать из него нужные тебе функции (надеюсь, что они не используют никакой AutoCAD API)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВалериянАвтор темы

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
    • spliner.ru
  • Skype: muftejev
Re: Fusion360 API
« Ответ #2 : 21-02-2016, 15:34:39 »
Отлично. Спасибо! Это решение. (не знаю где кнопка Решение)
Поменял на 100 для VS 10.

Буду разбираться с DLL.

Оффлайн ВалериянАвтор темы

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
    • spliner.ru
  • Skype: muftejev
Re: Fusion360 API
« Ответ #3 : 26-02-2016, 15:50:40 »
Спасибо, Александр.
Сейчас уперся в следующую проблему.
Перевожу программу JScript на С++.
Фрагмент на JScript
Код - Javascript [Выбрать]
  1. for (var x = 0; x < selectionInput.selectionCount; ++x) {
  2.             var selection = selectionInput.selection(x);
  3.             var selectedObj = selection.entity;
  4.            
  5.                    
  6.                      
  7.                         if (selectedObj instanceof adsk.fusion.SketchPoint){
  8.                            
  9.                              Points[nPoints] = selectedObj;
  10.                              nPoints++;
  11.                         }
  12. ...
  13.  
  14.  
Код на С++
Код - C++ [Выбрать]
  1. Ptr<SelectionCommandInput> selectionInput = inputs->itemById(commandId + "_selection");
  2. size_t k = 0;
  3. if(selectionInput) k = selectionInput->selectionCount();
  4. for( int ir = 0; ir < k; ir++){
  5.     Ptr<Selection> selection = selectionInput->selection(ir);
  6.  ??? ?
  7.  ??? ?
  8.  
  9.  
  10.  
  11. }
Как закодировать на С++ место на JScript
Код - Javascript [Выбрать]
  1.  var selectedObj = selection.entity;                                                                           if (selectedObj instanceof adsk.fusion.SketchPoint){                                                        Points = selectedObj;                             nPoints++;                        }...
  2.  
??
В Help Fusion отсутствуют примеры С++ с выбором объектов и анализом.

« Последнее редактирование: 20-01-2017, 23:16:00 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Fusion360 API
« Ответ #4 : 26-02-2016, 16:00:18 »
1. Один вопрос - одна тема.
2. Нормально форматируй код.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение