通过 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 进程中运行此代码,请创建一个插件。
请参见我的第一个插件培训。
一旦您具有运行的 CAD 插件,便可以参考位于以下位置的 Autodesk.Factory.PublicAPI.dll:
Factory Design 的 CAD API 在 Inventor 和 AutoCAD 提供相同的界面,并且一次仅处理一个布局(不操纵子布局)。所有 API 方法都接受布局参数,布局参数表示要操作的布局文档。在 Inventor 中是 AssemblyDocument,而在 AutoCAD 中是 Autodesk.AutoCAD.DatabaseServices.Database。
若要获得资源的 AssetID,请参考 family.xml 中的 Family ID。
资源实例提供下列 Factory Design 数据。
使用此 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");
var insts = api.GetAssetInstances(layout);
System.Windows.MessageBox.Show(insts.Length.ToString(), "Get - COUNT");
此 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");
api.DeleteAssetInstances(layout, new PublicAPI.Currency.v2.IAssetInstance[] { instToDelete });
地板对象提供下列 Factory Design 数据。
var floor = api.GetFloor(layout);
System.Windows.MessageBox.Show(floor.XPlus.ToString(), “+X Dimension”);
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 数据:
var layers = api.GetLayers(layout);
System.Windows.MessageBox.Show(layers.Length.ToString(), “Get – COUNT”);
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”);
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”);
api.DeleteLayers(layout, new PublicAPI.Currency.v2.ILayer[] { layerToDelete });