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. Нормально форматируй код.
Навигация
Перейти к полной версии