/// <summary> /// Build a vector from the two pints, scale the vector with the desired value /// and calculate a transformation applied on the first point to generate where /// the second point should be. /// </summary> public static Point3D ScaleSegment(Point3D point1, Point3D point2, double scale) { var vector = new gpVec(point1.GpPnt, point2.GpPnt); vector.Scale(scale); var transformation = new gpTrsf(); transformation.SetTranslation(vector); // Apply the transformation on the vertex return(new Point3D(point1.GpPnt.Transformed(transformation))); }