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
Weitere Informationen finden Sie unter My First Plug-In Training (in englischer Sprache).
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:\ProgramData\Autodesk\ApplicationPlugins\FactoryAutoCAD2023.bundle\Contents\x64\ (AutoCAD)
- C:\ProgramData\Autodesk\ApplicationPlugins\FactoryInventor2023.bundle\Contents\ (Inventor)
- Referenzieren Sie die Datei Autodesk.Factory.PublicAPI.dll, um die Factory Design-API aufzurufen.
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 });