Relatório do EP de cad-cam

Relatório do EP de cad-cam

(Parte 1 de 5)

UNIVERSIDADE DE SÃO PAULO

Escola Politécnica

Departamento de Engenharia Mecatrônica e de Sistemas Mecânicos

Renato Freitas nUSP 3680839

Ronaldo Endo nUSP 3725741

Relatório do Exercício Programa

CAD CAM

Prof. Marcos Tsuzuki

São Paulo

2006

Relatório

Este exercício programa visa a implementação de funções para o cálculo da área, do volume e do centro de massa de um sólido. Além disso, deve ser implementada também uma função que constrói um sólido primitivo em formato da letra “T” através de parâmetros especificados pelo usuário.

O programa utilizado para trabalhar com estas funções foi o USPDesginer, disponível no site da disciplina. Várias funções já estavam disponíveis para serem utilizadas na implementação do exercício programa, como multiplicações vetoriais, escalares, soma de vetores, etc.

Os componentes dos sólidos (arestas, vértices, faces, laços, shells, etc) possuem níveis de acesso. Foi recomendado o nível “low” para realizar as operações essenciais.

Calculo da área:

Primeiramente varre-se todos os laços das faces das shells do sólido que se pretende calcular a área. Percorrendo as vértices do laço em seqüência, aplica-se o produto vetorial de dois vetores consecutivos que indicam suas posições relativas ao vértice inicial, resultando num vetor de módulo proporcional área do triângulo formado por esses três vértices. Se a face apresentar furos a área calculada do laço que o representa terá valor negativo, de forma a contabilizar corretamente a área total do sólido.

Cálculo do volume:

Similar ao calculo da área, visando o calculo de volumes de tetraedros com um dos vértices na origem. Assim, soma-se o volume de cada tetraedro de forma a resultar no volume final do sólido.

Centro de massa:

Com o centro de massa de cada tetraedro calculado com a posição de seus vértices e, multiplicado pelo seu respectivo volume, soma-se todos os resultados obtidos e divide-o pelo volume total do sólido, encontrando o centro de massa do sólido.

Sólido primitivo “T”

Aplicando as funções de MSD_lowMVSF, MSD_highSVM3 e MSD_highMEF2 construímos o sólido proposto e utilizando a representação em B-Rep.

Resultados

Foram calculadas as propriedades acima para os sólidos esfera, cubo, cilindro, cone, cone (R=10, H=20) + esfera (R=10) e cubo (10 x 10 x 10) – esfera (R=10).

Prop

Area

Volume

CG

Esfera R=10 N=12

1.239

4070,551514

0; 0.000001; 0

Cubo 10 x 20 x 30

2200

6000

5; 10; 15

Cilindro N=12 R=10 H=20

1842,331421

6000

0; 0; 10

Cone N=10 R=10 H=20

989,816528

2000

0; 0; 5

Cone + Esfera

1367,005249

4393,535156

0; 0; 0,866724

Cubo - Esfera

521,909607

491,181

6,339009; 6,339009; 6,317330

USPDesign

Area

Volume

CG

Esfera R=10 N=12

1238,773936

4070,551443

0; 0.000001; 0

Cubo 10 x 20 x 30

2200

6000

5; 10; 15

Cilindro N=12 R=10 H=20

1842,331434

5999,999925

0; 0; 10

Cone N=10 R=10 H=20

989,816526

2.000

0; 0; 5

Cone + Esfera

1367,005295

4393,535043

0; 0,000001; 0,866723

Cubo - Esfera

521,909624

491,181009

6,339009; 6,339009; 6,317330

Analítico

Area

Volume

CG

Esfera R=10 N=12

1256,637

4188,79

0; 0; 0

Cubo 10 x 20 x 30

2200

6000

5; 10; 15

Cilindro N=12 R=10 H=20

1884,955

6283,185

0; 0; 10

Cone N=10 R=10 H=20

1016,64

2094,3951

0; 0; 5

Anexo – Código Fonte

#include <stdio.h>

#define __VIRTUAL_MEM

#define __ROV__

#include "mensagem.h"

#include "memvirtu.h"

#include "lowparam.h"

#include "lowmacro.h"

#include "lowsolid.h"

#include "eulerops.h"

#include "vectorop.h"

#include "genfunc_.h"

#include "analise_.h"

#include "prop.h"

#include "mancommd.h"

#include <string.h>

#include "shpshape.h"

float MSD_highNamePropriedadeArea(char *name);

float MSD_highPropriedadeArea(Id sn);

double MSD_lowPropriedadeArea(SPTYPE s);

double MSD_lowPropriedadeAreaFace(FPTYPE f);

double MSD_lowPropriedadeAreaLaco(LPTYPE l);

float MSD_highNamePropriedadeVolume(char *name);

float MSD_highPropriedadeVolume(Id sn);

double MSD_lowPropriedadeVolume(SPTYPE s);

double MSD_lowPropriedadeVolumeFace(FPTYPE f);

double MSD_lowPropriedadeVolumeLaco(LPTYPE l);

float MSD_highNamePropriedadeCGravidade(char *name, float *cx, float *cy, float *cz);

float MSD_highPropriedadeCGravidade(Id sn, float *cx, float *cy, float *cz);

double MSD_lowPropriedadeCGravidade(SPTYPE s, float *cx, float *cy, float *cz);

double MSD_lowPropriedadeCGravidadeFace(FPTYPE f, float *cx, float *cy, float *cz);

double MSD_lowPropriedadeCGravidadeLaco(LPTYPE l, float *cx, float *cy, float *cz);

void MSD_highCreatePrimitivoT(char *name, float d1, float d2, float d3, float d4, float d5) ;

void MSD_highSolidoT(Id sn, float d1, float d2, float d3, float d4, float d5);

void MSD_execManipulatePropriedade(void)

{

int ip ;

char onam[30] ;

matrix mat ;

float area, volume, i, cx, cy, cz ; // definição das variáveis locais

float d1, d2, d3, d4, d5;

for (ip = 0 ; ip == 0 ; ) {

switch(optin()) { // recupera as oções do comando

// - Comando calcula a area - recupera o nome do solido

case 'a':

(Parte 1 de 5)

Comentários