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();}
Валериян:
Спасибо! Это решение.
Матчасть учить буду :).
Навигация
Перейти к полной версии