Teilen

Factory Design-API

Bearbeiten Sie die Factory Design-Layouts über die API (Application Programming Interface).

Die Factory Design-In-CAD-API (Application Programming Interface) wurde entwickelt, um Programmierzugriff auf Factory Design-Layouts bzw. deren Bearbeitung zu ermöglichen. Die API finden Sie in der Inventor Factory- und AutoCAD Factory-Version 2018.1 oder höher.

Mit der Factory Design-API können Sie Ihre Factory-Layouts in andere Computersysteme integrieren. Wenn Sie beispielsweise über ein benutzerdefiniertes Werkzeug zur Analyse der Ergonomie eines Produktbaugruppen-Arbeitsablaufs verfügen und die Positionen der Arbeitsstation oder Maschine entsprechend anpassen, kann die Ausgabe dieses Werkzeugs verwendet werden, um die Position von Objekten in Ihrem Factory Design-Layout programmatisch zu beeinflussen.

Um diese API zu verwenden, müssen Sie während des CAD-Prozesses .NET-Code ausführen. Erstellen Sie ein Plugin, um den Code während des CAD-Prozesses auszuführen.

So erstellen Sie CAD-Plugins mithilfe der Microsoft.NET-Technologie

  1. Weitere Informationen finden Sie unter Schulung zu My First Plug-In.

  2. Wenn Sie über ein funktionierendes CAD-Plugin verfügen, können Sie die Datei Autodesk.Factory.PublicAPI.dll referenzieren, die sich unter folgendem Pfad befindet:

  • C:\Programme\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD)
  • C:\Programme\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
  1. Referenzieren Sie die Datei Autodesk.Factory.PublicAPI.dll, um die Factory Design-API aufzurufen.
Wichtig: Stellen Sie die DLL-Datei nicht mit Ihrem CAD-Plugin bereit.

Die Benutzeroberfläche der Factory Design-In-CAD-API ist in Inventor und AutoCAD gleich, und es wird jeweils ein Layout bearbeitet (keine Bearbeitung von Unterlayouts). Der Layout-Parameter kann für alle API-Methoden verwendet werden und steht für das Layout-Dokument, das bearbeitet wird. In Inventor ist dies ein AssemblyDocument und in AutoCAD eine Autodesk.AutoCAD.DatabaseServices.Database.

Die API bietet die folgenden Methoden:

Vier Methoden gelten für Objektexemplare:

Zum Abrufen der AssetID eines Objekts sehen Sie in der Family ID in der Datei family.xml nach.

Ein Objektexemplar beinhaltet die folgenden Factory Design-Daten:

  • Exemplar-ID
  • Parameternamen
  • Parameterwerte (Wert wird in Zentimetern zurückgegeben und aktualisiert)
  • ID des Objekts zum Erstellen der Instanzen
  • Name des Layers, auf dem sich ein Objektexemplar befindet
  • Zugriff auf das native CAD-Objekt, das das Objektexemplar im Dokument repräsentiert: ComponentOccurence in Inventor und BlockReference in AutoCAD

AddAssetInstances

Verwenden Sie diese API zum Hinzufügen neuer Objektexemplare zu einem Layout. Für jedes Exemplar muss die Position angegeben werden, an der es platziert wird, sowie das Bibliotheksobjekt, das verwendet wird, um das Exemplar zu konstruieren. (Optional) Sie können Parameterwerte angeben, die für die Konstruktion des Exemplars verwendet werden sollen. Wenn keine Parameter festgelegt wurden, werden die vorgegebenen Werte aus der Bibliothek verwendet.

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

Diese API wird verwendet, um die Position, Parameter und Eigenschaften des Exemplars zu ändern.

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 });

Zwei Methoden gelten für Factory-Bodenobjekte:

Das Bodenobjekt liefert die folgenden Factory Design-Daten.

  • Mittelpunktposition des Bodens
  • Maximale X-Bemaßung (cm)
  • Minimale X-Bemaßung (cm)
  • Maximale Y-Bemaßung (cm)
  • Minimale Y-Bemaßung (cm)

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”);

Vier Methoden gelten für Layer-Objekte:

Ein Layer liefert die folgenden Factory Design-Daten:

  • Layer-Namen
  • Layer-Farbe
  • Booleschen Wert, der besagt, ob der Inhalt des Layers sichtbar ist oder nicht
  • Ob die Farbe auf 3D-Objekte in Inventor anwendet werden soll

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 });

Waren diese Informationen hilfreich?