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);
        }
示例#2
0
        /// <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
            });
        }
示例#4
0
        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;
            }
        }
示例#7
0
 private void UpdateGeometry(Lamina lamina)
 {
     lamina._solid = Kernel.Instance.CreateLamina(lamina.Perimeter);
     lamina._csg   = lamina._solid.ToCsg();
 }
示例#8
0
 private void UpdateGeometry(Lamina lamina)
 {
     lamina._solid = Kernel.Instance.CreateLamina(lamina.Perimeter, lamina.Voids);
 }