디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

나는 사실 순수한 컴공이 아님요...

1q2w3e(165.246) 2010.11.20 23:00:59
조회 190 추천 0 댓글 2

/*#####################################################################################
프로그램 작성일 : 2010.11.10
제출일 : 2010.11.15
CAD/CAM Project 1 : Milling(Algorithm ,working Time ,Part Program)
산업공학과 120XXXX XXX

NOTE : 변수값을 입력받아 정사각형 재료의 툴 패스 좌표를 구하며 그 툴패스 좌표에 따른 가공거리
비 가공거리를 산출해 가공시간을 구한다. 소수점 단위오차를 줄이기 위해 정수형 좌표값이 아닌 실수형
좌표값으로 계산하였다. 계산결과는 TEXT 파일로 출력되며 이 파일은 툴패스_좌표.txt로 자동저장 된다.

작성언어 : C언어(Microsoft Visual C++ 2008 Express)
######################################################################################*/

#include <stdio.h>
#include <math.h>

void main()
{
        double x_one; //X1좌표
        double x_two; //X2좌표
        double y_one; //Y1좌표
        double y_two; //Y2좌표
        double init_cool_x; //툴의 처음 시작위치(x)
        double init_cool_y; //툴의 처음 시작위치(y)

        double tool_diameter; //툴 지름
        double hang_over; //행오버 비율
        double work_a; //가공여유

        double work_length; //가공거리
        double nwork_length; //비가공거리

        double pro_feed; //가공feed
        double npro_feed; //비가공feed

        int i; //for 반복수
        int n; //for 반복의 끝


        printf("X1,X2,Y1,Y2 좌표 입력 : ");
        scanf("%lf %lf %lf %lf",&x_one,&x_two,&y_one,&y_two);
        printf("툴의 처음위치를 입력 :");
        scanf("%lf %lf",&init_cool_x,&init_cool_y);
        printf("툴의 지름 입력 : ");
        scanf("%lf",&tool_diameter);
        printf("행 오버 비율 입력(x.x) :");
        scanf("%lf",&hang_over);
        printf("가공여유 비율 입력(x.x) :");
        scanf("%lf",&work_a);
        printf("가공feed 비가공feed 입력 :");
        scanf("%lf %lf",&pro_feed,&npro_feed);

        n=(y_two-y_one)/(tool_diameter-tool_diameter*hang_over);
//반복수 구하기 : 모재의 Y축 길이/1회 반복 시 툴이 움직이는 거리
        
        FILE *fp = fopen("툴패스_좌표.txt","w");
//좌표를 저장할 텍스트 파일 생성

        fprintf(fp,"############################지정변수#################################\\n");
        
        fprintf(fp,"좌표 : (X1,X2,Y1,Y2)=(%f,%f,%f,%f)\\n",x_one,x_two,y_one,y_two);
        fprintf(fp,"밑변가로가 %f, 세로가 %f 인 직육면체 모재\\n",x_two-x_one,y_two-y_one);
        fprintf(fp,"툴의 지름 : %f\\n",tool_diameter);
        fprintf(fp,"행오버 비율 : %f %\\n",hang_over*100);
        fprintf(fp,"가공여유 비율 : %f %\\n",work_a*100);
        fprintf(fp,"가공피드 : %f\\n",pro_feed);
        fprintf(fp,"비가공피드 : %f\\n",npro_feed);

        fprintf(fp,"############################툴 패스#################################\\n");

        fprintf(fp,"PS(%f,%f)\\n",init_cool_x,init_cool_y); //처음 툴의 위치

        for(i=1;i<=n;i++)
        {
                if(i%2==1)
//홀수번 반복일 경우
                {
                        if(i==1)
//가공 시작위치인지 구분, 참고로 시작위치의 오버홀을 고려한 y값 계산은 그 다음 y값 계산과 다르다.
                        {
                                fprintf(fp,"P%d(%f,%f)\\n"
,2*i-1,x_one-(tool_diameter*work_a+tool_diameter/2.0)
,y_two-(double)i*(tool_diameter/2-tool_diameter*hang_over));

                                fprintf(fp,"P%d(%f,%f)\\n"
,2*i,x_two+(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter/2-tool_diameter*hang_over));
                        }
                        else
                        {
                                if(i==n)
//홀수번째를 끝으로 끝날경우 공구가 마지막에 빠지는 곳 마킹
                                {
                                        fprintf(fp,"P%d(%f,%f)\\n"
,2*i-1,x_one-(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));

                                        fprintf(fp,"P%d(%f,%f)\\n"
,2*i,x_two+(tool_diameter*work_a+tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));
                                        break;
                                }
                                else
                                {
                                        fprintf(fp,"P%d(%f,%f)\\n"
,2*i-1,x_one-(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));

                                        fprintf(fp,"P%d(%f,%f) \\n"
,2*i,x_two+(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));
                                }
                                
                        }
                }
                else if(i%2==0)
//짝수번 반복일 경우
                {
                        if(i==n)
//짝수번째를 끝으로 끝날경우 공구가 마지막에 빠지는 곳 마킹
                        {
                                fprintf(fp,"P%d(%f,%f)\\n"
,2*i-1,x_two+(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));

                                fprintf(fp,"P%d(%f,%f)\\n"
,2*i,x_one-(tool_diameter*hang_over+tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));
                                break;
                        }
                        else
                        {
                                fprintf(fp,"P%d(%f,%f)\\n"
,2*i-1,x_two+(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));

                                fprintf(fp,"P%d(%f,%f)\\n"
,2*i,x_one-(tool_diameter*hang_over-tool_diameter/2.0)
,y_two-(double)i*(tool_diameter-tool_diameter*hang_over));
                        }
                }
        }
        fprintf(fp,"############################툴 패스#################################\\n\\n");

        fprintf(fp,"############################가공 시간#################################\\n");
//가로이동거리+세로이동거리
        fprintf(fp,"가공거리 : %f\\n",work_length=(n-2)*((x_two+(tool_diameter*hang_over-tool_diameter/2.0))
                                             -(x_one-(tool_diameter*hang_over-tool_diameter/2.0))
                                         +2*(x_two+(tool_diameter*hang_over-tool_diameter/2.0)
                                         -(x_one-(tool_diameter*work_a+tool_diameter/2.0))))
                                         +(n-1)*(tool_diameter-tool_diameter*hang_over));

        
        if(n%2==0)
//반복수 종료가 짝수 즉, 종료지점이 시작지점과 같은 쪽에 있음
        {
        fprintf(fp,"비가공거리:%f\\n"
,nwork_length=pow(pow(init_cool_x-(x_one-(tool_diameter*work_a+tool_diameter/2.0)),2.0)
+pow(init_cool_y-(x_two-(tool_diameter/2.0-tool_diameter*hang_over)),2.0),0.5)
          +pow(pow(init_cool_x-(x_one-(tool_diameter*hang_over+tool_diameter/2.0)),2.0)
+pow(init_cool_y-(y_two-(double)n*(tool_diameter*hang_over)),2.0),0.5));

        fprintf(fp,"비가공시간+가공시간= %f\\n",work_length/pro_feed+nwork_length/npro_feed);
        }
        else
//종료점이 시작점과 반대방향에 있는 경우
        {
                fprintf(fp,"비가공거리:%f\\n"
,nwork_length=pow(pow(init_cool_x-(x_one-(tool_diameter*work_a+tool_diameter/2.0)),2.0)
+pow(init_cool_y-(y_two-(tool_diameter/2.0-tool_diameter*hang_over)),2.0),0.5)
                    +pow(pow(init_cool_x-(x_two+(tool_diameter*work_a+tool_diameter/2.0)),2.0)
+pow(init_cool_y-(y_two-(double)n*(tool_diameter-tool_diameter*hang_over)),2.0),0.5));

                fprintf(fp,"비가공시간+가공시간= %f\\n",work_length/pro_feed+nwork_length/npro_feed);
        }
        fclose(fp);
}

