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().

std::vector<Part> all()

A list of all of the vessels parts.

Game Scenes:All
Part root()

The vessels root part.

Game Scenes:All

Note

See the discussion on Trees of Parts.

Part controlling()
void set_controlling(Part value)

The part from which the vessel is controlled.

Game Scenes:All
std::vector<Part> with_name(std::string name)

A list of parts whose Part::name() is name.

Parameters:
Game Scenes:All
std::vector<Part> with_title(std::string title)

A list of all parts whose Part::title() is title.

Parameters:
Game Scenes:All
std::vector<Part> with_tag(std::string tag)

A list of all parts whose Part::tag() is tag.

Parameters:
Game Scenes:All
std::vector<Part> with_module(std::string module_name)

A list of all parts that contain a Module whose Module::name() is module_name.

Parameters:
Game Scenes:All
std::vector<Part> in_stage(int32_t stage)

A list of all parts that are activated in the given stage.

Parameters:
Game Scenes:All

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:
Game Scenes:All

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:
Game Scenes:All
std::vector<Antenna> antennas()

A list of all antennas in the vessel.

Game Scenes:All
std::vector<CargoBay> cargo_bays()

A list of all cargo bays in the vessel.

Game Scenes:All
std::vector<ControlSurface> control_surfaces()

A list of all control surfaces in the vessel.

Game Scenes:All
std::vector<Decoupler> decouplers()

A list of all decouplers in the vessel.

Game Scenes:All
std::vector<DockingPort> docking_ports()

A list of all docking ports in the vessel.

Game Scenes:All
std::vector<Engine> engines()

A list of all engines in the vessel.

Game Scenes:All

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.

Game Scenes:All
std::vector<Fairing> fairings()

A list of all fairings in the vessel.

Game Scenes:All
std::vector<Intake> intakes()

A list of all intakes in the vessel.

Game Scenes:All
std::vector<Leg> legs()

A list of all landing legs attached to the vessel.

Game Scenes:All
std::vector<LaunchClamp> launch_clamps()

A list of all launch clamps attached to the vessel.

Game Scenes:All
std::vector<Light> lights()

A list of all lights in the vessel.

Game Scenes:All
std::vector<Parachute> parachutes()

A list of all parachutes in the vessel.

Game Scenes:All
std::vector<Radiator> radiators()

A list of all radiators in the vessel.

Game Scenes:All
std::vector<RCS> rcs()

A list of all RCS blocks/thrusters in the vessel.

Game Scenes:All
std::vector<ReactionWheel> reaction_wheels()

A list of all reaction wheels in the vessel.

Game Scenes:All
std::vector<ResourceConverter> resource_converters()

A list of all resource converters in the vessel.

Game Scenes:All
std::vector<ResourceHarvester> resource_harvesters()

A list of all resource harvesters in the vessel.

Game Scenes:All
std::vector<Sensor> sensors()

A list of all sensors in the vessel.

Game Scenes:All
std::vector<SolarPanel> solar_panels()

A list of all solar panels in the vessel.

Game Scenes:All
std::vector<Wheel> wheels()

A list of all wheels in the vessel.

Game Scenes:All

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”.

Game Scenes:All
std::string title()

Title of the part, as shown when the part is right clicked in-game. For example “Mk1-2 Command Pod”.

Game Scenes:All
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.

Game Scenes:All

Note

This string is shared with kOS if it is installed.

bool highlighted()
void set_highlighted(bool value)

Whether the part is highlighted.

Game Scenes:All
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.

Game Scenes:All
double cost()

The cost of the part, in units of funds.

Game Scenes:All
Vessel vessel()

The vessel that contains this part.

Game Scenes:All
Part parent()

The parts parent. Returns NULL if the part does not have a parent. This, in combination with Part::children(), can be used to traverse the vessels parts tree.

Game Scenes:All

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.

Game Scenes:All

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.

Game Scenes:All

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.

Game Scenes:All

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.

Game Scenes:All

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.

Game Scenes:All

Note

See the discussion on Staging.

bool massless()

Whether the part is massless.

Game Scenes:All
double mass()

