Factory Design API(응용프로그램 프로그램 인터페이스)
API(응용프로그램 프로그램 인터페이스)를 통해 Factory Design 배치를 조작합니다.
Factory Design In-CAD API(응용 프로그램 인터페이스)는 Factory Design 배치에 대한 프로그래밍 방식 액세스 및 조작을 허용하도록 설계되었습니다. 이 API(응용 프로그램 인터페이스)는 Inventor Factory 및 AutoCAD Factory 2018.1 릴리즈 이상에서 사용할 수 있습니다.
Factory Design API를 사용하면 Factory 배치를 다른 컴퓨터 시스템과 통합할 수 있습니다. 예를 들어, 제품 조립품 워크플로우의 인체 공학을 분석하고 그에 따라 워크스테이션이나 컴퓨터 위치를 조정하는 데 사용되는 사용자 도구가 있는 경우 이 도구의 결과물을 사용하여 Factory Design 배치의 자산 위치에 프로그래밍 방식으로 영향을 줄 수 있습니다.
이 API를 사용하려면 CAD 프로세스에서 .NET 코드가 실행되어야 합니다. CAD 프로세스에서 이 코드를 실행하려면 플러그인을 작성합니다.
Microsoft.NET 기술을 사용하여 CAD 플러그인을 작성하려면
My First Plug-in 교육을 참조하십시오.
작동 CAD 플러그인이 있으면 다음 경로에 있는 Autodesk.Factory.PublicAPI.dll을 참조하면 됩니다.
- C:\ProgramData\Autodesk\ApplicationPlugins\FactoryAutoCAD2023.bundle\Contents\x64\ (AutoCAD)
- C:\ProgramData\Autodesk\ApplicationPlugins\FactoryInventor2023.bundle\Contents\ (Inventor)
- Autodesk.Factory.PublicAPI.dll을 참조하여 Factory Design API를 호출합니다.
Factory Design In-CAD API는 Inventor와 AutoCAD 모두에서 동일한 인터페이스를 표시하며 한 번에 하나의 배치에서 작동합니다(하위 배치 조작 없음). 모든 API 메서드는 영향을 받는 배치 문서를 나타내는 배치 매개변수를 사용합니다. Inventor의 경우 이 매개변수는 AssemblyDocument이며 AutoCAD의 경우에는 Autodesk.AutoCAD.DatabaseServices.Database입니다.
이 API는 다음 메서드를 제공합니다.
다음 4개의 메서드는 자산 인스턴스 객체에서 작동합니다.
자산의 AssetID를 가져오려면 family.xml의 패밀리 ID를 참조하십시오.
자산 인스턴스는 다음 Factory Design 데이터를 공급합니다.
- 인스턴스 ID
- 매개변수 이름
- 매개변수 값(값이 센티미터로 반환 및 업데이트됨)
- 인스턴스 구성에 사용되는 자산 ID
- 자산 인스턴스가 있는 도면층의 이름
- 문서에서 자산 인스턴스를 나타내는 기본 CAD 객체에 액세스: Inventor의 경우 ComponentOccurence, AutoCAD의 경우 BlockReference
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 데이터를 제공합니다.
- 바닥의 중심 위치
- 최대 X 치수(센티미터)
- 최소 X 치수(센티미터)
- 최대 Y 치수(센티미터)
- 최소 Y 치수(센티미터)
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”);
다음 4개의 메서드는 도면층 객체에서 작동합니다.
도면층은 다음 Factory Design 데이터를 제공합니다.
- 도면층 이름
- 도면층 색상
- 도면층의 내용이 표시되는지 여부를 나타내는 부울
- Inventor의 3D 자산에 색상을 적용할지 여부
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 });