附錄 A — Connect 指令速查

AGIPCEXP / STK Connect 常用參數整理

來源:AGIPCEXP常用參數.xlsx(個人工作筆記,14 個分頁)。
本檔把散在各分頁的指令依「物件類型」重新整理成可查表,並補上單位、時序、易錯點。
Connect 距離預設單位為公尺;所有涉及距離的段落開頭都應先 SetUnits / km。
頻率預設 Hz、功率 W、資料率 b/sec、天線角度 radians。
Connect 成功不回傳值;耗時指令(新增物件、計算)之間建議留 sleep 或稍候數秒。


0. 場景骨架(每個腳本開頭)

Unload / *                                                         # 卸載現有場景
New / Scenario MyScenario1                                         # 新增場景
SetAnalysisTimePeriod * "01 Dec 2024 00:00:00.000" "01 Dec 2024 00:30:00.000"
SetTimePeriod        * "01 Dec 2024 00:00:00.000" "01 Dec 2024 00:30:00.000"
Animate * Reset
SetUnits / km                                                      # 先設距離單位

MATLAB 專用:root.NewScenario('MyScenario');
場景時間(COM 物件模型):

scenario.SetTimePeriod('24 Feb 2020 16:00:00.000','25 Feb 2020 16:00:00.000');
scenario.StartTime = '24 Feb 2020 16:00:00.000';
scenario.StopTime  = '25 Feb 2020 16:00:00.000';
root.ExecuteCommand('Animate * Reset');

1. Aircraft(飛機)

New / */Aircraft MyAircraft1
Model */Aircraft MyAircraft1 "C:\Program Files\AGI\STK 12\STKData\VO\Models\Air\<model>"
Waypoints */Aircraft/MyAircraft1 Clear                            # 加點前先清除舊航點
New / */Aircraft/MyAircraft1/Sensor MySensor                      # 掛感測器

航點兩種給法(對應「已知速度算時間」或「已知時間算速度」):

DetTimeAccFromVel — 給速度,STK 算抵達時間:

# <Lat> <Lon> <Alt> <Speed> [<TurnRadius>]
AddWaypoint */Aircraft/MyAircraft1 DetTimeAccFromVel 25.061804 121.224645 5 0.1 1

DetVelFromTime — 給抵達時間,STK 算速度:

# <Lat> <Lon> <Alt> "<ArrivalTime>"
AddWaypoint */Aircraft/MyAircraft2 DetVelFromTime 25.061804 121.224645 1 "01 Dec 2024 00:05:00.00"

2. Ship(船艦)

New / */Ship MyShip1
Waypoints */Ship/MyShip1 Clear
# <Lat> <Lon> <Alt|Terrain> <Speed> [<TurnRadius>]
AddWaypoint */Ship/MyShip1 DetTimeAccFromVel 24.598300 121.876054 Terrain 0.1 0.15

3. Facility(地面設施)+ AzEl Mask

New / */Facility MyFacility1                                       # 新增後約等待 5 秒
SetPosition */Facility/MyFacility1 Geodetic 24.461129 118.417155 UseTerrain
SetAzElMask  */Facility/MyFacility1 Terrain
Graphics */Facility/MyFacility1 AzElMask Type Range Show On NumSteps 10 MinRange 0 MaxRange 100 Color cyan

4. Radar(雷達,掛在 Facility 下)

New / */Facility/MyFacility1/Radar MyRadar1
Radar */Facility/MyFacility1/Radar/MyRadar1 SetValue Model Monostatic
Radar */Facility/MyFacility1/Radar/MyRadar1 SetValue Model.Transmitter.Power 45.0
Radar */Facility/MyFacility1/Radar/MyRadar1 SetValue Model.Transmitter.Frequency 2.8 GHz
Point */Facility/MyFacility1/Radar/MyRadar1 Spinning 0 90 0 Continuous 0.2 360

地面 Sensor 視場 + 旋轉掃描(旋轉雷達/搜索):