The current mass of the part, including resources it contains, in kilograms. Returns zero if the part is massless.

Game Scenes:All
double dry_mass()

The mass of the part, not including any resources it contains, in kilograms. Returns zero if the part is massless.

Game Scenes:All
bool shielded()

Whether the part is shielded from the exterior of the vessel, for example by a fairing.

Game Scenes:All
float dynamic_pressure()

The dynamic pressure acting on the part, in Pascals.

Game Scenes:All
double impact_tolerance()

The impact tolerance of the part, in meters per second.

Game Scenes:All
double temperature()

Temperature of the part, in Kelvin.

Game Scenes:All
double skin_temperature()

Temperature of the skin of the part, in Kelvin.

Game Scenes:All
double max_temperature()

Maximum temperature that the part can survive, in Kelvin.

Game Scenes:All
double max_skin_temperature()

Maximum temperature that the skin of the part can survive, in Kelvin.

Game Scenes:All
float thermal_mass()

A measure of how much energy it takes to increase the internal temperature of the part, in Joules per Kelvin.

Game Scenes:All
float thermal_skin_mass()

A measure of how much energy it takes to increase the skin temperature of the part, in Joules per Kelvin.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
Resources resources()

A Resources object for the part.

Game Scenes:All
bool crossfeed()

Whether this part is crossfeed capable.

Game Scenes:All
bool is_fuel_line()

Whether this part is a fuel line.

Game Scenes:All
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.

Game Scenes:All

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.

Game Scenes:All

Note

See the discussion on Fuel Lines.

std::vector<Module> modules()

The modules for this part.

Game Scenes:All
Antenna antenna()

A Antenna if the part is an antenna, otherwise NULL.

Game Scenes:All
CargoBay cargo_bay()

A CargoBay if the part is a cargo bay, otherwise NULL.

Game Scenes:All
ControlSurface control_surface()

A ControlSurface if the part is an aerodynamic control surface, otherwise NULL.

Game Scenes:All
Decoupler decoupler()

A Decoupler if the part is a decoupler, otherwise NULL.

Game Scenes:All
DockingPort docking_port()

A DockingPort if the part is a docking port, otherwise NULL.

Game Scenes:All
Engine engine()

An Engine if the part is an engine, otherwise NULL.

Game Scenes:All
Experiment experiment()

An Experiment if the part is a science experiment, otherwise NULL.

Game Scenes:All
Fairing fairing()

A Fairing if the part is a fairing, otherwise NULL.

Game Scenes:All
Intake intake()

An Intake if the part is an intake, otherwise NULL.

Game Scenes:All

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.

Leg leg()

A Leg if the part is a landing leg, otherwise NULL.

Game Scenes:All
LaunchClamp launch_clamp()

A LaunchClamp if the part is a launch clamp, otherwise NULL.

Game Scenes:All
Light light()

A Light if the part is a light, otherwise NULL.

Game Scenes:All
Parachute parachute()

A Parachute if the part is a parachute, otherwise NULL.

Game Scenes:All
Radiator radiator()

A Radiator if the part is a radiator, otherwise NULL.

Game Scenes:All
RCS rcs()

A RCS if the part is an RCS block/thruster, otherwise NULL.

Game Scenes:All
ReactionWheel reaction_wheel()

A ReactionWheel if the part is a reaction wheel, otherwise NULL.

Game Scenes:All
ResourceConverter resource_converter()

A ResourceConverter if the part is a resource converter, otherwise NULL.

Game Scenes:All
ResourceHarvester resource_harvester()

A ResourceHarvester if the part is a resource harvester, otherwise NULL.

Game Scenes:All
Sensor sensor()

A Sensor if the part is a sensor, otherwise NULL.

Game Scenes:All
SolarPanel solar_panel()

A SolarPanel if the part is a solar panel, otherwise NULL.

Game Scenes:All
Wheel wheel()

A Wheel if the part is a wheel, otherwise NULL.

Game Scenes:All
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.

Game Scenes:

All

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.

Game Scenes:

All

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.

Game Scenes:

All

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.

Game Scenes:

