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 createVectorButton_Click(object sender, EventArgs e) { //Create vector between objects string accessFromName = cbAccessFrom.GetItemText(cbAccessFrom.SelectedItem); string accessToName = cbAccessTo.GetItemText(cbAccessTo.SelectedItem); IAgStkObject fromObj = CommonData.StkRoot.GetObjectFromPath(accessFromName); IAgStkObject toObj = CommonData.StkRoot.GetObjectFromPath(accessToName); IAgCrdnVectorGroup vectors = fromObj.Vgt.Vectors; IAgCrdnVectorDisplacement vector = null; string vectorName = "From" + fromObj.InstanceName + "To" + toObj.InstanceName; if (vectors.Contains(vectorName)) { vector = (IAgCrdnVectorDisplacement)vectors[vectorName]; } else { vector = (IAgCrdnVectorDisplacement)vectors.Factory.Create(vectorName, "description", AGI.STKVgt.AgECrdnVectorType.eCrdnVectorTypeDisplacement); } vector.Destination.SetPoint(toObj.Vgt.Points["Center"]); vector.Origin.SetPoint(fromObj.Vgt.Points["Center"]); // Visualize //if (fromObj.ClassName == "Facility") //{ // fromObj2 = fromObj as IAgFacility; //} //else if (fromObj.ClassName == "Satellite") //{ // fromObj2 = fromObj as IAgSatellite; //} //else if (fromObj.ClassName == "Sensor") //{ // fromObj2 = fromObj as IAgSensor; //} //else if (fromObj.ClassName == "Aircraft") //{ // fromObj2 = fromObj as IAgAircraft; //} //else //{ // return; //} try { IAgFacility fromObj2 = fromObj as IAgFacility; IAgVORefCrdnVector boresightVector = fromObj2.VO.Vector.RefCrdns.Add(AgEGeometricElemType.eVectorElem, fromObj.ClassName + "/" + fromObj.InstanceName + " " + vectorName + " Vector") as IAgVORefCrdnVector; fromObj2.VO.Vector.VectorSizeScale = 4.0; } catch { } try { IAgSatellite fromObj2 = fromObj as IAgSatellite; IAgVORefCrdnVector boresightVector = fromObj2.VO.Vector.RefCrdns.Add(AgEGeometricElemType.eVectorElem, fromObj.ClassName + "/" + fromObj.InstanceName + " " + vectorName + " Vector") as IAgVORefCrdnVector; fromObj2.VO.Vector.VectorSizeScale = 4.0; } catch { } try { IAgAircraft fromObj2 = fromObj as IAgAircraft; IAgVORefCrdnVector boresightVector = fromObj2.VO.Vector.RefCrdns.Add(AgEGeometricElemType.eVectorElem, fromObj.ClassName + "/" + fromObj.InstanceName + " " + vectorName + " Vector") as IAgVORefCrdnVector; fromObj2.VO.Vector.VectorSizeScale = 4.0; } catch { } try { IAgSensor fromObj2 = fromObj as IAgSensor; IAgVORefCrdnVector boresightVector = fromObj2.VO.Vector.RefCrdns.Add(AgEGeometricElemType.eVectorElem, fromObj.ClassName + "/" + fromObj.InstanceName + " " + vectorName + " Vector") as IAgVORefCrdnVector; fromObj2.VO.Vector.VectorSizeScale = 4.0; } catch { } }