Udostępnij

Interfejs API programu Factory Design

Można manipulować układami programu Factory Design za pośrednictwem interfejsu programowania aplikacji (API).

W programie Factory Design interfejs programowania aplikacji (API) CAD został tak zaprojektowany, aby umożliwić programowy dostęp do układów programu Factory Design i manipulowania nimi. Interfejs API jest dostępny w programie Inventor Factory i AutoCAD Factory w wersji 2018.1 lub nowszej.

Interfejs API programu Factory Design umożliwia integrację układów Factory z innymi systemami komputerowymi. Przykładowo, jeśli używane jest niestandardowe narzędzie, które służy do analizy ergonomii procesów roboczych zespołu produktu i odpowiedniego dostosowania położenia stacji roboczej lub maszyny, dane wyjściowe tego narzędzia mogą posłużyć do programowego określania położenia zasobów w układzie programu Factory Design.

Aby używać tego interfejsu API, w procesie CAD musi być uruchomiony kod .NET. Aby uruchomić kod w procesie CAD, utwórz wtyczkę.

Tworzenie wtyczek CAD za pomocą technologii Microsoft.NET

  1. Zobacz stronę Moja pierwsza wtyczka — szkolenie.

  2. Mając działającą wtyczkę CAD, można utworzyć odwołanie do pliku Autodesk.Factory.PublicAPI.dll znajdującego się w katalogach:

  • C:\Program Files\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD)
  • C:\Program Files\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
  1. Odwołaj się do pliku Autodesk.Factory.PublicAPI.dll, aby wywołać interfejs API programu Factory Design.
Ważne: Nie należy wdrażać biblioteki DLL razem z wtyczką CAD.

Interfejs API programu Factory Design w aplikacji CAD udostępnia ten sam interfejs w programach Inventor i AutoCAD oraz działa oddzielnie na każdym układzie (brak manipulacji układami podrzędnymi). Wszystkie metody interfejsu API akceptują parametr układu, który reprezentuje właśnie przetwarzany dokument układu. W programie Inventor jest to AssemblyDocument, a w programie AutoCAD jest to Autodesk.AutoCAD.DatabaseServices.Database.

Interfejs API zapewnia następujące metody:

Cztery metody działają na obiektach wystąpienia zasobu:

Aby uzyskać właściwość AssetID zasobu, zobacz sekcję Family ID w pliku family.xml.

Wystąpienie zasobu udostępnia następujące dane programu Factory Design.

  • Identyfikator wystąpienia
  • Nazwy parametrów
  • Wartości parametrów (wartość jest zwracana i aktualizowana w centymetrach)
  • Identyfikator zasobu użytego do utworzenia wystąpień
  • Nazwa warstwy, na której znajduje się wystąpienie zasobu
  • Dostęp do natywnego obiektu CAD, który reprezentuje wystąpienie zasobu w dokumencie: ComponentOccurence w programie Inventor i BlockReference w programie AutoCAD

AddAssetInstances

Ten interfejs API umożliwia dodanie nowych wystąpień zasobu do układu. Każde wystąpienie musi określać położenie, w którym zostanie wstawione, i zasób z biblioteki, który zostanie użyty do utworzenia wystąpienia. Opcjonalnie funkcja wywołująca może określić wartości parametrów, które zostaną użyte do utworzenia wystąpienia. Jeśli parametry nie zostaną określone, zostaną użyte domyślne wartości z biblioteki.

using APIv2 = Autodesk.Factory.PublicAPI.Objects.v2;
var api = Autodesk.Factory.PublicAPI.API.Instance;
APIv2.AssetInstance newInst1 = new APIv2.AssetInstance()
{
    AssetID = "41c84844-7b28-4903-bebd-365ca3a6a53c", //Straight Belt Conveyor
    Position = new System.Windows.Media.Media3D.Matrix3D() { OffsetX = 0, OffsetY = 0, OffsetZ = 0 },
};
var insts = api.AddAssetInstances(layout, new PublicAPI.Currency.v2.IAssetInstance[] { newInst1 });
System.Windows.MessageBox.Show(insts.Length.ToString(), "Added instances");

GetAssetInstances

var insts = api.GetAssetInstances(layout);
System.Windows.MessageBox.Show(insts.Length.ToString(), "Get - COUNT");

UpdateAssetInstances

Ten interfejs API służy do zmiany położenia, parametrów i właściwości wystąpienia.

var insts = api.GetAssetInstances(layout);
foreach (var item in insts)
{
    var position = item.Position;
    position.OffsetX += 200;
    item.Position = position;
    item.Parameters["Length"] = "400";
}
insts = api.UpdateAssetInstances(layout, insts);
System.Windows.MessageBox.Show("update position done");

DeleteAssetInstances

api.DeleteAssetInstances(layout, new PublicAPI.Currency.v2.IAssetInstance[] { instToDelete });

Dwie metody działają na obiekcie podłogi Factory:

Obiekt podłogi udostępnia następujące dane programu Factory Design.

  • Położenie środka podłogi
  • Maksymalny wymiar X (w centymetrach)
  • Minimalny wymiar X (w centymetrach)
  • Maksymalny wymiar Y (w centymetrach)
  • Minimalny wymiar Y (w centymetrach)

GetFloor

var floor = api.GetFloor(layout);
System.Windows.MessageBox.Show(floor.XPlus.ToString(), “+X Dimension”);

UpdateFloor

var floor = api.GetFloor(layout);
floor.XPlus = 1000;
floor.XMins = -1000;
api.UpdateFloor(layout, floor);
System.Windows.MessageBox.Show(“Updated floor X dimensions”);

Cztery metody działają na obiektach warstwy:

Warstwa udostępnia następujące dane programu Factory Design:

  • Nazwa warstwy
  • Kolor warstwy
  • Wartość logiczna z informacją, czy zawartość tej warstwy jest widoczna czy nie
  • Określa, czy kolor ma być stosowany do zasobów 3D w programie Inventor

GetLayers

var layers = api.GetLayers(layout);
System.Windows.MessageBox.Show(layers.Length.ToString(), Get  COUNT”);

AddLayers

using APIv2 = Autodesk.Factory.PublicAPI.Objects.v2;
APIv2.Layer newLayer = new new APIv2.Layer()
{
    Name = Green Layer”,
    Color = new APIv2.LayerColor(0, 255, 0),
    LayerOn = true,
    ApplyColorTo3FDAssets = true
};
var layers = api.AddLayers(layout, new PublicAPI.Currency.v2.ILayer[] { newLayer });
System.Windows.MessageBox.Show(layers.Length.ToString(), Added layers”);

UpdateLayers
using APIv2 = Autodesk.Factory.PublicAPI.Objects.v2;
var layers = api.GetLayers(layout);
foreach (var layer in layers)
{
    layer.Color = new APIv2.LayerColor(255, 255, 0);
    layer.ApplyColorTo3DAssets = true;
}
api.UpdateLayers(layout, layers);
System.Windows.MessageBox.Show(“Updated all layers to yellow”);

UpdateLayers

using APIv2 = Autodesk.Factory.PublicAPI.Objects.v2;
var layers = api.GetLayers(layout);
foreach (var layer in layers)
{
    layer.Color = new APIv2.LayerColor(255, 255, 0);
    layer.ApplyColorTo3DAssets = true;
}
api.UpdateLayers(layout, layers);
System.Windows.MessageBox.Show(“Updated all layers to yellow”);

DeleteLayers

api.DeleteLayers(layout, new PublicAPI.Currency.v2.ILayer[] { layerToDelete });

Czy te informacje były pomocne?