All

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.

Game Scenes:

All

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)\).

Game Scenes:

All

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).

Game Scenes:All
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.

Game Scenes:All
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.
Game Scenes:All

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().

../../../_images/part.png

Mk1 Command Pod reference frame origin and axes

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.
Game Scenes:All

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.

Game Scenes:

All

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.
Game Scenes:

All

Note

The force is applied instantaneously in a single physics update.

class Force

Obtained by calling Part::add_force().

Part part()

The part that this force is applied to.

Game Scenes:All
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.
Game Scenes:All
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.
Game Scenes:All
ReferenceFrame reference_frame()
void set_reference_frame(ReferenceFrame value)

The reference frame of the force vector and position.

Game Scenes:All
void remove()

Remove the force.

Game Scenes:All

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”.

Game Scenes:All
Part part()

The part that contains this module.

Game Scenes:All
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.

Game Scenes:All
bool has_field(std::string name)

Returns true if the module has a field with the given name.

Parameters:
  • name – Name of the field.
Game Scenes:

All

std::string get_field(std::string name)

Returns the value of a field.

Parameters:
  • name – Name of the field.
Game Scenes:

All

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.
Game Scenes:

All

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.
Game Scenes:

All

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.
Game Scenes:

All

void reset_field(std::string name)

Set the value of a field to its original value.

Parameters:
  • name – Name of the field.
Game Scenes:

All

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.

Game Scenes:All
bool has_event(std::string name)

true if the module has an event with the given name.

Parameters:
Game Scenes:All
void trigger_event(std::string name)

Trigger the named event. Equivalent to clicking the button in the right-click menu of the part.

Parameters:
Game Scenes:All
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.

Game Scenes:All
bool has_action(std::string name)

true if the part has an action with the given name.

Parameters:
Game Scenes:All
void set_action(std::string name, bool value = true)

Set the value of an action with the given name.

Parameters:
Game Scenes:All

Specific Types of Part

The following classes provide functionality for specific types of part.

Antenna

class Antenna

An antenna. Obtained by calling Part::antenna().

Part part()

The part object for this antenna.

Game Scenes:All
AntennaState state()

The current state of the antenna.

Game Scenes:All
bool deployable()

Whether the antenna is deployable.

Game Scenes:All
bool deployed()
void set_deployed(bool value)

Whether the antenna is deployed.

Game Scenes:All

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.

Game Scenes:All
void transmit()

Transmit data.

Game Scenes:All
void cancel()

Cancel current transmission of data.

Game Scenes:All
bool allow_partial()
void set_allow_partial(bool value)

Whether partial data transmission is permitted.

Game Scenes:All
double power()

The power of the antenna.

Game Scenes:All
bool combinable()

Whether the antenna can be combined with other antennae on the vessel to boost the power.

Game Scenes:All
double combinable_exponent()

Exponent used to calculate the combined power of multiple antennae on a vessel.

Game Scenes:All
float packet_interval()

Interval between sending packets in seconds.

Game Scenes:All
float packet_size()

Amount of data sent per packet in Mits.

Game Scenes:All
double packet_resource_cost()

Units of electric charge consumed per packet sent.

Game Scenes:All
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.

Cargo Bay

class CargoBay

A cargo bay. Obtained by calling Part::cargo_bay().

Part part()

The part object for this cargo bay.

Game Scenes:All
CargoBayState state()

The state of the cargo bay.

Game Scenes:All
bool open()
void set_open(bool value)

Whether the cargo bay is open.

Game Scenes:All
enum struct CargoBayState

The state of a cargo bay. See CargoBay::state().

enumerator open

Cargo bay is fully open.

enumerator closed

Cargo bay closed and locked.

enumerator opening

Cargo bay is opening.

enumerator closing

Cargo bay is closing.

Control Surface

class ControlSurface

An aerodynamic control surface. Obtained by calling Part::control_surface().

Part part()

The part object for this control surface.

Game Scenes:All
bool pitch_enabled()
void set_pitch_enabled(bool value)

Whether the control surface has pitch control enabled.

