コード例 #1
0
ファイル: TeachingForm.cs プロジェクト: radtek/HTLaser
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (cbxMotionTrail.SelectedItem == null)
            {
                MessageBox.Show("请选择轨迹");
                return;
            }
            ushort _CardID = 0;
            ushort AxisX   = 0;
            ushort AxisY   = 1;
            ushort crd     = 0;

            //设置脉冲当量
            LTDMC.dmc_set_equiv(0, AxisX, FormMain.PulseEquiv);
            LTDMC.dmc_set_equiv(0, AxisY, FormMain.PulseEquiv);
            //   画图
            ushort axisnum = 2;

            ushort[] axises = new ushort[] { AxisX, AxisY };
            LTDMC.dmc_conti_open_list(0, crd, axisnum, axises);
            //设置插补速度
            LTDMC.dmc_set_vector_profile_unit(0, crd, 0, vectorChabu, 0.1, 0.1, 0);
            // LTDMC.dmc_conti_set_blend(0, crd, 1);
            if (cbxMotionTrail.SelectedIndex == 0)
            {
                double[] A = new double[] { 0, 0 };
                double[] B = new double[] { 200, 0 };
                double[] C = new double[] { 400, -200 };
                double[] D = new double[] { 400, -400 };
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          B, 1, 0); //直线插补,相对模式
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     C, new double[] { 200, -200 }, 0, 0, 1, 0);
                //XY平面圆弧插补,顺时针,相对坐标模式。   此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补)
                //终点坐标   圆心坐标
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          D, 1, 0); //直线插补,相对模式
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          A, 1, 0); //直线插补,相对模式
                LTDMC.dmc_conti_start_list(_CardID, crd);
                Thread.Sleep(1000);
                LTDMC.dmc_conti_close_list(_CardID, crd);
            }
            if (cbxMotionTrail.SelectedIndex == 1)
            {
                double[] A = new double[] { 0, 0 };
                double[] B = new double[] { 200, 0 };
                double[] C = new double[] { 400, -200 };
                double[] D = new double[] { 400, -400 };
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          new double[] { 200, 0 }, 1, 0); //直线插补,相对模式

                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     new double[] { 400, -200 }, new double[] { 200, -200 }, 0, 0, 1, 0);
                //XY平面圆弧插补,顺时针,相对坐标模式。   此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补)
                //终点坐标   圆心坐标
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          new double[] { 400, -400 }, 1, 0); //直线插补,相对模式

                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          new double[] { 0, 0 }, 1, 0); //直线插补,相对模式

                LTDMC.dmc_conti_start_list(_CardID, crd);
                Thread.Sleep(1000);
                LTDMC.dmc_conti_close_list(_CardID, crd);
            }
            if (cbxMotionTrail.SelectedIndex == 2)
            {
            }
            if (cbxMotionTrail.SelectedIndex == 3)
            {
            }
        }
コード例 #2
0
ファイル: TeachingUserControl.cs プロジェクト: radtek/HTLaser
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (cbxMotionTrail.SelectedItem == null)
            {
                MessageBox.Show("请选择轨迹");
                return;
            }
            ushort _CardID = 0;
            ushort AxisX   = 0;
            ushort AxisY   = 1;
            ushort crd     = 0;

            //设置脉冲当量
            LTDMC.dmc_set_equiv(0, AxisX, FormMain.PulseEquiv);
            LTDMC.dmc_set_equiv(0, AxisY, FormMain.PulseEquiv);
            //   画图
            ushort axisnum = 2;

            ushort[] axises = new ushort[] { AxisX, AxisY };
            LTDMC.dmc_conti_open_list(0, crd, axisnum, axises);

            // LTDMC.dmc_conti_set_blend(0, crd, 1);
            if (cbxMotionTrail.SelectedIndex == 0)
            {
                double[] A = new double[] { 0, 0 };
                double[] B = new double[] { 200, 0 };
                double[] C = new double[] { 400, -200 };
                double[] D = new double[] { 400, -400 };
                //设置插补速度
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0);  //直线插补,绝对模式
                //设置插补速度
                SetArcVecter();
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     C, new double[] { 200, -200 }, 0, 0, 1, 0);
                //XY平面圆弧插补,顺时针,相对坐标模式。   此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补)
                //终点坐标   圆心坐标
                //设置插补速度
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          D, 1, 0); //直线插补,绝对模式

                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          A, 1, 0); //直线插补,绝对模式

                LTDMC.dmc_conti_start_list(_CardID, crd);
                Thread.Sleep(1000);
                LTDMC.dmc_conti_close_list(_CardID, crd);
            }
            if (cbxMotionTrail.SelectedIndex == 1)
            {
                //LTDMC.dmc_pmove_unit(0, 0, 100, 1);//定长运动
                //LTDMC.dmc_check_done(0, 0);
                double[] A = new double[] { 100, 0 };
                double[] B = new double[] { 300, 0 };
                double[] C = new double[] { 300, -200 };
                double[] D = new double[] { 100, -200 };
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          B, 1, 0); //直线插补,绝对模式
                SetArcVecter();
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     C, new double[] { 300, -100 }, 0, 0, 1, 0);
                //XY平面圆弧插补,顺时针,绝对模式模式。   此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补)
                //终点坐标   圆心坐标
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises,
                                          D, 1, 0); //直线插补,绝对模式
                SetArcVecter();
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     A, new double[] { 100, -100 }, 0, 0, 1, 0);
                LTDMC.dmc_conti_start_list(_CardID, crd);
                Thread.Sleep(1000);
                LTDMC.dmc_conti_close_list(_CardID, crd);
            }
            if (cbxMotionTrail.SelectedIndex == 2)
            {//直线 直线 圆弧 直线
                double[] A = new double[] { 0, 0 };
                double[] B = new double[] { 200, 0 };
                double[] C = new double[] { 200, -200 };
                double[] D = new double[] { 0, -200 };
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0);  //直线插补
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, C, 1, 0);  //直线插补
                SetArcVecter();
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     D, new double[] { 100, -200 }, 0, 0, 1, 0);
                //XY平面圆弧插补,顺时针,相对坐标模式。   此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补)
                //终点坐标   圆心坐标
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, A, 1, 0);  //直线插补
                LTDMC.dmc_conti_start_list(_CardID, crd);
                Thread.Sleep(1000);
                LTDMC.dmc_conti_close_list(_CardID, crd);
            }
            if (cbxMotionTrail.SelectedIndex == 3)
            {  //直线 圆弧 直线 圆弧 直线 直线
                double[] A = new double[] { 0, 0 };
                double[] B = new double[] { 200, 0 };
                double[] C = new double[] { 300, -100 };
                double[] D = new double[] { 300, -300 };
                double[] E = new double[] { 200, -400 };
                double[] F = new double[] { 0, -400 };
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0);  //直线插补
                SetArcVecter();
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     C, new double[] { 200, -100 }, 0, 0, 1, 0);
                //XY平面圆弧插补,顺时针,相对坐标模式。   此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补)
                //终点坐标   圆心坐标
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, D, 1, 0);  //直线插补
                SetArcVecter();
                LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises,
                                                     E, new double[] { 200, -300 }, 0, 0, 1, 0);
                SetLineVecter();
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, F, 1, 0);  //直线插补
                LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, A, 1, 0);  //直线插补
                LTDMC.dmc_conti_start_list(_CardID, crd);
                Thread.Sleep(1000);
                LTDMC.dmc_conti_close_list(_CardID, crd);
            }
        }