适用于 Factory Design 的 API(应用程序编程接口)

通过 API 控制您的 Factory Design 布局。

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

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

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

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

  1. 请参见此处提供的培训:
  2. 一旦您具有运行的 CAD 插件,便可以参考位于以下位置的 Autodesk.Factory.PublicAPI.dll

    C:\Program Files\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD) 和 C:\Program Files\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
  3. 参考 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 });