Получить/установить свойства оборудования в Plant3dC#

Место общения программистов C#
Ответить
Anonymous
 Получить/установить свойства оборудования в Plant3d

Сообщение Anonymous »

Я пытаюсь получить и отредактировать значения свойств оборудования, созданного в Plant3d. Это оборудование по умолчанию поставляется без большинства свойств, а остальные заполнены общими значениями (например, подробное описание (размер) как «Теплообменник»).
I попытался использовать этот код, чтобы получить это:

Код: Выделить всё

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.ProcessPower.ProjectManager;
using Autodesk.ProcessPower.PlantInstance;
using Autodesk.ProcessPower.DataLinks;
using System.Windows.Forms;
using Autodesk.ProcessPower.PnP3dObjects;

namespace ParametEquip
{
public class Plugin
{
[CommandMethod("PARAMEQ", CommandFlags.UsePickSet)]
public static void ParametEquip()
{
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;

using (Transaction trans = db.TransactionManager.StartTransaction())
{
PlantProject projeto = PlantApplication.CurrentProject;
Project pj = projeto.ProjectParts["PnId"];
DataLinksManager dlm = pj.DataLinksManager;

BlockTable bt = (BlockTable)trans.GetObject(doc.Database.BlockTableId, OpenMode.ForWrite);
if (bt != null)
{
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
if (btr != null)
{
foreach (ObjectId id in btr)
{
Entity ent = (Entity)trans.GetObject(id, OpenMode.ForWrite);
int linha = dlm.FindAcPpRowId(ent.ObjectId);
List props;
props = dlm.GetAllProperties(linha, true);
foreach (var  prop in props)
{
MessageBox.Show($"Propriedade: {prop.Key} \nValor: {prop.Value}");
}
}
}
}

trans.Commit();
}
}
}

}
Но я получаю эту ошибку:
введите здесь описание изображения
Подробности:

Приложение не поддерживает JIT-отладку
. Подробности смотрите в конце этого сообщения.
Текст исключения **************
Autodesk.ProcessPower.DataLinks.DLException: ObjectDoesNotHaveLinkв Autodesk.ProcessPower.DataLinks.DLException.ThrowError(_EPpDataLinksStatus stat)
в Autodesk.ProcessPower.DataLinks.DataLinksManager.FindAcPpRowId(ObjectId oid)
в ParametEquip.Plugin.ParametEquip() в A: \11-Temporário\João Castro\Parametrização de Equipamentos\ParamEquip\ParamEquip.cs:line 37

Если у кого-то есть идеи по поводу этой ошибки или других способы достижения этих свойств, все мне очень поможет. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/789 ... in-plant3d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»