/// <summary>Convert brep to specified format.</summary> /// <param name="content">Brep to convert (base64 encoded string).</param> /// <param name="sourceFormat">Source format of brep.</param> /// <param name="targetFormat">Target format of brep</param> /// <returns>Converted brep (base64 encoded string).</returns> /// <exception cref="Exceptions.ConnectionFailureException">Throws if network connection is down.</exception> /// <exception cref="Exceptions.UnathorizedException">Throws if provided cookies were obsolete.</exception> /// <exception cref="Exceptions.ServerUnavailableException">Throws if Flux server is down.</exception> /// <exception cref="Exceptions.InternalSDKException">Throws for unhandled SDK exceptions.</exception> public string ConvertBrep(string content, string sourceFormat, string targetFormat) { if (string.IsNullOrEmpty(content)) { return(null); } #region Create object wrapper for brep var brep = new BrepToConvert.SceneObject.BrepPrimitive(); brep.Primitive = "brep"; brep.Format = sourceFormat; brep.Content = content; var entities = new BrepToConvert.SceneObject.EntitiesObject(); entities.Brep = brep; BrepToConvert.SceneObject scene = new BrepToConvert.SceneObject(); scene.Entities = entities; var initObj = new BrepToConvert.SceneObject.OperationObj(); initObj.Name = "result"; initObj.Op = new string[] { "repr", targetFormat, "brep@1" }; scene.Operations = new object[] { initObj }; var brepToConvert = new BrepToConvert(); brepToConvert.Scene = scene; #endregion var request = WriteBrepToRequest(brepToConvert); try { using (var response = HttpWebClientHelper.GetResponse(request)) { dynamic responseJson = DataSerializer.DynamicDeserialize(StreamUtils.GetDecompressedResponseStream(response)); dynamic convertedContent = responseJson.Output.Results.value.result.content; if (convertedContent != null) { object contentStr = convertedContent; return(contentStr.ToString()); } } } catch (Exceptions.FluxException ex) { log.Error(ex); throw; } catch (Exception ex) { log.Error(ex); throw new Exceptions.InternalSDKException(ex.Message); } return(null); }
private HttpWebRequest WriteBrepToRequest(BrepToConvert brep) { var request = HttpWebClientHelper.CreateRequest(SdkMetadata, string.Format(FluxApiData.ConvertUrl, Id), Cookies); request.Method = "POST"; var jsonStr = DataSerializer.Serialize(brep); byte[] bytes = Encoding.UTF8.GetBytes(jsonStr); request.ContentLength = bytes.Length; using (Stream stream = request.GetRequestStream()) { stream.Write(bytes, 0, bytes.Length); } return(request); }