ADN Club > Fusion 360 API

Fusion 360 API C++ Не могу вытащить параметры из выбранных объектов.

(1/1)

Валериян:
// Работает в JScript

 
--- Код - Javascript [Выбрать] ---  // Выбор точек     sel = ui.selectEntity("Select Point (ENTER to Stop)", "SketchPoints,Vertices,ConstructionPoints");            var typ_sel = sel.objectType;            if(  typ_sel != 'adsk::core::Selection' ){               break;            }     // Анализ и определение параметров       var enty = sel.entity;       typ_ent = enty.objectType;            var point;                       if(typ_ent == 'adsk::fusion::SketchPoint'){                             point = enty.worldGeometry;                                                }                if(typ_ent == 'adsk::fusion::BRepVertex'){                     point = enty.geometry;                                   }       // Вытаскиваем параметры                         var X = point.x;                var Y = point.y;                var Z = point.z;    

Пробуем в С++


--- Код - C++ [Выбрать] ---// ... // Выбираем// Create selection inputPtr<SelectionCommandInput> selectionInput = inputs->addSelectionInput(commandId + "_selection", "Select", "Basic select command input");if (!selectionInput)        return;selectionInput->setSelectionLimits(0); // ... // Анализируем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);        Ptr<Base> sktchObjct = selection->entity();                 std::string str = sktchObjct->objectType();          if(str == "adsk::fusion::SketchPoint"){                           ui->messageBox("str == 'adsk::fusion::SketchPoint'");                   Ptr<Point2D> pnt2D = sktchObjct->worldGeometry();         }        if(str == "adsk::fusion::BRepVertex"){                         ui->messageBox("str == 'adsk::fusion::BRepVertex'");                Ptr<Point3D> pnt3D = sktchObjct->Geometry();          }        }         } Транслятор ругается на Geometry и worldGeometry
Говорит
Error:class "adsk::core::Base" не содержит члена "Geometry"
... "worldGeometry"

В Header поставил

--- Код - C++ [Выбрать] ---#include <Core/CoreAll.h>#include <Fusion/FusionAll.h> 


Александр Ривилис:

--- Цитата: Валериян от 27-02-2016, 19:48:27 ---Транслятор ругается на Geometry и worldGeometry
Говорит
Error:class "adsk::core::Base" не содержит члена "Geometry"
... "worldGeometry"
--- Конец цитаты ---
Правильно делает.

1) Учи C++.
2) Geometry и geometry в C++ это совершенно разные вещи.
3) Читай внимательно: http://adn-cis.org/osobennosti-xarakternyie-dlya-cpp-chast-2.html (эту ссылку я уже на днях давал)

Должно быть как-то так, но я не устанавливал у себя Fusion 360, так что проверить не могу:


--- Код - C++ [Выбрать] ---Ptr<Base>   ent = selection->entity();Ptr<SketchPoint> skchPt = selection->entity();Ptr<BRepVertex>  brepPt = selection->entity();if(skchPt){  Ptr<Point2D> pnt2D = skchPt->worldGeometry();} if(brepPt){  Ptr<Point3D> pnt3D = brepPt->geometry();}


Валериян:
Спасибо! Это решение.
Матчасть учить буду :).

Навигация

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

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