Rozhraní API sady Factory Design
Pracujte se svými návrhy rozvržení výrobní linky prostřednictvím rozhraní API (Application Programming Interface).
Rozhraní API (Application Programming Interface) sady Factory Design pro aplikace CAD je navrženo tak, aby umožňovalo programový přístup k rozvržením sady Factory Design a manipulaci s nimi. Rozhraní API je dostupné v aplikacích Inventor Factory a AutoCAD Factory verze 2018.1 nebo novější.
Rozhraní API sady Factory Design umožňuje integraci rozvržení výrobních linek s dalšími počítačovými systémy. Pokud například máte vlastní nástroj, který používáte k ergonomické analýze pracovního postupu sestavy produktu, a upravujete podle něj umístění strojů nebo pracovních stanic, je možné výstup tohoto nástroje použít k programovému ovlivnění umístění komponent v rozvržení sady Factory Design.
Chcete-li toto rozhraní API používat, je nutné mít v procesu CAD spuštěný kód .NET. Chcete-li kód v procesu CAD spustit, vytvořte modul plug-in.
Vytváření modulů plug-in pro aplikace CAD pomocí technologie Microsoft.NET
Další informace naleznete na stránce My First Plug-in Training (Můj první modul plug-in – školení).
Jakmile vytvoříte funkční plug-in pro aplikaci CAD, můžete připojit odkaz na knihovnu Autodesk.Factory.PublicAPI.dll, která se nachází v následujících umístěních:
- C:\Program Files\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD)
- C:\Program Files\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
- Připojením odkazu na knihovnu Autodesk.Factory.PublicAPI.dll aktivujte rozhraní API sady Factory Design.
Rozhraní API sady Factory Design pro aplikace CAD používá stejné rozhraní v aplikacích Inventor i AutoCAD a pracuje pouze s jedním rozvržením v jednom okamžiku (bez manipulace s vnořenými rozvrženími). Všechny metody rozhraní API přijímají parametr rozvržení, který představuje dokument rozvržení, se kterým se pracuje. V aplikaci Inventor je to parametr AssemblyDocument, v aplikaci AutoCAD parametr Autodesk.AutoCAD.DatabaseServices.Database.
Rozhraní API poskytuje následující metody:
Čtyři metody pracují s objekty instancí komponent:
Chcete-li získat ID komponenty (AssetID), podívejte se na element Family ID v souboru family.xml.
Instance komponenty poskytuje následující data ze sady Factory Design.
- ID instance,
- názvy parametrů,
- hodnoty parametrů (hodnota se vrací a aktualizuje v centimetrech),
- ID komponenty použité ke konstrukci instancí,
- Název hladiny, ve které se nachází instance komponenty
- přístup k nativnímu objektu aplikace CAD, který představuje instanci komponenty v dokumentu: ComponentOccurence v aplikaci Inventor a BlockReference v aplikaci AutoCAD.
AddAssetInstances
Pomocí tohoto rozhraní API lze k rozvržení přidávat nové instance komponent. U každé instance musí být určena pozice, na které bude umístěna, a komponenta knihovny, která se použije k její konstrukci. Volitelně se při volání mohou určit hodnoty parametrů, které se použijí ke konstrukci instance. Pokud nejsou parametry určeny, použijí se výchozí hodnoty z knihovny.
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
Pomocí tohoto rozhraní API lze změnit vlastnosti, parametry a umístění instance.
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 });
Dvě metody pracují s objektem podlahy sady Factory:
Objekt podlahy poskytuje následující data sady Factory Design.
- Pozice středu podlahy
- Maximální kóta X (v centimetrech)
- Minimální kóta X (v centimetrech)
- Maximální kóta Y (v centimetrech)
- Minimální kóta Y (v centimetrech)
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”);
Čtyři metody pracují s objekty hladin:
Hladina poskytuje následující data sady Factory Design:
- Název hladiny
- Barva hladiny
- Booleovský výraz udávající, zda je obsah hladiny viditelný, nebo ne
- Informace, zda se má barva použít u 3D komponent v aplikaci 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 });