// ! 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();
        }