API de Factory Design
Manipule los layouts de Factory Design a través de la API (interfaz de programación de aplicaciones).
La API de Factory Design, in-CAD (Interfaz de programación de aplicaciones) está diseñada para permitir el acceso mediante programación a los layouts de Factory Design y manipular dichos layouts. La API está disponible en Inventor Factory y AutoCAD Factory versión 2018.1 o posterior.
La API de Factory Design permite integrar los layouts de Factory con otros sistemas informáticos. Por ejemplo, si tiene una herramienta personalizada que se utiliza para analizar la ergonomía de un flujo de trabajo de ensamblaje de productos, y ajusta las ubicaciones de estación de trabajo o de máquina en función de ello, puede utilizarse la salida de esta herramienta para afectar mediante programación a la ubicación de los componentes en el layout de Factory Design.
Para utilizar esta API, debe tener código .NET ejecutándose en el proceso CAD. Para ejecutar el código en el proceso CAD, cree un módulo de extensión.
Para crear módulos de extensión de CAD con tecnología Microsoft.NET
Una vez que tiene un módulo de extensión de CAD en funcionamiento, puede hacer referencia a la Autodesk.Factory.PublicAPI.dll que se encuentra en:
- C:\Archivos de programa\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD)
- C:\Archivos de programa\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
- Haga referencia a Autodesk.Factory.PublicAPI.dll para llamar a la API de Factory Design.
La API in-CAD de Factory Design expone la misma interfaz en Inventor y AutoCAD, y funciona en una presentación a la vez (sin manipulación de layout secundario). Todos los métodos de API aceptan el parámetro de layout, que representa el documento de layout que se ve afectado. En Inventor, es AssemblyDocument y, en AutoCAD, es Autodesk.AutoCAD.DatabaseServices.Database.
La API proporciona los métodos siguientes:
Cuatro métodos operan en objetos de ejemplares de componentes:
Para obtener el AssetID de un componente, consulte el ID de familia en family.xml.
Un ejemplar de componente proporciona los siguientes datos de Factory Design.
- ID de ejemplar
- Nombres de parámetros
- Valores de parámetros (el valor se devuelve y actualiza en centímetros)
- ID del componente que se utiliza para crear los ejemplares
- Nombre de la capa en la que se encuentra el ejemplar de componente
- Acceso al objeto de CAD nativo que representa el ejemplar de componente en el documento: ComponentOccurence en Inventor y BlockReference en AutoCAD
AddAssetInstances
Utilice esta API para añadir nuevos ejemplares de componente a un layout. Cada ejemplar debe especificar la posición en la que se colocará el ejemplar, y el componente de biblioteca que se utilizará para construir el ejemplar. Si lo desea, el invocador puede especificar los valores de los parámetros que se utilizarán para construir el ejemplar. Si no se han especificado los parámetros, se utilizan los valores por defecto de la biblioteca.
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
Esta API se utiliza para cambiar la posición, los parámetros y las propiedades del ejemplar.
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 });
Dos métodos funcionan en el objeto del suelo de Factory:
El objeto del suelo proporciona los datos siguientes de Factory Design.
- La posición del centro del suelo
- La cota X máxima (centímetros)
- La cota X mínima (centímetros)
- La cota Y máxima (centímetros)
- La cota Y mínima (centímetros)
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”);
Cuatro métodos operan en objetos de capa:
Una capa proporciona los datos siguientes de Factory Design:
- El nombre de la capa
- El color de la capa
- Un valor booleano que indica si el contenido de la capa es visible o no
- Si el color debe aplicarse o no a componentes 3D en 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 });