Parts¶
The following classes allow interaction with a vessels individual parts.
Parts¶
-
class Parts¶
Instances of this class are used to interact with the parts of a vessel. An instance can be obtained by calling
Vessel::parts()
.-
Part root()¶
The vessels root part.
Note
See the discussion on Trees of Parts.
-
std::vector<Part> with_name(std::string name)¶
A list of parts whose
Part::name()
is name.- Parameters:
-
std::vector<Part> with_title(std::string title)¶
A list of all parts whose
Part::title()
is title.- Parameters:
-
std::vector<Part> with_tag(std::string tag)¶
A list of all parts whose
Part::tag()
is tag.- Parameters:
-
std::vector<Part> with_module(std::string module_name)¶
A list of all parts that contain a
Module
whoseModule::name()
is module_name.- Parameters:
-
std::vector<Part> in_stage(int32_t stage)¶
A list of all parts that are activated in the given stage.
- Parameters:
Note
See the discussion on Staging.
-
std::vector<Part> in_decouple_stage(int32_t stage)¶
A list of all parts that are decoupled in the given stage.
- Parameters:
Note
See the discussion on Staging.
-
std::vector<Module> modules_with_name(std::string module_name)¶
A list of modules (combined across all parts in the vessel) whose
Module::name()
is module_name.- Parameters:
-
std::vector<Antenna> antennas()¶
A list of all antennas in the vessel.
Note
If RemoteTech is installed, this will always return an empty list. To interact with RemoteTech antennas, use the RemoteTech service APIs.
-
std::vector<ControlSurface> control_surfaces()¶
A list of all control surfaces in the vessel.
-
std::vector<DockingPort> docking_ports()¶
A list of all docking ports in the vessel.
-
std::vector<Engine> engines()¶
A list of all engines in the vessel.
Note
This includes any part that generates thrust. This covers many different types of engine, including liquid fuel rockets, solid rocket boosters, jet engines and RCS thrusters.
-
std::vector<Experiment> experiments()¶
A list of all science experiments in the vessel.
-
std::vector<LaunchClamp> launch_clamps()¶
A list of all launch clamps attached to the vessel.
-
std::vector<ResourceDrain> resource_drains()¶
A list of all resource drains in the vessel.
-
std::vector<ReactionWheel> reaction_wheels()¶
A list of all reaction wheels in the vessel.
-
std::vector<ResourceConverter> resource_converters()¶
A list of all resource converters in the vessel.
-
std::vector<ResourceHarvester> resource_harvesters()¶
A list of all resource harvesters in the vessel.
-
std::vector<RoboticHinge> robotic_hinges()¶
A list of all robotic hinges in the vessel.
-
std::vector<RoboticPiston> robotic_pistons()¶
A list of all robotic pistons in the vessel.
-
std::vector<RoboticRotation> robotic_rotations()¶
A list of all robotic rotations in the vessel.
-
std::vector<RoboticRotor> robotic_rotors()¶
A list of all robotic rotors in the vessel.
-
std::vector<SolarPanel> solar_panels()¶
A list of all solar panels in the vessel.
-
Part root()¶
Part¶
-
class Part¶
Represents an individual part. Vessels are made up of multiple parts. Instances of this class can be obtained by several methods in
Parts
.-
std::string name()¶
Internal name of the part, as used in part cfg files. For example “Mark1-2Pod”.
-
std::string title()¶
Title of the part, as shown when the part is right clicked in-game. For example “Mk1-2 Command Pod”.
-
std::string tag()¶
-
void set_tag(std::string value)¶
The name tag for the part. Can be set to a custom string using the in-game user interface.
Note
This string is shared with kOS if it is installed.
-
std::string flag_url()¶
-
void set_flag_url(std::string value)¶
The asset URL for the part’s flag.
-
bool highlighted()¶
-
void set_highlighted(bool value)¶
Whether the part is highlighted.
-
std::tuple<double, double, double> highlight_color()¶
-
void set_highlight_color(std::tuple<double, double, double> value)¶
The color used to highlight the part, as an RGB triple.
-
double cost()¶
The cost of the part, in units of funds.
-
Part parent()¶
The parts parent. Returns
NULL
if the part does not have a parent. This, in combination withPart::children()
, can be used to traverse the vessels parts tree.Note
See the discussion on Trees of Parts.
-
std::vector<Part> children()¶
The parts children. Returns an empty list if the part has no children. This, in combination with
Part::parent()
, can be used to traverse the vessels parts tree.Note
See the discussion on Trees of Parts.
-
bool axially_attached()¶
Whether the part is axially attached to its parent, i.e. on the top or bottom of its parent. If the part has no parent, returns
false
.Note
See the discussion on Attachment Modes.
-
bool radially_attached()¶
Whether the part is radially attached to its parent, i.e. on the side of its parent. If the part has no parent, returns
false
.Note
See the discussion on Attachment Modes.
-
int32_t stage()¶
The stage in which this part will be activated. Returns -1 if the part is not activated by staging.
Note
See the discussion on Staging.
-
int32_t decouple_stage()¶
The stage in which this part will be decoupled. Returns -1 if the part is never decoupled from the vessel.
Note
See the discussion on Staging.
-
double mass()¶
The current mass of the part, including resources it contains, in kilograms. Returns zero if the part is massless.
-
double dry_mass()¶
The mass of the part, not including any resources it contains, in kilograms. Returns zero if the part is massless.
-
bool shielded()¶
Whether the part is shielded from the exterior of the vessel, for example by a fairing.
-
float dynamic_pressure()¶
The dynamic pressure acting on the part, in Pascals.
-
double impact_tolerance()¶
The impact tolerance of the part, in meters per second.
-
double temperature()¶
Temperature of the part, in Kelvin.
-
double skin_temperature()¶
Temperature of the skin of the part, in Kelvin.
-
double max_temperature()¶
Maximum temperature that the part can survive, in Kelvin.
-
double max_skin_temperature()¶
Maximum temperature that the skin of the part can survive, in Kelvin.
-
float thermal_mass()¶
A measure of how much energy it takes to increase the internal temperature of the part, in Joules per Kelvin.
-
float thermal_skin_mass()¶
A measure of how much energy it takes to increase the skin temperature of the part, in Joules per Kelvin.
-
float thermal_resource_mass()¶
A measure of how much energy it takes to increase the temperature of the resources contained in the part, in Joules per Kelvin.
-
float thermal_conduction_flux()¶
The rate at which heat energy is conducting into or out of the part via contact with other parts. Measured in energy per unit time, or power, in Watts. A positive value means the part is gaining heat energy, and negative means it is losing heat energy.
-
float thermal_convection_flux()¶
The rate at which heat energy is convecting into or out of the part from the surrounding atmosphere. Measured in energy per unit time, or power, in Watts. A positive value means the part is gaining heat energy, and negative means it is losing heat energy.
-
float thermal_radiation_flux()¶
The rate at which heat energy is radiating into or out of the part from the surrounding environment. Measured in energy per unit time, or power, in Watts. A positive value means the part is gaining heat energy, and negative means it is losing heat energy.
-
float thermal_internal_flux()¶
The rate at which heat energy is begin generated by the part. For example, some engines generate heat by combusting fuel. Measured in energy per unit time, or power, in Watts. A positive value means the part is gaining heat energy, and negative means it is losing heat energy.
-
float thermal_skin_to_internal_flux()¶
The rate at which heat energy is transferring between the part’s skin and its internals. Measured in energy per unit time, or power, in Watts. A positive value means the part’s internals are gaining heat energy, and negative means its skin is gaining heat energy.
-
uint32_t available_seats()¶
How many open seats the part has.
-
bool crossfeed()¶
Whether this part is crossfeed capable.
-
bool is_fuel_line()¶
Whether this part is a fuel line.
-
std::vector<Part> fuel_lines_from()¶
The parts that are connected to this part via fuel lines, where the direction of the fuel line is into this part.
Note
See the discussion on Fuel Lines.
-
std::vector<Part> fuel_lines_to()¶
The parts that are connected to this part via fuel lines, where the direction of the fuel line is out of this part.
Note
See the discussion on Fuel Lines.
-
Antenna antenna()¶
An
Antenna
if the part is an antenna, otherwiseNULL
.Note
If RemoteTech is installed, this will always return
NULL
. To interact with RemoteTech antennas, use the RemoteTech service APIs.
-
ControlSurface control_surface()¶
A
ControlSurface
if the part is an aerodynamic control surface, otherwiseNULL
.
-
DockingPort docking_port()¶
A
DockingPort
if the part is a docking port, otherwiseNULL
.
-
Experiment experiment()¶
An
Experiment
if the part contains a single science experiment, otherwiseNULL
.Note
Throws an exception if the part contains more than one experiment. In that case, use
Part::experiments()
to get the list of experiments in the part.
-
std::vector<Experiment> experiments()¶
A list of
Experiment
objects that the part contains.
-
Intake intake()¶
An
Intake
if the part is an intake, otherwiseNULL
.Note
This includes any part that generates thrust. This covers many different types of engine, including liquid fuel rockets, solid rocket boosters and jet engines. For RCS thrusters see
RCS
.
-
LaunchClamp launch_clamp()¶
A
LaunchClamp
if the part is a launch clamp, otherwiseNULL
.
-
ResourceDrain resource_drain()¶
A
ResourceDrain
if the part is a resource drain, otherwiseNULL
.
-
ReactionWheel reaction_wheel()¶
A
ReactionWheel
if the part is a reaction wheel, otherwiseNULL
.
-
ResourceConverter resource_converter()¶
A
ResourceConverter
if the part is a resource converter, otherwiseNULL
.
-
ResourceHarvester resource_harvester()¶
A
ResourceHarvester
if the part is a resource harvester, otherwiseNULL
.
-
RoboticController robotic_controller()¶
A
RoboticController
if the part is a robotic controller, otherwiseNULL
.
-
RoboticHinge robotic_hinge()¶
A
RoboticHinge
if the part is a robotic hinge, otherwiseNULL
.
-
RoboticPiston robotic_piston()¶
A
RoboticPiston
if the part is a robotic piston, otherwiseNULL
.
-
RoboticRotation robotic_rotation()¶
A
RoboticRotation
if the part is a robotic rotation servo, otherwiseNULL
.
-
RoboticRotor robotic_rotor()¶
A
RoboticRotor
if the part is a robotic rotor, otherwiseNULL
.
-
SolarPanel solar_panel()¶
A
SolarPanel
if the part is a solar panel, otherwiseNULL
.
-
std::tuple<double, double, double> position(ReferenceFrame reference_frame)¶
The position of the part in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned position vector is in.
- Returns:
The position as a vector.
Note
This is a fixed position in the part, defined by the parts model. It s not necessarily the same as the parts center of mass. Use
Part::center_of_mass()
to get the parts center of mass.
-
std::tuple<double, double, double> center_of_mass(ReferenceFrame reference_frame)¶
The position of the parts center of mass in the given reference frame. If the part is physicsless, this is equivalent to
Part::position()
.- Parameters:
reference_frame – The reference frame that the returned position vector is in.
- Returns:
The position as a vector.
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> bounding_box(ReferenceFrame reference_frame)¶
The axis-aligned bounding box of the part in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned position vectors are in.
- Returns:
The positions of the minimum and maximum vertices of the box, as position vectors.
Note
This is computed from the collision mesh of the part. If the part is not collidable, the box has zero volume and is centered on the
Part::position()
of the part.
-
std::tuple<double, double, double> direction(ReferenceFrame reference_frame)¶
The direction the part points in, in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned direction is in.
- Returns:
The direction as a unit vector.
-
std::tuple<double, double, double> velocity(ReferenceFrame reference_frame)¶
The linear velocity of the part in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned velocity vector is in.
- Returns:
The velocity as a vector. The vector points in the direction of travel, and its magnitude is the speed of the body in meters per second.
-
std::tuple<double, double, double, double> rotation(ReferenceFrame reference_frame)¶
The rotation of the part, in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned rotation is in.
- Returns:
The rotation as a quaternion of the form \((x, y, z, w)\).
-
std::tuple<double, double, double> moment_of_inertia()¶
The moment of inertia of the part in \(kg.m^2\) around its center of mass in the parts reference frame (
ReferenceFrame
).
-
std::vector<double> inertia_tensor()¶
The inertia tensor of the part in the parts reference frame (
ReferenceFrame
). Returns the 3x3 matrix as a list of elements, in row-major order.
-
ReferenceFrame reference_frame()¶
The reference frame that is fixed relative to this part, and centered on a fixed position within the part, defined by the parts model.
The origin is at the position of the part, as returned by
Part::position()
.The axes rotate with the part.
The x, y and z axis directions depend on the design of the part.
Note
For docking port parts, this reference frame is not necessarily equivalent to the reference frame for the docking port, returned by
DockingPort::reference_frame()
.
-
ReferenceFrame center_of_mass_reference_frame()¶
The reference frame that is fixed relative to this part, and centered on its center of mass.
The origin is at the center of mass of the part, as returned by
Part::center_of_mass()
.The axes rotate with the part.
The x, y and z axis directions depend on the design of the part.
Note
For docking port parts, this reference frame is not necessarily equivalent to the reference frame for the docking port, returned by
DockingPort::reference_frame()
.
-
Force add_force(std::tuple<double, double, double> force, std::tuple<double, double, double> position, ReferenceFrame reference_frame)¶
Exert a constant force on the part, acting at the given position.
- Parameters:
force – A vector pointing in the direction that the force acts, with its magnitude equal to the strength of the force in Newtons.
position – The position at which the force acts, as a vector.
reference_frame – The reference frame that the force and position are in.
- Returns:
An object that can be used to remove or modify the force.
-
void instantaneous_force(std::tuple<double, double, double> force, std::tuple<double, double, double> position, ReferenceFrame reference_frame)¶
Exert an instantaneous force on the part, acting at the given position.
- Parameters:
force – A vector pointing in the direction that the force acts, with its magnitude equal to the strength of the force in Newtons.
position – The position at which the force acts, as a vector.
reference_frame – The reference frame that the force and position are in.
Note
The force is applied instantaneously in a single physics update.
-
void set_glow(bool value)¶
Whether the part is glowing.
-
AutoStrutMode auto_strut_mode()¶
Auto-strut mode.
-
std::string name()¶
-
enum struct AutoStrutMode¶
The state of an auto-strut.
Part::auto_strut_mode()
-
enumerator off¶
Off
-
enumerator root¶
Root
-
enumerator heaviest¶
Heaviest
-
enumerator grandparent¶
Grandparent
-
enumerator force_root¶
ForceRoot
-
enumerator force_heaviest¶
ForceHeaviest
-
enumerator force_grandparent¶
ForceGrandparent
-
enumerator off¶
-
class Force¶
Obtained by calling
Part::add_force()
.-
std::tuple<double, double, double> force_vector()¶
-
void set_force_vector(std::tuple<double, double, double> value)¶
The force vector, in Newtons.
- Returns:
A vector pointing in the direction that the force acts, with its magnitude equal to the strength of the force in Newtons.
-
std::tuple<double, double, double> position()¶
-
void set_position(std::tuple<double, double, double> value)¶
The position at which the force acts, in reference frame
ReferenceFrame
.- Returns:
The position as a vector.
-
ReferenceFrame reference_frame()¶
-
void set_reference_frame(ReferenceFrame value)¶
The reference frame of the force vector and position.
-
void remove()¶
Remove the force.
-
std::tuple<double, double, double> force_vector()¶
Module¶
-
class Module¶
This can be used to interact with a specific part module. This includes part modules in stock KSP, and those added by mods.
In KSP, each part has zero or more PartModules associated with it. Each one contains some of the functionality of the part. For example, an engine has a “ModuleEngines” part module that contains all the functionality of an engine.
-
std::string name()¶
Name of the PartModule. For example, “ModuleEngines”.
-
std::map<std::string, std::string> fields()¶
The modules field names and their associated values, as a dictionary. These are the values visible in the right-click menu of the part.
Note
Throws an exception if there is more than one field with the same name. In that case, use
Module::fields_by_id()
to get the fields by identifier.
-
std::map<std::string, std::string> fields_by_id()¶
The modules field identifiers and their associated values, as a dictionary. These are the values visible in the right-click menu of the part.
-
bool has_field(std::string name)¶
Returns
true
if the module has a field with the given name.- Parameters:
name – Name of the field.
-
bool has_field_with_id(std::string id)¶
Returns
true
if the module has a field with the given identifier.- Parameters:
id – Identifier of the field.
-
std::string get_field(std::string name)¶
Returns the value of a field with the given name.
- Parameters:
name – Name of the field.
-
std::string get_field_by_id(std::string id)¶
Returns the value of a field with the given identifier.
- Parameters:
id – Identifier of the field.
-
void set_field_int(std::string name, int32_t value)¶
Set the value of a field to the given integer number.
- Parameters:
name – Name of the field.
value – Value to set.
-
void set_field_int_by_id(std::string id, int32_t value)¶
Set the value of a field to the given integer number.
- Parameters:
id – Identifier of the field.
value – Value to set.
-
void set_field_float(std::string name, float value)¶
Set the value of a field to the given floating point number.
- Parameters:
name – Name of the field.
value – Value to set.
-
void set_field_float_by_id(std::string id, float value)¶
Set the value of a field to the given floating point number.
- Parameters:
id – Identifier of the field.
value – Value to set.
-
void set_field_string(std::string name, std::string value)¶
Set the value of a field to the given string.
- Parameters:
name – Name of the field.
value – Value to set.
-
void set_field_string_by_id(std::string id, std::string value)¶
Set the value of a field to the given string.
- Parameters:
id – Identifier of the field.
value – Value to set.
-
void set_field_bool(std::string name, bool value)¶
Set the value of a field to true or false.
- Parameters:
name – Name of the field.
value – Value to set.
-
void set_field_bool_by_id(std::string id, bool value)¶
Set the value of a field to true or false.
- Parameters:
id – Identifier of the field.
value – Value to set.
-
void reset_field(std::string name)¶
Set the value of a field to its original value.
- Parameters:
name – Name of the field.
-
void reset_field_by_id(std::string id)¶
Set the value of a field to its original value.
- Parameters:
id – Identifier of the field.
-
std::vector<std::string> events()¶
A list of the names of all of the modules events. Events are the clickable buttons visible in the right-click menu of the part.
-
std::vector<std::string> events_by_id()¶
A list of the identifiers of all of the modules events. Events are the clickable buttons visible in the right-click menu of the part.
-
bool has_event(std::string name)¶
true
if the module has an event with the given name.- Parameters:
-
bool has_event_with_id(std::string id)¶
true
if the module has an event with the given identifier.- Parameters:
-
void trigger_event(std::string name)¶
Trigger the named event. Equivalent to clicking the button in the right-click menu of the part.
- Parameters:
-
void trigger_event_by_id(std::string id)¶
Trigger the event with the given identifier. Equivalent to clicking the button in the right-click menu of the part.
- Parameters:
-
std::vector<std::string> actions()¶
A list of all the names of the modules actions. These are the parts actions that can be assigned to action groups in the in-game editor.
-
std::vector<std::string> actions_by_id()¶
A list of all the identifiers of the modules actions. These are the parts actions that can be assigned to action groups in the in-game editor.
-
bool has_action(std::string name)¶
true
if the part has an action with the given name.- Parameters:
-
bool has_action_with_id(std::string id)¶
true
if the part has an action with the given identifier.- Parameters:
-
void set_action(std::string name, bool value = true)¶
Set the value of an action with the given name.
- Parameters:
-
void set_action_by_id(std::string id, bool value = true)¶
Set the value of an action with the given identifier.
- Parameters:
-
std::string name()¶
Specific Types of Part¶
The following classes provide functionality for specific types of part.
Antenna¶
Note
If RemoteTech is installed, use the RemoteTech service APIs to interact with antennas. This class is only for stock KSP antennas.
-
class Antenna¶
An antenna. Obtained by calling
Part::antenna()
.-
AntennaState state()¶
The current state of the antenna.
-
bool deployable()¶
Whether the antenna is deployable.
-
bool deployed()¶
-
void set_deployed(bool value)¶
Whether the antenna is deployed.
Note
Fixed antennas are always deployed. Returns an error if you try to deploy a fixed antenna.
-
bool can_transmit()¶
Whether data can be transmitted by this antenna.
-
void transmit()¶
Transmit data.
-
void cancel()¶
Cancel current transmission of data.
-
bool allow_partial()¶
-
void set_allow_partial(bool value)¶
Whether partial data transmission is permitted.
-
double power()¶
The power of the antenna.
-
bool combinable()¶
Whether the antenna can be combined with other antennae on the vessel to boost the power.
-
double combinable_exponent()¶
Exponent used to calculate the combined power of multiple antennae on a vessel.
-
float packet_interval()¶
Interval between sending packets in seconds.
-
float packet_size()¶
Amount of data sent per packet in Mits.
-
double packet_resource_cost()¶
Units of electric charge consumed per packet sent.
-
AntennaState state()¶
-
enum struct AntennaState¶
The state of an antenna. See
Antenna::state()
.-
enumerator deployed¶
Antenna is fully deployed.
-
enumerator retracted¶
Antenna is fully retracted.
-
enumerator deploying¶
Antenna is being deployed.
-
enumerator retracting¶
Antenna is being retracted.
-
enumerator broken¶
Antenna is broken.
-
enumerator deployed¶
Cargo Bay¶
-
class CargoBay¶
A cargo bay. Obtained by calling
Part::cargo_bay()
.-
CargoBayState state()¶
The state of the cargo bay.
-
bool open()¶
-
void set_open(bool value)¶
Whether the cargo bay is open.
-
CargoBayState state()¶
Control Surface¶
-
class ControlSurface¶
An aerodynamic control surface. Obtained by calling
Part::control_surface()
.-
bool pitch_enabled()¶
-
void set_pitch_enabled(bool value)¶
Whether the control surface has pitch control enabled.
-
bool yaw_enabled()¶
-
void set_yaw_enabled(bool value)¶
Whether the control surface has yaw control enabled.
-
bool roll_enabled()¶
-
void set_roll_enabled(bool value)¶
Whether the control surface has roll control enabled.
-
float authority_limiter()¶
-
void set_authority_limiter(float value)¶
The authority limiter for the control surface, which controls how far the control surface will move.
-
bool inverted()¶
-
void set_inverted(bool value)¶
Whether the control surface movement is inverted.
-
bool deployed()¶
-
void set_deployed(bool value)¶
Whether the control surface has been fully deployed.
-
float surface_area()¶
Surface area of the control surface in \(m^2\).
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> available_torque()¶
The available torque, in Newton meters, that can be produced by this control surface, in the positive and negative pitch, roll and yaw axes of the vessel. These axes correspond to the coordinate axes of the
Vessel::reference_frame()
.
-
bool pitch_enabled()¶
Decoupler¶
-
class Decoupler¶
A decoupler. Obtained by calling
Part::decoupler()
-
Vessel decouple()¶
Fires the decoupler. Returns the new vessel created when the decoupler fires. Throws an exception if the decoupler has already fired.
Note
When called, the active vessel may change. It is therefore possible that, after calling this function, the object(s) returned by previous call(s) to
active_vessel()
no longer refer to the active vessel.
-
bool decoupled()¶
Whether the decoupler has fired.
-
bool staged()¶
Whether the decoupler is enabled in the staging sequence.
-
float impulse()¶
The impulse that the decoupler imparts when it is fired, in Newton seconds.
-
bool is_omni_decoupler()¶
Whether the decoupler is an omni-decoupler (e.g. stack separator)
-
Vessel decouple()¶
Docking Port¶
-
class DockingPort¶
A docking port. Obtained by calling
Part::docking_port()
-
DockingPortState state()¶
The current state of the docking port.
-
Part docked_part()¶
The part that this docking port is docked to. Returns
NULL
if this docking port is not docked to anything.
-
Vessel undock()¶
Undocks the docking port and returns the new
Vessel
that is created. This method can be called for either docking port in a docked pair. Throws an exception if the docking port is not docked to anything.Note
When called, the active vessel may change. It is therefore possible that, after calling this function, the object(s) returned by previous call(s) to
active_vessel()
no longer refer to the active vessel.
-
float reengage_distance()¶
The distance a docking port must move away when it undocks before it becomes ready to dock with another port, in meters.
-
bool has_shield()¶
Whether the docking port has a shield.
-
bool shielded()¶
-
void set_shielded(bool value)¶
The state of the docking ports shield, if it has one.
Returns
true
if the docking port has a shield, and the shield is closed. Otherwise returnsfalse
. When set totrue
, the shield is closed, and when set tofalse
the shield is opened. If the docking port does not have a shield, setting this attribute has no effect.
-
bool can_rotate()¶
Whether the docking port can be commanded to rotate while docked.
-
float maximum_rotation()¶
Maximum rotation angle in degrees.
-
float minimum_rotation()¶
Minimum rotation angle in degrees.
-
float rotation_target()¶
-
void set_rotation_target(float value)¶
Rotation target angle in degrees.
-
bool rotation_locked()¶
-
void set_rotation_locked(bool value)¶
Lock rotation. When locked, allows auto-strut to work across the joint.
-
std::tuple<double, double, double> position(ReferenceFrame reference_frame)¶
The position of the docking port, in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned position vector is in.
- Returns:
The position as a vector.
-
std::tuple<double, double, double> direction(ReferenceFrame reference_frame)¶
The direction that docking port points in, in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned direction is in.
- Returns:
The direction as a unit vector.
-
std::tuple<double, double, double, double> rotation(ReferenceFrame reference_frame)¶
The rotation of the docking port, in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned rotation is in.
- Returns:
The rotation as a quaternion of the form \((x, y, z, w)\).
-
ReferenceFrame reference_frame()¶
The reference frame that is fixed relative to this docking port, and oriented with the port.
The origin is at the position of the docking port.
The axes rotate with the docking port.
The x-axis points out to the right side of the docking port.
The y-axis points in the direction the docking port is facing.
The z-axis points out of the bottom off the docking port.
Note
This reference frame is not necessarily equivalent to the reference frame for the part, returned by
Part::reference_frame()
.
-
DockingPortState state()¶
-
enum struct DockingPortState¶
The state of a docking port. See
DockingPort::state()
.-
enumerator ready¶
The docking port is ready to dock to another docking port.
-
enumerator docked¶
The docking port is docked to another docking port, or docked to another part (from the VAB/SPH).
-
enumerator docking¶
The docking port is very close to another docking port, but has not docked. It is using magnetic force to acquire a solid dock.
-
enumerator undocking¶
The docking port has just been undocked from another docking port, and is disabled until it moves away by a sufficient distance (
DockingPort::reengage_distance()
).
-
enumerator shielded¶
The docking port has a shield, and the shield is closed.
-
enumerator moving¶
The docking ports shield is currently opening/closing.
-
enumerator ready¶
Engine¶
-
class Engine¶
An engine, including ones of various types. For example liquid fuelled gimballed engines, solid rocket boosters and jet engines. Obtained by calling
Part::engine()
.Note
For RCS thrusters
Part::rcs()
.-
bool active()¶
-
void set_active(bool value)¶
Whether the engine is active. Setting this attribute may have no effect, depending on
Engine::can_shutdown()
andEngine::can_restart()
.
-
float thrust()¶
The current amount of thrust being produced by the engine, in Newtons.
-
float available_thrust()¶
The amount of thrust, in Newtons, that would be produced by the engine when activated and with its throttle set to 100%. Returns zero if the engine does not have any fuel. Takes the engine’s current
Engine::thrust_limit()
and atmospheric conditions into account.
-
float available_thrust_at(double pressure)¶
The amount of thrust, in Newtons, that would be produced by the engine when activated and with its throttle set to 100%. Returns zero if the engine does not have any fuel. Takes the given pressure into account.
- Parameters:
pressure – Atmospheric pressure in atmospheres
-
float max_thrust()¶
The amount of thrust, in Newtons, that would be produced by the engine when activated and fueled, with its throttle and throttle limiter set to 100%.
-
float max_thrust_at(double pressure)¶
The amount of thrust, in Newtons, that would be produced by the engine when activated and fueled, with its throttle and throttle limiter set to 100%. Takes the given pressure into account.
- Parameters:
pressure – Atmospheric pressure in atmospheres
-
float max_vacuum_thrust()¶
The maximum amount of thrust that can be produced by the engine in a vacuum, in Newtons. This is the amount of thrust produced by the engine when activated,
Engine::thrust_limit()
is set to 100%, the main vessel’s throttle is set to 100% and the engine is in a vacuum.
-
float thrust_limit()¶
-
void set_thrust_limit(float value)¶
The thrust limiter of the engine. A value between 0 and 1. Setting this attribute may have no effect, for example the thrust limit for a solid rocket booster cannot be changed in flight.
-
std::vector<Thruster> thrusters()¶
The components of the engine that generate thrust.
Note
For example, this corresponds to the rocket nozzel on a solid rocket booster, or the individual nozzels on a RAPIER engine. The overall thrust produced by the engine, as reported by
Engine::available_thrust()
,Engine::max_thrust()
and others, is the sum of the thrust generated by each thruster.
-
float specific_impulse()¶
The current specific impulse of the engine, in seconds. Returns zero if the engine is not active.
-
float specific_impulse_at(double pressure)¶
The specific impulse of the engine under the given pressure, in seconds. Returns zero if the engine is not active.
- Parameters:
pressure – Atmospheric pressure in atmospheres
-
float vacuum_specific_impulse()¶
The vacuum specific impulse of the engine, in seconds.
-
float kerbin_sea_level_specific_impulse()¶
The specific impulse of the engine at sea level on Kerbin, in seconds.
-
std::vector<std::string> propellant_names()¶
The names of the propellants that the engine consumes.
-
std::map<std::string, float> propellant_ratios()¶
The ratio of resources that the engine consumes. A dictionary mapping resource names to the ratio at which they are consumed by the engine.
Note
For example, if the ratios are 0.6 for LiquidFuel and 0.4 for Oxidizer, then for every 0.6 units of LiquidFuel that the engine burns, it will burn 0.4 units of Oxidizer.
-
std::vector<Propellant> propellants()¶
The propellants that the engine consumes.
-
bool has_fuel()¶
Whether the engine has any fuel available.
-
float throttle()¶
-
void set_throttle(float value)¶
The current throttle setting for the engine. A value between 0 and 1. This is not necessarily the same as the vessel’s main throttle setting, as some engines take time to adjust their throttle (such as jet engines), or independent throttle may be enabled.
When the engine’s independent throttle is enabled (see
Engine::independent_throttle()
), can be used to set the throttle percentage.
-
bool throttle_locked()¶
Whether the
Control::throttle()
affects the engine. For example, this istrue
for liquid fueled rockets, andfalse
for solid rocket boosters.
-
bool independent_throttle()¶
-
void set_independent_throttle(bool value)¶
Whether the independent throttle is enabled for the engine.
-
bool can_restart()¶
Whether the engine can be restarted once shutdown. If the engine cannot be shutdown, returns
false
. For example, this istrue
for liquid fueled rockets andfalse
for solid rocket boosters.
-
bool can_shutdown()¶
Whether the engine can be shutdown once activated. For example, this is
true
for liquid fueled rockets andfalse
for solid rocket boosters.
-
bool has_modes()¶
Whether the engine has multiple modes of operation.
-
std::string mode()¶
-
void set_mode(std::string value)¶
The name of the current engine mode.
-
std::map<std::string, Engine> modes()¶
The available modes for the engine. A dictionary mapping mode names to
Engine
objects.
-
void toggle_mode()¶
Toggle the current engine mode.
-
bool auto_mode_switch()¶
-
void set_auto_mode_switch(bool value)¶
Whether the engine will automatically switch modes.
-
bool gimballed()¶
Whether the engine is gimballed.
-
float gimbal_range()¶
The range over which the gimbal can move, in degrees. Returns 0 if the engine is not gimballed.
-
bool gimbal_locked()¶
-
void set_gimbal_locked(bool value)¶
Whether the engines gimbal is locked in place. Setting this attribute has no effect if the engine is not gimballed.
-
float gimbal_limit()¶
-
void set_gimbal_limit(float value)¶
The gimbal limiter of the engine. A value between 0 and 1. Returns 0 if the gimbal is locked.
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> available_torque()¶
The available torque, in Newton meters, that can be produced by this engine, in the positive and negative pitch, roll and yaw axes of the vessel. These axes correspond to the coordinate axes of the
Vessel::reference_frame()
. Returns zero if the engine is inactive, or not gimballed.
-
bool active()¶
-
class Propellant¶
A propellant for an engine. Obtains by calling
Engine::propellants()
.-
std::string name()¶
The name of the propellant.
-
double current_amount()¶
The current amount of propellant.
-
double current_requirement()¶
The required amount of propellant.
-
double total_resource_available()¶
The total amount of the underlying resource currently reachable given resource flow rules.
-
double total_resource_capacity()¶
The total vehicle capacity for the underlying propellant resource, restricted by resource flow rules.
-
bool ignore_for_isp()¶
If this propellant should be ignored when calculating required mass flow given specific impulse.
-
bool ignore_for_thrust_curve()¶
If this propellant should be ignored for thrust curve calculations.
-
bool draw_stack_gauge()¶
If this propellant has a stack gauge or not.
-
bool is_deprived()¶
If this propellant is deprived.
-
float ratio()¶
The propellant ratio.
-
std::string name()¶
Experiment¶
-
class Experiment¶
Obtained by calling
Part::experiment()
.-
std::string name()¶
Internal name of the experiment, as used in part cfg files.
-
std::string title()¶
Title of the experiment, as shown on the in-game UI.
-
void run()¶
Run the experiment.
-
void transmit()¶
Transmit all experimental data contained by this part.
-
void dump()¶
Dump the experimental data contained by the experiment.
-
void reset()¶
Reset the experiment.
-
bool deployed()¶
Whether the experiment has been deployed.
-
bool rerunnable()¶
Whether the experiment can be re-run.
-
bool inoperable()¶
Whether the experiment is inoperable.
-
bool has_data()¶
Whether the experiment contains data.
-
std::vector<ScienceData> data()¶
The data contained in this experiment.
-
std::string biome()¶
The name of the biome the experiment is currently in.
-
bool available()¶
Determines if the experiment is available given the current conditions.
-
ScienceSubject science_subject()¶
Containing information on the corresponding specific science result for the current conditions. Returns
NULL
if the experiment is unavailable.
-
std::string name()¶
-
class ScienceData¶
Obtained by calling
Experiment::data()
.-
float data_amount()¶
Data amount.
-
float science_value()¶
Science value.
-
float transmit_value()¶
Transmit value.
-
float data_amount()¶
-
class ScienceSubject¶
Obtained by calling
Experiment::science_subject()
.-
std::string title()¶
Title of science subject, displayed in science archives
-
bool is_complete()¶
Whether the experiment has been completed.
-
float science()¶
Amount of science already earned from this subject, not updated until after transmission/recovery.
-
float science_cap()¶
Total science allowable for this subject.
-
float data_scale()¶
Multiply science value by this to determine data amount in mits.
-
float subject_value()¶
Multiplier for specific Celestial Body/Experiment Situation combination.
-
float scientific_value()¶
Diminishing value multiplier for decreasing the science value returned from repeated experiments.
-
std::string title()¶
Fairing¶
-
class Fairing¶
A fairing. Obtained by calling
Part::fairing()
. Supports both stock fairings, and those from the ProceduralFairings mod.-
void jettison()¶
Jettison the fairing. Has no effect if it has already been jettisoned.
-
bool jettisoned()¶
Whether the fairing has been jettisoned.
-
void jettison()¶
Intake¶
-
class Intake¶
An air intake. Obtained by calling
Part::intake()
.-
bool open()¶
-
void set_open(bool value)¶
Whether the intake is open.
-
float speed()¶
Speed of the flow into the intake, in \(m/s\).
-
float flow()¶
The rate of flow into the intake, in units of resource per second.
-
float area()¶
The area of the intake’s opening, in square meters.
-
bool open()¶
Leg¶
-
class Leg¶
A landing leg. Obtained by calling
Part::leg()
.-
bool deployable()¶
Whether the leg is deployable.
-
bool deployed()¶
-
void set_deployed(bool value)¶
Whether the landing leg is deployed.
Note
Fixed landing legs are always deployed. Returns an error if you try to deploy fixed landing gear.
-
bool is_grounded()¶
Returns whether the leg is touching the ground.
-
bool deployable()¶
-
enum struct LegState¶
The state of a landing leg. See
Leg::state()
.-
enumerator deployed¶
Landing leg is fully deployed.
-
enumerator retracted¶
Landing leg is fully retracted.
-
enumerator deploying¶
Landing leg is being deployed.
-
enumerator retracting¶
Landing leg is being retracted.
-
enumerator broken¶
Landing leg is broken.
-
enumerator deployed¶
Launch Clamp¶
-
class LaunchClamp¶
A launch clamp. Obtained by calling
Part::launch_clamp()
.-
void release()¶
Releases the docking clamp. Has no effect if the clamp has already been released.
-
void release()¶
Light¶
-
class Light¶
A light. Obtained by calling
Part::light()
.-
bool active()¶
-
void set_active(bool value)¶
Whether the light is switched on.
-
std::tuple<float, float, float> color()¶
-
void set_color(std::tuple<float, float, float> value)¶
The color of the light, as an RGB triple.
-
bool blink()¶
-
void set_blink(bool value)¶
Whether blinking is enabled.
-
float blink_rate()¶
-
void set_blink_rate(float value)¶
The blink rate of the light.
-
float power_usage()¶
The current power usage, in units of charge per second.
-
bool active()¶
Parachute¶
-
class Parachute¶
A parachute. Obtained by calling
Part::parachute()
.-
void deploy()¶
Deploys the parachute. This has no effect if the parachute has already been deployed.
-
bool deployed()¶
Whether the parachute has been deployed.
-
void arm()¶
Deploys the parachute. This has no effect if the parachute has already been armed or deployed.
-
bool armed()¶
Whether the parachute has been armed or deployed.
-
void cut()¶
Cuts the parachute.
-
ParachuteState state()¶
The current state of the parachute.
-
float deploy_altitude()¶
-
void set_deploy_altitude(float value)¶
The altitude at which the parachute will full deploy, in meters. Only applicable to stock parachutes.
-
float deploy_min_pressure()¶
-
void set_deploy_min_pressure(float value)¶
The minimum pressure at which the parachute will semi-deploy, in atmospheres. Only applicable to stock parachutes.
-
void deploy()¶
-
enum struct ParachuteState¶
The state of a parachute. See
Parachute::state()
.-
enumerator stowed¶
The parachute is safely tucked away inside its housing.
-
enumerator armed¶
The parachute is armed for deployment.
-
enumerator semi_deployed¶
The parachute has been deployed and is providing some drag, but is not fully deployed yet. (Stock parachutes only)
-
enumerator deployed¶
The parachute is fully deployed.
-
enumerator cut¶
The parachute has been cut.
-
enumerator stowed¶
Radiator¶
-
class Radiator¶
A radiator. Obtained by calling
Part::radiator()
.-
bool deployable()¶
Whether the radiator is deployable.
-
bool deployed()¶
-
void set_deployed(bool value)¶
For a deployable radiator,
true
if the radiator is extended. If the radiator is not deployable, this is alwaystrue
.
-
RadiatorState state()¶
The current state of the radiator.
Note
A fixed radiator is always
RadiatorState::extended
.
-
bool deployable()¶
-
enum struct RadiatorState¶
The state of a radiator.
Radiator::state()
-
enumerator extended¶
Radiator is fully extended.
-
enumerator retracted¶
Radiator is fully retracted.
-
enumerator extending¶
Radiator is being extended.
-
enumerator retracting¶
Radiator is being retracted.
-
enumerator broken¶
Radiator is broken.
-
enumerator extended¶
Resource Converter¶
-
class ResourceConverter¶
A resource converter. Obtained by calling
Part::resource_converter()
.-
int32_t count()¶
The number of converters in the part.
-
std::string name(int32_t index)¶
The name of the specified converter.
- Parameters:
index – Index of the converter.
-
bool active(int32_t index)¶
True if the specified converter is active.
- Parameters:
index – Index of the converter.
-
void start(int32_t index)¶
Start the specified converter.
- Parameters:
index – Index of the converter.
-
void stop(int32_t index)¶
Stop the specified converter.
- Parameters:
index – Index of the converter.
-
ResourceConverterState state(int32_t index)¶
The state of the specified converter.
- Parameters:
index – Index of the converter.
-
std::string status_info(int32_t index)¶
Status information for the specified converter. This is the full status message shown in the in-game UI.
- Parameters:
index – Index of the converter.
-
std::vector<std::string> inputs(int32_t index)¶
List of the names of resources consumed by the specified converter.
- Parameters:
index – Index of the converter.
-
std::vector<std::string> outputs(int32_t index)¶
List of the names of resources produced by the specified converter.
- Parameters:
index – Index of the converter.
-
float optimum_core_temperature()¶
The core temperature at which the converter will operate with peak efficiency, in Kelvin.
-
float core_temperature()¶
The core temperature of the converter, in Kelvin.
-
float thermal_efficiency()¶
The thermal efficiency of the converter, as a percentage of its maximum.
-
int32_t count()¶
-
enum struct ResourceConverterState¶
The state of a resource converter. See
ResourceConverter::state()
.-
enumerator running¶
Converter is running.
-
enumerator idle¶
Converter is idle.
-
enumerator missing_resource¶
Converter is missing a required resource.
-
enumerator storage_full¶
No available storage for output resource.
-
enumerator capacity¶
At preset resource capacity.
-
enumerator unknown¶
Unknown state. Possible with modified resource converters. In this case, check
ResourceConverter::status_info()
for more information.
-
enumerator running¶
Resource Harvester¶
-
class ResourceHarvester¶
A resource harvester (drill). Obtained by calling
Part::resource_harvester()
.-
ResourceHarvesterState state()¶
The state of the harvester.
-
bool deployed()¶
-
void set_deployed(bool value)¶
Whether the harvester is deployed.
-
bool active()¶
-
void set_active(bool value)¶
Whether the harvester is actively drilling.
-
float extraction_rate()¶
The rate at which the drill is extracting ore, in units per second.
-
float thermal_efficiency()¶
The thermal efficiency of the drill, as a percentage of its maximum.
-
float core_temperature()¶
The core temperature of the drill, in Kelvin.
-
float optimum_core_temperature()¶
The core temperature at which the drill will operate with peak efficiency, in Kelvin.
-
ResourceHarvesterState state()¶
-
enum struct ResourceHarvesterState¶
The state of a resource harvester. See
ResourceHarvester::state()
.-
enumerator deploying¶
The drill is deploying.
-
enumerator deployed¶
The drill is deployed and ready.
-
enumerator retracting¶
The drill is retracting.
-
enumerator retracted¶
The drill is retracted.
-
enumerator active¶
The drill is running.
-
enumerator deploying¶
Reaction Wheel¶
-
class ReactionWheel¶
A reaction wheel. Obtained by calling
Part::reaction_wheel()
.-
bool active()¶
-
void set_active(bool value)¶
Whether the reaction wheel is active.
-
bool broken()¶
Whether the reaction wheel is broken.
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> available_torque()¶
The available torque, in Newton meters, that can be produced by this reaction wheel, in the positive and negative pitch, roll and yaw axes of the vessel. These axes correspond to the coordinate axes of the
Vessel::reference_frame()
. Returns zero if the reaction wheel is inactive or broken.
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> max_torque()¶
The maximum torque, in Newton meters, that can be produced by this reaction wheel, when it is active, in the positive and negative pitch, roll and yaw axes of the vessel. These axes correspond to the coordinate axes of the
Vessel::reference_frame()
.
-
bool active()¶
Resource Drain¶
-
class ResourceDrain¶
A resource drain. Obtained by calling
Part::resource_drain()
.-
void set_resource(Resource resource, bool enabled)¶
Whether the given resource should be drained.
- Parameters:
-
bool check_resource(Resource resource)¶
Whether the provided resource is enabled for draining.
- Parameters:
-
float min_rate()¶
Minimum possible drain rate
-
float max_rate()¶
Maximum possible drain rate.
-
float rate()¶
-
void set_rate(float value)¶
Current drain rate.
-
void start()¶
Activates resource draining for all enabled parts.
-
void stop()¶
Turns off resource draining.
-
void set_resource(Resource resource, bool enabled)¶
-
enum struct DrainMode¶
Resource drain mode. See
ResourceDrain::drain_mode()
.-
enumerator part¶
Drains from the parent part.
-
enumerator vessel¶
Drains from all available parts.
-
enumerator part¶
Robotic Controller¶
-
class RoboticController¶
A robotic controller. Obtained by calling
Part::robotic_controller()
.-
std::vector<std::vector<std::string>> axes()¶
The axes for the controller.
-
bool add_axis(Module module, std::string field_name)¶
Add an axis to the controller.
- Parameters:
- Returns:
Returns
true
if the axis is added successfully.
-
std::vector<std::vector<std::string>> axes()¶
Robotic Hinge¶
-
class RoboticHinge¶
A robotic hinge. Obtained by calling
Part::robotic_hinge()
.-
float target_angle()¶
-
void set_target_angle(float value)¶
Target angle.
-
float current_angle()¶
Current angle.
-
float rate()¶
-
void set_rate(float value)¶
Target movement rate in degrees per second.
-
float damping()¶
-
void set_damping(float value)¶
Damping percentage.
-
bool locked()¶
-
void set_locked(bool value)¶
Lock movement.
-
bool motor_engaged()¶
-
void set_motor_engaged(bool value)¶
Whether the motor is engaged.
-
void move_home()¶
Move hinge to it’s built position.
-
float target_angle()¶
Robotic Piston¶
-
class RoboticPiston¶
A robotic piston part. Obtained by calling
Part::robotic_piston()
.-
float target_extension()¶
-
void set_target_extension(float value)¶
Target extension of the piston.
-
float current_extension()¶
Current extension of the piston.
-
float rate()¶
-
void set_rate(float value)¶
Target movement rate in degrees per second.
-
float damping()¶
-
void set_damping(float value)¶
Damping percentage.
-
bool locked()¶
-
void set_locked(bool value)¶
Lock movement.
-
bool motor_engaged()¶
-
void set_motor_engaged(bool value)¶
Whether the motor is engaged.
-
void move_home()¶
Move piston to it’s built position.
-
float target_extension()¶
Robotic Rotation¶
-
class RoboticRotation¶
A robotic rotation servo. Obtained by calling
Part::robotic_rotation()
.-
float target_angle()¶
-
void set_target_angle(float value)¶
Target angle.
-
float current_angle()¶
Current angle.
-
float rate()¶
-
void set_rate(float value)¶
Target movement rate in degrees per second.
-
float damping()¶
-
void set_damping(float value)¶
Damping percentage.
-
bool locked()¶
-
void set_locked(bool value)¶
Lock Movement
-
bool motor_engaged()¶
-
void set_motor_engaged(bool value)¶
Whether the motor is engaged.
-
void move_home()¶
Move rotation servo to it’s built position.
-
float target_angle()¶
Robotic Rotor¶
-
class RoboticRotor¶
A robotic rotor. Obtained by calling
Part::robotic_rotor()
.-
float target_rpm()¶
-
void set_target_rpm(float value)¶
Target RPM.
-
float current_rpm()¶
Current RPM.
-
bool inverted()¶
-
void set_inverted(bool value)¶
Whether the rotor direction is inverted.
-
float torque_limit()¶
-
void set_torque_limit(float value)¶
Torque limit percentage.
-
bool locked()¶
-
void set_locked(bool value)¶
Lock movement.
-
bool motor_engaged()¶
-
void set_motor_engaged(bool value)¶
Whether the motor is engaged.
-
float target_rpm()¶
RCS¶
-
class RCS¶
An RCS block or thruster. Obtained by calling
Part::rcs()
.-
bool active()¶
Whether the RCS thrusters are active. An RCS thruster is inactive if the RCS action group is disabled (
Control::rcs()
), the RCS thruster itself is not enabled (RCS::enabled()
) or it is covered by a fairing (Part::shielded()
).
-
bool enabled()¶
-
void set_enabled(bool value)¶
Whether the RCS thrusters are enabled.
-
bool pitch_enabled()¶
-
void set_pitch_enabled(bool value)¶
Whether the RCS thruster will fire when pitch control input is given.
-
bool yaw_enabled()¶
-
void set_yaw_enabled(bool value)¶
Whether the RCS thruster will fire when yaw control input is given.
-
bool roll_enabled()¶
-
void set_roll_enabled(bool value)¶
Whether the RCS thruster will fire when roll control input is given.
-
bool forward_enabled()¶
-
void set_forward_enabled(bool value)¶
Whether the RCS thruster will fire when pitch control input is given.
-
bool up_enabled()¶
-
void set_up_enabled(bool value)¶
Whether the RCS thruster will fire when yaw control input is given.
-
bool right_enabled()¶
-
void set_right_enabled(bool value)¶
Whether the RCS thruster will fire when roll control input is given.
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> available_torque()¶
The available torque, in Newton meters, that can be produced by this RCS, in the positive and negative pitch, roll and yaw axes of the vessel. These axes correspond to the coordinate axes of the
Vessel::reference_frame()
. Returns zero if RCS is disable.
-
std::tuple<std::tuple<double, double, double>, std::tuple<double, double, double>> available_force()¶
The available force, in Newtons, that can be produced by this RCS, in the positive and negative x, y and z axes of the vessel. These axes correspond to the coordinate axes of the
Vessel::reference_frame()
. Returns zero if RCS is disabled.
-
float available_thrust()¶
The amount of thrust, in Newtons, that would be produced by the thruster when activated. Returns zero if the thruster does not have any fuel. Takes the thrusters current
RCS::thrust_limit()
and atmospheric conditions into account.
-
float max_thrust()¶
The maximum amount of thrust that can be produced by the RCS thrusters when active, in Newtons. Takes the thrusters current
RCS::thrust_limit()
and atmospheric conditions into account.
-
float max_vacuum_thrust()¶
The maximum amount of thrust that can be produced by the RCS thrusters when active in a vacuum, in Newtons.
-
float thrust_limit()¶
-
void set_thrust_limit(float value)¶
The thrust limiter of the thruster. A value between 0 and 1.
-
float specific_impulse()¶
The current specific impulse of the RCS, in seconds. Returns zero if the RCS is not active.
-
float vacuum_specific_impulse()¶
The vacuum specific impulse of the RCS, in seconds.
-
float kerbin_sea_level_specific_impulse()¶
The specific impulse of the RCS at sea level on Kerbin, in seconds.
-
std::vector<std::string> propellants()¶
The names of resources that the RCS consumes.
-
std::map<std::string, float> propellant_ratios()¶
The ratios of resources that the RCS consumes. A dictionary mapping resource names to the ratios at which they are consumed by the RCS.
-
bool has_fuel()¶
Whether the RCS has fuel available.
-
bool active()¶
Sensor¶
Solar Panel¶
-
class SolarPanel¶
A solar panel. Obtained by calling
Part::solar_panel()
.-
bool deployable()¶
Whether the solar panel is deployable.
-
bool deployed()¶
-
void set_deployed(bool value)¶
Whether the solar panel is extended.
-
SolarPanelState state()¶
The current state of the solar panel.
-
float energy_flow()¶
The current amount of energy being generated by the solar panel, in units of charge per second.
-
float sun_exposure()¶
The current amount of sunlight that is incident on the solar panel, as a percentage. A value between 0 and 1.
-
bool deployable()¶
-
enum struct SolarPanelState¶
The state of a solar panel. See
SolarPanel::state()
.-
enumerator extended¶
Solar panel is fully extended.
-
enumerator retracted¶
Solar panel is fully retracted.
-
enumerator extending¶
Solar panel is being extended.
-
enumerator retracting¶
Solar panel is being retracted.
-
enumerator broken¶
Solar panel is broken.
-
enumerator extended¶
Thruster¶
-
class Thruster¶
The component of an
Engine
orRCS
part that generates thrust. Can obtained by callingEngine::thrusters()
orRCS::thrusters()
.Note
Engines can consist of multiple thrusters. For example, the S3 KS-25x4 “Mammoth” has four rocket nozzels, and so consists of four thrusters.
-
std::tuple<double, double, double> thrust_position(ReferenceFrame reference_frame)¶
The position at which the thruster generates thrust, in the given reference frame. For gimballed engines, this takes into account the current rotation of the gimbal.
- Parameters:
reference_frame – The reference frame that the returned position vector is in.
- Returns:
The position as a vector.
-
std::tuple<double, double, double> thrust_direction(ReferenceFrame reference_frame)¶
The direction of the force generated by the thruster, in the given reference frame. This is opposite to the direction in which the thruster expels propellant. For gimballed engines, this takes into account the current rotation of the gimbal.
- Parameters:
reference_frame – The reference frame that the returned direction is in.
- Returns:
The direction as a unit vector.
-
ReferenceFrame thrust_reference_frame()¶
A reference frame that is fixed relative to the thruster and orientated with its thrust direction (
Thruster::thrust_direction()
). For gimballed engines, this takes into account the current rotation of the gimbal.The origin is at the position of thrust for this thruster (
Thruster::thrust_position()
).The axes rotate with the thrust direction. This is the direction in which the thruster expels propellant, including any gimballing.
The y-axis points along the thrust direction.
The x-axis and z-axis are perpendicular to the thrust direction.
-
bool gimballed()¶
Whether the thruster is gimballed.
-
std::tuple<double, double, double> gimbal_position(ReferenceFrame reference_frame)¶
Position around which the gimbal pivots.
- Parameters:
reference_frame – The reference frame that the returned position vector is in.
- Returns:
The position as a vector.
-
std::tuple<double, double, double> gimbal_angle()¶
The current gimbal angle in the pitch, roll and yaw axes, in degrees.
-
std::tuple<double, double, double> initial_thrust_position(ReferenceFrame reference_frame)¶
The position at which the thruster generates thrust, when the engine is in its initial position (no gimballing), in the given reference frame.
- Parameters:
reference_frame – The reference frame that the returned position vector is in.
- Returns:
The position as a vector.
Note
This position can move when the gimbal rotates. This is because the thrust position and gimbal position are not necessarily the same.
-
std::tuple<double, double, double> initial_thrust_direction(ReferenceFrame reference_frame)¶
The direction of the force generated by the thruster, when the engine is in its initial position (no gimballing), in the given reference frame. This is opposite to the direction in which the thruster expels propellant.
- Parameters:
reference_frame – The reference frame that the returned direction is in.
- Returns:
The direction as a unit vector.
-
std::tuple<double, double, double> thrust_position(ReferenceFrame reference_frame)¶
Wheel¶
-
class Wheel¶
A wheel. Includes landing gear and rover wheels. Obtained by calling
Part::wheel()
. Can be used to control the motors, steering and deployment of wheels, among other things.-
WheelState state()¶
The current state of the wheel.
-
float radius()¶
Radius of the wheel, in meters.
-
bool grounded()¶
Whether the wheel is touching the ground.
-
bool has_brakes()¶
Whether the wheel has brakes.
-
float brakes()¶
-
void set_brakes(float value)¶
The braking force, as a percentage of maximum, when the brakes are applied.
-
bool auto_friction_control()¶
-
void set_auto_friction_control(bool value)¶
Whether automatic friction control is enabled.
-
float manual_friction_control()¶
-
void set_manual_friction_control(float value)¶
Manual friction control value. Only has an effect if automatic friction control is disabled. A value between 0 and 5 inclusive.
-
bool deployable()¶
Whether the wheel is deployable.
-
bool deployed()¶
-
void set_deployed(bool value)¶
Whether the wheel is deployed.
-
bool powered()¶
Whether the wheel is powered by a motor.
-
bool motor_enabled()¶
-
void set_motor_enabled(bool value)¶
Whether the motor is enabled.
-
bool motor_inverted()¶
-
void set_motor_inverted(bool value)¶
Whether the direction of the motor is inverted.
-
MotorState motor_state()¶
Whether the direction of the motor is inverted.
-
float motor_output()¶
The output of the motor. This is the torque currently being generated, in Newton meters.
-
bool traction_control_enabled()¶
-
void set_traction_control_enabled(bool value)¶
Whether automatic traction control is enabled. A wheel only has traction control if it is powered.
-
float traction_control()¶
-
void set_traction_control(float value)¶
Setting for the traction control. Only takes effect if the wheel has automatic traction control enabled. A value between 0 and 5 inclusive.
-
float drive_limiter()¶
-
void set_drive_limiter(float value)¶
Manual setting for the motor limiter. Only takes effect if the wheel has automatic traction control disabled. A value between 0 and 100 inclusive.
-
bool steerable()¶
Whether the wheel has steering.
-
bool steering_enabled()¶
-
void set_steering_enabled(bool value)¶
Whether the wheel steering is enabled.
-
bool steering_inverted()¶
-
void set_steering_inverted(bool value)¶
Whether the wheel steering is inverted.
-
float steering_angle_limit()¶
-
void set_steering_angle_limit(float value)¶
The steering angle limit.
-
float steering_response_time()¶
-
void set_steering_response_time(float value)¶
Steering response time.
-
bool has_suspension()¶
Whether the wheel has suspension.
-
float suspension_spring_strength()¶
Suspension spring strength, as set in the editor.
-
float suspension_damper_strength()¶
Suspension damper strength, as set in the editor.
-
bool broken()¶
Whether the wheel is broken.
-
bool repairable()¶
Whether the wheel is repairable.
-
float stress()¶
Current stress on the wheel.
-
float stress_tolerance()¶
Stress tolerance of the wheel.
-
float stress_percentage()¶
Current stress on the wheel as a percentage of its stress tolerance.
-
float deflection()¶
Current deflection of the wheel.
-
float slip()¶
Current slip of the wheel.
-
WheelState state()¶
-
enum struct WheelState¶
The state of a wheel. See
Wheel::state()
.-
enumerator deployed¶
Wheel is fully deployed.
-
enumerator retracted¶
Wheel is fully retracted.
-
enumerator deploying¶
Wheel is being deployed.
-
enumerator retracting¶
Wheel is being retracted.
-
enumerator broken¶
Wheel is broken.
-
enumerator deployed¶
-
enum struct MotorState¶
The state of the motor on a powered wheel. See
Wheel::motor_state()
.-
enumerator idle¶
The motor is idle.
-
enumerator running¶
The motor is running.
-
enumerator disabled¶
The motor is disabled.
-
enumerator inoperable¶
The motor is inoperable.
-
enumerator not_enough_resources¶
The motor does not have enough resources to run.
-
enumerator idle¶
Trees of Parts¶
Vessels in KSP are comprised of a number of parts, connected to one another in a
tree structure. An example vessel is shown in Figure 1, and the corresponding
tree of parts in Figure 2. The craft file for this example can also be
downloaded here
.
Traversing the Tree¶
The tree of parts can be traversed using the attributes Parts::root()
,
Part::parent()
and Part::children()
.
The root of the tree is the same as the vessels root part (part number 1 in
the example above) and can be obtained by calling Parts::root()
.
A parts children can be obtained by calling Part::children()
.
If the part does not have any children, Part::children()
returns an empty list. A parts parent can be obtained by calling
Part::parent()
. If the part does not have a parent
(as is the case for the root part), Part::parent()
returns NULL
.
The following C++ example uses these attributes to perform a depth-first traversal over all of the parts in a vessel:
#include <iostream>
#include <stack>
#include <string>
#include <utility>
#include <krpc.hpp>
#include <krpc/services/space_center.hpp>
using SpaceCenter = krpc::services::SpaceCenter;
int main() {
krpc::Client conn = krpc::connect("");
SpaceCenter sc(&conn);
auto vessel = sc.active_vessel();
auto root = vessel.parts().root();
std::stack<std::pair<SpaceCenter::Part, int>> stack;
stack.push(std::pair<SpaceCenter::Part, int>(root, 0));
while (!stack.empty()) {
auto part = stack.top().first;
auto depth = stack.top().second;
stack.pop();
std::cout << std::string(depth, ' ') << part.title() << std::endl;
for (auto child : part.children())
stack.push(std::pair<SpaceCenter::Part, int>(child, depth+1));
}
}
When this code is execute using the craft file for the example vessel pictured above, the following is printed out:
Command Pod Mk1
TR-18A Stack Decoupler
FL-T400 Fuel Tank
LV-909 Liquid Fuel Engine
TR-18A Stack Decoupler
FL-T800 Fuel Tank
LV-909 Liquid Fuel Engine
TT-70 Radial Decoupler
FL-T400 Fuel Tank
TT18-A Launch Stability Enhancer
FTX-2 External Fuel Duct
LV-909 Liquid Fuel Engine
Aerodynamic Nose Cone
TT-70 Radial Decoupler
FL-T400 Fuel Tank
TT18-A Launch Stability Enhancer
FTX-2 External Fuel Duct
LV-909 Liquid Fuel Engine
Aerodynamic Nose Cone
LT-1 Landing Struts
LT-1 Landing Struts
Mk16 Parachute
Attachment Modes¶
Parts can be attached to other parts either radially (on the side of the parent part) or axially (on the end of the parent part, to form a stack).
For example, in the vessel pictured above, the parachute (part 2) is axially connected to its parent (the command pod – part 1), and the landing leg (part 5) is radially connected to its parent (the fuel tank – part 4).
The root part of a vessel (for example the command pod – part 1) does not have a parent part, so does not have an attachment mode. However, the part is consider to be axially attached to nothing.
The following C++ example does a depth-first traversal as before, but also prints out the attachment mode used by the part:
#include <iostream>
#include <stack>
#include <string>
#include <utility>
#include <krpc.hpp>
#include <krpc/services/space_center.hpp>
using SpaceCenter = krpc::services::SpaceCenter;
int main() {
auto conn = krpc::connect();
SpaceCenter sc(&conn);
auto vessel = sc.active_vessel();
auto root = vessel.parts().root();
std::stack<std::pair<SpaceCenter::Part, int> > stack;
stack.push(std::pair<SpaceCenter::Part, int>(root, 0));
while (!stack.empty()) {
auto part = stack.top().first;
auto depth = stack.top().second;
stack.pop();
std::string attach_mode = part.axially_attached() ? "axial" : "radial";
std::cout << std::string(depth, ' ') << part.title() << " - " << attach_mode << std::endl;
auto children = part.children();
for (auto child : children) {
stack.push(std::pair<SpaceCenter::Part, int>(child, depth+1));
}
}
}
When this code is execute using the craft file for the example vessel pictured above, the following is printed out:
Command Pod Mk1 - axial
TR-18A Stack Decoupler - axial
FL-T400 Fuel Tank - axial
LV-909 Liquid Fuel Engine - axial
TR-18A Stack Decoupler - axial
FL-T800 Fuel Tank - axial
LV-909 Liquid Fuel Engine - axial
TT-70 Radial Decoupler - radial
FL-T400 Fuel Tank - radial
TT18-A Launch Stability Enhancer - radial
FTX-2 External Fuel Duct - radial
LV-909 Liquid Fuel Engine - axial
Aerodynamic Nose Cone - axial
TT-70 Radial Decoupler - radial
FL-T400 Fuel Tank - radial
TT18-A Launch Stability Enhancer - radial
FTX-2 External Fuel Duct - radial
LV-909 Liquid Fuel Engine - axial
Aerodynamic Nose Cone - axial
LT-1 Landing Struts - radial
LT-1 Landing Struts - radial
Mk16 Parachute - axial
Fuel Lines¶
Fuel lines are considered parts, and are included in the parts tree (for example, as pictured in Figure 4). However, the parts tree does not contain information about which parts fuel lines connect to. The parent part of a fuel line is the part from which it will take fuel (as shown in Figure 4) however the part that it will send fuel to is not represented in the parts tree.
Figure 5 shows the fuel lines from the example vessel pictured earlier. Fuel line part 15 (in red) takes fuel from a fuel tank (part 11 – in green) and feeds it into another fuel tank (part 9 – in blue). The fuel line is therefore a child of part 11, but its connection to part 9 is not represented in the tree.
The attributes Part::fuel_lines_from()
and
Part::fuel_lines_to()
can be used to discover these
connections. In the example in Figure 5, when
Part::fuel_lines_to()
is called on fuel tank part
11, it will return a list of parts containing just fuel tank part 9 (the blue
part). When Part::fuel_lines_from()
is called on
fuel tank part 9, it will return a list containing fuel tank parts 11 and 17
(the parts colored green).
Staging¶
Each part has two staging numbers associated with it: the stage in which the
part is activated and the stage in which the part is decoupled. These values
can be obtained using Part::stage()
and
Part::decouple_stage()
respectively. For parts that
are not activated by staging, Part::stage()
returns
-1. For parts that are never decoupled,
Part::decouple_stage()
returns a value of -1.
Figure 6 shows an example staging sequence for a vessel. Figure 7 shows the stages in which each part of the vessel will be activated. Figure 8 shows the stages in which each part of the vessel will be decoupled.