API Factory Design
Pour manipuler les présentations Factory Design, utilisez l'interface de programmation d'application (API – Application Programming Interface).
L'API de CAO Factory Design vise à permettre aux utilisateurs d'accéder par programmation aux présentations Factory Design, ainsi que de les manipuler. L'API est disponible dans Inventor Factory et AutoCAD Factory 2018.1 ou versions ultérieures.
Elle permet d'intégrer vos implantations d'usine dans d'autres systèmes informatiques. Par exemple, si vous disposez d'un outil personnalisé utilisé pour analyser l'ergonomie d'un workflow d'ensemble de produits, ainsi que pour ajuster les emplacements des postes de travail ou des machines en conséquence, le contenu généré par cet outil pourra être utilisé pour modifier programmatiquement l'emplacement des équipements dans votre présentation Factory Design.
Pour utiliser cette API, le code .NET doit être en cours d'exécution dans le processus de CAO. Pour ce faire, créez un plug-in.
Pour créer des plug-ins de CAO à l'aide de la technologie Microsoft .NET
Reportez-vous à la rubrique Formation My First Plug-In.
Dès lors que le plug-in de CAO est opérationnel, vous pouvez référencer le fichier Autodesk.Factory.PublicAPI.dll disponible à l'emplacement suivant :
- C:\Program Files\Autodesk\ApplicationPlugins\FactApplication_R22.0.bundle\Contents\x64\ (AutoCAD)
- C:\Program Files\Autodesk\Inventor 2018\Bin\InventorFactory\ (Inventor)
- Référencez le fichier Autodesk.Factory.PublicAPI.dll afin d'appeler l'API Factory Design.
L'API de CAO Factory Design utilise la même interface dans Inventor et AutoCAD, et fonctionne sur une présentation à la fois (aucune manipulation des sous-schémas). Toutes les méthodes d'API acceptent le paramètre de présentation, qui désigne le document de présentation en cours de traitement. Dans Inventor, il s'agit du paramètre AssemblyDocument, tandis qu'il est intitulé Autodesk.AutoCAD.DatabaseServices.Database dans AutoCAD.
L’API fournit les méthodes suivantes :
Quatre méthodes fonctionnent sur des objets d’occurrences d’équipement :
Pour obtenir le paramètre AssetID d’un équipement, accédez à la section Family ID du fichier family.xml.
Une occurrence d'équipement fournit les données Factory Design suivantes.
- ID d'occurrence
- Noms des paramètres
- Valeurs des paramètres (les valeurs sont renvoyées et mises à jour en centimètres)
- ID de l'équipement utilisé pour créer les occurrences
- Nom du calque dans lequel figure l’occurrence d’équipement
- Permet d'accéder à l'objet de CAO natif représentant l'occurrence d'équipement dans le document : ComponentOccurence dans Inventor et BlockReference dans AutoCAD.
AddAssetInstances
Cette API permet d'ajouter des occurrences d'équipement dans une présentation. Chaque occurrence doit spécifier l'emplacement auquel elle sera insérée, ainsi que l'équipement de la bibliothèque qui sera utilisé pour la créer. Le cas échéant, l'appelant peut spécifier les valeurs de paramètre à utiliser pour créer l'occurrence. Si les paramètres ne sont pas spécifiés, les valeurs par défaut de la bibliothèque sont utilisées.
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
Cette API permet de modifier la position, les paramètres et les propriétés de l'occurrence.
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 });
Deux méthodes s’appliquent à l’objet de sol de l’usine :
L’objet de sol fournit les données Factory Design ci-après.
- La position centrale du sol
- La cote X maximum (en centimètres)
- La cote X minimum (en centimètres)
- La cote Y maximum (en centimètres)
- La cote Y minimum (en centimètres)
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”);
Quatre méthodes s’appliquent aux objets de calque :
Un calque fournit les données Factory Design suivantes :
- Nom du calque
- Couleur du calque
- Une valeur booléenne indiquant si le contenu du calque est visible ou non
- Si la couleur doit être appliquée ou non aux équipements 3D dans 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 });