Game Scenes:All
bool yaw_enabled()
void set_yaw_enabled(bool value)

Whether the control surface has yaw control enabled.

Game Scenes:All
bool roll_enabled()
void set_roll_enabled(bool value)

Whether the control surface has roll control enabled.

Game Scenes:All
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.

Game Scenes:All
bool inverted()
void set_inverted(bool value)

Whether the control surface movement is inverted.

Game Scenes:All
bool deployed()
void set_deployed(bool value)

Whether the control surface has been fully deployed.

Game Scenes:All
float surface_area()

Surface area of the control surface in \(m^2\).

Game Scenes:All
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().

Game Scenes:All

Decoupler

class Decoupler

A decoupler. Obtained by calling Part::decoupler()

Part part()

The part object for this decoupler.

Game Scenes:All
Vessel decouple()

Fires the decoupler. Returns the new vessel created when the decoupler fires. Throws an exception if the decoupler has already fired.

Game Scenes:All

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.

Game Scenes:All
bool staged()

Whether the decoupler is enabled in the staging sequence.

Game Scenes:All
float impulse()

The impulse that the decoupler imparts when it is fired, in Newton seconds.

Game Scenes:All

Docking Port

class DockingPort

A docking port. Obtained by calling Part::docking_port()

Part part()

The part object for this docking port.

Game Scenes:All
DockingPortState state()

The current state of the docking port.

Game Scenes:All
Part docked_part()

The part that this docking port is docked to. Returns NULL if this docking port is not docked to anything.

Game Scenes:All
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.

Game Scenes:All

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.

Game Scenes:All
bool has_shield()

Whether the docking port has a shield.

Game Scenes:All
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 returns false. When set to true, the shield is closed, and when set to false the shield is opened. If the docking port does not have a shield, setting this attribute has no effect.

Game Scenes:All
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.

Game Scenes:

All

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.

Game Scenes:

All

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)\).

Game Scenes:

All

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.
Game Scenes:All

Note

This reference frame is not necessarily equivalent to the reference frame for the part, returned by Part::reference_frame().

../../../_images/docking-port.png

Docking port reference frame origin and axes

../../../_images/docking-port-inline.png

Inline docking port reference frame origin and axes

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.

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().

Part part()

The part object for this engine.

Game Scenes:All
bool active()
void set_active(bool value)

Whether the engine is active. Setting this attribute may have no effect, depending on Engine::can_shutdown() and Engine::can_restart().

Game Scenes:All
float thrust()

The current amount of thrust being produced by the engine, in Newtons.

Game Scenes:All
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.

Game Scenes:All
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%.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
std::vector<Thruster> thrusters()

The components of the engine that generate thrust.

Game Scenes:All

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.

Game Scenes:All
float vacuum_specific_impulse()

The vacuum specific impulse of the engine, in seconds.

Game Scenes:All
float kerbin_sea_level_specific_impulse()

The specific impulse of the engine at sea level on Kerbin, in seconds.

Game Scenes:All
std::vector<std::string> propellant_names()

The names of the propellants that the engine consumes.

Game Scenes:All
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.

Game Scenes:All

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.

Game Scenes:All
bool has_fuel()

Whether the engine has any fuel available.

Game Scenes:All

Note

The engine must be activated for this property to update correctly.

float throttle()

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).

Game Scenes:All
bool throttle_locked()

Whether the Control::throttle() affects the engine. For example, this is true for liquid fueled rockets, and false for solid rocket boosters.

Game Scenes:All
bool can_restart()

Whether the engine can be restarted once shutdown. If the engine cannot be shutdown, returns false. For example, this is true for liquid fueled rockets and false for solid rocket boosters.

Game Scenes:All
bool can_shutdown()

Whether the engine can be shutdown once activated. For example, this is true for liquid fueled rockets and false for solid rocket boosters.

Game Scenes:All
bool has_modes()

Whether the engine has multiple modes of operation.

Game Scenes:All
std::string mode()
void set_mode(std::string value)

The name of the current engine mode.

Game Scenes:All
std::map<std::string, Engine> modes()

The available modes for the engine. A dictionary mapping mode names to Engine objects.

