공유

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 플러그인을 작성하려면

  1. My First Plug-in 교육을 참조하십시오.

  2. 작동 CAD 플러그인이 있으면 다음 경로에 있는 Autodesk.Factory.PublicAPI.dll을 참조하면 됩니다.

  • C:\ProgramData\Autodesk\ApplicationPlugins\FactoryAutoCAD2023.bundle\Contents\x64\ (AutoCAD)
  • C:\ProgramData\Autodesk\ApplicationPlugins\FactoryInventor2023.bundle\Contents\ (Inventor)
  1. Autodesk.Factory.PublicAPI.dll을 참조하여 Factory Design API를 호출합니다.
중요: CAD 플러그인과 함께 DLL을 배포하지 마십시오.

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 });

이 정보가 도움이 되셨습니까?