JMOT.part
1from JMOT import connect, extra 2from typing import Literal 3import numpy as np 4 5_PART_SIGNALS = { 6 "partname_of_partID": 400, 7 "part_mass": 401, 8 "part_dry_mass": 402, 9 "part_fuel_mass": 403, 10 "part_active": 404, 11 "part_type": 405, 12 "part_position": 406, 13 "part_temperature": 407, 14 "part_drag": 408, 15 "this_part_id": 409, 16 "min_part_id": 410, 17 "max_part_id": 411, 18 "is_part_under_water": 412, 19 "partID_of_partname": 415, 20 "get_variable": 416, 21 "get_variable_list": 417, 22 "part_loacl_to_eci":365, 23 "part_eci_to_local":366 24} 25 26class info: 27 def partname_of_partID(partID:int)->str: 28 '''Get the name of a part ID.\n''' 29 rec = connect._send_message(f"true<<{_PART_SIGNALS['partname_of_partID']}<<{partID}") 30 return rec[0] 31 def partID_of_partname(part_name:str)->int: 32 '''Get the part ID of a part name.\n''' 33 rec = connect._send_message(f"true<<{_PART_SIGNALS['partID_of_partname']}<<{part_name}") 34 return rec[0] 35 def this_part_id(partID=1)->int: 36 '''Get the part ID of the part that is currently being called.\n''' 37 rec = connect._send_message(f"true<<{_PART_SIGNALS['this_part_id']}<<{partID}") 38 return rec[0] 39 def min_part_id(partID=1)->int: 40 '''Get the minimum part ID of the current vessel.\n''' 41 rec = connect._send_message(f"true<<{_PART_SIGNALS['min_part_id']}<<{partID}") 42 return rec[0] 43 def max_part_id(partID=1)->int: 44 '''Get the maximum part ID of the current vessel.\n''' 45 rec = connect._send_message(f"true<<{_PART_SIGNALS['max_part_id']}<<{partID}") 46 return rec[0] 47 def part_type(partID:int)->str: 48 '''Get the type of a part ID.\n 49 type??? 50 ''' 51 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_type']}<<{partID}") 52 return rec[0] 53 def is_part_active(partID:int)->bool: 54 '''Get the status of whether a part is active.\n 55 if active, return True, else return False.''' 56 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_active']}<<{partID}") 57 return rec[0] 58 def is_part_under_water(partID:int)->float: 59 '''Get the status of whether a part is under water.\n''' 60 rec = connect._send_message(f"true<<{_PART_SIGNALS['is_part_under_water']}<<{partID}") 61 return rec[0] 62 63 64class perfromance: 65 def part_mass(partID:int)->float: 66 '''Get the mass of a part ID.\n''' 67 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_mass']}<<{partID}") 68 return rec[0] 69 def part_dry_mass(partID:int)->float: 70 '''Get the dry mass of a part ID.\n''' 71 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_dry_mass']}<<{partID}") 72 return rec[0] 73 def part_fuel_mass(partID:int)->float: 74 '''Get the fuel mass of a part ID.\n''' 75 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_fuel_mass']}<<{partID}") 76 return rec[0] 77 def part_temperature(partID:int)->float: 78 '''Get the temperature of a part ID in K.\n''' 79 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_temperature']}<<{partID}") 80 return rec[0] 81 def part_drag(partID:int)->float: 82 '''Get the drag of a part ID in N.\n''' 83 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_drag']}<<{partID}") 84 return rec[0] 85 86def part_position(partID:int)->np.ndarray: 87 '''Get the position of a part ID in ECI coordinates.\n''' 88 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_position']}<<{partID}") 89 vec = extra.tuple2array(rec[0]) 90 return vec 91def part_loacl_to_eci(partID:int, vector:np.ndarray)->np.ndarray: 92 '''Convert part vector in local coordinates of a part to ECI coordinates.\n''' 93 v = extra.array2tuple(vector) 94 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_loacl_to_eci']}<<{partID}<<{v}") 95 vec = extra.tuple2array(rec[0]) 96 return vec 97def part_eci_to_local(partID:int, vector:np.ndarray)->np.ndarray: 98 '''Convert part vector in ECI coordinates to local coordinates of a part.\n''' 99 v = extra.array2tuple(vector) 100 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_eci_to_local']}<<{partID}<<{v}") 101 vec = extra.tuple2array(rec[0]) 102 return vec 103 104def get_variable(part_id:int, variable_name:str)->str: 105 '''Get the value of a variable of a part.\n 106 i don't know what return when part_id is 0.??? 107 ''' 108 rec = connect._send_message(f"true<<{_PART_SIGNALS['get_variable']}<<{part_id}<<{variable_name}") 109 return rec[0] 110def get_variable_list(part_id:int, variable_name:str)->list: 111 '''Get the value of a list variable of a part.\n''' 112 rec = connect._send_message(f"true<<{_PART_SIGNALS['get_variable_list']}<<{part_id}<<{variable_name}") 113 return rec
27class info: 28 def partname_of_partID(partID:int)->str: 29 '''Get the name of a part ID.\n''' 30 rec = connect._send_message(f"true<<{_PART_SIGNALS['partname_of_partID']}<<{partID}") 31 return rec[0] 32 def partID_of_partname(part_name:str)->int: 33 '''Get the part ID of a part name.\n''' 34 rec = connect._send_message(f"true<<{_PART_SIGNALS['partID_of_partname']}<<{part_name}") 35 return rec[0] 36 def this_part_id(partID=1)->int: 37 '''Get the part ID of the part that is currently being called.\n''' 38 rec = connect._send_message(f"true<<{_PART_SIGNALS['this_part_id']}<<{partID}") 39 return rec[0] 40 def min_part_id(partID=1)->int: 41 '''Get the minimum part ID of the current vessel.\n''' 42 rec = connect._send_message(f"true<<{_PART_SIGNALS['min_part_id']}<<{partID}") 43 return rec[0] 44 def max_part_id(partID=1)->int: 45 '''Get the maximum part ID of the current vessel.\n''' 46 rec = connect._send_message(f"true<<{_PART_SIGNALS['max_part_id']}<<{partID}") 47 return rec[0] 48 def part_type(partID:int)->str: 49 '''Get the type of a part ID.\n 50 type??? 51 ''' 52 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_type']}<<{partID}") 53 return rec[0] 54 def is_part_active(partID:int)->bool: 55 '''Get the status of whether a part is active.\n 56 if active, return True, else return False.''' 57 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_active']}<<{partID}") 58 return rec[0] 59 def is_part_under_water(partID:int)->float: 60 '''Get the status of whether a part is under water.\n''' 61 rec = connect._send_message(f"true<<{_PART_SIGNALS['is_part_under_water']}<<{partID}") 62 return rec[0]
28 def partname_of_partID(partID:int)->str: 29 '''Get the name of a part ID.\n''' 30 rec = connect._send_message(f"true<<{_PART_SIGNALS['partname_of_partID']}<<{partID}") 31 return rec[0]
Get the name of a part ID.
32 def partID_of_partname(part_name:str)->int: 33 '''Get the part ID of a part name.\n''' 34 rec = connect._send_message(f"true<<{_PART_SIGNALS['partID_of_partname']}<<{part_name}") 35 return rec[0]
Get the part ID of a part name.
36 def this_part_id(partID=1)->int: 37 '''Get the part ID of the part that is currently being called.\n''' 38 rec = connect._send_message(f"true<<{_PART_SIGNALS['this_part_id']}<<{partID}") 39 return rec[0]
Get the part ID of the part that is currently being called.
40 def min_part_id(partID=1)->int: 41 '''Get the minimum part ID of the current vessel.\n''' 42 rec = connect._send_message(f"true<<{_PART_SIGNALS['min_part_id']}<<{partID}") 43 return rec[0]
Get the minimum part ID of the current vessel.
44 def max_part_id(partID=1)->int: 45 '''Get the maximum part ID of the current vessel.\n''' 46 rec = connect._send_message(f"true<<{_PART_SIGNALS['max_part_id']}<<{partID}") 47 return rec[0]
Get the maximum part ID of the current vessel.
48 def part_type(partID:int)->str: 49 '''Get the type of a part ID.\n 50 type??? 51 ''' 52 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_type']}<<{partID}") 53 return rec[0]
Get the type of a part ID.
type???
54 def is_part_active(partID:int)->bool: 55 '''Get the status of whether a part is active.\n 56 if active, return True, else return False.''' 57 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_active']}<<{partID}") 58 return rec[0]
Get the status of whether a part is active.
if active, return True, else return False.
59 def is_part_under_water(partID:int)->float: 60 '''Get the status of whether a part is under water.\n''' 61 rec = connect._send_message(f"true<<{_PART_SIGNALS['is_part_under_water']}<<{partID}") 62 return rec[0]
Get the status of whether a part is under water.
65class perfromance: 66 def part_mass(partID:int)->float: 67 '''Get the mass of a part ID.\n''' 68 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_mass']}<<{partID}") 69 return rec[0] 70 def part_dry_mass(partID:int)->float: 71 '''Get the dry mass of a part ID.\n''' 72 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_dry_mass']}<<{partID}") 73 return rec[0] 74 def part_fuel_mass(partID:int)->float: 75 '''Get the fuel mass of a part ID.\n''' 76 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_fuel_mass']}<<{partID}") 77 return rec[0] 78 def part_temperature(partID:int)->float: 79 '''Get the temperature of a part ID in K.\n''' 80 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_temperature']}<<{partID}") 81 return rec[0] 82 def part_drag(partID:int)->float: 83 '''Get the drag of a part ID in N.\n''' 84 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_drag']}<<{partID}") 85 return rec[0]
66 def part_mass(partID:int)->float: 67 '''Get the mass of a part ID.\n''' 68 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_mass']}<<{partID}") 69 return rec[0]
Get the mass of a part ID.
70 def part_dry_mass(partID:int)->float: 71 '''Get the dry mass of a part ID.\n''' 72 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_dry_mass']}<<{partID}") 73 return rec[0]
Get the dry mass of a part ID.
74 def part_fuel_mass(partID:int)->float: 75 '''Get the fuel mass of a part ID.\n''' 76 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_fuel_mass']}<<{partID}") 77 return rec[0]
Get the fuel mass of a part ID.
87def part_position(partID:int)->np.ndarray: 88 '''Get the position of a part ID in ECI coordinates.\n''' 89 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_position']}<<{partID}") 90 vec = extra.tuple2array(rec[0]) 91 return vec
Get the position of a part ID in ECI coordinates.
92def part_loacl_to_eci(partID:int, vector:np.ndarray)->np.ndarray: 93 '''Convert part vector in local coordinates of a part to ECI coordinates.\n''' 94 v = extra.array2tuple(vector) 95 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_loacl_to_eci']}<<{partID}<<{v}") 96 vec = extra.tuple2array(rec[0]) 97 return vec
Convert part vector in local coordinates of a part to ECI coordinates.
98def part_eci_to_local(partID:int, vector:np.ndarray)->np.ndarray: 99 '''Convert part vector in ECI coordinates to local coordinates of a part.\n''' 100 v = extra.array2tuple(vector) 101 rec = connect._send_message(f"true<<{_PART_SIGNALS['part_eci_to_local']}<<{partID}<<{v}") 102 vec = extra.tuple2array(rec[0]) 103 return vec
Convert part vector in ECI coordinates to local coordinates of a part.
105def get_variable(part_id:int, variable_name:str)->str: 106 '''Get the value of a variable of a part.\n 107 i don't know what return when part_id is 0.??? 108 ''' 109 rec = connect._send_message(f"true<<{_PART_SIGNALS['get_variable']}<<{part_id}<<{variable_name}") 110 return rec[0]
Get the value of a variable of a part.
i don't know what return when part_id is 0.???
111def get_variable_list(part_id:int, variable_name:str)->list: 112 '''Get the value of a list variable of a part.\n''' 113 rec = connect._send_message(f"true<<{_PART_SIGNALS['get_variable_list']}<<{part_id}<<{variable_name}") 114 return rec
Get the value of a list variable of a part.