Game Scenes:All
void toggle_mode()

Toggle the current engine mode.

Game Scenes:All
bool auto_mode_switch()
void set_auto_mode_switch(bool value)

Whether the engine will automatically switch modes.

Game Scenes:All
bool gimballed()

Whether the engine is gimballed.

Game Scenes:All
float gimbal_range()

The range over which the gimbal can move, in degrees. Returns 0 if the engine is not gimballed.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
class Propellant

A propellant for an engine. Obtains by calling Engine::propellants().

std::string name()

The name of the propellant.

Game Scenes:All
double current_amount()

The current amount of propellant.

Game Scenes:All
double current_requirement()

The required amount of propellant.

Game Scenes:All
double total_resource_available()

The total amount of the underlying resource currently reachable given resource flow rules.

Game Scenes:All
double total_resource_capacity()

The total vehicle capacity for the underlying propellant resource, restricted by resource flow rules.

Game Scenes:All
bool ignore_for_isp()

If this propellant should be ignored when calculating required mass flow given specific impulse.

Game Scenes:All
bool ignore_for_thrust_curve()

If this propellant should be ignored for thrust curve calculations.

Game Scenes:All
bool draw_stack_gauge()

If this propellant has a stack gauge or not.

Game Scenes:All
bool is_deprived()

If this propellant is deprived.

Game Scenes:All
float ratio()

The propellant ratio.

Game Scenes:All

Experiment

class Experiment

Obtained by calling Part::experiment().

Part part()

The part object for this experiment.

Game Scenes:All
void run()

Run the experiment.

Game Scenes:All
void transmit()

Transmit all experimental data contained by this part.

Game Scenes:All
void dump()

Dump the experimental data contained by the experiment.

Game Scenes:All
void reset()

Reset the experiment.

Game Scenes:All
bool deployed()

Whether the experiment has been deployed.

Game Scenes:All
bool rerunnable()

Whether the experiment can be re-run.

Game Scenes:All
bool inoperable()

Whether the experiment is inoperable.

Game Scenes:All
bool has_data()

Whether the experiment contains data.

Game Scenes:All
std::vector<ScienceData> data()

The data contained in this experiment.

Game Scenes:All
std::string biome()

The name of the biome the experiment is currently in.

Game Scenes:All
bool available()

Determines if the experiment is available given the current conditions.

Game Scenes:All
ScienceSubject science_subject()

Containing information on the corresponding specific science result for the current conditions. Returns NULL if the experiment is unavailable.

Game Scenes:All
class ScienceData

Obtained by calling Experiment::data().

float data_amount()

Data amount.

Game Scenes:All
float science_value()

Science value.

Game Scenes:All
float transmit_value()

Transmit value.

Game Scenes:All
class ScienceSubject

Obtained by calling Experiment::science_subject().

std::string title()

Title of science subject, displayed in science archives

Game Scenes:All
bool is_complete()

Whether the experiment has been completed.

Game Scenes:All
float science()

Amount of science already earned from this subject, not updated until after transmission/recovery.

Game Scenes:All
float science_cap()

Total science allowable for this subject.

Game Scenes:All
float data_scale()

Multiply science value by this to determine data amount in mits.

Game Scenes:All
float subject_value()

Multiplier for specific Celestial Body/Experiment Situation combination.

Game Scenes:All
float scientific_value()

Diminishing value multiplier for decreasing the science value returned from repeated experiments.

Game Scenes:All

Fairing

class Fairing

A fairing. Obtained by calling Part::fairing().

Part part()

The part object for this fairing.

Game Scenes:All
void jettison()

Jettison the fairing. Has no effect if it has already been jettisoned.

Game Scenes:All
bool jettisoned()

Whether the fairing has been jettisoned.

Game Scenes:All

Intake

class Intake

An air intake. Obtained by calling Part::intake().

Part part()

The part object for this intake.

Game Scenes:All
bool open()
void set_open(bool value)

Whether the intake is open.

Game Scenes:All
float speed()

Speed of the flow into the intake, in \(m/s\).

Game Scenes:All
float flow()

