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."); }
/// <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)); }
/// <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."); }
/// <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."); }