예제 #1
0
        /// <summary>
        /// Toggles custom value textboxes when checkbox changes 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CustomMassValCheckbox_CheckedChanged(object sender, EventArgs e)
        {
            currentLink.UseCustomInertial = CustomMassValCheckbox.Checked;
            PhysicalButton.Enabled = !CustomMassValCheckbox.Checked;
            toggleCOMTextboxes();

            if (CustomMassValCheckbox.Checked)
            {
                swManip = currentLink.modelDoc.ModelViewManager.CreateManipulator((int)swManipulatorType_e.swTriadManipulator, this);
                triadManip = swManip.GetSpecificManipulator();
                triadManip.DoNotShow = (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYRING | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZRING
                                        | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXRING | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYPlane |
                                        (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZPlane | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXPlane;
                triadManip.Origin = currentLink.swApp.GetMathUtility().CreatePoint(new double[] { currentLink.ComX, currentLink.ComY, currentLink.ComZ });
                startOrigin = triadManip.Origin;
                triadManip.UpdatePosition();
                swManip.Show(currentLink.modelDoc);
            }
            else
            {
                InertiaButton_Click(null, null);

                HideProperty();
            }
        }
예제 #2
0
        /// <summary>
        /// Draws preview arrows for the coordinate system. Axes should be calculated before hand.
        /// </summary>
        public void DrawOriginPreview()
        {
            triadManip = null;
            swManips = null;
            GC.Collect();
            if (robot == null || robot.OriginPt == null || robot.Direction == null || robot.BasePlane == null)
            {
                return;
            }

            triadManip = null;
            swManips = null;
            GC.Collect();

            ModelViewManager swModViewMgr = modelDoc.ModelViewManager;
            MathPoint robotOrigin = mathUtil.CreatePoint(new double[] { robot.OriginX, robot.OriginY, robot.OriginZ });

            swManips = new Manipulator[1];
            MathVector[] axisVectors = new MathVector[3];
            axisVectors[0] = mathUtil.CreateVector(new double[] { robot.AxisX, robot.AxisY, robot.AxisZ });
            axisVectors[1] = CalcNormalVector(robot.BasePlane);                //calculate vertical axis as normal of plane
            axisVectors[2] = axisVectors[1].Cross(axisVectors[0]);  //calculate horizontal axis as cross product between plane normal and direction axis.

            swManips[0] = swModViewMgr.CreateManipulator((int)swManipulatorType_e.swTriadManipulator, this);
            triadManip = (TriadManipulator)swManips[0].GetSpecificManipulator();
            triadManip.DoNotShow = (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYRING | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZRING
                                        | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXRING | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYPlane |
                                        (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZPlane | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXPlane;
            triadManip.XAxis = axisVectors[0];
            triadManip.YAxis = axisVectors[2];
            triadManip.ZAxis = axisVectors[1];
            triadManip.Origin = robotOrigin;
            triadManip.UpdatePosition();
            swManips[0].Show(modelDoc);
        }