/// <summary>
        /// Gets an extrusion form of a pipe.
        /// </summary>
        /// <param name="cylinder">IsFinite must be true.</param>
        /// <param name="otherRadius">
        /// If cylinder.Radius is less than other radius, then the cylinder will be the inside
        /// of the pipe.
        /// </param>
        /// <param name="capBottom">If true, the end at cylinder.Height1 will be capped.</param>
        /// <param name="capTop">If true, the end at cylinder.Height2 will be capped.</param>
        /// <returns>Extrusion on success. null on failure.</returns>
        /// <since>5.0</since>
        public static Extrusion CreatePipeExtrusion(Cylinder cylinder, double otherRadius, bool capTop, bool capBottom)
        {
            IntPtr ptr_new_extrusion = UnsafeNativeMethods.ON_Extrusion_CreatePipe(ref cylinder, otherRadius, capBottom, capTop);

            return(IntPtr.Zero == ptr_new_extrusion ? null : new Extrusion(ptr_new_extrusion, null));
        }
        /// <summary>
        /// Gets an extrusion form of a cylinder.
        /// </summary>
        /// <param name="cylinder">IsFinite must be true.</param>
        /// <param name="capBottom">If true, the end at cylinder.Height1 will be capped.</param>
        /// <param name="capTop">If true, the end at cylinder.Height2 will be capped.</param>
        /// <returns>Extrusion on success. null on failure.</returns>
        /// <since>5.0</since>
        public static Extrusion CreateCylinderExtrusion(Cylinder cylinder, bool capBottom, bool capTop)
        {
            IntPtr ptr_new_extrusion = UnsafeNativeMethods.ON_Extrusion_CreateCylinder(ref cylinder, capBottom, capTop);

            return(IntPtr.Zero == ptr_new_extrusion ? null : new Extrusion(ptr_new_extrusion, null));
        }