示例#1
0
        private void cmbDhRefresh(int nNum)
        {
            if ((nNum >= 0) && (nNum < cmbDh.Items.Count))
            {
                Ojw.CEncryption.SetEncrypt("OJW5014"); // 암호화 해제는 보안이 필요
                String strForward = Encoding.Default.GetString(Ojw.CEncryption.Encryption(false, m_C3d.GetHeader_pSEncryptKinematics_encryption()[nNum].byteEncryption));

                if (strForward != null)
                {
                    CDhParamAll CDh = new CDhParamAll();
                    if (strForward.Length > 0)
                    {
                        Ojw.CKinematics.CForward.MakeDhParam(strForward, out CDh);

                        SetDHString(strForward);//CDh);
                    }
                }

                Ojw.CEncryption.SetEncrypt("OJW5014"); // 암호화 해제는 보안이 필요
                txtInverseKinematics.Text = Encoding.Default.GetString(Ojw.CEncryption.Encryption(false, m_C3d.GetHeader_pSEncryptInverseKinematics_encryption()[nNum].byteEncryption));

                txtGroupName.Text   = m_C3d.GetHeader_pstrGroupName()[nNum];
                cmbDh.SelectedIndex = nNum;

                cmbSecret.SelectedIndex         = m_C3d.GetHeader_pnSecret()[nNum];
                cmbKinematicsType.SelectedIndex = m_C3d.GetHeader_pnType()[nNum];
            }
        }
示例#2
0
        private void SetDHString(CDhParamAll CDh)
        {
            m_bMiddleOfInserting = true;
            m_CGridView.Clear();
            m_CGridView.Add(CDh.GetCount());
            for (int i = 0; i < CDh.GetCount(); i++)
            {
                m_CGridView.SetEnable(i, true);
                m_CGridView.Set(i, 0, CDh.GetData(i).dA);       // A
                m_CGridView.Set(i, 1, CDh.GetData(i).dD);       // D
                m_CGridView.Set(i, 2, CDh.GetData(i).dTheta);   // Theta
                m_CGridView.Set(i, 3, CDh.GetData(i).dAlpha);   // Alpha

                m_CGridView.Set(i, 4, CDh.GetData(i).nAxisNum); // Axis
                m_CGridView.Set(i, 5, CDh.GetData(i).nAxisDir); // Dir
            }
            m_bMiddleOfInserting = false;
        }
示例#3
0
        private void MoveToDhPosition(float fSize, float fAlpha, Color cColor)
        {
            int         i;
            CDhParamAll COjwDhParamAll = new CDhParamAll();

            Ojw.CKinematics.CForward.MakeDhParam(txtForwardKinematics.Text, out COjwDhParamAll);
            double dX, dY, dZ;

            double[] dcolX;
            double[] dcolY;
            double[] dcolZ;

            double[] adMot = new double[256];
            Array.Clear(adMot, 0, adMot.Length);
            for (i = 0; i < m_C3d.GetHeader_nMotorCnt(); i++)
            {
                adMot[i] = (double)m_C3d.GetData(i);                                              //Ojw.CConvert.StrToDouble(m_txtAngle[i].Text);
            }
            Ojw.CKinematics.CForward.CalcKinematics(COjwDhParamAll, adMot, out dcolX, out dcolY, out dcolZ, out dX, out dY, out dZ);

            String strResult;

            // 만들어진 수식을 알고 싶다면 여기 결과값을 리턴받는다.
            Ojw.CKinematics.CForward.CalcKinematics_ToString(COjwDhParamAll, adMot, out strResult);
            txtKinematicsString.Text = strResult;

            m_C3d.SetTestDh_Size(fSize);
            m_C3d.SetTestDh_Color(cColor);
            m_C3d.SetTestDh_Alpha(fAlpha);
            m_C3d.SetTestDh_Pos((float)dX, (float)dY, (float)dZ);
            lbTestDh.Text = "[x=" + Ojw.CConvert.DoubleToStr((double)Math.Round(dX, 3)) + ", y=" + Ojw.CConvert.DoubleToStr((double)Math.Round(dY, 3)) + ", z=" + Ojw.CConvert.DoubleToStr((double)Math.Round(dZ, 3)) + "]";

            #region Checking Direction
            // 방향 확인
            float[] afX = new float[3];
            float[] afY = new float[3];
            float[] afZ = new float[3];

            double dLength = 30.0;
            dX = dLength;
            dY = 0.0f;
            dZ = 0.0f;
            for (i = 0; i < 3; i++)
            {
                afX[i] = (float)(dcolX[i] * dX + dcolY[i] * dY + dcolZ[i] * dZ);
            }
            dX = 0.0f;
            dY = dLength;
            dZ = 0.0f;
            for (i = 0; i < 3; i++)
            {
                afY[i] = (float)(dcolX[i] * dX + dcolY[i] * dY + dcolZ[i] * dZ);
            }
            dX = 0.0f;
            dY = 0.0f;
            dZ = dLength;
            for (i = 0; i < 3; i++)
            {
                afZ[i] = (float)(dcolX[i] * dX + dcolY[i] * dY + dcolZ[i] * dZ);
            }


            m_C3d.SetTestDh_Angle(afX, afY, afZ);

            #endregion Checking Direction
        }