Compartilhar

API do Factory Design

Manipule os layouts do Factory Design usando a interface de programação de aplicativo (API, Application Programming Interface).

A Interface de programação de aplicativo (API - Application Programming Interface) em CAD do Factory Design foi criada para permitir o acesso programático aos layouts do Factory Design e a manipulação desses layouts. A API está disponível no Inventor Factory e no AutoCAD Factory 2018.1 ou em versões posteriores.

A API do Factory Design permite que você integre seus layouts de fábrica a outros sistemas de computador. Por exemplo, se você tem uma ferramenta personalizada que é usada para analisar a ergonomia do fluxo de trabalho de montagem de um produto e ajusta a localização de máquinas ou estações de trabalho de acordo, a saída dessa ferramenta pode ser usada para afetar de forma programática a localização de recursos no layout do Factory Design.

Se você quiser usar essa API, o código .NET deverá ser executado no processo de CAD. Para executar o código no processo de CAD, crie um plug-in.

Para criar plug-ins de CAD usando tecnologia Microsoft.NET

  1. Consulte Meu primeiro treinamento de plug-in.

  2. Quando o plug-in de CAD estiver funcionando, você poderá fazer referência ao Autodesk.Factory.PublicAPI.dll localizado em:

  • C:\ProgramData\Autodesk\ApplicationPlugins\FactoryAutoCAD2023.bundle\Contents\x64\ (AutoCAD)
  • C:\ProgramData\Autodesk\ApplicationPlugins\FactoryInventor2023.bundle\Contents\ (Inventor)
  1. Faça referência ao Autodesk.Factory.PublicAPI.dll para chamar a API do Factory Design.
Importante: Não implante o DLL com o plug-in de CAD.

A API em CAD do Factory Design expõe a mesma interface no Inventor e no AutoCAD e opera em um layout de cada vez (sem manipulação de sublayout). Todos os métodos de API aceitam o parâmetro de layout, que representa o documento de layout no qual você está trabalhando. No Inventor, esse documento é um AssemblyDocument, e no AutoCAD, um Autodesk.AutoCAD.DatabaseServices.Database.

A API oferece os seguintes métodos:

Quatro métodos operam em objetos de instância de recurso:

Para obter o AssetID de um recurso, consulte a ID da família em family.xml.

Uma instância de recurso fornece os seguintes dados do Factory Design.

  • ID da instância
  • Nomes de parâmetro
  • Valores de parâmetro (retornos e atualizações de valores em centímetros)
  • ID do recurso usado para construir as instâncias
  • Nome da camada em que a instância do recurso está localizada
  • Acesso ao objeto de CAD nativo que representa a instância de recurso no documento: ComponentOccurence no Inventor e BlockReference no AutoCAD

AddAssetInstances

Use esta API para adicionar novas instâncias de recurso a um layout. Cada instância deve especificar a posição em que será inserida e o recurso de biblioteca que será usado para construí-la. Opcionalmente, o chamador pode especificar os valores de parâmetro que serão usados para construir a instância. Se nenhum parâmetro for especificado, serão usados os valores padrão da 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 é usada para alterar a posição, os parâmetros e as propriedades da instância.

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

Dois métodos operam no objeto de piso de fábrica:

O objeto de piso fornece os seguintes dados do Factory Design:

  • A posição central do piso
  • A cota X máxima (centímetros)
  • A cota X mínima (centímetros)
  • A cota Y máxima (centímetros)
  • A 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”);

Quatro métodos operam em objetos de camada:

Uma camada fornece os seguintes dados do Factory Design:

  • O nome da camada
  • A cor da camada
  • Um valor booleano que indica se o conteúdo da camada é ou não visível
  • Se a cor deve ou não ser aplicada a recursos 3D do 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 });

Esta informação foi útil?