// ! Rivela le lavorazioni public static IDictionary <Face, List <Lavorazione> > detectLavorazioni(PartDocument oDoc) { IDictionary <Face, List <Lavorazione> > result = new Dictionary <Face, List <Lavorazione> >(); SheetMetalComponentDefinition oCompDef = (SheetMetalComponentDefinition)oDoc.ComponentDefinition; FaceCollection oFaceColl = oCompDef.Bends[1].FrontFaces[1].TangentiallyConnectedFaces; oFaceColl.Add(oCompDef.Bends[1].FrontFaces[1]); foreach (Face f in oFaceColl) { if (f.EdgeLoops.Count > 1) { List <Lavorazione> lavorazione = IdentificazioneEntita.main(f.EdgeLoops, iApp); if (lavorazione.Count > 0) { result.Add(f, lavorazione); } } } return(result); }
// ! Elimina le lavorazioni public static void deleteLavorazione(PartDocument oDoc) { SheetMetalComponentDefinition oCompDef = (SheetMetalComponentDefinition)oDoc.ComponentDefinition; NonParametricBaseFeature oBaseFeature = oCompDef.Features.NonParametricBaseFeatures[1]; oBaseFeature.Edit(); SurfaceBody basebody = oBaseFeature.BaseSolidBody; foreach (Face f in basebody.Faces) { try { string nameFaceRif = f.InternalName; ObjectCollection oFaceColl = iApp.TransientObjects.CreateObjectCollection(); if (f.EdgeLoops.Count > 1) { foreach (EdgeLoop oEdgeLoop in f.EdgeLoops) { string lavorazione = IdentificazioneEntita.whois(oEdgeLoop.Edges); if (!string.IsNullOrEmpty(lavorazione)) { foreach (Face oFaceLav in oEdgeLoop.Edges[1].Faces) { string nameFaceLav = oFaceLav.InternalName; if (nameFaceLav != nameFaceRif) { oFaceColl.Add(oFaceLav); foreach (Face oFaceTan in oFaceLav.TangentiallyConnectedFaces) { oFaceColl.Add(oFaceTan); } } } } } } if (oFaceColl.Count > 0) { try { oBaseFeature.DeleteFaces(oFaceColl); oBaseFeature.ExitEdit(); deleteLavorazione(oDoc); } catch { } } } catch { } } oBaseFeature.ExitEdit(); }