private static IfcShellBasedSurfaceModel ToIfcShellBasedSurfaceModel(this Lamina lamina, Document doc) { var plane = lamina.Perimeter.Plane().ToIfcPlane(doc); var outer = lamina.Perimeter.ToIfcCurve(doc); var bplane = new IfcCurveBoundedPlane(plane, outer, new List <IfcCurve> { }); var bounds = new List <IfcFaceBound> { }; var loop = lamina.Perimeter.ToIfcPolyLoop(doc); var faceBounds = new IfcFaceBound(loop, true); bounds.Add(faceBounds); var face = new IfcFaceSurface(bounds, bplane, true); var openShell = new IfcOpenShell(new List <IfcFace> { face }); var shell = new IfcShell(openShell); var ssm = new IfcShellBasedSurfaceModel(new List <IfcShell> { shell }); doc.AddEntity(plane); doc.AddEntity(outer); doc.AddEntity(bplane); doc.AddEntity(loop); doc.AddEntity(faceBounds); doc.AddEntity(face); doc.AddEntity(openShell); return(ssm); }
/// <summary> /// The NYCZoningDistricts function. /// </summary> /// <param name="model">The input model.</param> /// <param name="input">The arguments to the execution.</param> /// <returns>A NYCZoningDistrictsOutputs instance containing computed results and the model with any new elements.</returns> public static NYCZoningDistrictsOutputs Execute(Dictionary<string, Model> inputModels, NYCZoningDistrictsInputs input) { inputModels.TryGetValue("location", out Model originModel); if (originModel == null) { throw new Exception("No location model present."); } var origin = originModel.AllElementsOfType<Origin>().FirstOrDefault(); if (origin == null) { var allKnownTypes = originModel.Elements.Values.Select(e => e.GetType().ToString()).Distinct(); var joined = String.Join(", ", allKnownTypes); throw new Exception($"Unable to locate the site origin. Keys are {String.Join(", ", inputModels.Keys)}. " + $"There are {originModel.Elements.Count} elements. The only types found in the location were: {joined}"); } var assembly = Assembly.GetExecutingAssembly(); var resourceName = assembly.GetManifestResourceNames().Single(str => str.EndsWith("ZoningDistricts.json")); string json = ""; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) using (StreamReader reader = new StreamReader(stream)) { json = reader.ReadToEnd(); } //var json = File.ReadAllText("ZoningDistricts.json"); var zoningInfo = JsonConvert.DeserializeObject<ZoningInfo>(json); var originAsPoint = new Vector3(origin.Position.Longitude * 1000.0, origin.Position.Latitude * 1000.0); Console.WriteLine(originAsPoint); var model = new Model(); int i = 0; foreach (var boundarySet in zoningInfo) { foreach (var boundary in boundarySet.Boundaries) { var crv = boundary.Boundary; if (crv == null) continue; if (crv.Contains(originAsPoint)) { var worldCrv = boundary.GetWorldSpaceBoundary(origin); var regionLamina = new Lamina(worldCrv, false); var rep = new Representation(new SolidOperation[] { regionLamina }); var mat = new Material("Zoning Region", Guid.NewGuid()); var zoneFirstChar = boundarySet.ZoningDist.First().ToString(); mat.Color = ZoningInfo.ZoneColorCodes.ContainsKey(zoneFirstChar) ? ZoningInfo.ZoneColorCodes[zoneFirstChar] : new Color(0.7, 0.2, 1.0, 0.3); Console.WriteLine(boundarySet.ZoningDist); model.AddElement(new ModelCurve(worldCrv)); model.AddElement(new ZoningDistrict(boundarySet.ZoningDist, worldCrv, origin.Position.Latitude, origin.Position.Longitude, new Transform(0, 0, 5), mat, rep, false, Guid.NewGuid(), "")); } } i++; } var outputs = new NYCZoningDistrictsOutputs(); outputs.model = model; return outputs; }
public override void UpdateRepresentations() { var polygon = new Polygon(this.viz.Vertices); var lamina = new Lamina(polygon); // TODO: make more robust. This is currently frail to assume origin is center of view cone. var circle = new Lamina(new Circle(this.viz.Vertices[1], 1).ToPolygon()); this.Representation = new Representation(new List <SolidOperation> { lamina, circle }); }
public void SolidIntersectsWithPlane() { this.Name = nameof(SolidIntersectsWithPlane); var n = 4; var outer = Polygon.Ngon(n, 2); var inner = Polygon.Ngon(n, 1.75).Reversed(); var profile = new Profile(outer, new[] { inner }); var sweep = new Extrude(profile, 5, Vector3.ZAxis, false); var plane1 = new Plane(new Vector3(0, 0, 1), new Vector3(0.5, 0.5, 0.5)); var plane2 = new Plane(new Vector3(0, 0, 2), new Vector3(0.1, 0, 1)); var plane3 = new Plane(new Vector3(0, 0, 5), Vector3.ZAxis); Plane[] planes = new Plane[] { plane1, plane2, plane3 }; var r = new Random(); foreach (var plane in planes) { if (sweep.Solid.Intersects(plane, out List <Polygon> result)) { if (result.Count > 1) { Assert.Equal(2, result.Count); var cutProfile = new Profile(result[0], result.Skip(1).ToArray()); var lam = new Lamina(cutProfile, false); var cutRep = new Representation(new List <SolidOperation>() { lam }); this.Model.AddElement(new GeometricElement(representation: cutRep, material: r.NextMaterial())); } else { Assert.Single(result); this.Model.AddElement(new Panel(result[0], r.NextMaterial())); } } } var rep = new Representation(new List <SolidOperation>() { sweep }); var solidElement = new GeometricElement(representation: rep, material: BuiltInMaterials.Mass); this.Model.AddElement(solidElement); }
private Lamina BuscarLamina(int codigoContrato, int codigoEmissao, int numeroParcela, int nrcer, Emissao emissao, Lamina lamina) { using (var db = new SqlConnection(ConfigurationManager.ConnectionStrings["kitDigitalJson"].ConnectionString)) { var item = db.Query <LaminaBoleto>("PR_BuscarLaminaKitDigital", new { codigoContrato = codigoContrato, nrcer = nrcer, numeroParcela = numeroParcela }, commandType: CommandType.StoredProcedure).FirstOrDefault(); if (item != null) { lamina.agencia = item.agencia; lamina.codigoBeneficiario = item.codBeneficiario.Insert(item.codBeneficiario.Count() - 1, "-"); item.banco = item.banco.TrimEnd(); if (item.banco.Equals("BRADESCO")) { lamina.numeroDocumento = emissao.cdorgprtsuc.ToString() + "/" + emissao.nrapo.ToString("00000"); } else if (item.banco.Equals("CAIXA")) { lamina.numeroDocumento = nrcer.ToString(); } else { lamina.numeroDocumento = emissao.cdorgprtsuc.ToString() + "/" + emissao.cdrmoseg.ToString() + "/" + emissao.nrapo.ToString("00000"); } } return(lamina); } }
public IEnumerable <Kitdigital> BuscarCertificado(List <int> lstKit, string usuario, string nomeArquivo) { try { var dao = new ListaKitIndividualListaLogListaTotal(); var retornoLogProcessamento = dao.AddLogProcessamento(usuario); var lista = new ConcurrentBag <Kitdigital>(); var listaDto = new ConcurrentBag <Kitdigital>(); Mapeamento.Instance(); foreach (var tipoKit in lstKit) { Console.WriteLine(); Console.Write("Processando KIT "); Console.WriteLine(tipoKit); using (var db = new SqlConnection(ConfigurationManager.ConnectionStrings["kitDigitalJson"].ConnectionString)) { db.Open(); var range = db.Query <Controle2Via>("PR_BuscarControle2ViaArquivoDigital", new { tipoKit = tipoKit }, commandType: CommandType.StoredProcedure).ToList(); db.Close(); if (range.Count() > 0) { Console.WriteLine(); Console.Write("Quantidade de Certificados a Processar: "); Console.WriteLine(range.Count()); try { Parallel.For(0, range.Count(), item => { Kitdigital kitDigital = new Kitdigital(); kitDigital.externalKey = range[item].cdc2v; kitDigital.tipoKit = tipoKit; kitDigital.digital = range[item].iddig.TrimEnd(); ItemOutRiscPess itemOutRiscPess = BuscarItemOutRiscPess(range[item].cdconseg, (int)range[item].cditeseg); Pessoa pessoa = BuscarPessoaKit((int)range[item].nrcer, range[item].cdconseg); EnderecoPessoa enderecoPessoa = BuscarEnderecoPessoaKit(pessoa.cdpes); Produto produto = BuscarProduto(range[item].cdconseg); Ramo ramo = BuscarRamo(produto.cdramosg); Emissao emissao = BuscarEmissao(range[item].cdconseg, range[item].cdemi); string orgaoProdutor = BuscarOrgaoProdutor((int)emissao.cdorgprtsuc).TrimEnd(); var certificados = BuscarCertificados(tipoKit, range[item].cdconseg, range[item].iddig); if (certificados.Count() > 0) { foreach (var i in certificados) { switch (i.nomeDocumento) { case "CERTIFICADO": kitDigital.certificado = new Certificado(); kitDigital.certificado.seguro = BuscarSeguro(ramo, emissao, produto, pessoa, orgaoProdutor, range[item].cdemi, (int)range[item].nrcer, range[item].cdconseg, (int)range[item].cditeseg); kitDigital.certificado.titular = BuscarPrincipal(enderecoPessoa, emissao, produto, pessoa, itemOutRiscPess, range[item].cdconseg, (int)range[item].nrcer, (int)range[item].cditeseg); kitDigital.certificado.dependentes = BuscarDependentes(range[item].cdconseg, (int)range[item].cditeseg); kitDigital.certificado.beneficiarios = BuscarBeneficiarios(range[item].cdconseg, (int)range[item].cditeseg); kitDigital.certificado.dataEmissao = BuscarDataEmissao().ToString(); kitDigital.certificado.processoSUSEP = BuscarProcessoSusep(produto.cdprodut); kitDigital.certificado.titular.dadosComplementares.email = enderecoPessoa.nmemail; kitDigital.certificado.titular.dadosComplementares.endereco = Mapper.Map <EnderecoPessoa, Endereco>(enderecoPessoa); kitDigital.certificado.titular.dadosComplementares.telefone = Mapper.Map <IEnumerable <TelefonePessoa>, IEnumerable <Telefone> >(BuscarTelefone(enderecoPessoa.cdpes)); kitDigital.certificado.titular.dadosComplementares.tipoPagamento = RecuperarTipoPagamento(emissao.cdconseg, emissao.cdemi, pessoa.cdpes); kitDigital.certificado.observacaoCarencia = "A carência para efeitos deste seguro, a contar da data de início de vigência, será de 120 (cento e vinte) dias. Não haverá carência para acidentes pessoais. A carência para Assistência Desemprego, quando inclusa no seguro, será de 180 (cento e oitenta) dias. Em caso de inclusão do cônjuge após o início de vigência do seguro deverá ser cumprida a carência estabelecida, a contar da data de inclusão do mesmo. A carência para Dependentes Agregados será contada a partir da data de início de vigência da cobertura do dependente."; break; case "CARNÊ": kitDigital.boleto = new Boleto(); kitDigital.boleto.dadosComplementares.email = enderecoPessoa.nmemail; kitDigital.boleto.dadosComplementares.endereco = Mapper.Map <EnderecoPessoa, Endereco>(enderecoPessoa); kitDigital.boleto.dadosComplementares.telefone = Mapper.Map <IEnumerable <TelefonePessoa>, IEnumerable <Telefone> >(BuscarTelefone(enderecoPessoa.cdpes)); if (kitDigital.tipoKit != 123) { kitDigital.boleto.dadosComplementares.tipoPagamento = RecuperarTipoPagamento(emissao.cdconseg, emissao.cdemi, pessoa.cdpes); } kitDigital.boleto.laminas = new List <Lamina>(); var lstkitCarne = BuscarKitCarne(range[item].cdc2v); if (lstkitCarne.Count() > 0) { //Inclusão para Recuperar o Meio de Pagamento da Parcela da Teimosinha if (kitDigital.tipoKit == 123) { kitDigital.boleto.dadosComplementares.tipoPagamento = RecuperarTipoPagamentoParcela(lstkitCarne[0].codigoContrato, lstkitCarne[0].codigoEmissao, lstkitCarne[0].numeroParcela); //Caso não encontre o valor da parcela anterior, recupera do certificado if (kitDigital.boleto.dadosComplementares.tipoPagamento == null) { kitDigital.boleto.dadosComplementares.tipoPagamento = RecuperarTipoPagamento(emissao.cdconseg, emissao.cdemi, pessoa.cdpes); } } foreach (var kit in lstkitCarne) { ParcelaPremio pp = BuscarParcelaPremio(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela); if (pp.tplqdparpre == 0) //Ficha de Compensação { if ((pp.stparpre != 4) && (pp.stparpre != 5) && (pp.stparpre != 12)) { Lamina lamina = Mapper.Map <Lamina>(BuscarTBDadosBoleto(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela)); if (lamina != null) { lamina.nossoNumero = lamina.nossoNumero.Replace("-", "").Insert(lamina.nossoNumero.Count() - 2, "-"); lamina = BuscarLamina(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela, (int)range[item].nrcer, emissao, lamina); lamina.vencimento = pp.dtven > pp.dtvenprg ? pp.dtven.ToString() : pp.dtvenprg.ToString(); lamina.dataProcessamento = BuscarDataEmissao().ToString(); lamina.dataDocumento = lamina.dataProcessamento; lamina.dataLimitePagamento = kitDigital.tipoKit != 123 ? Convert.ToDateTime(lamina.vencimento).AddDays(15).ToString() : Convert.ToDateTime(lamina.vencimento).ToString(); lamina.carencia = BuscarCarencia(kit.codigoContrato, kit.codigoEmissao, kit.numeroParcela); kitDigital.boleto.laminas.Add(lamina); } else { Lamina laminaInvalida = new Lamina(); laminaInvalida.parcela = -1; kitDigital.boleto.laminas.Add(laminaInvalida); } } } } } if (kitDigital.boleto.laminas.Count > 0) { kitDigital.boleto.certificado = (int)range[item].nrcer; kitDigital.boleto.nome = pessoa.nmpes.TrimEnd(); kitDigital.boleto.cpf = pessoa.nrcgccpf.ToString().Count() > 11 ? Convert.ToUInt64(pessoa.nrcgccpf).ToString(@"00\.000\.000\/0000\-00").TrimEnd() : Convert.ToUInt64(pessoa.nrcgccpf).ToString(@"000\.000\.000\-00").TrimEnd(); kitDigital.boleto.apolice = emissao.cdorgprtsuc + "/" + ramo.cdramosg + "/" + emissao.nrapo; kitDigital.boleto.dadosComplementares.endereco = Mapper.Map <Endereco>(enderecoPessoa); } else { //Não houve recuperação de nenhuma lâmina kitDigital.boleto = null; } break; case "CARTEIRINHA": kitDigital.carteirinha = new Carteirinha() { certificado = (int)range[item].nrcer, contrato = range[item].cdconseg, nome = pessoa.nmpes.TrimEnd() }; kitDigital.carteirinha.dadosComplementares.email = enderecoPessoa.nmemail; kitDigital.carteirinha.dadosComplementares.endereco = Mapper.Map <EnderecoPessoa, Endereco>(enderecoPessoa); kitDigital.carteirinha.dadosComplementares.telefone = Mapper.Map <IEnumerable <TelefonePessoa>, IEnumerable <Telefone> >(BuscarTelefone(enderecoPessoa.cdpes)); break; } } } lista.Add(kitDigital); }); } catch (Exception ex) { throw ex; } } } } using (TransactionScope scope = new TransactionScope()) { listaDto = dao.AddControleImpKitItem(lstKit, usuario, lista, retornoLogProcessamento, nomeArquivo); scope.Complete(); scope.Dispose(); } return(listaDto); } catch (Exception e) { throw e; } }
private void UpdateGeometry(Lamina lamina) { lamina._solid = Kernel.Instance.CreateLamina(lamina.Perimeter); lamina._csg = lamina._solid.ToCsg(); }
private void UpdateGeometry(Lamina lamina) { lamina._solid = Kernel.Instance.CreateLamina(lamina.Perimeter, lamina.Voids); }