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

Автор Тема: Fusion 360 API C++ Не могу вытащить параметры из выбранных объектов.  (Прочитано 13350 раз)

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

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

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
    • spliner.ru
  • Skype: muftejev
// Работает в JScript

 
Код - Javascript [Выбрать]
  1.   // Выбор точек
  2.      sel = ui.selectEntity("Select Point (ENTER to Stop)", "SketchPoints,Vertices,ConstructionPoints");
  3.             var typ_sel = sel.objectType;
  4.             if(  typ_sel != 'adsk::core::Selection' ){
  5.                break;
  6.             }
  7.  
  8.     // Анализ и определение параметров
  9.        var enty = sel.entity;
  10.        typ_ent = enty.objectType;
  11.             var point;
  12.      
  13.                  if(typ_ent == 'adsk::fusion::SketchPoint'){
  14.          
  15.                     point = enty.worldGeometry;
  16.                                
  17.                 }
  18.                 if(typ_ent == 'adsk::fusion::BRepVertex'){
  19.  
  20.                     point = enty.geometry;
  21.                    
  22.                 }
  23.        // Вытаскиваем параметры        
  24.  
  25.                 var X = point.x;
  26.                 var Y = point.y;
  27.                 var Z = point.z;    


Пробуем в С++

Код - C++ [Выбрать]
  1. // ...
  2.  
  3. // Выбираем
  4. // Create selection input
  5. Ptr<SelectionCommandInput> selectionInput = inputs->addSelectionInput(commandId + "_selection", "Select", "Basic select command input");
  6. if (!selectionInput)
  7.         return;
  8. selectionInput->setSelectionLimits(0);
  9.  
  10. // ...
  11.  
  12. // Анализируем
  13. Ptr<SelectionCommandInput> selectionInput = inputs->itemById(commandId + "_selection");
  14. size_t k = 0;
  15. if(selectionInput) k = selectionInput->selectionCount();
  16. for( int ir = 0; ir < k; ir++){
  17.  
  18.  
  19.         Ptr<Selection> selection = selectionInput->selection(ir);
  20.         Ptr<Base> sktchObjct = selection->entity();
  21.        
  22.          std::string str = sktchObjct->objectType();
  23.  
  24.          if(str == "adsk::fusion::SketchPoint"){
  25.  
  26.          
  27.                  ui->messageBox("str == 'adsk::fusion::SketchPoint'");  
  28.                  Ptr<Point2D> pnt2D = sktchObjct->worldGeometry();
  29.  
  30.         }
  31.         if(str == "adsk::fusion::BRepVertex"){
  32.  
  33.        
  34.                 ui->messageBox("str == 'adsk::fusion::BRepVertex'");
  35.                 Ptr<Point3D> pnt3D = sktchObjct->Geometry();
  36.  
  37.  
  38.         }
  39.  
  40.  
  41.       }
  42.  
  43.        
  44. }
  45.  
Транслятор ругается на Geometry и worldGeometry
Говорит
Error:class "adsk::core::Base" не содержит члена "Geometry"
... "worldGeometry"

В Header поставил
Код - C++ [Выбрать]
  1. #include <Core/CoreAll.h>
  2. #include <Fusion/FusionAll.h>
  3.  




Отмечено как Решение Александр Ривилис 28-02-2016, 16:24:09

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Транслятор ругается на 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++ [Выбрать]
  1. Ptr<Base>   ent = selection->entity();
  2. Ptr<SketchPoint> skchPt = selection->entity();
  3. Ptr<BRepVertex>  brepPt = selection->entity();
  4. if(skchPt){
  5.   Ptr<Point2D> pnt2D = skchPt->worldGeometry();
  6. }
  7. if(brepPt){
  8.   Ptr<Point3D> pnt3D = brepPt->geometry();
  9. }



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 37
  • Карма: 0
    • spliner.ru
  • Skype: muftejev
Спасибо! Это решение.
Матчасть учить буду :).