---------------------------------------------------------------------------
그냥 이런거 맹그는데 쓰는것임... C언어는 도구일뿐...

가끔보면 나는 무척 병맛임... 왜 굳이 다른애들은 그냥 계산이 복잡해서 수치조작을 해대는데

왜 난 이 개고생을 할까...

그래도 뭐 이편이 정확하니까... 쩝...ㄲㄲㄲㄲㄲ

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
231235 우리는 지속가능한 경제성장이 아니구나 [4] 이모군(211.40) 11.01.18 115 0
231234 구석횽은 이 Thing을 봄.니.다. [1] 물속의다이아갤로그로 이동합니다. 11.01.18 130 0
231232 이거 좋다. [2] iljeomobolt갤로그로 이동합니다. 11.01.18 110 0
231231 왜이리 배가아프지 [2] 꿀레(14.33) 11.01.18 92 0
231230 남이 만들어 놓은 소스 수정, 원래 이렇게 복잡하나? [3] 2417(211.232) 11.01.18 140 0
231229 자바 프로그래머가 해보기에 아이폰이 낫습니까 안드로이드가 낫습니까.. [5] ㅂ_ㅂ(112.221) 11.01.18 280 0
231228 이게 코딩이 되긴 되는거여? [1] 씨초보(125.188) 11.01.18 171 0
231227 입게르~ 뇌노뇌노갤로그로 이동합니다. 11.01.18 114 0
231226 김대중은 IT 노예시장의 선구자 VS 현재 IT 강국의 기틀을 다진자 [1] 에이치(115.139) 11.01.18 294 0
231223 조립PC 쓰는 횽들은 봅니닷 고정닉귀찮엄(210.126) 11.01.18 61 0
231221 웹개발 하면서 웹디들 보면 존나 빡친다 [10] 에이치(115.139) 11.01.18 378 0
231219 코딩용 노트북 추천좀해주세요~_~ ㅎㅎ [7] (220.94) 11.01.18 283 0
231218 제록스인가 여기 돋네요... ㅋㅋㅋ [3] SINE갤로그로 이동합니다. 11.01.18 156 0
231217 램디스크랑 내하드 속도 비교.. [2] [성대아싸]갤로그로 이동합니다. 11.01.18 209 0
231215 객체지향을 잘하면, 인생도 잘살고 사업도 잘해 [9] 객체(58.180) 11.01.18 173 0
231214 학원떡밥지나간 마당에 하나만 물어볼게ㅠ ocp딸려고 학원다닐려고 하는데 [8] 잉ㅇㅕ잉여갤로그로 이동합니다. 11.01.18 166 0
231212 자바의 지역 변수에 관한 질문입니다. [15] 머슬곽갤로그로 이동합니다. 11.01.18 191 0
231210 로그인봇 [1] 씨발라드세요갤로그로 이동합니다. 11.01.18 85 0
231209 홈페이지 플그램이랑 코딩할줄 아시는분 있나여?? 같이 포폴만드실분? [2] 구함(123.199) 11.01.18 112 0
231205 모든 Thing에는 양면성이 있다 [4] 르하소갤로그로 이동합니다. 11.01.18 119 0
231204 zune 좋은 듯 [4] 다람쥐v갤로그로 이동합니다. 11.01.18 118 0
231203 ㄷㄷ [2] 칼주인(121.166) 11.01.18 101 0
231202 우클릭 방지가 무슨 절대적인 방호장치인마냥 생각하는 아해들이 있는데 [22] 소변과미나리(110.15) 11.01.18 301 0
231201 게등위 심의료 인상안 퇴짜 [4] 다람쥐v갤로그로 이동합니다. 11.01.18 146 0
231200 어떻게 마인크래프트같은 게임을 만들생각을했을까.. [1] 꿀레(14.33) 11.01.18 484 0
231198 어제 나한테 C 물어본사람? URA!갤로그로 이동합니다. 11.01.18 78 0
231195 이틀남앗다 갤러리갤로그로 이동합니다. 11.01.18 38 0
231194 [2] ㅁㄴㅇㄹ(175.199) 11.01.18 110 0
231193 execute -소환.("구석횽") [4] 참치갤로그로 이동합니다. 11.01.18 85 0
231191 [9]    갤로그로 이동합니다. 11.01.18 164 0
231190 학원다녀도 5%만 성공한다는... [1] ㅁㄴㅇㄹ(175.199) 11.01.18 176 0
231189 안녕하세요, 공백이라고 합니다 [5]    갤로그로 이동합니다. 11.01.18 96 0
231188 학원도 학원 나름이지만 [1] 다람쥐v갤로그로 이동합니다. 11.01.18 148 0
231187 예전에 누가 올리던 건데 보고 좀 알려주실분;; [25] 으앙(175.115) 11.01.18 205 0
231185 중권이형이 간만에 좋은 글을 하나 썼구나. 물속의다이아갤로그로 이동합니다. 11.01.18 90 0
231184 핵교 세미나에서 코덱관련 발표를 좀 하려고 하는데 [4] 분당살람갤로그로 이동합니다. 11.01.18 96 0
231183 꾸루룽은 봄.니.다. [2] 물속의다이아갤로그로 이동합니다. 11.01.18 78 0
231181 물속의 다야 오빠야는 봅니다. [9] iljeomobolt갤로그로 이동합니다. 11.01.18 229 0
231180 올만이예요 형들~ 질문좀 할께요~ [1] ㄱㅁㄱ·갤로그로 이동합니다. 11.01.18 52 0
231179 좆나 이해 안가는게 왜 블로그에 우측클릭을 막아놓는 거냐? [30] 물속의다이아갤로그로 이동합니다. 11.01.18 344 0
231178 디버깅 자주하는것이 좋은습관인가... [7] 꿀레(14.33) 11.01.18 181 0
231177 학원 가는 걸 비난 하는게 아니라 생각 자체가 글러 먹은거다. [5] 물속의다이아갤로그로 이동합니다. 11.01.18 229 0
231176 크롬에서 검색기 쓸때마다 왜 광고가 나오지... 청전기(211.254) 11.01.18 57 0
231175 하루시간을 계산해봤다 [1] ddt(183.106) 11.01.18 171 0
231174 컴터 as맡겼더니 연락 졸라 안오네 [6] 비우그라갤로그로 이동합니다. 11.01.18 101 0
231173 나 저거 1테라 메모리카드 사고싶어서 가격을 봤지. [6] BTS!!갤로그로 이동합니다. 11.01.18 239 0
231170 usb메모리 1테라도 있네 있기는 [4] BTS!!갤로그로 이동합니다. 11.01.18 256 0
231168 지금 비트학원인데 [1] 마타마타(112.169) 11.01.18 193 0
231167 이 게임 제목이 뭔가여?.jpg [10] ㅇㅇ(222.107) 11.01.18 344 0
231166 이거 다 갖고싶다 [6] BTS!!갤로그로 이동합니다. 11.01.18 143 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2