New / */Facility/Fac1/Sensor Sen1
# Conical <水平角Min> <水平角Max> <俯仰Min> <俯仰Max>
Define */Facility/Fac1/Sensor/Sen1 Conical 0.0 30.0 10.0 20.0
# Spinning <初始Az> <初始El> <Roll> Continuous <轉速deg/s> <總旋轉deg>
Point */Facility/Fac1/Sensor/Sen1 Spinning 0 90 0 Continuous 30 360

5. Area Target(區域目標)

New / */AreaTarget MyAreaTarget1                                   # 未指定位置預設落在西非外海(0,0)
# 多邊形:Pattern LatLon <點數N> <lat1> <lon1> ... <latN> <lonN>
SetBoundary */AreaTarget/MyAreaTarget1 Pattern LatLon 4 24.560032 117.640594 24.560297 117.670697 24.571258 117.669028 24.571616 117.645613
GetBoundary */AreaTarget/MyAreaTarget1                             # 回傳所有邊界點(空白分隔)
# 橢圓:Ellipse <半長軸> <半短軸> <方位角deg>  (單位為 Connect 距離單位)
SetBoundary */AreaTarget/MyAreaTarget1 Ellipse 100 10 45

6. Report(報告輸出)

ReportCreate */Satellite/mysat Type Save Style "Access" File "D:\stkdata\access.txt" AccessObject */Facility/myfac

7. General(常用雜項)

Terrain * Add Type PDTT File "F:\STK\taiwan20m.pdtt"              # 加地形檔
VO * Declutter Enable On                                          # 3D 標籤防重疊
Unload / *                                                        # 卸載目前場景
Unload / */Chain/TestCh RemAssignedObjs                           # 卸載 Chain 並移除其指派物件

8. 星座(Constellation)與覆蓋/重訪分析

這是本筆記最有價值的部分:用種子衛星展 Walker 星座 → 建 CoverageDefinition →
用 FigureOfMerit 算「覆蓋率 / 最大重訪 / 平均重訪」。以下為純 Connect 指令骨幹
(原筆記以 Python root.ExecuteCommand() 包裝)。

8a. 種子衛星 → Walker Delta 星座

# 種子衛星(六根數:a=6800 km, e=0, i=90, w=12, RAAN=24, TA=180)
# 加 SAR 感測器: Define ... SAR <參數> TrackParentAltitude On
Define */Satellite/SatWalkerSeed/Sensor/sensar SAR 12 52 80 80 TrackParentAltitude On
# 展成 Walker:Type Delta / NumPlanes / NumSatsPerPlane / InterPlanePhaseIncrement
Walker */Satellite/SatWalkerSeed Type Delta NumPlanes 20 NumSatsPerPlane 5 InterPlanePhaseIncrement 0 ColorByPlane No ConstellationName SimConst

8b. CoverageDefinition + FigureOfMerit(覆蓋率/重訪)

New / */CoverageDefinition CovCalc
Cov */CoverageDefinition/CovCalc Grid AreaOfInterest LatBounds -70 70      # 依緯度設區域
Cov */CoverageDefinition/CovCalc Grid PointGranularity LatLon 20           # 網格間隔
Cov */CoverageDefinition/CovCalc Grid PointAltitude AltAboveTerrain 0.0
Cov */CoverageDefinition/CovCalc Access AutoRecompute Off                  # 關自動計算
Graphics */CoverageDefinition/CovCalc Static Points Off

# 最大重訪
New / */CoverageDefinition/CovCalc/FigureOfMerit fomrevisit
Cov */CoverageDefinition/CovCalc/FigureOfMerit/fomrevisit FOMDefine Definition RevisitTime Compute Maximum
# 平均重訪
New / */CoverageDefinition/CovCalc/FigureOfMerit fomrevisit_ave
Cov */CoverageDefinition/CovCalc/FigureOfMerit/fomrevisit_ave FOMDefine Definition RevisitTime Compute Average
# 簡單覆蓋
New / */CoverageDefinition/CovCalc/FigureOfMerit fom
Cov */CoverageDefinition/CovCalc/FigureOfMerit/fom FOMDefine Definition Simple Coverage
Graphics */CoverageDefinition/CovCalc/FigureOfMerit/fom FOMContours Animation StartStop 0 2 1 ColorRamp red green Show On
Graphics */CoverageDefinition/CovCalc/FigureOfMerit/fom Legend Animation Display On ShowOnMap On

