ADN Club > Другие продукты Autodesk

Plant 3D API. Поиск в БД Plant

(1/1)

Макс:
Добрый день,
прошу помочь (подсказать) как найти объекты с совпадающими параметрами (номер линии).
В проекте Plant необходимо проверить совпадение информации, указанной в линиях трубопроводов для чертежей Plant 3D и P&ID.

Информацию по линиям в Plant получаю при выполнении команды в пространстве файла Plant 3d


--- Код - C# [Выбрать] --- using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.EditorInput;using Autodesk.ProcessPower.DataLinks;using Autodesk.ProcessPower.DataObjects;using Autodesk.ProcessPower.ProjectManager;using Autodesk.ProcessPower.P3dProjectParts;using Autodesk.AutoCAD.ApplicationServices.Application;using Autodesk.ProcessPower.PlantInstance; PlantProject currentProj = PlantApplication.CurrentProject; PipingProject pipeProj = (PipingProject)currentProj.ProjectParts["Piping"]; DataLinksManager dlm = pipeProj.DataLinksManager; PnPDatabase db = dlmPlant.GetPnPDatabase(); int dwgRowId = dlmPlant.GetDrawingId(Application.DocumentManager.MdiActiveDocument.Database); PnPRowIdArray groupPlantIds = dlm.GetRelatedRowIds(              "P3dDrawingLineGroupRelationship", "Drawing",              dwgRowId, "LineGroup"); foreach (int groupId in groupPlantIds)            {                 PnPRow rowLineGroup = db.GetRow(groupId);                  try                {                    tag = rowLineGroup["Tag"] as string; // номер линии, одинаков для чертежей Plant и P&ID                                    }                catch                {                    excep += "\n* Номер линии (tag)";                                    }            }  
как получить информацию (совпадения по tag) из "PipeLineGroup"?

Макс:
Решение:

https://forums.autodesk.com/t5/autocad-plant-3d-forum/api-how-to-get-p3d-object-by-linenumber/td-p/5818840?profile.language=ru


--- Код - C# [Выбрать] ---using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.EditorInput;using Autodesk.ProcessPower.ProjectManager; // PnPProjectManagerMgd.dllusing Application = Autodesk.AutoCAD.ApplicationServices.Application; using Autodesk.ProcessPower.P3dProjectParts; // PnP3dProjectPartsMgd.dllusing Autodesk.ProcessPower.DataLinks; // PnPDataLinks.dllusing Autodesk.ProcessPower.PlantInstance;using Autodesk.ProcessPower.DataObjects; // PnPDataObjects.dll [CommandMethod("my_test")]        public static void My_test()        {            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;             PlantProject currentProj = PlantApplication.CurrentProject;            PipingProject pipeProj = (PipingProject)currentProj.ProjectParts["Piping"];            DataLinksManager dlm = pipeProj.DataLinksManager;            PnPDatabase db = dlm.GetPnPDatabase();            int dwgRowId = dlm.GetDrawingId(Application.DocumentManager.MdiActiveDocument.Database);             // получаем линии трубопроводов в текущем чертеже Plant 3D            PnPRowIdArray groupPlantIds = dlm.GetRelatedRowIds("P3dDrawingLineGroupRelationship", "Drawing", dwgRowId, "LineGroup");              PnIdProject pidProj = (PnIdProject)currentProj.ProjectParts["PnId"];            DataLinksManager dlmPid = pidProj.DataLinksManager;            PnPDatabase pidDb = dlmPid.GetPnPDatabase();             string tag = "";             foreach (int groupId in groupPlantIds)            {                PnPRow rowLineGroup = db.GetRow(groupId);                try                {                    tag = rowLineGroup["Tag"] as string; // номер линии (Tag), одинаков для чертежей Plant и P&ID                }                catch                {                    Application.ShowAlertDialog("Ошибка получения данных по Номеру линии (tag)");                }                 PnPRow[] linegroup = pidDb.Tables["PipeLineGroup"].Select("Tag='" + tag + "'");                if (linegroup.Length != 0)               {                    // LineGroupFrom - указываем из какого поля нужно получить данные                    string LineGroupFrom = linegroup[0]["LineGroupFrom"] as string;                    ed.WriteMessage("\n Tag: " + tag + "; LineGroupFrom " + LineGroupFrom + "\n");                 }                // ... далее обрабатываем полученные данные             }         } 

Александр Ривилис:
Макс,
Спасибо за то, что поделился найденным решением!

Навигация

[0] Главная страница сообщений

Перейти к полной версии