by Fenton Webb
When creating a new LineGroup, the PipingObjectAdder should already create line groups or take an existing one. However, here’s some code which shows how to do it manually:
int CreateUnassignedLineGroup(PipingProject prjpart)
{
// Create a new line group in project database
//
DataLinksManager dlm = prjpart.DataLinksManager;
PnPDatabase db = dlm.GetPnPDatabase();
PnPTable tbl = db.Tables["P3dLineGroup"];
PnPRow row = tbl.NewRow();
tbl.Rows.Add(row);
return row.RowId;
}
void AssignToLineGroup(PipingProject prjpart, ObjectId partId, int cacheId, int groupId)
{
// Assign an entity's row to line group
//
DataLinksManager dlm = prjpart.DataLinksManager;
PnPDatabase db = dlm.GetPnPDatabase();
// Relate objects to line group
//
dlm.Relate("P3dLineGroupPartRelationship",
"LineGroup", groupId,
"Part", cacheId);
// Also relate drawing to line group
//
Database acdb = partId.Database;
int dwgId = dlm.GetDrawingId(acdb);
if (dwgId != -1)
{
dlm.Relate("P3dDrawingLineGroupRelationship",
"Drawing", dwgId,
"LineGroup", groupId);
}
}