image

Skripty, makra, programování, API st�l� odkaz / permalink

19.10.2019

Program Autodesk Fusion podporuje tvorbu skriptù. Lze tak popsat a zautomatizovat opakované úkony. Skripty si mùžete sami vytvoøit, neba zdarma èi za úplatu stáhnout z internetu.

Fusion poskytuje rozhraní API podporující tyto jazyky:

  • C++
  • Python
  • JavaScript

Autodesk poskytuje kopletní popis objektového modelu rozhraní:

image

Vyzkoušel jsem si jednoduchý pøíklad v C++, jako prostøedí jsem využil Visual Studio od Microsoftu. Kompilací vznikne dll modul, který lze zavolat z Fusionu. Je to jednoduché. Úplnì se nabízí naprogramovat si nìkteré konstrukèní postupy jak to nabízí specializované modeláøské CAD programy. image

Nejrychlejší je program napsaný v C++, program v JavaScriptu nejpomalejší. Python je asi nejpoužívanìjší asi i díky tomu, že pokud si stáhnete skript v Pythonu, získáte skript ve zdrojové podobì, mùžete tedy skript studovat a upravovat.

C++ st�l� odkaz / permalink

20.10.2019

Napsat první program pro øízení Autodesk Fusion v C++, když drtivá vìtšina zveøejnìných pøíkladù je v Pythonu a když s C++ teprve zaèínáte a zápasíte se syntaxí jazyka, není úplnì jednoduché.

image

Využil jsem nemoci a zkusil jsem v posteli pøepsat tento jednoduchý pøíklad v Pythonu:


import adsk.core, adsk.fusion, adsk.cam, traceback
def run(context):
  ui = None
  try:
    app = adsk.core.Application.get()
    ui = app.userInterface
    design = app.activeProduct
    rootComp = design.rootComponent
    sketches = rootComp.sketches
    xyPlane = rootComp.xYConstructionPlane
    sketch = sketches.add(xyPlane)
    lines = sketch.sketchCurves.sketchLines
    point0 = adsk.core.Point3D.create(0, 0, 0)
    point1 = adsk.core.Point3D.create(0, 1, 0)
    point2 = adsk.core.Point3D.create(1, 1, 0)
    point3 = adsk.core.Point3D.create(1, 0, 0)
    lines.addByTwoPoints(point0, point1)
    lines.addByTwoPoints(point1, point2)
    lines.addByTwoPoints(point2, point3)
    lines.addByTwoPoints(point3, point0)
    profile = sketch.profiles.item(0)
    extrudes = rootComp.features.extrudeFeatures
    ext_input = extrudes.createInput(profile, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
    distance = adsk.core.ValueInput.createByReal(1)
    ext_input.setDistanceExtent(False, distance)
    ext_input.isSolid = True
    extrudes.add(ext_input)
  except:
    if ui:
      ui.messageBox('Failed:
{}'.format(traceback.format_exc()))

Program vykreslí krychli tak, jak je vidìt na obrázku výše.

A takto to vypadá v mém podání v C++:


#include 
#include 
#include 

using namespace adsk::core;
using namespace adsk::fusion;
using namespace adsk::cam;

Ptr app;
Ptr ui;

extern "C" XI_EXPORT bool run(const char* context)
{
  app = Application::get();
  if (!app)
    return false;
  
  ui = app->userInterface();
  if (!ui)
    return false;
  try
  {
    Ptr design = app->activeProduct();
    Ptr rootComp = design->rootComponent();
    Ptr	sketches = rootComp->sketches();
    Ptr xyPlane = rootComp->xYConstructionPlane();
    Ptr sketch = sketches->add(xyPlane);
    Ptr lines = sketch->sketchCurves()->sketchLines();
    Ptr point0 = Point3D::create(0, 0, 0);
    Ptr point1 = Point3D::create(0, 1, 0);
    Ptr point2 = Point3D::create(1, 1, 0);
    Ptr point3 = Point3D::create(1, 0, 0);
    lines->addByTwoPoints(point0, point1);
    lines->addByTwoPoints(point1, point2);
    lines->addByTwoPoints(point2, point3);
    lines->addByTwoPoints(point3, point0);
    Ptr profile = sketch->profiles()->item(0);
    Ptr extrudes = rootComp->features()->extrudeFeatures();
    Ptr ext_input = extrudes->createInput(profile, FeatureOperations::NewBodyFeatureOperation);
    Ptr distance = ValueInput::createByReal(1);
    ext_input->setDistanceExtent(false, distance);
    bool vysl = ext_input->isSolid(true);
    extrudes->add(ext_input);
  }
  catch (std::bad_exception& e)
  {
    if (ui)
    	ui->messageBox("Chyba :");
  }
  return true;
}

#ifdef XI_WIN

#include 

BOOL APIENTRY DllMain(HMODULE hmodule, DWORD reason, LPVOID reserved)
{
  switch (reason)
  {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
  }
  return TRUE;
}

#endif // XI_WIN

P O K R A È O V Á N Í   P Ø Í Š T Ì


zpatky Problémy Na závìr dal


pøehled kapitol:

  1. Fusion 360
  2. Nauèím se Fusion 360!
  3. Vlastnosti
  4. Vagón
  5. Návody, tutoriály
  6. Mùj pohled na Fusion 360
  7. Strategie a taktika
  8. Strategie a taktika 2
  9. Tipy a triky pro modelování v Autodesk Fusion
  10. Tutoriály tématicky zamìøené
  11. Tutoriály kreslení modelù
  12. Metodika kreslení modelù, workflow
  13. Komplexní ukázky práce
  14. Cvièení
  15. Vlastní materiály
  16. Proè, naè
  17. Pluginy
  18. Animace
  19. Fusion 360 - MANUFACTURE (výroba)
  20. Poznámky
  21. Na co si dávám pozor
  22. Jak rychle pøipravit díly pro øezání
  23. Volnoplošné modelování, T-spline
  24. Tutoriály k volnoplošnému modelování
  25. Klávesové zkratky k volnoplošnému modelování
  26. Tutoriály pro 3D
  27. Problémy
  28. Skripty, makra, programování, API
  29. Na závìr
  30. Novinky ve Fusion 360
  31. Správa
  32. Poèítaè pro Fusion
  33. Správa - Preferences
  34. Klávesové zkratky
  35. Fusion 360 a router Stepcraft
  36. Fusion 360 a router Lupa
  37. Fusion 360 a 3D tiskárna Prùša
  38. Fusion 360 a STL
  39. Práce s STL
  40. Zdroje
  41. Fusion 360 - Co s tím dìlám
  42. Modely ke stažení

(zveøejnìno v rubrice ERR! sekce DILNA nen� vno�ena do jin� sekce nebo definice sekce DILNA neexistuje!)