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.
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:
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.
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:
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");
var insts = api.GetAssetInstances(layout);
System.Windows.MessageBox.Show(insts.Length.ToString(), "Get - COUNT");
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");
api.DeleteAssetInstances(layout, new PublicAPI.Currency.v2.IAssetInstance[] { instToDelete });
Das Bodenobjekt liefert die folgenden Factory Design-Daten.
var floor = api.GetFloor(layout);
System.Windows.MessageBox.Show(floor.XPlus.ToString(), “+X Dimension”);
var floor = api.GetFloor(layout);
floor.XPlus = 1000;
floor.XMins = -1000;
api.UpdateFloor(layout, floor);
System.Windows.MessageBox.Show(“Updated floor X dimensions”);
Ein Layer liefert die folgenden Factory Design-Daten:
var layers = api.GetLayers(layout);
System.Windows.MessageBox.Show(layers.Length.ToString(), “Get – COUNT”);
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”);
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”);
api.DeleteLayers(layout, new PublicAPI.Currency.v2.ILayer[] { layerToDelete });