基本信息
源码名称:STKX开发(入门级示例)
源码大小:0.14M
文件格式:.rar
开发语言:C#
更新时间:2019-10-25
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
STKX开发,需要STKX组件支持
STKX开发,需要STKX组件支持
STKX开发
//------------------------------------------------------------------------- // // This is part of the STK 8 Object Model Examples // Copyright (C) 2006 Analytical Graphics, Inc. // // This source code is intended as a reference to users of the // STK 8 Object Model. // // File: Form1.cs // DataProviders // // // The features used in this example show how to hook event notification // up to STK through C# so that you can listen to events such as animation // and object creation. // //-------------------------------------------------------------------------- using System; using System.Drawing; using System.Collections; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace DataProviders { /// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button GraphButton; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.Label label1; private AGI.STKObjects.AgStkObjectRootClass objModelRoot; private AGI.STKObjects.AgSatelliteClass Satellite = null; private AGI.STKObjects.AgFacilityClass Facility = null; private AGI.STKObjects.IAgStkAccess Access = null; private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.Button ComputeButton; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button MarkerColorButton; private System.Windows.Forms.CheckBox checkBox1; private bool IsPlacingFacility = false; private System.Windows.Forms.Button PlaceFacilityButton; private System.Windows.Forms.Label placetext; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; private System.Windows.Forms.Button MarkerColorButton2; private AxAGI.STKX.AxAgUiAx2DCntrl axAgUiAx2DCntrl1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1)); this.GraphButton = new System.Windows.Forms.Button(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.checkBox1 = new System.Windows.Forms.CheckBox(); this.MarkerColorButton = new System.Windows.Forms.Button(); this.label2 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.comboBox1 = new System.Windows.Forms.ComboBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.MarkerColorButton2 = new System.Windows.Forms.Button(); this.label4 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.placetext = new System.Windows.Forms.Label(); this.PlaceFacilityButton = new System.Windows.Forms.Button(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.ComputeButton = new System.Windows.Forms.Button(); this.axAgUiAx2DCntrl1 = new AxAGI.STKX.AxAgUiAx2DCntrl(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox3.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.axAgUiAx2DCntrl1)).BeginInit(); this.SuspendLayout(); // // GraphButton // this.GraphButton.Enabled = false; this.GraphButton.Location = new System.Drawing.Point(25, 85); this.GraphButton.Name = "GraphButton"; this.GraphButton.Size = new System.Drawing.Size(96, 37); this.GraphButton.TabIndex = 0; this.GraphButton.Text = "Graph"; this.GraphButton.Click = new System.EventHandler(this.GraphButton_Click); // // groupBox1 // this.groupBox1.Controls.Add(this.checkBox1); this.groupBox1.Controls.Add(this.MarkerColorButton); this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.comboBox1); this.groupBox1.Location = new System.Drawing.Point(10, 471); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(288, 147); this.groupBox1.TabIndex = 2; this.groupBox1.TabStop = false; this.groupBox1.Text = "Satellite Setup"; // // checkBox1 // this.checkBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.checkBox1.Location = new System.Drawing.Point(48, 106); this.checkBox1.Name = "checkBox1"; this.checkBox1.Size = new System.Drawing.Size(182, 28); this.checkBox1.TabIndex = 5; this.checkBox1.Text = "Use Elevation Contours"; this.checkBox1.CheckedChanged = new System.EventHandler(this.checkBox1_CheckedChanged); // // MarkerColorButton // this.MarkerColorButton.BackColor = System.Drawing.Color.IndianRed; this.MarkerColorButton.Cursor = System.Windows.Forms.Cursors.Hand; this.MarkerColorButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.MarkerColorButton.Location = new System.Drawing.Point(125, 65); this.MarkerColorButton.Name = "MarkerColorButton"; this.MarkerColorButton.Size = new System.Drawing.Size(105, 27); this.MarkerColorButton.TabIndex = 4; this.MarkerColorButton.Click = new System.EventHandler(this.MarkerColorButton_Click); // // label2 // this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.label2.Location = new System.Drawing.Point(11, 70); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(96, 19); this.label2.TabIndex = 3; this.label2.Text = "MarkerColor:"; // // label1 // this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.label1.Location = new System.Drawing.Point(10, 31); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(96, 19); this.label1.TabIndex = 2; this.label1.Text = "Propagator:"; // // comboBox1 // this.comboBox1.Location = new System.Drawing.Point(106, 28); this.comboBox1.Name = "comboBox1"; this.comboBox1.Size = new System.Drawing.Size(153, 24); this.comboBox1.TabIndex = 1; this.comboBox1.Text = "comboBox1"; this.comboBox1.SelectedIndexChanged = new System.EventHandler(this.comboBox1_SelectedIndexChanged); // // groupBox2 // this.groupBox2.Controls.Add(this.MarkerColorButton2); this.groupBox2.Controls.Add(this.label4); this.groupBox2.Controls.Add(this.label3); this.groupBox2.Controls.Add(this.placetext); this.groupBox2.Controls.Add(this.PlaceFacilityButton); this.groupBox2.Location = new System.Drawing.Point(307, 471); this.groupBox2.Name = "groupBox2"; this.groupBox2.Size = new System.Drawing.Size(288, 147); this.groupBox2.TabIndex = 3; this.groupBox2.TabStop = false; this.groupBox2.Text = "Facility Setup"; // // MarkerColorButton2 // this.MarkerColorButton2.BackColor = System.Drawing.Color.Snow; this.MarkerColorButton2.Cursor = System.Windows.Forms.Cursors.Hand; this.MarkerColorButton2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.MarkerColorButton2.Location = new System.Drawing.Point(134, 65); this.MarkerColorButton2.Name = "MarkerColorButton2"; this.MarkerColorButton2.Size = new System.Drawing.Size(106, 27); this.MarkerColorButton2.TabIndex = 6; this.MarkerColorButton2.Click = new System.EventHandler(this.MarkerColorButton2_Click); // // label4 // this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.label4.Location = new System.Drawing.Point(29, 70); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(96, 19); this.label4.TabIndex = 5; this.label4.Text = "LabelColor:"; // // label3 // this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.label3.Location = new System.Drawing.Point(19, 31); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(67, 19); this.label3.TabIndex = 3; this.label3.Text = "Location:"; // // placetext // this.placetext.Location = new System.Drawing.Point(29, 103); this.placetext.Name = "placetext"; this.placetext.Size = new System.Drawing.Size(240, 37); this.placetext.TabIndex = 1; this.placetext.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // PlaceFacilityButton // this.PlaceFacilityButton.Cursor = System.Windows.Forms.Cursors.Hand; this.PlaceFacilityButton.FlatStyle = System.Windows.Forms.FlatStyle.System; this.PlaceFacilityButton.Location = new System.Drawing.Point(106, 28); this.PlaceFacilityButton.Name = "PlaceFacilityButton"; this.PlaceFacilityButton.Size = new System.Drawing.Size(163, 24); this.PlaceFacilityButton.TabIndex = 0; this.PlaceFacilityButton.Text = "Place Facility On Map"; this.PlaceFacilityButton.Click = new System.EventHandler(this.PlaceFacilityButton_Click); // // groupBox3 // this.groupBox3.Controls.Add(this.ComputeButton); this.groupBox3.Controls.Add(this.GraphButton); this.groupBox3.Location = new System.Drawing.Point(605, 471); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(144, 147); this.groupBox3.TabIndex = 4; this.groupBox3.TabStop = false; this.groupBox3.Text = "Access"; // // ComputeButton // this.ComputeButton.Location = new System.Drawing.Point(26, 33); this.ComputeButton.Name = "ComputeButton"; this.ComputeButton.Size = new System.Drawing.Size(96, 37); this.ComputeButton.TabIndex = 1; this.ComputeButton.Text = "Compute"; this.ComputeButton.Click = new System.EventHandler(this.ComputeButton_Click); // // axAgUiAx2DCntrl1 // this.axAgUiAx2DCntrl1.Enabled = true; this.axAgUiAx2DCntrl1.Location = new System.Drawing.Point(0, 0); this.axAgUiAx2DCntrl1.Name = "axAgUiAx2DCntrl1"; this.axAgUiAx2DCntrl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAgUiAx2DCntrl1.OcxState"))); this.axAgUiAx2DCntrl1.Size = new System.Drawing.Size(776, 464); this.axAgUiAx2DCntrl1.TabIndex = 5; this.axAgUiAx2DCntrl1.MouseDownEvent = new AxAGI.STKX.IAgUiAx2DCntrlEvents_MouseDownEventHandler(this.axAgUiAx2DCntrl1_MouseDownEvent); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 15); this.ClientSize = new System.Drawing.Size(774, 622); this.Controls.Add(this.axAgUiAx2DCntrl1); this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox3); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.MaximumSize = new System.Drawing.Size(784, 664); this.MinimumSize = new System.Drawing.Size(784, 664); this.Name = "Form1"; this.Text = "Form1"; this.Load = new System.EventHandler(this.Form1_Load); this.groupBox1.ResumeLayout(false); this.groupBox2.ResumeLayout(false); this.groupBox3.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.axAgUiAx2DCntrl1)).EndInit(); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } /// <summary> /// Creates a new scenario, adds a Facility and a Satellite and changes some basic properties /// </summary> private void Form1_Load(object sender, System.EventArgs e) { objModelRoot = new AGI.STKObjects.AgStkObjectRootClass(); objModelRoot.NewScenario("AccessTest"); Satellite = (AGI.STKObjects.AgSatelliteClass)objModelRoot.CurrentScenario.Children.New( AGI.STKObjects.AgESTKObjectType.eSatellite, "AccSat"); SetSatelliteColor(MarkerColorButton.BackColor); Facility = (AGI.STKObjects.AgFacilityClass)objModelRoot.CurrentScenario.Children.New( AGI.STKObjects.AgESTKObjectType.eFacility, "AccFac"); SetFacilityColor(MarkerColorButton2.BackColor); UpdateFacPositionText(); comboBox1.Items.AddRange(new object[] {"TwoBody","J2Perturbation","J4Perturbation","SGP4","HPOP"}); comboBox1.Text = "TwoBody"; } /// <summary> /// Setting the satellite's color /// </summary> private void SetSatelliteColor(Color _color) { Satellite.Graphics.SetAttributesType(AGI.STKObjects.AgEVeGfxAttributes.eAttributesBasic); AGI.STKObjects.IAgVeGfxAttributesBasic gfx = (AGI.STKObjects.IAgVeGfxAttributesBasic)Satellite.Graphics.Attributes; gfx.Inherit = false; gfx.IsVisible = true; gfx.Color = ToOMColor(_color); } /// <summary> /// Setting the facility's color /// </summary> private void SetFacilityColor(Color _color) { Facility.Graphics.InheritFromScenario = false; Facility.Graphics.LabelVisible = true; Facility.Graphics.LabelColor = ToOMColor(_color); } /// <summary> /// Updates the facilities text to indicate where the facility is located /// </summary> private void UpdateFacPositionText() { AGI.STKObjects.IAgGeodetic pos = (AGI.STKObjects.IAgGeodetic)Facility.Position.ConvertTo( AGI.STKObjects.AgEPositionType.eGeodetic); placetext.Text = "Lat: " pos.Lat "\n Lon: " pos.Lon; } /// <summary> /// Helper function for setting colors. /// </summary> private uint ToOMColor(Color _color) { return System.Convert.ToUInt32(System.Drawing.ColorTranslator.ToOle(_color)); } /// <summary> /// Shows a graph of the data /// </summary> private void GraphButton_Click(object sender, System.EventArgs e) { ArrayList xaxis = new ArrayList(); ArrayList yaxis = new ArrayList(); AGI.STKObjects.IAgScenario sc = (AGI.STKObjects.IAgScenario)objModelRoot.CurrentScenario; System.Array cols = new object[] { "Start Time", "Duration" }; AGI.STKObjects.IAgDataProvider dpInfo = (AGI.STKObjects.IAgDataProvider)Access.DataProviders["Access Data"]; AGI.STKObjects.IAgDrResult resInfo = ((AGI.STKObjects.IAgDataPrvInterval)dpInfo).ExecElements( sc.StartTime, sc.StopTime, ref cols); if (resInfo.Intervals.Count > 0) { foreach(AGI.STKObjects.IAgDrInterval interval in resInfo.Intervals) { foreach(double value in interval.DataSets[0].GetValues()) { xaxis.Add(value / 180 ); } foreach(double value in interval.DataSets[1].GetValues()) { yaxis.Add(value / 5 ); } } } GraphForm graphform = new GraphForm(Satellite.InstanceName " Access to " Facility.InstanceName, "Date", "Duration", xaxis,yaxis) ; graphform.Show(); graphform.Focus(); } /// <summary> /// Sets the satellite's propagator type and propagates it. /// </summary> private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) { if(comboBox1.SelectedIndex == 0) { Satellite.SetPropagatorType(AGI.STKObjects.AgEVePropagatorType.ePropagatorTwoBody); AGI.STKObjects.IAgVePropagatorTwoBody prop = (AGI.STKObjects.IAgVePropagatorTwoBody)Satellite.Propagator; prop.Propagate(); } else if(comboBox1.SelectedIndex == 1) { Satellite.SetPropagatorType(AGI.STKObjects.AgEVePropagatorType.ePropagatorJ2Perturbation); AGI.STKObjects.IAgVePropagatorJ2Perturbation prop = (AGI.STKObjects.IAgVePropagatorJ2Perturbation)Satellite.Propagator; prop.Propagate(); } else if(comboBox1.SelectedIndex == 2) { Satellite.SetPropagatorType(AGI.STKObjects.AgEVePropagatorType.ePropagatorJ4Perturbation); AGI.STKObjects.IAgVePropagatorJ4Perturbation prop = (AGI.STKObjects.IAgVePropagatorJ4Perturbation)Satellite.Propagator; prop.Propagate(); } else if(comboBox1.SelectedIndex == 3) { Satellite.SetPropagatorType(AGI.STKObjects.AgEVePropagatorType.ePropagatorSGP4); AGI.STKObjects.IAgVePropagatorSGP4 prop = (AGI.STKObjects.IAgVePropagatorSGP4)Satellite.Propagator; prop.Propagate(); } else if(comboBox1.SelectedIndex == 4) { Satellite.SetPropagatorType(AGI.STKObjects.AgEVePropagatorType.ePropagatorHPOP); AGI.STKObjects.IAgVePropagatorHPOP prop = (AGI.STKObjects.IAgVePropagatorHPOP)Satellite.Propagator; prop.Propagate(); } } /// <summary> /// Sets the satellite's color with the chosen type. /// </summary> private void MarkerColorButton_Click(object sender, System.EventArgs e) { ColorDialog colordial = new ColorDialog(); colordial.AllowFullOpen = false ; colordial.ShowHelp = true ; colordial.Color = MarkerColorButton.BackColor; if (colordial.ShowDialog() == DialogResult.OK) { MarkerColorButton.BackColor = colordial.Color; SetSatelliteColor(MarkerColorButton.BackColor); } } /// <summary> /// Changes the satellite's elevation contours visible and fillvisible properties. /// </summary> private void checkBox1_CheckedChanged(object sender, System.EventArgs e) { if (checkBox1.Checked) { Satellite.Graphics.ElevContours.IsVisible = true; Satellite.Graphics.ElevContours.IsFillVisible = true; } else { Satellite.Graphics.ElevContours.IsFillVisible = false; Satellite.Graphics.ElevContours.IsVisible = false; } } /// <summary> /// Uses the mouse down event in STKX to position the facility /// </summary> private void PlaceFacilityButton_Click(object sender, System.EventArgs e) { Cursor.Current = PlaceFacilityButton.Cursor; IsPlacingFacility = true; placetext.Text = "Click on the 2D Map to set position."; PlaceFacilityButton.Enabled = false; } /// <summary> /// Moves the facility to the mouse's coordinates. /// </summary> private void axAgUiAx2DCntrl1_MouseDownEvent(object sender, AxAGI.STKX.IAgUiAx2DCntrlEvents_MouseDownEvent e) { if (IsPlacingFacility) { AGI.STKX.IAgPickInfoData pickInfoData = axAgUiAx2DCntrl1.PickInfo(e.x, e.y); AGI.STKObjects.IAgGeodetic pos = (AGI.STKObjects.IAgGeodetic)Facility.Position.ConvertTo( AGI.STKObjects.AgEPositionType.eGeodetic); pos.Lat = pickInfoData.Lat; pos.Lon = pickInfoData.Lon; pos.Alt = pickInfoData.Alt; Facility.Position.Assign(pos); UpdateFacPositionText(); IsPlacingFacility = false; PlaceFacilityButton.Enabled = true; } } /// <summary> /// Changes the facilities color with the given value. /// </summary> private void MarkerColorButton2_Click(object sender, System.EventArgs e) { ColorDialog colordial = new ColorDialog(); colordial.AllowFullOpen = false ; colordial.ShowHelp = true ; colordial.Color = MarkerColorButton.BackColor; if (colordial.ShowDialog() == DialogResult.OK) { MarkerColorButton2.BackColor = colordial.Color; SetFacilityColor(MarkerColorButton2.BackColor); } } /// <summary> /// Computes access between a satellite and a facility. /// </summary> private void ComputeButton_Click(object sender, System.EventArgs e) { objModelRoot.UnitPreferences.SetCurrentUnit("DateFormat", "EpSec"); Access = (AGI.STKObjects.IAgStkAccess)Satellite.GetAccessToObject(Facility); Access.AccessTimePeriod = AGI.STKObjects.AgEAccessTimeType.eScenarioAccessTime; Access.ComputeAccess(); SetFacilityColor(MarkerColorButton2.BackColor); ComputeButton.Enabled = false; GraphButton.Enabled = true; } } }