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
class info:
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]
def partname_of_partID(partID: int) -> str:
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.

def partID_of_partname(part_name: str) -> int:
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.

def this_part_id(partID=1) -> int:
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.

def min_part_id(partID=1) -> int:
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.

def max_part_id(partID=1) -> int:
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.

def part_type(partID: int) -> str:
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???

def is_part_active(partID: int) -> bool:
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.

def is_part_under_water(partID: int) -> float:
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.

class perfromance:
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]
def part_mass(partID: int) -> float:
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.

def part_dry_mass(partID: int) -> float:
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.

def part_fuel_mass(partID: int) -> float:
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.

def part_temperature(partID: int) -> float:
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]

Get the temperature of a part ID in K.

def part_drag(partID: int) -> float:
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]

Get the drag of a part ID in N.

def part_position(partID: int) -> numpy.ndarray:
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.

def part_loacl_to_eci(partID: int, vector: numpy.ndarray) -> numpy.ndarray:
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.

def part_eci_to_local(partID: int, vector: numpy.ndarray) -> numpy.ndarray:
 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.

def get_variable(part_id: int, variable_name: str) -> str:
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.???

def get_variable_list(part_id: int, variable_name: str) -> list:
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.