The rate of flow into the intake, in units of resource per second.

Game Scenes:All
float area()

The area of the intake’s opening, in square meters.

Game Scenes:All

Leg

class Leg

A landing leg. Obtained by calling Part::leg().

Part part()

The part object for this landing leg.

Game Scenes:All
LegState state()

The current state of the landing leg.

Game Scenes:All
bool deployable()

Whether the leg is deployable.

Game Scenes:All
bool deployed()
void set_deployed(bool value)

Whether the landing leg is deployed.

Game Scenes:All

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.

Game Scenes:All
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.

Launch Clamp

class LaunchClamp

A launch clamp. Obtained by calling Part::launch_clamp().

Part part()

The part object for this launch clamp.

Game Scenes:All
void release()

Releases the docking clamp. Has no effect if the clamp has already been released.

Game Scenes:All

Light

class Light

A light. Obtained by calling Part::light().

Part part()

The part object for this light.

Game Scenes:All
bool active()
void set_active(bool value)

Whether the light is switched on.

Game Scenes:All
std::tuple<float, float, float> color()
void set_color(std::tuple<float, float, float> value)

The color of the light, as an RGB triple.

Game Scenes:All
float power_usage()

The current power usage, in units of charge per second.

Game Scenes:All

Parachute

class Parachute

A parachute. Obtained by calling Part::parachute().

Part part()

The part object for this parachute.

Game Scenes:All
void deploy()

Deploys the parachute. This has no effect if the parachute has already been deployed.

Game Scenes:All
bool deployed()

Whether the parachute has been deployed.

Game Scenes:All
void arm()

Deploys the parachute. This has no effect if the parachute has already been armed or deployed. Only applicable to RealChutes parachutes.

Game Scenes:All
bool armed()

Whether the parachute has been armed or deployed. Only applicable to RealChutes parachutes.

Game Scenes:All
ParachuteState state()

The current state of the parachute.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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. (RealChutes only)

enumerator active

The parachute is still stowed, but ready to semi-deploy. (Stock parachutes only)

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.

Radiator

class Radiator

A radiator. Obtained by calling Part::radiator().

Part part()

The part object for this radiator.

Game Scenes:All
bool deployable()

Whether the radiator is deployable.

Game Scenes:All
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 always true.

Game Scenes:All
RadiatorState state()

The current state of the radiator.

Game Scenes:All

Note

A fixed radiator is always RadiatorState::extended.

enum struct RadiatorState

The state of a radiator. RadiatorState

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 being broken.

Resource Converter

class ResourceConverter

A resource converter. Obtained by calling Part::resource_converter().

Part part()

The part object for this converter.

Game Scenes:All
int32_t count()

The number of converters in the part.

Game Scenes:All
std::string name(int32_t index)

The name of the specified converter.

Parameters:
  • index – Index of the converter.
Game Scenes:

All

bool active(int32_t index)

True if the specified converter is active.

Parameters:
  • index – Index of the converter.
Game Scenes:

All

void start(int32_t index)

Start the specified converter.

Parameters:
  • index – Index of the converter.
Game Scenes:

All

void stop(int32_t index)

Stop the specified converter.

Parameters:
  • index – Index of the converter.
Game Scenes:

All

ResourceConverterState state(int32_t index)

The state of the specified converter.

Parameters:
  • index – Index of the converter.
Game Scenes:

All

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.
Game Scenes:

All

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.
Game Scenes:

All

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.
Game Scenes:

All

float optimum_core_temperature()

The core temperature at which the converter will operate with peak efficiency, in Kelvin.

Game Scenes:All
float core_temperature()

The core temperature of the converter, in Kelvin.

Game Scenes:All
float thermal_efficiency()

The thermal efficiency of the converter, as a percentage of its maximum.

Game Scenes:All
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.

Resource Harvester

class ResourceHarvester

A resource harvester (drill). Obtained by calling Part::resource_harvester().

Part part()

The part object for this harvester.

Game Scenes:All
ResourceHarvesterState state()

The state of the harvester.

Game Scenes:All
bool deployed()
void set_deployed(bool value)

