Condividi

API per Factory Design

È possibile manipolare i layout di Factory Design tramite l'API (Application Programming Interface).

L'API (Application Programming Interface) in CAD per Factory Design è progettata per consentire l'accesso a livello di programmazione ai layout di Factory Design e la loro manipolazione. L'API è disponibile in Inventor Factory e nella release 2018.1 di AutoCAD Factory o versioni successive.

L'API per Factory Design consente di integrare i layout di Factory con altri sistemi di computer. Ad esempio, se si dispone di uno strumento personalizzato utilizzato per analizzare l'ergonomia di un flusso di lavoro degli assiemi dei prodotti e regolare di conseguenza la stazione di lavoro o le posizioni dei computer, l'output di questo strumento può essere utilizzato per determinare, a livello di programmazione, la posizione degli asset in un layout di Factory Design.

Per utilizzare l'API, è necessario disporre di codice .NET in esecuzione nel processo CAD. Per eseguire il codice nel processo CAD, creare un plug-in.

Come creare plug-in CAD utilizzando la tecnologia Microsoft.NET

  1. Consultare l'Esercitazione My First Plug-in.

  2. Una volta creato un plug-in CAD funzionante, è possibile fare riferimento alla Autodesk.Factory.PublicAPI.dll posizionata in:

  • C:\Program Files\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD)
  • C:\Program Files\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
  1. Fare riferimento alla Autodesk.Factory.PublicAPI.dll per richiamare l'API per Factory Design.

Importante Non installare la DLL con il plug-in CAD.

L'API in CAD per Factory Design presenta la stessa interfaccia sia in Inventor che in AutoCAD e agisce su un layout alla volta (nessuna manipolazione di layout secondari). Tutti i metodi basati sull'API accettano il parametro del layout che rappresenta il documento di layout su cui si sta lavorando. In Inventor, questo documento è un AssemblyDocument, mentre in AutoCAD è un Autodesk.AutoCAD.DatabaseServices.Database.

L'API fornisce i seguenti metodi:

Quattro metodi agiscono su oggetti istanza di asset:

Per ottenere l'ID asset di un asset, fare riferimento all'ID famiglia nel file family.xml.

Un'istanza di asset fornisce i seguenti dati di Factory Design.

  • ID istanza
  • Nomi dei parametri
  • Valori dei parametri (il valore viene restituito e aggiornato in centimetri)
  • ID dell'asset utilizzato per creare le istanze
  • Nome del layer sul quale risiede l'istanza di asset
  • Accesso all'oggetto CAD nativo che rappresenta l'istanza di asset nel documento ComponentOccurence in Inventor e BlockReference in AutoCAD

AddAssetInstances

Utilizzare questa API per aggiungere nuove istanze di asset in un layout. Ogni istanza deve specificare la posizione in cui viene inserita e la libreria di asset utilizzata per creare l'istanza. Se desiderato, è possibile specificare i valori dei parametri da utilizzare per creare l'istanza. Se i parametri non sono specificati, vengono utilizzati i valori di default della libreria.

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

Questa API si utilizza per modificare la posizione dell'istanza, i parametri e le proprietà.

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

Due metodi funzionano sull'oggetto pavimento della fabbrica:

L'oggetto pavimento fornisce i seguenti dati di Factory Design.

  • La posizione del centro del pavimento
  • La quota X massima (centimetri)
  • La quota X minima (centimetri)
  • La quota Y massima (centimetri)
  • La quota Y minima (centimetri)

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

Quattro metodi funzionano sugli oggetti del layer:

Un layer fornisce i seguenti dati di Factory Design:

  • Nome del layer
  • Colore del layer
  • Un valore booleano che indica se il contenuto del layer è visibile o meno
  • Se il colore deve essere applicato o meno agli asset 3D in 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 });

Queste informazioni sono state utili?