Пример #1
0
        public void SaveValues()
        {
            var joint = node.GetSkeletalJoint();

            if ((string)jointTypeComboBox.SelectedItem == "(Select an option)")
            {
                joint.cDriver = null;
                joint.weight  = 0;
            }
            else
            {
                // Driver type
                var cType = (string)jointTypeComboBox.SelectedItem == "Drivetrain Wheel" ? JointDriverType.MOTOR : JointDriver.GetAllowedDrivers(joint)[driverTypeComboBox.SelectedIndex];
                if (joint.cDriver == null || !joint.cDriver.GetDriveType().Equals(cType)) // Defaults
                {
                    joint.cDriver = new JointDriver(cType)
                    {
                        port1      = 3,
                        port2      = 3,
                        InputGear  = 1,
                        OutputGear = 1,
                        lowerLimit = 0,
                        upperLimit = 0,
                        isCan      = true
                    };
                }

                // Always
                joint.cDriver.hasBrake   = true;
                joint.cDriver.motor      = MotorType.GENERIC;
                joint.cDriver.InputGear  = 1;
                joint.cDriver.OutputGear = advancedSettingsForm.GearRatio;
                joint.cDriver.lowerLimit = 0;
                joint.cDriver.upperLimit = 0;

                if ((string)jointTypeComboBox.SelectedItem == "Drivetrain Wheel")
                {
                    // Port/wheel side
                    joint.cDriver.port1 = dtSideComboBox.SelectedIndex;
                    joint.cDriver.isCan = true;

                    // Wheel type
                    var wheelDriver = new WheelDriverMeta
                    {
                        type         = (WheelType)wheelTypeComboBox.SelectedIndex + 1,
                        isDriveWheel = true
                    };
                    wheelDriver.SetFrictionLevel(FrictionLevel.MEDIUM);
                    joint.cDriver.AddInfo(wheelDriver);

                    // Weight
                    joint.weight = 0;
                }
                else if ((string)jointTypeComboBox.SelectedItem == "Mechanism Joint")
                {
                    // Port/wheel side
                    joint.cDriver.port1 = advancedSettingsForm.PortId;
                    if (joint.cDriver.port1 <= 2)
                    {
                        joint.cDriver.port1 = 2;
                    }
                    joint.cDriver.isCan = advancedSettingsForm.IsCan;

                    // Wheel driver
                    joint.cDriver.RemoveInfo <WheelDriverMeta>();

                    // Weight
                    joint.weight = (double)weightInput.Value;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Saves all the data from the DriveChooser frame to be used elsewhere in the program.  Also begins calculation of wheel radius.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SaveButton_Click(object sender, EventArgs e)
        {
            bool canClose = true;

            if (!ShouldSave())
            {
                Close();
                return;
            }

            if (cmbJointDriver.SelectedIndex <= 0)
            {
                joint.cDriver = null;
            }
            else
            {
                JointDriverType cType = typeOptions[cmbJointDriver.SelectedIndex - 1];

                double inputGear = 1, outputGear = 1;

                inputGear = (double)InputGeartxt.Value;

                outputGear = (double)OutputGeartxt.Value;// tries to parse the double from the output gear

                joint.cDriver = new JointDriver(cType)
                {
                    port1      = (int)txtPort1.Value,
                    port2      = (int)txtPort2.Value,
                    InputGear  = inputGear,  // writes the input gear to the internal joint driver so it can be exported
                    OutputGear = outputGear, // writes the output gear to the internal joint driver so it can be exported
                    lowerLimit = (float)txtLowLimit.Value,
                    upperLimit = (float)txtHighLimit.Value,
                    isCan      = rbCAN.Checked,
                    hasBrake   = chkBoxHasBrake.Checked
                };
                if (cType.IsMotor())
                {
                    if (!Enum.TryParse(MotorTypeDropDown.SelectedItem.ToString(), out MotorType motor))
                    {
                        motor = MotorType.GENERIC;
                    }
                    joint.cDriver.motor = motor;
                    RobotExporterAddInServer.Instance.AddInSettingsManager.DefaultRobotCompetition = RobotCompetitionDropDown.SelectedItem.ToString();
                }
                //Only need to store wheel driver if run by motor and is a wheel.
                if (cType.IsMotor() && (WheelType)cmbWheelType.SelectedIndex != WheelType.NOT_A_WHEEL)
                {
                    WheelDriverMeta wheelDriver = new WheelDriverMeta()
                    {
                        type         = (WheelType)cmbWheelType.SelectedIndex,
                        isDriveWheel = chkBoxDriveWheel.Checked
                    }; //The info about the wheel attached to the joint.
                       //TODO: Find real values that make sense for the friction.  Also add Mecanum wheels.

                    wheelDriver.SetFrictionLevel((FrictionLevel)cmbFrictionLevel.SelectedIndex);

                    joint.cDriver.AddInfo(wheelDriver);
                }
                else
                {
                    joint.cDriver.RemoveInfo <WheelDriverMeta>();
                }

                if (cType.IsPneumatic())
                {
                    PneumaticDriverMeta pneumaticDriver = new PneumaticDriverMeta()
                    {
                        pressureEnum = (PneumaticPressure)cmbPneumaticPressure.SelectedIndex,
                        width        = (double)numericUpDownPnuDia.Value
                    }; //The info about the wheel attached to the joint.
                    joint.cDriver.AddInfo(pneumaticDriver);
                }
                else
                {
                    joint.cDriver.RemoveInfo <PneumaticDriverMeta>();
                }

                if (cType.IsElevator())
                {
                    ElevatorDriverMeta elevatorDriver = new ElevatorDriverMeta()
                    {
                        type = ElevatorType.NOT_MULTI
                    };
                    joint.cDriver.AddInfo(elevatorDriver);
                }
                else
                {
                    joint.cDriver.RemoveInfo <ElevatorDriverMeta>();
                }
            }

            if (nodes.Count > 1)
            {
                foreach (RigidNode_Base node in nodes)
                {
                    if (joint.cDriver == null)
                    {
                        node.GetSkeletalJoint().cDriver = null;
                    }
                    else
                    {
                        JointDriver driver = new JointDriver(joint.cDriver.GetDriveType())
                        {
                            port1      = joint.cDriver.port1,
                            port2      = joint.cDriver.port2,
                            isCan      = joint.cDriver.isCan,
                            OutputGear = joint.cDriver.OutputGear,
                            InputGear  = joint.cDriver.InputGear,
                            lowerLimit = joint.cDriver.lowerLimit,
                            upperLimit = joint.cDriver.upperLimit
                        };
                        joint.cDriver.CopyMetaInfo(driver);

                        node.GetSkeletalJoint().cDriver = driver;
                    }
                }
            }

            if (canClose)// make sure there are no outstanding issues for the user to fix before we save
            {
                Saved = true;
                Close();
            }
        }
Пример #3
0
    /// <summary>
    /// Saves all the data from the DriveChooser frame to be used elsewhere in the program.  Also begins calculation of wheel radius.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void SaveButton_Click(object sender, EventArgs e)
    {
        bool canClose = true;

        if (!ShouldSave())
        {
            Close();
            return;
        }

        if (cmbJointDriver.SelectedIndex <= 0)
        {
            joint.cDriver = null;
        }
        else
        {
            JointDriverType cType = typeOptions[cmbJointDriver.SelectedIndex - 1];

            double inputGear = 1, outputGear = 1;

            inputGear = (double)InputGeartxt.Value;

            outputGear = (double)OutputGeartxt.Value;// tries to parse the double from the output gear

            joint.cDriver = new JointDriver(cType)
            {
                port1      = (int)txtPort1.Value,
                port2      = (int)txtPort2.Value,
                InputGear  = inputGear,  // writes the input gear to the internal joint driver so it can be exported
                OutputGear = outputGear, // writes the output gear to the internal joint driver so it can be exported
                lowerLimit = (float)txtLowLimit.Value,
                upperLimit = (float)txtHighLimit.Value,
                isCan      = rbCAN.Checked,
                hasBrake   = chkBoxHasBrake.Checked
            };
            //Only need to store wheel driver if run by motor and is a wheel.
            if (cType.IsMotor() && (WheelType)cmbWheelType.SelectedIndex != WheelType.NOT_A_WHEEL)
            {
                #region WHEEL_SAVING
                WheelDriverMeta wheelDriver = new WheelDriverMeta()
                {
                    type         = (WheelType)cmbWheelType.SelectedIndex,
                    isDriveWheel = chkBoxDriveWheel.Checked
                }; //The info about the wheel attached to the joint.
                   //TODO: Find real values that make sense for the friction.  Also add Mecanum wheels.

                wheelDriver.SetFrictionLevel((FrictionLevel)cmbFrictionLevel.SelectedIndex);

                joint.cDriver.AddInfo(wheelDriver);
                #endregion
            }
            else
            {
                joint.cDriver.RemoveInfo <WheelDriverMeta>();
            }

            if (cType.IsPneumatic())
            {
                #region PNEUMATIC_SAVING
                PneumaticDriverMeta pneumaticDriver = new PneumaticDriverMeta()
                {
                    pressureEnum = (PneumaticPressure)cmbPneumaticPressure.SelectedIndex,
                    widthEnum    = (PneumaticDiameter)cmbPneumaticDiameter.SelectedIndex
                }; //The info about the wheel attached to the joint.
                joint.cDriver.AddInfo(pneumaticDriver);
                #endregion
            }
            else
            {
                joint.cDriver.RemoveInfo <PneumaticDriverMeta>();
            }

            if (cType.IsElevator())
            {
                #region ELEVATOR_SAVING
                ElevatorDriverMeta elevatorDriver = new ElevatorDriverMeta()
                {
                    type = ElevatorType.NOT_MULTI
                };
                joint.cDriver.AddInfo(elevatorDriver);
                #endregion
            }
            else
            {
                joint.cDriver.RemoveInfo <ElevatorDriverMeta>();
            }
        }

        if (nodes.Count > 1)
        {
            foreach (RigidNode_Base node in nodes)
            {
                if (joint.cDriver == null)
                {
                    node.GetSkeletalJoint().cDriver = null;
                }
                else
                {
                    JointDriver driver = new JointDriver(joint.cDriver.GetDriveType())
                    {
                        port1      = joint.cDriver.port1,
                        port2      = joint.cDriver.port2,
                        isCan      = joint.cDriver.isCan,
                        OutputGear = joint.cDriver.OutputGear,
                        InputGear  = joint.cDriver.InputGear,
                        lowerLimit = joint.cDriver.lowerLimit,
                        upperLimit = joint.cDriver.upperLimit
                    };
                    joint.cDriver.CopyMetaInfo(driver);

                    node.GetSkeletalJoint().cDriver = driver;
                }
            }
        }

        if (canClose)// make sure there are no outstanding issues for the user to fix before we save
        {
            Saved = true;
            LegacyInterchange.LegacyEvents.OnRobotModified();
            Close();
        }
    }