# 指派資產(逐衛星感測器,或整個星座)
Cov */CoverageDefinition/CovCalc Asset */Satellite/<name>/Sensor/sensar Assign
Cov */CoverageDefinition/CovCalc Asset */Satellite/<name>/Sensor/sensar Activate
# 或:
Cov */CoverageDefinition/CovCalc Asset */Constellation/SimConst Assign
Cov */CoverageDefinition/CovCalc Asset */Constellation/SimConst Activate

Cov */CoverageDefinition/CovCalc Access Compute                            # 計算覆蓋

取回數值(需用 DataProvider,不是 ReportCreate):

# 覆蓋率
t  = fom.DataProviders.GetDataPrvFixedFromPath('Static Satisfaction').Exec()
coverageRate = t.DataSets.GetDataSetByName('Percent Satisfied').GetValues()[0]
# 最大 / 平均重訪(依緯度)
t2 = fomrevisit.DataProviders.GetDataPrvFixedFromPath('Value by Latitude').Exec()
revisit_max = t2.DataSets.GetDataSetByName('Maximum').GetValues()
t3 = fomrevisit_ave.DataProviders.GetDataPrvFixedFromPath('Value by Latitude').Exec()
revisit_ave = t3.DataSets.GetDataSetByName('Average').GetValues()

8c. CoverageDefinition + Facility 約束(地面站可見性覆蓋)

New / */CoverageDefinition MyCoverageDefinition
Cov */CoverageDefinition/MyCoverageDefinition Grid AreaOfInterest Custom AreaTarget AreaTarget/MyAreaTarget
Cov */CoverageDefinition/MyCoverageDefinition Grid PointGranularity LatLon 5
Cov */CoverageDefinition/MyCoverageDefinition Asset Satellite/MySatellite Assign
Cov */CoverageDefinition/MyCoverageDefinition Grid GridConstraint Facility UsePointAltitudeType Facility/MyFacility UseActualObject
Cov */CoverageDefinition/MyCoverageDefinition Access Compute
Cov */CoverageDefinition/MyCoverageDefinition Access DataRetention All AutoRecompute Off
Cov */CoverageDefinition/MyCoverageDefinition Access SaveMode Save

9. STK Python API 建星座(新版 agi.stk12,非 Connect)

from agi.stk12.stkengine import STKEngine
stk = STKEngine.StartApplication(noGraphics=True)   # 無介面 headless
# 或連現有桌面:
from agi.stk12.stkdesktop import STKDesktop
from agi.stk12.stkobjects import *
stk  = STKDesktop.AttachToApplication()
root = stk.Root
scenario = root.CurrentScenario

# 種子衛星 + 六根數(物件模型)
sat = scenario.Children.New(AgESTKObjectType.eSatellite, 'SatWalkerSeed')
kep = sat.Propagator.InitialState.Representation.ConvertTo(1)   # eOrbitStateClassical
kep.SizeShapeType          = 4    # SMA + Ecc
kep.LocationType           = 5    # TrueAnomaly
kep.Orientation.AscNodeType= 1    # RAAN
kep.SizeShape.SemiMajorAxis= 6800 # km
kep.SizeShape.Eccentricity = 0
kep.Orientation.Inclination= 90
kep.Orientation.ArgOfPerigee=12
kep.Orientation.AscNode.Value=24
kep.Location.Value         = 180
sat.Propagator.InitialState.Representation.Assign(kep)
sat.Propagator.Propagate()

參考連結(原檔內)