Factory Design API

通过 API(应用程序编程接口)操纵 Factory Design 布局。

Factory Design 的 CAD API(应用程序编程接口)可用于程序化访问和操纵 Factory Design 布局。该 API 在 Inventor Factory 和 AutoCAD Factory 2018.1 版本或更高版本中可用。

通过 Factory Design API,可以将 Factory 布局与其他计算机系统相集成。例如,如果您具有一个自定义工具,用于分析产品装配工作流的工效学,并相应地调整工作站或机器的位置,此工具的输出可用于程序化影响 Factory Design 布局中资源的位置。

若要使用此 API,您必须在 CAD 进程中运行有 .NET 代码。若要在 CAD 进程中运行此代码,请创建一个插件。

使用 Microsoft.NET 技术创建 CAD 插件的步骤:

  1. 请参见我的第一个插件培训

  2. 一旦您具有运行的 CAD 插件,便可以参考位于以下位置的 Autodesk.Factory.PublicAPI.dll

  1. 参考 Autodesk.Factory.PublicAPI.dll 以调用 Factory Design API。
重要信息:请勿使用 CAD 插件部署 DLL。

Factory Design 的 CAD API 在 Inventor 和 AutoCAD 提供相同的界面,并且一次仅处理一个布局(不操纵子布局)。所有 API 方法都接受布局参数,布局参数表示要操作的布局文档。在 Inventor 中是 AssemblyDocument,而在 AutoCAD 中是 Autodesk.AutoCAD.DatabaseServices.Database。

API 提供以下方法:

适用于资源实例对象的四种方法:

若要获得资源的 AssetID,请参考 family.xml 中的 Family ID。

资源实例提供下列 Factory Design 数据。

AddAssetInstances

使用此 API 可以将新资源实例添加到布局中。每个实例必须指定将放置实例的位置,以及将用于构造实例的库资源。(可选)调用方可以指定要用于构造实例的参数值。如果未指定参数,将使用库中的默认值。

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

此 API 用于更改实例位置、参数和特性。

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

适用于 Factory 地板对象的两种方法:

地板对象提供下列 Factory Design 数据。

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

适用于图层对象的四种方法:

图层提供下列 Factory Design 数据:

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