public static StkObjectSummary SummarizeStkObject(IAgStkObject stkObject)
        {
            var summary = new StkObjectSummary
            {
                ShortDescription = stkObject.ShortDescription,
                LongDescription  = stkObject.LongDescription,
                Name             = stkObject.InstanceName,
                Type             = stkObject.ClassName,
                Properties       = new List <Property>(),
                Children         = new List <StkObjectSummary>()
            };

            // Determine the object type and capture the appropriate stats
            switch (stkObject.ClassType)
            {
            case AgESTKObjectType.eAdvCat:
                break;

            case AgESTKObjectType.eAircraft:
                var aircraft = stkObject as IAgAircraft;
                summary.Properties.Add(new Property("RouteType", aircraft.RouteType.ToString()));
                break;

            case AgESTKObjectType.eAreaTarget:
                var areaTarget       = stkObject as IAgAreaTarget;
                var centroidPosition = areaTarget.Position.QueryPlanetocentricArray();
                summary.Properties.Add(new Property("CentroidLatitude", centroidPosition.GetValue(0).ToString()));
                summary.Properties.Add(new Property("CentroidLongitude", centroidPosition.GetValue(1).ToString()));
                summary.Properties.Add(new Property("CentroidAltitude", centroidPosition.GetValue(2).ToString()));
                break;

            case AgESTKObjectType.eAttitudeCoverage:
                break;

            case AgESTKObjectType.eChain:
                var chain = stkObject as IAgChain;
                summary.Properties.Add(new Property("NumberOfLinks", chain.Objects.Count.ToString()));
                break;

            case AgESTKObjectType.eCommSystem:
                break;

            case AgESTKObjectType.eConstellation:
                var constellation = stkObject as IAgConstellation;
                summary.Properties.Add(new Property("NumberOfItems", constellation.Objects.Count.ToString()));
                break;

            case AgESTKObjectType.eCoverageDefinition:
                var coverage = stkObject as IAgCoverageDefinition;
                summary.Properties.Add(new Property("NumberOfAssets", coverage.AssetList.Count.ToString()));
                summary.Properties.Add(new Property("ResolutionType", coverage.Grid.ResolutionType.ToString()));
                summary.Properties.Add(new Property("BoundsType", coverage.Grid.BoundsType.ToString()));
                break;

            case AgESTKObjectType.eFacility:
                var facility = stkObject as IAgFacility;
                var position = facility.Position.QueryPlanetodeticArray();
                summary.Properties.Add(new Property("Position",
                                                    $"({position.GetValue(0)},{position.GetValue(1)},{position.GetValue(2)})"));
                break;

            case AgESTKObjectType.eGroundVehicle:
                var groundVehicle = stkObject as IAgGroundVehicle;
                summary.Properties.Add(new Property("RouteType", groundVehicle.RouteType.ToString()));
                if (groundVehicle.RouteType == AgEVePropagatorType.ePropagatorGreatArc)
                {
                    summary.Properties.Add(new Property("NumberOfWaypoints",
                                                        (groundVehicle.Route as IAgVePropagatorGreatArc).Waypoints.Count.ToString()));
                }
                break;

            case AgESTKObjectType.eLaunchVehicle:
                var lv = stkObject as IAgLaunchVehicle;
                summary.Properties.Add(new Property("TrajectoryType", lv.TrajectoryType.ToString()));
                break;

            case AgESTKObjectType.eLineTarget:
                break;

            case AgESTKObjectType.eMTO:
                break;

            case AgESTKObjectType.eMissile:
                var missile = stkObject as IAgMissile;
                summary.Properties.Add(new Property("TrajectoryType", missile.TrajectoryType.ToString()));

                break;

            case AgESTKObjectType.eMissileSystem:
                break;

            case AgESTKObjectType.ePlanet:
                break;

            case AgESTKObjectType.eRadar:
                break;

            case AgESTKObjectType.eReceiver:
                var receiver = stkObject as IAgReceiver;
                summary.Properties.Add(new Property("ReceiverModelType", receiver.Model.Type.ToString()));
                break;

            case AgESTKObjectType.eSatellite:
                var satellite = stkObject as IAgSatellite;
                summary.Properties.Add(new Property("PropagatorType", satellite.PropagatorType.ToString()));
                break;

            case AgESTKObjectType.eScenario:
                var scenario = stkObject as IAgScenario;
                summary.Properties.Add(new Property("AnalysisStartTime", scenario.StartTime.ToString()));
                summary.Properties.Add(new Property("AnalysisEndTime", scenario.StopTime.ToString()));
                break;

            case AgESTKObjectType.eSensor:
                var sensor = stkObject as IAgSensor;
                summary.Properties.Add(new Property("PatternType", sensor.PatternType.ToString()));
                summary.Properties.Add(new Property("PointingType", sensor.PointingType.ToString()));
                break;

            case AgESTKObjectType.eShip:
                break;

            case AgESTKObjectType.eStar:
                var star = stkObject as IAgStar;
                summary.Properties.Add(new Property("Declination", star.LocationDeclination.ToString()));
                summary.Properties.Add(new Property("RightAscension", star.LocationRightAscension.ToString()));
                break;

            case AgESTKObjectType.eTarget:
                var target         = stkObject as IAgTarget;
                var positionTarget = target.Position.QueryPlanetodeticArray();
                summary.Properties.Add(new Property("Position",
                                                    $"({positionTarget.GetValue(0)},{positionTarget.GetValue(1)},{positionTarget.GetValue(2)})"));

                break;

            case AgESTKObjectType.eTransmitter:
                var transmitter = stkObject as IAgTransmitter;
                summary.Properties.Add(new Property("ModelName", transmitter.Model.Name));
                break;

            case AgESTKObjectType.eFigureOfMerit:
                var fom = stkObject as IAgFigureOfMerit;
                summary.Properties.Add(new Property("FigureOfMeritType", fom.DefinitionType.ToString()));
                break;

            case AgESTKObjectType.eRoot:
                break;

            case AgESTKObjectType.eAccess:
                //var access = stkObject as IAgStkAccess;
                summary.Properties.Add(new Property("Access", stkObject.InstanceName));
                break;

            case AgESTKObjectType.eObjectCoverage:
                break;

            case AgESTKObjectType.eAttitudeFigureOfMerit:
                break;

            case AgESTKObjectType.eSubmarine:
                break;

            case AgESTKObjectType.eAntenna:
                var antenna = stkObject as IAgAntenna;
                summary.Properties.Add(new Property("ModelName", antenna.Model.Name));
                break;

            case AgESTKObjectType.ePlace:
                var place         = stkObject as IAgPlace;
                var positionPlace = place.Position.QueryPlanetodeticArray();
                summary.Properties.Add(new Property("Position",
                                                    $"({positionPlace.GetValue(0)},{positionPlace.GetValue(1)},{positionPlace.GetValue(2)})"));

                break;

            case AgESTKObjectType.eVolumetric:
                break;
            }

            foreach (IAgStkObject stkObjectChild in stkObject.Children)
            {
                summary.Children.Add(SummarizeStkObject(stkObjectChild));
            }

            return(summary);
        }
        public static StkObjectSummary SummarizeStkObject(IAgStkObject stkObject)
        {
            var summary = new StkObjectSummary
            {
                ShortDescription = stkObject.ShortDescription,
                LongDescription  = stkObject.LongDescription,
                Name             = stkObject.InstanceName,
                Type             = stkObject.ClassName,
                Properties       = new List <Property>(),
                Children         = new List <StkObjectSummary>()
            };

            // Determine the object type and capture the appropriate stats
            switch (stkObject.ClassType)
            {
            case AgESTKObjectType.eAdvCat:
                break;

            case AgESTKObjectType.eAircraft:
                var aircraft = stkObject as IAgAircraft;
                summary.Properties.Add(new Property("RouteType", aircraft.RouteType.ToString()));
                break;

            case AgESTKObjectType.eAreaTarget:
                var areaTarget       = stkObject as IAgAreaTarget;
                var centroidPosition = areaTarget.Position.QueryPlanetocentricArray();
                summary.Properties.Add(new Property("CentroidLatitude", centroidPosition.GetValue(0).ToString()));
                summary.Properties.Add(new Property("CentroidLongitude", centroidPosition.GetValue(1).ToString()));
                summary.Properties.Add(new Property("CentroidAltitude", centroidPosition.GetValue(2).ToString()));
                break;

            case AgESTKObjectType.eAttitudeCoverage:
                break;

            case AgESTKObjectType.eChain:
                var chain = stkObject as IAgChain;
                summary.Properties.Add(new Property("NumberOfLinks", chain.Objects.Count.ToString()));
                break;

            case AgESTKObjectType.eCommSystem:
                break;

            case AgESTKObjectType.eConstellation:
                var constellation = stkObject as IAgConstellation;
                summary.Properties.Add(new Property("NumberOfItems", constellation.Objects.Count.ToString()));
                break;

            case AgESTKObjectType.eCoverageDefinition:
                var coverage = stkObject as IAgCoverageDefinition;
                summary.Properties.Add(new Property("NumberOfAssets", coverage.AssetList.Count.ToString()));
                summary.Properties.Add(new Property("ResolutionType", coverage.Grid.ResolutionType.ToString()));
                summary.Properties.Add(new Property("BoundsType", coverage.Grid.BoundsType.ToString()));
                break;

            case AgESTKObjectType.eFacility:
                var facility = stkObject as IAgFacility;
                var position = facility.Position.QueryPlanetodeticArray();
                summary.Properties.Add(new Property("Position",
                                                    $"({position.GetValue(0)},{position.GetValue(1)},{position.GetValue(2)})"));
                break;

            case AgESTKObjectType.eGroundVehicle:
                var groundVehicle = stkObject as IAgGroundVehicle;
                summary.Properties.Add(new Property("RouteType", groundVehicle.RouteType.ToString()));
                if (groundVehicle.RouteType == AgEVePropagatorType.ePropagatorGreatArc)
                {
                    summary.Properties.Add(new Property("NumberOfWaypoints",
                                                        (groundVehicle.Route as IAgVePropagatorGreatArc).Waypoints.Count.ToString()));
                }
                break;

            case AgESTKObjectType.eLaunchVehicle:
                var lv = stkObject as IAgLaunchVehicle;
                summary.Properties.Add(new Property("TrajectoryType", lv.TrajectoryType.ToString()));
                break;

            case AgESTKObjectType.eLineTarget:
                break;

            case AgESTKObjectType.eMTO:
                break;

            case AgESTKObjectType.eMissile:
                var missile = stkObject as IAgMissile;
                summary.Properties.Add(new Property("TrajectoryType", missile.TrajectoryType.ToString()));

                break;

            case AgESTKObjectType.eMissileSystem:
                break;

            case AgESTKObjectType.ePlanet:
                break;

            case AgESTKObjectType.eRadar:
                var           radar      = stkObject as IAgRadar;
                IAgRadarModel radarModel = radar.Model as IAgRadarModel;
                summary.Properties.Add(new Property("Radar Model", radarModel.Name.ToString()));
                if (radarModel.Name.ToString().Equals("Monostatic"))
                {
                    IAgRadarModelMonostatic radarMonostatic = radarModel as IAgRadarModelMonostatic;
                    summary.Properties.Add(new Property("Radar Mode", radarMonostatic.Mode.Name.ToString()));
                    IAgRadarReceiver radarReceiver = radarMonostatic.Receiver as IAgRadarReceiver;
                    summary.Properties.Add(new Property("Radar Receiver Frequency", radarReceiver.Frequency.ToString()));
                    summary.Properties.Add(new Property("Radar Receiver LNA Bandwidth", radarReceiver.LNABandwidth.ToString()));
                    summary.Properties.Add(new Property("Radar Receiver LNA Gain", radarReceiver.LnaGain.ToString()));
                    summary.Properties.Add(new Property("Radar Receiver LNA To Receiver Line Loss", radarReceiver.LnaToReceiverLineLoss.ToString()));
                    summary.Properties.Add(new Property("Radar Receiver Use Rain", radarReceiver.UseRain.ToString()));
                    summary.Properties.Add(new Property("Radar Receiver Rain Outage Percent", radarReceiver.RainOutagePercent.ToString()));
                    IAgRadarTransmitter radarTransmitter = radarMonostatic.Transmitter as IAgRadarTransmitter;
                    summary.Properties.Add(new Property("Radar Transmitter Frequency", radarTransmitter.Frequency.ToString()));
                    summary.Properties.Add(new Property("Radar Transmitter Power", radarTransmitter.Power.ToString()));
                    summary.Properties.Add(new Property("Radar Transmitter Power Amp Bandwidth", radarTransmitter.PowerAmpBandwidth.ToString()));
                    summary.Properties.Add(new Property("Radar Transmitter Wavelength", radarTransmitter.Wavelength.ToString()));
                }
                break;

            case AgESTKObjectType.eReceiver:
                var receiver = stkObject as IAgReceiver;
                summary.Properties.Add(new Property("Receiver Model", receiver.Model.Name.ToString()));
                if (receiver.Model.Name.ToString().Equals("Complex Receiver Model"))
                {
                    IAgReceiverModelComplex complexReceiver = receiver.Model as IAgReceiverModelComplex;
                    summary.Properties.Add(new Property("Frequency", complexReceiver.Frequency.ToString()));
                    summary.Properties.Add(new Property("Auto-Track Frequency", complexReceiver.AutoTrackFrequency.ToString()));
                    summary.Properties.Add(new Property("Use Rain", complexReceiver.UseRain.ToString()));
                    summary.Properties.Add(new Property("Rain Outage Percent", complexReceiver.RainOutagePercent.ToString()));
                    summary.Properties.Add(new Property("Bandwidth", complexReceiver.Bandwidth.ToString()));
                    summary.Properties.Add(new Property("Antenna To LNA Line Loss", complexReceiver.AntennaToLnaLineLoss.ToString()));
                    IAgAntennaModel antennaModel = complexReceiver.AntennaControl.EmbeddedModel as IAgAntennaModel;
                    summary.Properties.Add(new Property("Antenna Design Frequency", antennaModel.DesignFrequency.ToString()));
                    summary.Properties.Add(new Property("Antenna Model Name", antennaModel.Name.ToString()));
                    //Adding some "common" antenna types to reveal additional properties
                    if (antennaModel.Name.ToString().Equals("Gaussian"))
                    {
                        IAgAntennaModelGaussian antennaGaussian = complexReceiver.AntennaControl.EmbeddedModel as IAgAntennaModelGaussian;
                        summary.Properties.Add(new Property("Antenna Mainlobe Gain", antennaGaussian.MainlobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Backlobe Gain", antennaGaussian.BacklobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Diameter", antennaGaussian.Diameter.ToString()));
                        summary.Properties.Add(new Property("Antenna Beamwidth", antennaGaussian.Beamwidth.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("Dipole"))
                    {
                        IAgAntennaModelDipole antennaDipole = complexReceiver.AntennaControl.EmbeddedModel as IAgAntennaModelDipole;
                        summary.Properties.Add(new Property("Antenna Length", antennaDipole.Length.ToString()));
                        summary.Properties.Add(new Property("Antenna Length/Wavelength Ratio", antennaDipole.LengthToWavelengthRatio.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("Parabolic"))
                    {
                        IAgAntennaModelParabolic antennaParabolic = complexReceiver.AntennaControl.EmbeddedModel as IAgAntennaModelParabolic;
                        summary.Properties.Add(new Property("Antenna Mainlobe Gain", antennaParabolic.MainlobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Backlobe Gain", antennaParabolic.BacklobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Diameter", antennaParabolic.Diameter.ToString()));
                        summary.Properties.Add(new Property("Antenna Beamwidth", antennaParabolic.Beamwidth.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("External Antenna Pattern"))
                    {
                        IAgAntennaModelExternal antennaExternal = complexReceiver.AntennaControl.EmbeddedModel as IAgAntennaModelExternal;
                        summary.Properties.Add(new Property("Antenna External File", antennaExternal.Filename.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("Complex ANSYS ffd Format"))
                    {
                        IAgAntennaModelComplexANSYSffdFormat antennaAnsysExternal = complexReceiver.AntennaControl.EmbeddedModel as IAgAntennaModelComplexANSYSffdFormat;
                        //NOT ABLE TO GET THIS PROPERTY FOR SOME REASON
                        //summary.Properties.Add(new Property("Antenna External File", antennaAnsysExternal.Filename.ToString()));
                    }
                }
                if (receiver.Model.Name.ToString().Equals("Simple Receiver Model"))
                {
                    IAgReceiverModelSimple simpleReceiver = receiver.Model as IAgReceiverModelSimple;
                    summary.Properties.Add(new Property("Frequency", simpleReceiver.Frequency.ToString()));
                    summary.Properties.Add(new Property("Auto-Track Frequency", simpleReceiver.AutoTrackFrequency.ToString()));
                    summary.Properties.Add(new Property("Use Rain", simpleReceiver.UseRain.ToString()));
                    summary.Properties.Add(new Property("Rain Outage Percent", simpleReceiver.RainOutagePercent.ToString()));
                    summary.Properties.Add(new Property("Bandwidth", simpleReceiver.Bandwidth.ToString()));
                    summary.Properties.Add(new Property("G/T", simpleReceiver.GOverT.ToString()));
                }
                if (receiver.Model.Name.ToString().Equals("Medium Receiver Model"))
                {
                    IAgReceiverModelMedium mediumReceiver = receiver.Model as IAgReceiverModelMedium;
                    summary.Properties.Add(new Property("Frequency", mediumReceiver.Frequency.ToString()));
                    summary.Properties.Add(new Property("Auto-Track Frequency", mediumReceiver.AutoTrackFrequency.ToString()));
                    summary.Properties.Add(new Property("Use Rain", mediumReceiver.UseRain.ToString()));
                    summary.Properties.Add(new Property("Rain Outage Percent", mediumReceiver.RainOutagePercent.ToString()));
                    summary.Properties.Add(new Property("Bandwidth", mediumReceiver.Bandwidth.ToString()));
                    summary.Properties.Add(new Property("LNA Gain", mediumReceiver.LnaGain.ToString()));
                    summary.Properties.Add(new Property("LNA To Receiver Line Loss", mediumReceiver.LnaToReceiverLineLoss.ToString()));
                    summary.Properties.Add(new Property("Antenna Gain", mediumReceiver.AntennaGain.ToString()));
                }
                break;

            case AgESTKObjectType.eSatellite:
                var satellite = stkObject as IAgSatellite;
                summary.Properties.Add(new Property("PropagatorType", satellite.PropagatorType.ToString()));
                break;

            case AgESTKObjectType.eScenario:
                var scenario = stkObject as IAgScenario;
                summary.Properties.Add(new Property("AnalysisStartTime", scenario.StartTime.ToString()));
                summary.Properties.Add(new Property("AnalysisEndTime", scenario.StopTime.ToString()));
                break;

            case AgESTKObjectType.eSensor:
                var sensor = stkObject as IAgSensor;
                summary.Properties.Add(new Property("PatternType", sensor.PatternType.ToString()));
                summary.Properties.Add(new Property("PointingType", sensor.PointingType.ToString()));
                break;

            case AgESTKObjectType.eShip:
                break;

            case AgESTKObjectType.eStar:
                var star = stkObject as IAgStar;
                summary.Properties.Add(new Property("Declination", star.LocationDeclination.ToString()));
                summary.Properties.Add(new Property("RightAscension", star.LocationRightAscension.ToString()));
                break;

            case AgESTKObjectType.eTarget:
                var target         = stkObject as IAgTarget;
                var positionTarget = target.Position.QueryPlanetodeticArray();
                summary.Properties.Add(new Property("Position",
                                                    $"({positionTarget.GetValue(0)},{positionTarget.GetValue(1)},{positionTarget.GetValue(2)})"));

                break;

            case AgESTKObjectType.eTransmitter:
                IAgTransmitter transmitter = stkObject as IAgTransmitter;
                summary.Properties.Add(new Property("Transmitter Model", transmitter.Model.Name));
                if (transmitter.Model.Name.ToString().Equals("Complex Transmitter Model"))
                {
                    IAgTransmitterModelComplex complexTransmitter = transmitter.Model as IAgTransmitterModelComplex;
                    summary.Properties.Add(new Property("Frequency", complexTransmitter.Frequency.ToString()));
                    summary.Properties.Add(new Property("Power", complexTransmitter.Power.ToString()));
                    summary.Properties.Add(new Property("Data Rate", complexTransmitter.DataRate.ToString()));
                    summary.Properties.Add(new Property("Antenna Type", complexTransmitter.AntennaControl.EmbeddedModel.Name.ToString()));
                    IAgAntennaModel antennaModel = complexTransmitter.AntennaControl.EmbeddedModel as IAgAntennaModel;
                    summary.Properties.Add(new Property("Antenna Design Frequency", antennaModel.DesignFrequency.ToString()));
                    summary.Properties.Add(new Property("Antenna Model Name", antennaModel.Name.ToString()));
                    //Adding some "common" antenna types to reveal additional properties
                    if (antennaModel.Name.ToString().Equals("Gaussian"))
                    {
                        IAgAntennaModelGaussian antennaGaussian = complexTransmitter.AntennaControl.EmbeddedModel as IAgAntennaModelGaussian;
                        summary.Properties.Add(new Property("Antenna Mainlobe Gain", antennaGaussian.MainlobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Backlobe Gain", antennaGaussian.BacklobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Diameter", antennaGaussian.Diameter.ToString()));
                        summary.Properties.Add(new Property("Antenna Beamwidth", antennaGaussian.Beamwidth.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("Dipole"))
                    {
                        IAgAntennaModelDipole antennaDipole = complexTransmitter.AntennaControl.EmbeddedModel as IAgAntennaModelDipole;
                        summary.Properties.Add(new Property("Antenna Length", antennaDipole.Length.ToString()));
                        summary.Properties.Add(new Property("Antenna Length/Wavelength Ratio", antennaDipole.LengthToWavelengthRatio.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("Parabolic"))
                    {
                        IAgAntennaModelParabolic antennaParabolic = complexTransmitter.AntennaControl.EmbeddedModel as IAgAntennaModelParabolic;
                        summary.Properties.Add(new Property("Antenna Mainlobe Gain", antennaParabolic.MainlobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Backlobe Gain", antennaParabolic.BacklobeGain.ToString()));
                        summary.Properties.Add(new Property("Antenna Diameter", antennaParabolic.Diameter.ToString()));
                        summary.Properties.Add(new Property("Antenna Beamwidth", antennaParabolic.Beamwidth.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("External Antenna Pattern"))
                    {
                        IAgAntennaModelExternal antennaExternal = complexTransmitter.AntennaControl.EmbeddedModel as IAgAntennaModelExternal;
                        summary.Properties.Add(new Property("Antenna External File", antennaExternal.Filename.ToString()));
                    }
                    if (antennaModel.Name.ToString().Equals("Complex ANSYS ffd Format"))
                    {
                        IAgAntennaModelComplexANSYSffdFormat antennaAnsysExternal = complexTransmitter.AntennaControl.EmbeddedModel as IAgAntennaModelComplexANSYSffdFormat;
                        //NOT ABLE TO GET THIS PROPERTY FOR SOME REASON
                        //summary.Properties.Add(new Property("Antenna External File", antennaAnsysExternal.Filename.ToString()));
                    }
                }
                if (transmitter.Model.Name.ToString().Equals("Simple Transmitter Model"))
                {
                    IAgTransmitterModelSimple simpleTransmitter = transmitter.Model as IAgTransmitterModelSimple;
                    summary.Properties.Add(new Property("Frequency", simpleTransmitter.Frequency.ToString()));
                    summary.Properties.Add(new Property("Power", simpleTransmitter.Eirp.ToString()));
                    summary.Properties.Add(new Property("Data Rate", simpleTransmitter.DataRate.ToString()));
                }
                if (transmitter.Model.Name.ToString().Equals("Medium Transmitter Model"))
                {
                    IAgTransmitterModelMedium mediumTransmitter = transmitter.Model as IAgTransmitterModelMedium;
                    summary.Properties.Add(new Property("Frequency", mediumTransmitter.Frequency.ToString()));
                    summary.Properties.Add(new Property("Power", mediumTransmitter.Power.ToString()));
                    summary.Properties.Add(new Property("Data Rate", mediumTransmitter.DataRate.ToString()));
                    summary.Properties.Add(new Property("Antenna Gain", mediumTransmitter.AntennaGain.ToString()));
                }
                break;

            case AgESTKObjectType.eFigureOfMerit:
                var fom = stkObject as IAgFigureOfMerit;
                summary.Properties.Add(new Property("FigureOfMeritType", fom.DefinitionType.ToString()));
                break;

            case AgESTKObjectType.eRoot:
                break;

            case AgESTKObjectType.eAccess:
                //var access = stkObject as IAgStkAccess;
                summary.Properties.Add(new Property("Access", stkObject.InstanceName));
                break;

            case AgESTKObjectType.eObjectCoverage:
                break;

            case AgESTKObjectType.eAttitudeFigureOfMerit:
                break;

            case AgESTKObjectType.eSubmarine:
                break;

            case AgESTKObjectType.eAntenna:
                var antenna = stkObject as IAgAntenna;
                summary.Properties.Add(new Property("ModelName", antenna.Model.Name));
                if (antenna.Model.Name.ToString().Equals("Gaussian"))
                {
                    IAgAntennaModelGaussian antennaGaussian = antenna.Model as IAgAntennaModelGaussian;
                    summary.Properties.Add(new Property("Antenna Mainlobe Gain", antennaGaussian.MainlobeGain.ToString()));
                    summary.Properties.Add(new Property("Antenna Backlobe Gain", antennaGaussian.BacklobeGain.ToString()));
                    summary.Properties.Add(new Property("Antenna Diameter", antennaGaussian.Diameter.ToString()));
                    summary.Properties.Add(new Property("Antenna Beamwidth", antennaGaussian.Beamwidth.ToString()));
                }
                if (antenna.Model.Name.ToString().Equals("Dipole"))
                {
                    IAgAntennaModelDipole antennaDipole = antenna.Model as IAgAntennaModelDipole;
                    summary.Properties.Add(new Property("Antenna Length", antennaDipole.Length.ToString()));
                    summary.Properties.Add(new Property("Antenna Length/Wavelength Ratio", antennaDipole.LengthToWavelengthRatio.ToString()));
                }
                if (antenna.Model.Name.ToString().Equals("Parabolic"))
                {
                    IAgAntennaModelParabolic antennaParabolic = antenna.Model as IAgAntennaModelParabolic;
                    summary.Properties.Add(new Property("Antenna Mainlobe Gain", antennaParabolic.MainlobeGain.ToString()));
                    summary.Properties.Add(new Property("Antenna Backlobe Gain", antennaParabolic.BacklobeGain.ToString()));
                    summary.Properties.Add(new Property("Antenna Diameter", antennaParabolic.Diameter.ToString()));
                    summary.Properties.Add(new Property("Antenna Beamwidth", antennaParabolic.Beamwidth.ToString()));
                }
                if (antenna.Model.Name.ToString().Equals("External Antenna Pattern"))
                {
                    IAgAntennaModelExternal antennaExternal = antenna.Model as IAgAntennaModelExternal;
                    summary.Properties.Add(new Property("Antenna External File", antennaExternal.Filename.ToString()));
                }
                if (antenna.Model.Name.ToString().Equals("Complex ANSYS ffd Format"))
                {
                    IAgAntennaModelComplexANSYSffdFormat antennaAnsysExternal = antenna.Model as IAgAntennaModelComplexANSYSffdFormat;
                    //NOT ABLE TO GET THIS PROPERTY FOR SOME REASON
                    //summary.Properties.Add(new Property("Antenna External File", antennaAnsysExternal.Filename.ToString()));
                }
                break;

            case AgESTKObjectType.ePlace:
                var place         = stkObject as IAgPlace;
                var positionPlace = place.Position.QueryPlanetodeticArray();
                summary.Properties.Add(new Property("Position",
                                                    $"({positionPlace.GetValue(0)},{positionPlace.GetValue(1)},{positionPlace.GetValue(2)})"));

                break;

            case AgESTKObjectType.eVolumetric:
                break;
            }

            foreach (IAgStkObject stkObjectChild in stkObject.Children)
            {
                summary.Children.Add(SummarizeStkObject(stkObjectChild));
            }

            return(summary);
        }