public static DSSurface[] SelectTrim(DSSurface[] surfaces, DSSolid[] trimmingSolids, bool keepInside) { string kMethodName = "DSSurface.SelectTrim"; ISurfaceEntity[] surfacehosts = surfaces.ConvertAll(DSGeometryExtension.ToEntity <DSSurface, ISurfaceEntity>); if (surfacehosts == null || surfacehosts.Length == 0) { throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "surfaces", kMethodName), "surfaces"); } ISolidEntity[] solidhosts = trimmingSolids.ConvertAll(DSGeometryExtension.ToEntity <DSSolid, ISolidEntity>); if (null == solidhosts || solidhosts.Length == 0) { throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "trimmingSolids", kMethodName), "trimmingSolids"); } DSSurface[] result = null; if (solidhosts.Length == 1) { result = SelectTrimCore(surfacehosts, solidhosts[0], keepInside); } else { DSSolid unionSolid = DSSolid.UnionCore(solidhosts[0], solidhosts, false); if (null == unionSolid) { throw new System.InvalidOperationException(string.Format(Properties.Resources.OperationFailed, kMethodName)); } result = SelectTrimCore(surfacehosts, unionSolid.SolidEntity, keepInside); } if (null != result) { Hide(surfaces); Hide(trimmingSolids); } return(result); }