The following snippets show two ways to remove parts using the SystemWeaver API.
Setting Up the Example
IswLibrary library = SWConnection.Instance.Broker.GetLibrary(SWHandleUtility.ToHandle("x13000000000DEFA0")); // Create a component string componentSid = "ARAP"; IswItem component = library.CreateItem(componentSid, "Component"); // Create two interfaces string interfaceSid = "ARSI"; IswItem interfaceItem1 = library.CreateItem(interfaceSid, "Interface1"); IswItem interfaceItem2 = library.CreateItem(interfaceSid, "Interface2"); // Add the interfaces as parts to the component. This is done twice to illustrate two different ways of removing a part. string partSid = "ARRP"; component.AddPart(partSid, interfaceItem1); component.AddPart(partSid, interfaceItem1); component.AddPart(partSid, interfaceItem2); component.AddPart(partSid, interfaceItem2);
Option 1
Remove first part of type "ARRP" found for intefaceItem1.
IswPart partToRemove1 = component.FindDefObjPart(partSid, interfaceItem1); // If any part found.Try to remove it. if( partToRemove1 != null) { // Check if you have write access for the part. // This can also be done on the Item that owns the part since their access rights are equivalent. if (partToRemove1.ObjectAccess.Contains(SWAccessCodes.Write)) { // Remove the part. The part's DefObj is left in the database. partToRemove1.Remove(); } }
Option 2
Remove all parts of type "ARRP" found for intefaceItem2.
foreach (IswPart partToRemove2 in component.GetParts(partSid)) { if (partToRemove2.DefObj.Equals(interfaceItem2)) { // Check if you have write access for the part. // This can also be done on the Item that owns the part since their access rights are equivalent. if (partToRemove2.ObjectAccess.Contains(SWAccessCodes.Write)) { // Remove the part. The part's DefObj is left in the database. partToRemove2.Remove(); } } }