private IAgCrdnAngle CreateAngle(IAgStkObject stkObject, string name, IAgCrdnVector fromVector, IAgCrdnVector toVector) { IAgCrdnAngleFactory factory = stkObject.Vgt.Angles.Factory; // Check if component exists. CheckExistingVgtComponent(stkObject.Vgt.Angles, name); IAgCrdnAngleBetweenVectors angle = factory.Create(name, "", AgECrdnAngleType.eCrdnAngleTypeBetweenVectors) as IAgCrdnAngleBetweenVectors; angle.FromVector.SetVector(fromVector); angle.ToVector.SetVector(toVector); return(angle as IAgCrdnAngle); }
private void Calculate_Click(object sender, EventArgs e) { int check = FieldCheck(); if (check == 0) { IAgStkObject obj = null; IAgStkObject tar = null; foreach (var observer in CommonData.SelectedObservers) { foreach (var target in CommonData.SelectedTargets) { if (observer != target) { if (TargetType.SelectedIndex == 0) { tar = CommonData.StkRoot.GetObjectFromPath("Satellite/" + target); } else if (TargetType.SelectedIndex == 1) { tar = CommonData.StkRoot.GetObjectFromPath("Missile/" + target); } else if (TargetType.SelectedIndex == 2) { tar = CommonData.StkRoot.GetObjectFromPath("Aircraft/" + target); } if (ObserverType.SelectedIndex == 0) { obj = CommonData.StkRoot.GetObjectFromPath("Satellite/" + observer); } else if (ObserverType.SelectedIndex == 1) { obj = CommonData.StkRoot.GetObjectFromPath("Facility/" + observer); } else { IAgExecCmdResult result = CommonData.StkRoot.ExecuteCommand("ShowNames * Class Sensor"); if (result[0] != "None") { string[] sensorArray = result[0].Split(null); foreach (var item in sensorArray) { if (item.Contains(observer)) { int scenarioPos = item.LastIndexOf("/Scenario/"); int scenarioNameSlashPos = item.IndexOf("/", scenarioPos + 10); item.Remove(0, scenarioNameSlashPos); obj = CommonData.StkRoot.GetObjectFromPath(item); } } } } IAgCrdnProvider objVgtPrv = obj.Vgt; IAgCrdnProvider tarVgt = tar.Vgt; IAgCrdnAngleBetweenVectors angle = null; IAgCrdnVectorDisplacement dispVector = AWBFunctions.GetCreateDisplacementVector(objVgtPrv, objVgtPrv.Points["Center"], tarVgt.Points["Center"], "To_" + target); //Create either solar phase or beta angle depending on user specified selection string angleName = null; if (AngleType.SelectedIndex == 0) { angleName = "To_" + target + "BetaAngle"; angle = AWBFunctions.GetCreateAngleBetweenVectors(objVgtPrv, dispVector as IAgCrdnVector, objVgtPrv.Vectors["Sun"], angleName, ""); } else if (AngleType.SelectedIndex == 1) { angleName = "To_" + target + "SolarPhaseAngle"; angle = AWBFunctions.GetCreateAngleBetweenVectors(objVgtPrv, dispVector as IAgCrdnVector, tarVgt.Vectors["Sun"], angleName, ""); } //Create Calc Scalar of angle IAgCrdnCalcScalarAngle cScalar = AWBFunctions.GetCreateAngleCalcScalar(objVgtPrv, angle as IAgCrdnAngle, angleName); //If a conditional is requested, then create it here if (EnableConstraint.Checked) { IAgCrdnConditionScalarBounds condition = AWBFunctions.GetCreateConditionScalarBounds(objVgtPrv, cScalar as IAgCrdnCalcScalar, angleName + "_Condition", AgECrdnConditionThresholdOption.eCrdnConditionThresholdOptionInsideMinMax); AWBFunctions.SetAngleConditionScalarBounds(condition, Double.Parse(ConstraintMin.Text), Double.Parse(ConstraintMax.Text)); } } } } MessageBox.Show("Component Creation Completed"); } }
private void Calculate_Click(object sender, EventArgs e) { IAgStkObject obj = null; IAgStkObject tar = null; foreach (var observer in CommonData.SelectedObservers) { foreach (var target in CommonData.SelectedTargets) { if (observer != target) { if (TargetType.SelectedIndex == 0) { tar = CommonData.StkRoot.GetObjectFromPath("Satellite/" + target); } else if (TargetType.SelectedIndex == 1) { tar = CommonData.StkRoot.GetObjectFromPath("Missile/" + target); } else if (TargetType.SelectedIndex == 2) { tar = CommonData.StkRoot.GetObjectFromPath("Aircraft/" + target); } if (ObserverType.SelectedIndex == 0) { obj = CommonData.StkRoot.GetObjectFromPath("Satellite/" + observer); } else if (ObserverType.SelectedIndex == 1) { obj = CommonData.StkRoot.GetObjectFromPath("Facility/" + observer); } else { IAgExecCmdResult result = CommonData.StkRoot.ExecuteCommand("ShowNames * Class Sensor"); if (result[0] != "None") { string[] sensorArray = result[0].Split(null); foreach (var item in sensorArray) { if (item.Contains(observer)) { int scenarioPos = item.LastIndexOf("/Scenario/"); int scenarioNameSlashPos = item.IndexOf("/", scenarioPos + 10); item.Remove(0, scenarioNameSlashPos); obj = CommonData.StkRoot.GetObjectFromPath(item); } } } } IAgCrdnProvider objVgtPrv = obj.Vgt; IAgCrdnProvider tarVgt = tar.Vgt; IAgCrdnVectorDisplacement dispVector; if (objVgtPrv.Vectors.Contains("To_" + target)) { dispVector = objVgtPrv.Vectors["To_" + target] as IAgCrdnVectorDisplacement; } else { dispVector = objVgtPrv.Vectors.Factory.CreateDisplacementVector("To_" + target, objVgtPrv.Points["Center"], tarVgt.Points["Center"]); } if (!objVgtPrv.Angles.Contains("To_" + target + "SolarPhaseAngle")) { IAgCrdnAngleBetweenVectors angle = (IAgCrdnAngleBetweenVectors)objVgtPrv.Angles.Factory.Create("To_" + target + "SolarPhaseAngle", "", AgECrdnAngleType.eCrdnAngleTypeBetweenVectors); angle.FromVector.SetVector(dispVector as IAgCrdnVector); angle.ToVector.SetVector(objVgtPrv.Vectors["Sun"]); } } } } }