Я работаю над автоматизацией вставки деталей из пользовательского каталога Plant 3D в чертежи проекта с помощью плагина C#. Что у меня есть на данный момент:
Я могу получить нужную деталь из каталога как SpecPart с помощью SpecManager и SpecPartReader.
Проблема:
Таким методам, как InsertCustomGeometryPlaceHolderInModel, InsertPlaceHolderInModel и InsertPlaceHolderInModelWhileRouting, требуется имя блока.
Имя блока генерируется только после вставки детали, что создает циклическую зависимость:
Для вставки детали мне нужно имя блока, но имя блока существует только после вставки.
Цель:
Вставить деталь из каталога в чертеж Plant 3D автоматически, используя SpecPart (или PartSizeProperties), без необходимости предварительного размещения вручную.
Что я пробовал
Вот пример того, что я пробовал с помощью InsertPlaceHolderInModel:
Я работаю над автоматизацией вставки деталей из пользовательского каталога Plant 3D в чертежи проекта с помощью плагина C#. [b]Что у меня есть на данный момент:[/b] [list] [*]Пользовательский каталог ([code].pspx[/code], .acat, .pspc) с опорами и другими компонентами.
[*]Я могу получить нужную деталь из каталога как SpecPart с помощью SpecManager и SpecPartReader.
[/list] [b]Проблема:[/b] [list] [*]Таким методам, как InsertCustomGeometryPlaceHolderInModel, InsertPlaceHolderInModel и InsertPlaceHolderInModelWhileRouting, требуется [b]имя блока[/b].
[*]Имя блока генерируется только после вставки детали, что создает циклическую зависимость:
Для вставки детали мне нужно имя блока, но имя блока существует только после вставки.
[/list] [b]Цель:[/b] [list] [*]Вставить деталь из каталога в чертеж Plant 3D автоматически, используя SpecPart (или PartSizeProperties), без необходимости предварительного размещения вручную. [/list]
[b]Что я пробовал[/b] Вот пример того, что я пробовал с помощью InsertPlaceHolderInModel: [code]using Autodesk.ProcessPower.Piping; using Autodesk.ProcessPower.Specification; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry;
public void TryInsertPlaceholder() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database;