Space Engineers

Space Engineers

Not enough ratings
MArmOS V3.0 Example: Large Mobile Welder
   
Award
Favorite
Favorited
Unfavorite
Type: Blueprint
File Size
Posted
Updated
3.326 MB
1 Sep, 2017 @ 6:15pm
1 Sep, 2017 @ 7:52pm
2 Change Notes ( view )

Subscribe to download
MArmOS V3.0 Example: Large Mobile Welder

In 1 collection by Timotei~
MArmOS V3.0 Examples
10 items
Description
This vehicle has been built for the sole purpose of showing the new RotorWheel feature of MArmOS.
The four wheels are controlled by MArmOS to make them act the same as a limitless piston.
You can find MArmOS here:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=767595187

Arm definition:
var Prefix = "ShipBuilder: "; var R1 = new Rotor( Name: Prefix+"Motor2", Axis: "Z", OriMode: 0 ); var S1 = new SolidLG( 2, 0, 0 ); var R2 = new Rotor( Name: Prefix+"Motor3", Axis: "Y", OriMode: 0 ); var S2 = new SolidLG( 7, 0, 0 ); var P3 = new Piston( Name: Prefix+"Piston4" , Axis: "X" ); var RFL = new Rotor( Name: Prefix+"MotorFL", Axis: "Y", OriMode: 0 ); var RFR = new Rotor( Name: Prefix+"MotorFR", Axis: "-Y", OriMode: 0 ); var RBR = new Rotor( Name: Prefix+"MotorBR", Axis: "-Y", OriMode: 0 ); var RBL = new Rotor( Name: Prefix+"MotorBL", Axis: "Y", OriMode: 0 ); var RWFL = new RotorWheel( Wheel: RFL, Axis: "X", Radius: 1.25*LG, Direction:1 ); var RWFR = new RotorWheel( Wheel: RFR, Axis: "-X", Radius: 1.25*LG, Direction:1 ); var RWBR = new RotorWheel( Wheel: RBR, Axis: "-X", Radius: 1.25*LG, Direction:1 ); var RWBL = new RotorWheel( Wheel: RBL, Axis: "X", Radius: 1.25*LG, Direction:1 ); var MyArm = RWFL*RWFR*RWBR*RWBL+R1 + S1 + R2 + S2 + P3; new UserControl( Arm: MyArm, ShipControllerKeyword: Prefix+"Cockpit", UseArmAsReference: false, Speed: 4, Softness: 20 );
3 Comments
mrudat 6 Jul, 2023 @ 12:54am 
The script is out of date, but copying the arm definition into the latest script appears to work.
aerinyes 15 Sep, 2020 @ 10:20pm 
<<Rotors>>
//whitespace removed
// <<OVERRIDES>>
public override void SetDeltaAngle( double dAngle =0 ){
double Vel;
if( !Override && Motor != null ) {
Vel = dAngle/Math.PI*30/dt;
double SoftMax = (Motor.UpperLimitRad < 360 ?
Math.Min( 1, Math.Abs( Motor.UpperLimitRad-Motor.Angle )/SoftMaxLimit ) : 1 );
double SoftMin = (Motor.LowerLimitRad > -360 ?
Math.Min( 1, Math.Abs( Motor.LowerLimitRad-Motor.Angle )/SoftMinLimit ) : 1 );
Vel = Math.Min( MaxSpeed*SoftMax, Vel );
Vel = Math.Max( -MaxSpeed*SoftMin, Vel );
if ( Math.Abs(Vel) < MaxSpeed+5) {
Motor.TargetVelocityRad = (Single)(Vel*Math.PI/30);
}
}
}
public override double GetAngle(){
if ( Motor != null ){
return -Motor.Angle+Offset;
} else {
return 0;
}
}
public override double GetDeltaAngle( ){
if ( Motor != null
&& Motor.Enabled && Motor.Angle < Motor.UpperLimitRad
&& Motor.Angle > Motor.LowerLimitRad) {
return -Motor.TargetVelocityRad*dt;
} else {
return 0;
}
}
sagepourpre 3 Mar, 2020 @ 12:15pm 
This example is not working. Error: IMyMotorStator does not contain a definition for UpperLimit and no accessible extension method UpperLimit.