Whether the harvester is deployed.

Game Scenes:All
bool active()
void set_active(bool value)

Whether the harvester is actively drilling.

Game Scenes:All
float extraction_rate()

The rate at which the drill is extracting ore, in units per second.

Game Scenes:All
float thermal_efficiency()

The thermal efficiency of the drill, as a percentage of its maximum.

Game Scenes:All
float core_temperature()

The core temperature of the drill, in Kelvin.

Game Scenes:All
float optimum_core_temperature()

The core temperature at which the drill will operate with peak efficiency, in Kelvin.

Game Scenes:All
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.

Reaction Wheel

class ReactionWheel

A reaction wheel. Obtained by calling Part::reaction_wheel().

Part part()

The part object for this reaction wheel.

Game Scenes:All
bool active()
void set_active(bool value)

Whether the reaction wheel is active.

Game Scenes:All
bool broken()

Whether the reaction wheel is broken.

Game Scenes:All
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.

Game Scenes:All
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().

Game Scenes:All

RCS

class RCS

An RCS block or thruster. Obtained by calling Part::rcs().

Part part()

The part object for this RCS.

Game Scenes:All
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()).

Game Scenes:All
bool enabled()
void set_enabled(bool value)

Whether the RCS thrusters are enabled.

Game Scenes:All
bool pitch_enabled()
void set_pitch_enabled(bool value)

Whether the RCS thruster will fire when pitch control input is given.

Game Scenes:All
bool yaw_enabled()
void set_yaw_enabled(bool value)

Whether the RCS thruster will fire when yaw control input is given.

Game Scenes:All
bool roll_enabled()
void set_roll_enabled(bool value)

Whether the RCS thruster will fire when roll control input is given.

Game Scenes:All
bool forward_enabled()
void set_forward_enabled(bool value)

Whether the RCS thruster will fire when pitch control input is given.

Game Scenes:All
bool up_enabled()
void set_up_enabled(bool value)

Whether the RCS thruster will fire when yaw control input is given.

Game Scenes:All
bool right_enabled()
void set_right_enabled(bool value)

Whether the RCS thruster will fire when roll control input is given.

Game Scenes:All
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.

Game Scenes:All
float max_thrust()

The maximum amount of thrust that can be produced by the RCS thrusters when active, in Newtons.

Game Scenes:All
float max_vacuum_thrust()

The maximum amount of thrust that can be produced by the RCS thrusters when active in a vacuum, in Newtons.

Game Scenes:All
std::vector<Thruster> thrusters()

A list of thrusters, one of each nozzel in the RCS part.

Game Scenes:All
float specific_impulse()

The current specific impulse of the RCS, in seconds. Returns zero if the RCS is not active.

Game Scenes:All
float vacuum_specific_impulse()

The vacuum specific impulse of the RCS, in seconds.

Game Scenes:All
float kerbin_sea_level_specific_impulse()

The specific impulse of the RCS at sea level on Kerbin, in seconds.

Game Scenes:All
std::vector<std::string> propellants()

The names of resources that the RCS consumes.

Game Scenes:All
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.

Game Scenes:All
bool has_fuel()

Whether the RCS has fuel available.

Game Scenes:All

Note

The RCS thruster must be activated for this property to update correctly.

Sensor

class Sensor

A sensor, such as a thermometer. Obtained by calling Part::sensor().

Part part()

The part object for this sensor.

Game Scenes:All
bool active()
void set_active(bool value)

Whether the sensor is active.

Game Scenes:All
std::string value()

The current value of the sensor.

Game Scenes:All

Solar Panel

class SolarPanel

A solar panel. Obtained by calling Part::solar_panel().

Part part()

The part object for this solar panel.

Game Scenes:All
bool deployable()

Whether the solar panel is deployable.

Game Scenes:All
bool deployed()
void set_deployed(bool value)

Whether the solar panel is extended.

Game Scenes:All
SolarPanelState state()

The current state of the solar panel.

Game Scenes:All
float energy_flow()

The current amount of energy being generated by the solar panel, in units of charge per second.

