コード例 #1
0
        public MM SegmentLength(int segmentNumber)
        {
            var numberOfSegments = NumberOfSegments;

            if (segmentNumber < numberOfSegments)
            {
                return
                    (double.Parse(
                         PowerMill.DoCommandEx("print par terse ${segment_get_length(entity('toolpath', '" + Name + "'), " +
                                               segmentNumber + ")}").ToString()));
            }
            throw new IndexOutOfRangeException(
                      $"{segmentNumber} is greater than the {numberOfSegments} segments in this toolpath.");
        }
コード例 #2
0
        /// <summary>
        /// Gets and sets the length of the requested holder component.
        /// </summary>
        public MM HolderElementLength(int index)
        {
            if (PowerMill.Version < new Version("15.0"))
            {
                throw new Exception(
                          "Holder elementes are not available for this version of PowerMILL.  PowerMILL 15 or greater is required");
            }
            string result =
                PowerMill.DoCommandEx("PRINT par terse \"entity('tool','" + Name + "').holdersetvalues[" + index +
                                      "].length\"").ToString();

            if (result.Contains("#ERROR"))
            {
                throw new IndexOutOfRangeException(
                          "The specified index is greater than the number of elements in the holder");
            }
            return(Convert.ToDouble(result));
        }
コード例 #3
0
        /// <summary>
        /// Gets the tool axis vector for the specified point in the specified segment
        /// </summary>
        /// <param name="segmentNumber">The segment number of the toolpath (indexed from zero)</param>
        /// <param name="pointNumber">The point number in the specified segment (indexed from zero)</param>
        /// <returns>The tool axis vector</returns>
        public Vector ToolpathPointToolAxis(int segmentNumber, int pointNumber)
        {
            var numberOfPoints = NumberOfPointsInSegment(segmentNumber);

            if (pointNumber < numberOfPoints)
            {
                var i = double.Parse(PowerMill.DoCommandEx("print par terse ${segment_get_point(entity('toolpath', '" + Name +
                                                           "'), " +
                                                           segmentNumber + ", " + pointNumber + ").ToolAxis[0]}").ToString());
                var j = double.Parse(PowerMill.DoCommandEx("print par terse ${segment_get_point(entity('toolpath', '" + Name +
                                                           "'), " +
                                                           segmentNumber + ", " + pointNumber + ").ToolAxis[1]}").ToString());
                var k = double.Parse(PowerMill.DoCommandEx("print par terse ${segment_get_point(entity('toolpath', '" + Name +
                                                           "'), " +
                                                           segmentNumber + ", " + pointNumber + ").ToolAxis[2]}").ToString());
                return(new Vector(i, j, k));
            }
            throw new IndexOutOfRangeException(
                      $"{pointNumber} is greater than the {numberOfPoints} points in segment {segmentNumber} of this toolpath.");
        }
コード例 #4
0
        /// <summary>
        /// Gets the position of the specified point in the specified segment
        /// </summary>
        /// <param name="segmentNumber">The segment number of the toolpath (indexed from zero)</param>
        /// <param name="pointNumber">The point number in the specified segment (indexed from zero)</param>
        /// <returns>The point position</returns>
        public Point ToolpathPointPosition(int segmentNumber, int pointNumber)
        {
            var numberOfPoints = NumberOfPointsInSegment(segmentNumber);

            if (pointNumber < numberOfPoints)
            {
                var x = double.Parse(PowerMill.DoCommandEx("print par terse ${segment_get_point(entity('toolpath', '" + Name +
                                                           "'), " +
                                                           segmentNumber + ", " + pointNumber + ").Position.X}").ToString());
                var y = double.Parse(PowerMill.DoCommandEx("print par terse ${segment_get_point(entity('toolpath', '" + Name +
                                                           "'), " +
                                                           segmentNumber + ", " + pointNumber + ").Position.Y}").ToString());
                var z = double.Parse(PowerMill.DoCommandEx("print par terse ${segment_get_point(entity('toolpath', '" + Name +
                                                           "'), " +
                                                           segmentNumber + ", " + pointNumber + ").Position.Z}").ToString());
                return(new Point(x, y, z));
            }
            throw new IndexOutOfRangeException(
                      $"{pointNumber} is greater than the {numberOfPoints} points in segment {segmentNumber} of this toolpath.");
        }