Delmia Com二次开发

本文介绍了如何通过COM通信接口对DELMIA进行二次开发,实现环境标准化初始化,以及自动化配置仿真中的机器人,包括Object TCP、默认设置和Taglist,显著提高工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过Com 通讯方法对Delmia进行操作完成以下工作
1、初始化Delmia放在环境,保证环境标准化。
2、完成对仿真中的机器人进行操作,自动创建机器人Object TCP 等所有默认配置病完成设定的Taglist 和文件路径的个方面设置,大量节约时间

操作界面如下图:
在这里插入图片描述

程序头引用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CATIA_APP_ITF;
using SURFACEMACHINING;
using System.Runtime.InteropServices;
using System.Net.Sockets;
using System.Threading;
using System.Net;
using System.Diagnostics;
using INFITF;
using MECMOD;
using PARTITF;
using ProductStructureTypeLib;
using SPATypeLib;
using NavigatorTypeLib;
using KnowledgewareTypeLib;
using HybridShapeTypeLib;
using System.IO;
using DNBPert;
using CATMat;
using FittingTypeLib;
using DNBASY;
using System.Windows.Forms;
using PROCESSITF;
using PPR;
using NPOI.POIFS.Crypt.Dsig;
class GloalForDelmia
    {
        /// <summary>
        /// 初始化软件环境及全局变量
        /// </summary>
        /// <param name="FM">当前From</param>
        /// <param name="SoftTarget">Catia/Delmia</param>
        /// <returns></returns>
        public DataType.Dsystem InitCatEnv(Form FM)
        {
            DataType.Dsystem  Dsvalue= new DataType.Dsystem();
            INFITF.Application DSApplication;
            Documents DSDocument;
            ProcessDocument DSActiveDocument;
            Process[] AllProcess = Process.GetProcessesByName("DELMIA");
            if (AllProcess.Length>1)
            {
                try
                {
                   // MessageBox.Show("当前打开超过1个Delmia,可能操控的Delmia非您需要的对象,请核实!");
                   // IntPtr Ptr = AllProcess[2].MainWindowHandle;
                   // string Pname = AllProcess[2].MainWindowTitle;
                   //  int progid=  AllProcess[2].;
                   // object Pobj = Marshal.GetActiveObject("Delmia.Application");
                    object Tobj = Marshal.GetObjectForIUnknown(ptr2);
                   // object Pobj0 = Marshal.GetActiveObject(progid.ToString());
                   // DSApplication = (INFITF.Application)Pobj;
                   // String tn = DSApplication.get_Caption();
                }
                catch (Exception)
                {
                    throw;
                }
            }
            try
            {
                DSApplication = (INFITF.Application)Marshal.GetActiveObject("Delmia.Application");
            }
            catch (Exception)
            {
                FM.WindowState = FormWindowState.Normal;
                FM.StartPosition = FormStartPosition.CenterScreen;
                MessageBox.Show("未检测到打开的Delmia!,请重新运行Delmia!");
                Dsvalue.Revalue = -1;
                return Dsvalue;
                //throw;
            }
            DSApplication.set_Caption("正在运行瑞祥快速建模工具!");
            // 获取当前活动ProductDocument
            try
            {
                DSDocument = (Documents)DSApplication.Documents;
                DSActiveDocument = (ProcessDocument)DSApplication.ActiveDocument;
            }
            catch (Exception)
            {
                    MessageBox.Show("未检测到活动Product,正在为您创建,请手动辅助完成!");
                    Dsvalue.Revalue = -1;
                    return Dsvalue;
                //MessageBox.Show("未检测到活动Product,已自动为您创建对象!");
            }
            // 添加一个新零件
            Dsvalue.DSApplication = DSApplication;
            Dsvalue.DSDocument = DSDocument;
            Dsvalue.DSActiveDocument = DSActiveDocument;
            Dsvalue.Revalue = 0;
            return Dsvalue;
        }
        public Selection GetInitTargetProduct(Form FM, DataType.Dsystem DSystem)
        {
            FM.WindowState = FormWindowState.Minimized;
            INFITF.Application CatApplication=DSystem.DSApplication;
            ProcessDocument PPRP = DSystem.DSActiveDocument;
            Selection USelect= PPRP.Selection;
            USelect.Clear();
            var Result = USelect.SelectElement2(DataType.InputObjectType(9), "请选择初始化对象", true);
            if (Result == "Cancel")
            {
                return null;
            }
            if (USelect.Count < 1)
            {
                MessageBox.Show("请先选择对象后再点此命令!");
                return null;
            }
            return USelect;
        }
        public Selection GetIRobotMotion(Form FM, DataType.Dsystem DSystem)
        {
            FM.WindowState = FormWindowState.Minimized;
            INFITF.Application CatApplication = DSystem.DSApplication;
            ProcessDocument PPRP = DSystem.DSActiveDocument;
            Selection USelect = PPRP.Selection;
            USelect.Clear();
            var Result = USelect.SelectElement2(DataType.InputObjectType(9), "请选择一个机器人", true);
            if (Result == "Cancel")
            {
                return null;
            }
            if (USelect.Count < 1)
            {
                MessageBox.Show("请先选择对象后再点此命令!");
                return null;
            }
            return USelect;
        }
 class DataType
    {
     
        /// <summary>
        /// 达索关键值传送器
        /// </summary>
        public class Dsystem
        {
            /// <summary>
            /// 活动Application
            /// </summary>
            public virtual INFITF.Application DSApplication { get; set; }
            public virtual ProcessDocument DSPPRProduct { get; set; }
            public virtual  PPRDocument DsPPRDocument { get; set; }
            public virtual Resources DSResources { get; set; }
            /// <summary>
            /// 活动Document
            /// </summary>
            public virtual Documents DSDocument { get; set; }
            public virtual ProcessDocument DSActiveDocument { get; set; }
            /// <summary>
            /// 自定义的零件
            /// </summary>
            public virtual Part PartID{ get; set; }
            /// <summary>
            /// 用户选择集
            /// </summary>
            public virtual Selection  USelection { get; set; }
            /// <summary>
            /// -1 ERR;0 Normal
            /// </summary>
            public virtual int Revalue { get; set; }
        }
        /// <summary>
        /// 设置CATIA 拾取对象类型
        /// 0:GetAnyObject;1:GetPoint;2:Face;3:Edge;4:Pad;5:sketch;6:Shape;7:Bodies;8:Part;9:Product
        /// </summary>
        /// <returns>:</returns>
        [return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT)]
       static public object[] InputObjectType(int ReadType)
        {
            switch (ReadType)
            {
                case 0: //GetAnyObject
                    {
                        return new object[] { "AnyObject" };
                    }
                case 1: //GetPoint
                    {
                        return new object[] { "Point", "Symmetry", "Translate" };
                    }
                case 2: //Face
                    {
                        return new object[] { "Face" };
                    }
                case 3: //Edge
                    {
                        return new object[] { "Edge" };
                    }
                case 4: //Pad
                    {
                        return new object[] { "Pad" };
                    }
                case 5: //sketch
                    {
                        return new object[] { "sketch" };
                    }
                case 6: //Shape
                    {
                        return new object[] { "Shape" };
                    }
                case 7: //Bodies
                    {
                        return new object[] { "Bodies" };
                    }
                case 8: //Part
                    {
                        return new object[] { "Part" };
                    }
                case 9: //Product
                    {
                        return new object[] { "Product" };
                    }
                case 10: //RobotMotion
                    {
                        return new object[] { "RobotMotion" };
                    }
                case 11: //Robot 
                    {
                        return new object[] { "Robot" };
                    }
                case 12: //RobotTask
                    {
                        return new object[] { "RobotTask" };
                    }
                case 13: //Resource
                    {
                        return new object[] { "Operation" };
                    }
                default:
                    return new object[] { "AnyObject" };
            }
        }
        public class SimulationDir
        {
            public string MBPath { get; set; }
            public string SBRPath { get; set; }
            public string SBLPath { get; set; }
            public string FRPath { get; set; }
            public string RRPath { get; set; }
            public string UBPath { get; set; }
            public string STPath { get; set; }
            public string SMPath { get; set; }
            public string LayoutPath { get; set; }
        }
    }
 private void InitRobot_Click(object sender, EventArgs e)
        {
            Pbar.Value = 0;
            Pbar.Step = 10;
            GloalForDelmia GFD = new GloalForDelmia();
            DStype = GFD.InitCatEnv(this);
            if (DStype.Revalue == -1)
            {
                return;
            }
            Selection Uselect = GFD.GetIRobotMotion(this, DStype);
            Product Usp = null;
            if (Uselect != null && Uselect.Count > 0)
            {
                try
                {
                    String GetName = string.Empty;
                    Usp = (Product)Uselect.Item2(1).Value;
                    GetName = Usp.get_Name();
                    RobGenericController Rgcr = (RobGenericController)Usp.GetTechnologicalObject("RobGenericController");
                    RobControllerFactory CRM = (RobControllerFactory)Usp.GetTechnologicalObject("RobControllerFactory");
                    GetName = CRM.get_Name();
                    #region 机器人基本TCP Motion初始化
                    for (int i = 1; i <= Convert.ToInt16(RobotCtrlNum.Text); i++)
                    {
                        GenericAccuracyProfile GP;
                        GenericMotionProfile GMP;
                        GenericToolProfile GTP;
                        GenericObjFrameProfile GOP;
                        bool ExistsObject;
                        CRM.CreateGenericAccuracyProfile(out GP);
                        GP.GetName(ref GetName);
                        GetName = CRM.get_Name();
                        GP.SetAccuracyValue(i * 0.1);
                        GP.SetName(i * 10 + "%");
                        GP.SetAccuracyType(AccuracyType.ACCURACY_TYPE_SPEED);
                        GP.SetFlyByMode(false);
                        Rgcr.HasAccuracyProfile((i * 10 + "%"), out ExistsObject);
                        if (!ExistsObject)
                        {
                            Rgcr.AddAccuracyProfile(GP);
                        }
                        Pbar.PerformStep();
                        /
                        CRM.CreateGenericObjFrameProfile(out GOP);
                        GOP.SetObjectFrame(0, 0, 0, 0, 0, 0);
                        GOP.SetName("Object_0" + i);
                        Rgcr.HasObjFrameProfile(("Object_0" + i), out ExistsObject);
                        if (!ExistsObject)
                        {
                            Rgcr.AddObjFrameProfile(GOP);
                        }
                        Pbar.PerformStep();
                        /
                        CRM.CreateGenericMotionProfile(out GMP);
                        GMP.SetSpeedValue(i * 0.1);
                        GMP.SetName(i * 10 + "%");
                        GMP.SetMotionBasis(MotionBasis.MOTION_PERCENT);
                        Rgcr.HasMotionProfile((i * 10 + "%"), out ExistsObject);
                        if (!ExistsObject)
                        {
                            Rgcr.AddMotionProfile(GMP);
                        }
                        Pbar.PerformStep();
                        /
                        // NwName = i < 9 ? ("Tool_0" + i) : ("Tool_" + i);
                        string NwName = "Tool_0" + i;
                        Rgcr.HasToolProfile(NwName, out ExistsObject);
                        if (!ExistsObject)
                        {
                            try
                            {
                                int ToolNum = 0;
                                Rgcr.GetToolProfileCount(out ToolNum);
                                string Ctname = string.Empty;
                                if (ToolNum < 16)
                                {
                                    CRM.CreateGenericToolProfile(out GTP);
                                    Rgcr.AddToolProfile(GTP);
                                    //Object[] ToolLists = new object[ToolNum];
                                    //Rgcr.GetToolProfiles(ToolLists);
                                    //for (int j = 1; j <= ToolNum; j++)
                                    //{
                                    //    Ctname = ((GenericToolProfile)ToolLists[i]).get_Name();
                                    //    ((GenericToolProfile)ToolLists[i]).set_Name(NwName);
                                    //}
                                    //GTP.GetName(Ctname);
                                    //GTP.SetToolMobility(true);
                                    //GTP.set_Name(NwName);
                                }
                            }
                            catch (Exception)
                            {
                                throw;
                            }
                            //Object[] TooList = new object[99];
                            //Rgcr.GetToolProfiles(TooList);
                            //int TotalTool;
                            //Rgcr.GetToolProfileCount(out TotalTool);
                            //GenericToolProfile ToolProfile =(GenericToolProfile)TooList[TotalTool-1];
                            //NwName = ToolProfile.get_Name();
                            //ToolProfile.set_Name(NwName);
                        }
                        Pbar.PerformStep();
                    }
                    #endregion
                    #region 机器人默认值设置
                    //Init Current Motion Profile \accuracy \ Tool Profile \Object
                    bool ExistsObj;
                    Rgcr.HasAccuracyProfile((100 + "%"), out ExistsObj);
                    if (ExistsObj)
                    {
                        Rgcr.SetCurrentAccuracyProfile((100 + "%"));
                    }
                    Rgcr.HasObjFrameProfile("Object_01", out ExistsObj);
                    if (ExistsObj)
                    {
                        Rgcr.SetCurrentObjFrameProfile("Object_01");
                    }
                    Rgcr.HasMotionProfile((100 + "%"), out ExistsObj);
                    if (ExistsObj)
                    {
                        Rgcr.SetCurrentMotionProfile((100 + "%"));
                    }
                    Rgcr.HasToolProfile("Tool_01", out ExistsObj);
                    if (ExistsObj)
                    {
                        Rgcr.SetCurrentToolProfile("Tool_01");
                    }
                    #endregion
                    #region 机器日Taglist目录及RobotTask批量设置
                    RobotTaskFactory Rtf = (RobotTaskFactory)Usp.GetTechnologicalObject("RobotTaskFactory");
                    object[] RobotTaskLists = new object[99];
                    try
                    {
                        Rtf.GetAllRobotTasks(RobotTaskLists);
                    }
                    catch (Exception)
                    {
                        RobotTaskLists = null;
                    }
                    GetName = Rtf.get_Name();
                    if (GPWeld.Checked)
                    {
                        String RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_" + ModelName.Text.ToUpper() + "_GP" + "_" + ELEID.Text;
                        if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                        {
                            Rtf.CreateRobotTask(RobotTaskName, null);
                            Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                            AddTagToRobotTask(Rtf, RobotTaskName, tag);
                        }
                        if (GunStand.Checked)
                        {
                            RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_GUN" + "_" + ELEID.Text + "_Pick";
                            if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                            {
                                Rtf.CreateRobotTask(RobotTaskName, null);
                                Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                                AddTagToRobotTask(Rtf, RobotTaskName, tag);
                            }
                            RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_GUN" + "_" + ELEID.Text + "_Drop";
                            if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                            {
                                Rtf.CreateRobotTask(RobotTaskName, null);
                                Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                                AddTagToRobotTask(Rtf, RobotTaskName, tag);
                            }
                        }
                    }
                    Pbar.PerformStep();
                    if (RPWeld.Checked)
                    {
                        String RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_" + ModelName.Text.ToUpper() + "_RP" + "_" + ELEID.Text;
                        if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                        {
                            Rtf.CreateRobotTask(RobotTaskName, null);
                            Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                            AddTagToRobotTask(Rtf, RobotTaskName, tag);
                        }
                    }
                    Pbar.PerformStep();
                    if (Glue.Checked)
                    {
                        String RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_" + ModelName.Text.ToUpper() + "_Glue" + "_" + ELEID.Text;
                        if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                        {
                            Rtf.CreateRobotTask(RobotTaskName, null);
                            Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                            AddTagToRobotTask(Rtf, RobotTaskName, tag);
                        }
                    }
                    Pbar.PerformStep();
                    if (PickAndUp.Checked)
                    {
                        String RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_" + ModelName.Text.ToUpper() + "_Gripper" + "_" + ELEID.Text;
                        if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                        {
                            Rtf.CreateRobotTask(RobotTaskName, null);
                            Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                            AddTagToRobotTask(Rtf, RobotTaskName, tag);
                        }
                        if (GrpStand.Checked)
                        {
                            RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_Grip" + "_" + ELEID.Text + "_Pick";
                            if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                            {
                                Rtf.CreateRobotTask(RobotTaskName, null);
                                Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                                AddTagToRobotTask(Rtf, RobotTaskName, tag);
                            }
                            RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_Grip" + "_" + ELEID.Text + "_Drop";
                            if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                            {
                                Rtf.CreateRobotTask(RobotTaskName, null);
                                Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                                AddTagToRobotTask(Rtf, RobotTaskName, tag);
                            }
                        }
                    }
                    Pbar.PerformStep();
                    if (StudWeld.Checked)
                    {
                        String RobotTaskName = ((Product)((Product)Usp.Parent).Parent).get_PartNumber() + "_" + RobotID.Text.ToUpper() + "_" + ModelName.Text.ToUpper() + "_Stud" + "_" + ELEID.Text;
                        if (!CheckTaskExists(RobotTaskLists, RobotTaskName))
                        {
                            Rtf.CreateRobotTask(RobotTaskName, null);
                            Tag tag = NwSingleTagGroup(((Product)((Product)Usp.Parent).Parent), RobotTaskName);
                            AddTagToRobotTask(Rtf, RobotTaskName, tag);
                        }
                    }
                    Pbar.PerformStep();
                    #endregion
                    object[] RTask = new object[50];
                    Rtf.GetAllRobotTasks(RTask);
                    foreach (RobotTask item in RTask)
                    {
                        if (item != null)
                        {
                            item.set_Description("安徽瑞祥工业自动化产品,机器人轨迹,创建于:" + DateTime.Now);
                        }
                    }
                    //DeviceTaskFactory DTF= (DeviceTaskFactory)Usp.GetTechnologicalObject("DeviceTaskFactory");
                    //DeviceTask DT=null;
                    //DTF.CreateDeviceTask("YECCNewTask",ref DT);
                    Usp.Update();
                }
                catch (Exception)
                {
                    //throw;
                    this.TopMost = true;
                    MessageBox.Show("您选择的不是一个运动机构!");
                }
                SethomePositiion(Usp);
            }
            Pbar.PerformStep();
            Pbar.Value = 100;
            this.WindowState = FormWindowState.Normal;
            this.StartPosition = FormStartPosition.CenterScreen;
            this.TopMost = true;
        }
 private bool SethomePositiion(Product product)
        {
            return true; // Not Support Again
            try
            {
                BasicDevice basicDevice = (BasicDevice)product.GetTechnologicalObject("BasicDevice");
                DeviceSim deviceSim = (DeviceSim)product.GetTechnologicalObject("DeviceSim");
                Mechanisms mechanisms = (Mechanisms)product.GetTechnologicalObject("Mechanisms");
                //Mechanism deviceSim1 = null;
                //try
                //{
                //    int cnt = mechanisms.Count;
                //    string str = mechanisms.Name;
                //    object msobj = 1;
                //    mechanisms.Item(ref msobj);
                //}
                //catch (Exception e)
                //{
                //    throw e;
                //    //If there are no mechanisms (i.e. D5 devices), use the device handle instead
                //    string  s = mechanisms.Item(1).get_Name();
                //}
                Array HomePosition = new object[] { };
                basicDevice.GetHomePositions(out HomePosition);
                bool exithome = false;
                foreach (HomePosition item in HomePosition)
                {
                    //Array DofValue0 = new object[] { };
                    //item.GetDOFValues(out DofValue0);
                    if (item.get_Name() == "home_1")
                    {
                        exithome = true;
                    }
                }
                if (!exithome)
                {
                    Array DofValue = new object[] { 0, 0, 0, 0, -1.5707963267949054, 0 };
                    basicDevice.SetHomePosition("home_1", DofValue);
                    //deviceSim.SetDOFValues(deviceSim1, DofValue, true);
                    return true;
                }
                return false;
            }
            catch (Exception)
            {
                return false;
            }
        }
 /// <summary>
        /// 检查机器人程序是否重复
        /// </summary>
        /// <param name="RobotTaskList">机器人程序集</param>
        /// <param name="CheckedName">检查是否存在的程序名称</param>
        /// <returns></returns>
        private bool CheckTaskExists(Object[] RobotTaskList, string CheckedName)
        {
            if (RobotTaskList == null)
            {
                return false;
            }
            foreach (RobotTask item in RobotTaskList)
            {
                if (item != null)
                {
                    String taskName = item.get_Name();
                    if (taskName == CheckedName)
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        private bool AddTagToRobotTask(RobotTaskFactory robotTaskFactory, String RobotTaskName, Tag tag)
        {
            object[] RobotTaskLists = new object[99];
            try
            {
                robotTaskFactory.GetAllRobotTasks(RobotTaskLists);
            }
            catch (Exception)
            {
                return false;
            }
            foreach (RobotTask item in RobotTaskLists)
            {
                if (item != null)
                {
                    String taskName = item.get_Name();
                    if (taskName == RobotTaskName)
                    {
                        RobotTask robotTask = item;
                        Operation objoperation;
                        objoperation = null;
                        robotTask.CreateOperation(null, null, ref objoperation);
                        AnyObject ObjRM = null;
                        RobotMotion robotMotion = null;
                        objoperation.CreateRobotMotion(ObjRM, true, ref robotMotion);
                        //Object[] RMobj = new object[6] { 0, 0, 0, 0, -1.5707963267949054, 0 };
                        robotMotion.SetTagTarget(tag);
                        //robotMotion.GetJointTarget(RMobj);
                        //robotMotion.SetJointTarget(RMobj);
                        //robotMotion.GetCartesianTarget(RMobj);
                        tag.SetName("RefPoint");
                        robotMotion.SetTagTarget(tag);
                        return true;
                    }
                }
            }
            return true;
        }
        private void ModelName_TextChanged(object sender, EventArgs e)
        {
            Properties.Settings.Default.ModelName = ModelName.Text;
            Properties.Settings.Default.Save();
        }
        private void RobotID_TextChanged(object sender, EventArgs e)
        {
            Properties.Settings.Default.RobotID = RobotID.Text; ;
            Properties.Settings.Default.Save();
        }
        private void ELEADD_Click(object sender, EventArgs e)
        {
            int CV = Convert.ToInt16(ELEID.Text);
            CV += 1;
            CV = CV < 1 ? 1 : CV;
            String TV = CV < 10 ? (0 + CV.ToString()) : CV.ToString();
            ELEID.Text = TV;
        }
        private void ELEREMOVE_Click(object sender, EventArgs e)
        {
            int CV = Convert.ToInt16(ELEID.Text);
            CV -= 1;
            CV = CV < 1 ? 1 : CV;
            String TV = CV < 10 ? (0 + CV.ToString()) : CV.ToString();
            ELEID.Text = TV;
        }
        private void ManuleInit_Click(object sender, EventArgs e)
        {
            INITCtrol();
        }
        private void BackForm_Click(object sender, EventArgs e)
        {
            Main CMain = new Main();
            this.Hide();
            CMain.Show();
        }
        private void BallToRobotList_Click(object sender, EventArgs e)
        {
            int CV = Convert.ToInt16(RobotID.Text);
            CV += 1;
            CV = CV < 1 ? 1 : CV;
            String TV = CV < 10 ? (0 + CV.ToString()) : CV.ToString();
            ELEID.Text = TV;
        }

        private void StationNumAdd_Click(object sender, EventArgs e)
        {
            char[] ValueStr = RobotID.Text.ToCharArray();
            int CV = Convert.ToInt16(ValueStr[1].ToString());
            int RV = Convert.ToInt16(ValueStr[2].ToString());
            //CV += 1;
            CV = CV < 9 ? CV += 1 : 9;
            CV = CV < 1 ? 1 : CV;
            String TV = "R" + CV.ToString() + RV;
            RobotID.Text = TV;
        }

        private void StationNumRemove_Click(object sender, EventArgs e)
        {
            char[] ValueStr = RobotID.Text.ToCharArray();
            int CV = Convert.ToInt16(ValueStr[1].ToString());
            int RV = Convert.ToInt16(ValueStr[2].ToString());
            CV -= 1;
            CV = CV < 1 ? 1 : CV;
            String TV = "R" + CV.ToString() + RV;
            RobotID.Text = TV;

        }

        private void RobotAdd_Click(object sender, EventArgs e)
        {
            char[] ValueStr = RobotID.Text.ToCharArray();
            int RV = Convert.ToInt16(ValueStr[1].ToString());
            int CV = Convert.ToInt16(ValueStr[2].ToString());
            //CV += 1;
            CV = CV < 9 ? CV += 1 : 9;
            CV = CV < 1 ? 1 : CV;
            String TV = "R" + RV + CV.ToString();
            RobotID.Text = TV;
        }

        private void RobotRemove_Click(object sender, EventArgs e)
        {
            char[] ValueStr = RobotID.Text.ToCharArray();
            int RV = Convert.ToInt16(ValueStr[1].ToString());
            int CV = Convert.ToInt16(ValueStr[2].ToString());
            CV -= 1;
            CV = CV < 1 ? 1 : CV;
            String TV = "R" + RV + CV.ToString();
            RobotID.Text = TV;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值