ADN Club > Fusion 360 API

Fusion360 API

(1/1)

Валериян:
В моем приложении весь функционал содержится в 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, 14:02:00 ---Ошибка   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


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

Валериян:
Отлично. Спасибо! Это решение. (не знаю где кнопка Решение)
Поменял на 100 для VS 10.

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

Валериян:
Спасибо, Александр.
Сейчас уперся в следующую проблему.
Перевожу программу JScript на С++.
Фрагмент на JScript

--- Код - Javascript [Выбрать] ---for (var x = 0; x < selectionInput.selectionCount; ++x) {            var selection = selectionInput.selection(x);            var selectedObj = selection.entity;                                                                           if (selectedObj instanceof adsk.fusion.SketchPoint){                                                        Points[nPoints] = selectedObj;                             nPoints++;                        }...  Код на С++

--- Код - C++ [Выбрать] ---Ptr<SelectionCommandInput> selectionInput = inputs->itemById(commandId + "_selection");size_t k = 0;if(selectionInput) k = selectionInput->selectionCount();for( int ir = 0; ir < k; ir++){    Ptr<Selection> selection = selectionInput->selection(ir); ??? ?  ??? ?   }Как закодировать на С++ место на JScript

--- Код - Javascript [Выбрать] --- var selectedObj = selection.entity;                                                                           if (selectedObj instanceof adsk.fusion.SketchPoint){                                                        Points = selectedObj;                             nPoints++;                        }... ??
В Help Fusion отсутствуют примеры С++ с выбором объектов и анализом.

Александр Ривилис:
1. Один вопрос - одна тема.
2. Нормально форматируй код.

Навигация

[0] Главная страница сообщений

Перейти к полной версии