Game Scenes:All
float sun_exposure()

The current amount of sunlight that is incident on the solar panel, as a percentage. A value between 0 and 1.

Game Scenes:All
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.

Thruster

class Thruster

The component of an Engine or RCS part that generates thrust. Can obtained by calling Engine::thrusters() or RCS::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.

Part part()

The Part that contains this thruster.

Game Scenes:All
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.

Game Scenes:

All

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.

Game Scenes:

All

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.
Game Scenes:All
bool gimballed()

Whether the thruster is gimballed.

Game Scenes:All
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.

Game Scenes:

All

std::tuple<double, double, double> gimbal_angle()

The current gimbal angle in the pitch, roll and yaw axes, in degrees.

Game Scenes:All
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.

Game Scenes:

All

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.

Game Scenes:

All

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.

Part part()

The part object for this wheel.

Game Scenes:All
WheelState state()

The current state of the wheel.

Game Scenes:All
float radius()

Radius of the wheel, in meters.

Game Scenes:All
bool grounded()

Whether the wheel is touching the ground.

Game Scenes:All
bool has_brakes()

Whether the wheel has brakes.

Game Scenes:All
float brakes()
void set_brakes(float value)

The braking force, as a percentage of maximum, when the brakes are applied.

Game Scenes:All
bool auto_friction_control()
void set_auto_friction_control(bool value)

Whether automatic friction control is enabled.

Game Scenes:All
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.

Game Scenes:All
bool deployable()

Whether the wheel is deployable.

Game Scenes:All
bool deployed()
void set_deployed(bool value)

Whether the wheel is deployed.

Game Scenes:All
bool powered()

Whether the wheel is powered by a motor.

Game Scenes:All
bool motor_enabled()
void set_motor_enabled(bool value)

Whether the motor is enabled.

Game Scenes:All
bool motor_inverted()
void set_motor_inverted(bool value)

Whether the direction of the motor is inverted.

Game Scenes:All
MotorState motor_state()

Whether the direction of the motor is inverted.

Game Scenes:All
float motor_output()

The output of the motor. This is the torque currently being generated, in Newton meters.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
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.

Game Scenes:All
bool steerable()

Whether the wheel has steering.

Game Scenes:All
bool steering_enabled()
void set_steering_enabled(bool value)

Whether the wheel steering is enabled.

Game Scenes:All
bool steering_inverted()
void set_steering_inverted(bool value)

Whether the wheel steering is inverted.

Game Scenes:All
bool has_suspension()

Whether the wheel has suspension.

Game Scenes:All
float suspension_spring_strength()

Suspension spring strength, as set in the editor.

Game Scenes:All
float suspension_damper_strength()

Suspension damper strength, as set in the editor.

Game Scenes:All
bool broken()

Whether the wheel is broken.

Game Scenes:All
bool repairable()

Whether the wheel is repairable.

Game Scenes:All
float stress()

Current stress on the wheel.

Game Scenes:All
float stress_tolerance()

Stress tolerance of the wheel.

Game Scenes:All
float stress_percentage()

Current stress on the wheel as a percentage of its stress tolerance.

Game Scenes:All
float deflection()

Current deflection of the wheel.

Game Scenes:All
float slip()

Current slip of the wheel.

Game Scenes:All
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.

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.

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.

../../../_images/parts.png

Figure 1 – Example parts making up a vessel.

../../../_images/parts-tree.png

Figure 2 – Tree of parts for the vessel in Figure 1. Arrows point from the parent part to the child part.

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

../../../_images/parts-fuel-lines.png

Figure 5 – Fuel lines from the example in Figure 1. Fuel flows from the parts highlighted in green, into the part highlighted in blue.

../../../_images/parts-fuel-lines-tree.png

Figure 4 – A subset of the parts tree from Figure 2 above.

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

../../../_images/parts-staging.png

Figure 6 – Example vessel from Figure 1 with a staging sequence.

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.

../../../_images/parts-staging-activate.png

Figure 7 – The stage in which each part is activated.

../../../_images/parts-staging-decouple.png

Figure 8 – The stage in which each part is decoupled.