Что у меня есть на данный момент:
- Пользовательский каталог (, .acat, .pspc) с опорами и другими компонентами.
Код: Выделить всё
.pspx - Я могу получить нужную деталь из каталога как SpecPart с помощью SpecManager и SpecPartReader.
- Таким методам, как InsertCustomGeometryPlaceHolderInModel, InsertPlaceHolderInModel и InsertPlaceHolderInModelWhileRouting, требуется имя блока.
- Имя блока генерируется только после вставки детали, что создает циклическую зависимость:
Для вставки детали мне нужно имя блока, но имя блока существует только после вставки.
- Вставить деталь из каталога в чертеж Plant 3D автоматически, используя SpecPart (или PartSizeProperties), без необходимости предварительного размещения вручную.
Вот пример того, что я пробовал с помощью InsertPlaceHolderInModel:
Код: Выделить всё
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;
SpecManager specManager = SpecManager.GetSpecManager();
SpecPart specPart = specManager.FindPart("MySpec", "PART_CODE");
// Attempt to insert placeholder
PnP3dPlaceholderUtil.InsertCustomGeometryPlaceHolderInModel(
specPart.Name,
"BLOCK_NAME", //
Подробнее здесь: [url]https://stackoverflow.com/questions/79825345/how-to-programmatically-insert-plant-3d-catalog-parts-into-a-drawing-using-c-sha[/url]