private void TraverseSubFunctions(SldWorks.Feature Feat_Obj, List<pFunctions> Features, string SpaceForDebug = " ") { SldWorks.Feature SubFeat; SubFeat = Feat_Obj.GetFirstSubFeature(); while (SubFeat == null) { Features[Features.Count - 1].SubFunction.Add(new pFunctions()); Features[Features.Count - 1].SubFunction[Features[Features.Count - 1].SubFunction.Count - 1].Name = SubFeat.GetTypeName2(); Features[Features.Count - 1].SubFunction[Features[Features.Count - 1].SubFunction.Count - 1].Feature = SubFeat; Debug.Print("{0} - {1}{2} ('{3}')", DateTime.Now.ToLongTimeString(), SpaceForDebug, SubFeat.Name, SubFeat.GetTypeName2()); SpaceForDebug = SpaceForDebug + " "; TraverseSubFunctions(SubFeat, Features[Features.Count - 1].SubFunction, SpaceForDebug); SubFeat = SubFeat.GetNextSubFeature(); //SpaceForDebug = Left(SpaceForDebug, SpaceForDebug.Length - 3); } }