private PosicaoCollection ExtrairPosicoes3D(Decimal[] ordinates, int inicio, int fim) { PosicaoCollection posicaoCollection = new PosicaoCollection(); int index = inicio; while (index < fim) { posicaoCollection.Adicionar(new Posicao(ordinates[index], ordinates[index + 1], ordinates[index + 2], false)); index += 3; } return(posicaoCollection); }
private PosicaoCollection ExtrairPosicoesLRS3D(Decimal[] ordinates, int inicio, int fim, int eixoLrs) { PosicaoCollection posicaoCollection = new PosicaoCollection(); int num1 = eixoLrs - 1; int num2 = 5 - num1; int index = inicio; while (index < fim) { posicaoCollection.Adicionar(new Posicao(ordinates[index], ordinates[index + 1], ordinates[index + num2], true) { M = ordinates[index + num1] }); index += 4; } return(posicaoCollection); }
private SegmentoLinha GerarSegmento(Decimal[] ordinates, int inicio, int fim, int tipo, int dimensoes, int eixoLrs) { try { SegmentoLinha segmentoLinha; switch (tipo) { case 1: segmentoLinha = (SegmentoLinha) new SegmentoLinhaReto(); break; case 2: segmentoLinha = (SegmentoLinha) new SegmentoLinhaArco(); break; case 3: segmentoLinha = (SegmentoLinha) new SegmentoLinhaReto(); break; case 4: segmentoLinha = (SegmentoLinha) new SegmentoLinhaCirculo(); break; default: return((SegmentoLinha)null); } PosicaoCollection posicoes = this.ExtrairPosicoes(ordinates, inicio, fim, dimensoes, eixoLrs); if (posicoes == null || posicoes.Count <= 1 || tipo == 2 && posicoes.Count % 2 == 0 || (tipo == 3 && posicoes.Count != 2 || tipo == 4 && posicoes.Count != 3)) { return((SegmentoLinha)null); } segmentoLinha.Posicoes.Adicionar(posicoes); return(segmentoLinha); } catch { return((SegmentoLinha)null); } }