基本信息
源码名称:STKX开发(入门级示例)
源码大小:0.14M
文件格式:.rar
开发语言:C#
更新时间:2019-10-25
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 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;
}
}
}