실무 파이썬 예제 - 구조계산서 부록 만들기

2023.09.14.

읽는시간 : 3분

BLOG 토목

 

1.MATLAB으로 구조계산서 부록만들기

MATLAB으로 구조계산서 부록만들기 (https://youtu.be/x0_8wUFDmho )

 

"코딩 문법은 중요하지 않다. 그 이유는 마지막에 설명하도록 하겠다." -본문 중

 

유튜브 링크는 내 채널에 Matlab을 예시로 구조계산서 부록 만들기를 시연한 것이다. 이번 포스팅은 위 영상의 파이썬 버전이고 작성한 파이썬 코드를 다운로드 받을 수 있게 하였다.

지난 포스팅에서 토목구조 영엔지니어가 왜 코딩을 할 줄 알아야 하며, 수많은 코딩 언어 중에서 왜 파이썬을 추천하는지 얘기했었다.

 

 

이번에는 나의 파이썬 작업 환경과 아주 간단하지만 실무에 여러가지로 응용 가능한, 실제로 도움이  될만한 파이썬 코드를 공유하고 소개하고자 한다.

 

나의 파이썬 작업 환경 소개

파이썬을 사용하는데 가장 큰 진입 장벽은 설치이지 않을까 싶다…

하지만 반대로 그 만큼 많은 정보들이 있기 때문에 파이썬 설치, IDE, 파이썬 코딩을 위한 IDE 종류 및 특성은 조금만 검색해보면 알 수 있다.

파이썬 IDE에는 여러가지가 있지만 나는 Spyder라는 IDE를 사용한다.

 

Q. IDE란?

A: IDE는통합개발환경(Integrated Development Environment)의 약자로, 소프트웨어 개발자가 애플리케이션을 개발하고 디버깅하는 데 사용하는 도구 모음이다. 소스 코드 편집기, 컴파일러, 디버거, 빌드 자동화 도구 등을 포함하고 주요 기능은 코드 작성, 디버깅, 테스트, 버전 관리, 프로파일링, 배포 등이 있다. 예를 들자면, 요리사가(개발자) 한식(프로그래밍 언어)을 만들기 위해 그에 맞는 주방(개발환경)을 선택하는 것과 유사하다고 할 수 있다.

 

2. spyder

Spyder가 기존에 사용하던 MATLAB과 가장 비슷한 환경이라고 들었고 실제로 내가 코드에 사용한 변수를 확인할 수 있는 변수 탐색기가 MATLAB과 굉장히 비슷해서 이질감 없이 사용하고 있다.

 

3. spyder 24. spyder 3

Spyder 실행화면, Variable Explorer

 

5.Variable cell_values 선택 시 뜨는 창

Variable 'cell_values' 선택 시 뜨는 창



또한, 해외설계사에서 일하고 있는 후배도 회사에서 처음으로 파이썬을 배워서 사용하는데 선임이 Spyder를 추천해줘서 사용하고 있다고 한다.

 

 

구조계산서 부록만들기

Spyder까지 설치 완료 했다면 깃허브에서 코드를 다운 받아서 실행시킬 수 있다.

(물론 spyder 없이도 실행 시킬 수 있다.)

 

구조계산서 부록 만들기 예제 (github.com) (https://github.com/KilHoChoi/MEC_code_1)

 

6.깃허브 화면

깃허브 화면

 

 

Q. 깃허브 (Github)란?

(https://www.youtube.com/watch?v=YFNQwo7iTNc)

깃허브는 Git을 기반으로 한 웹 기반 호스팅 플랫폼 종류 중 하나이다. 여기서 Git은 버전 관리시스템으로 코드의 변경 이력 관리와 협업 기능이 있다. 쉽게 말해 코드 버전 관리를 위해 여러 버전을 다른 이름으로 저장 할 필요가 없고 원한다면 이전 변경시점으로 회기가 쉽고 회사pc에서 작업하다가 개인pc에서 같은 버전으로 작업이 가능하게 해준다.

 

 

Zip파일을 열어보면 Appendix_A.py 라는 파이썬 스크립트와 CALC.xlsx 라는 엑셀파일이 있을 것이다.

 

7.다운로드한 폴더 내 구성

다운로드한 폴더 내 구성

 

각각에 대해서 설명하자면,

 

CALC.xlsx

설계사에서 일하면 흔히 볼 수 있는 구조계산서의 예시이다.

DB와ULS_check 라는 sheet가 있다.

 

8.calc

DB는 각 단면 별 Design force와 capacity가 정리된, 보통 보고서에 수록되는 요약표가 있다. 단순히 기능만 시연하기 위해서 ULS_check가 간단하게 구성되어있지만 보통ULS_check는 Design force와 capacity의 산정 과정이 정리되어있고 이 sheet가 부록으로 첨부된다.

 

보통 부록이 되는 시트에 몇 가지 변수만 manual하게 입력(여기에서는 Section)하면 vlookup, index & match등의 엑셀 함수로 부록이 완성 되게 끔하고 manual input들을 바꾸어 해당 시트를 pdf로 출력하고 출력 된 시트들을 병합하여 부록(혹은 부록의 일부)을 완성한다.

 

가장 단순하게는 Manual input들을 말그대로 Manual하게 바꾸어줄 수 있고 조금 Fancy한 방법으로는Excel VBA사용할 수도 있다. 하지만, 속도와 확장성 면에서 파이썬을 익히는 것이 유익할 것이라고 판단한다.

 

Appendix_A.py

코드를 spyder로 켜보면 컬러풀 한 외계어 같은 것들이 있지만 신경 쓰지 않아도 된다. 이러한 단순반복작업은 코드가 내가 의도한 대로 작동 하는지 만 확인하면 된다.

 

 

코딩 문법은 중요하지 않다. 그 이유는 마지막에 설명하도록 하겠다.

 

여기서 중요한 것은 맨 처음에 'import' 가 붙어있는 부분이다. 파이썬만 설치하면 아주 단순한 연산은 가능하지만 보통 수많은 library내에 내장 함수를 사용하여 코딩을 한다. 이 코드에서는

os, win32com, fitz, tqdm이라는 library가 사용되었기 때문에 해당 library가 컴퓨터에 설치되어있어야 한다.

 

설치 방법은 spyder의 우측 하단console 창에 pip install [라이브러리 이름]을 입력하여 실행하면 설치된다.

 

9.fitz library 설치 예시

fitz library 설치 예시

 

 

다음은 Inputs에 내가 사용할 엑셀 파일, Manual하게 입력할 값들, 최종 병합 될 pdf파일명을 설정해주고 코드를 실행하면 된다.

 

inputs에 입력 및 설정

 

코드가 실행되면 .py 파일이 있는 곳에 개별 pdf 파일들이 생성되고 pdf파일들을 병합한 Appendix_A.pdf가 생성된다.

 

10.appendix 파일

 

예시에서는 총 100개의 변수에 대하여, 즉, 100 페이지 짜리 부록을 만들게 하였고 소요 시간은 약 30초였다.

 

11.100개 변수에 대한 소요시간 28초(1초당3.57 iteration)

100개 변수에 대한 소요시간 28초(1초당3.57 iteration)

 

 

물론 워낙 단순한 구조 계산서였고 업데이트하는 변수도 하나(section) 였지만, 실제 실무에서 사용 할 만큼 확장하여 사용하여도 충분히 빠른 속도로 부록을 만들 수 있을 것이다.

 

이제 앞에서 코딩 문법을 알 필요가 없다고 한 이유를 설명하려 한다.

사실 이 코드는 인공지능(chat GPT)만 이용해서 짰다.

 

12.chat GPT에 한 첫번째 질문

chat GPT에 한 첫번째 질문

 

 

내가 원하는 알고리즘을 설명해서 단번에 최종 결과물이 나오진 않았다. 하지만 내가 원하는 기능이 구현되지 않거나, 에러가 발생했을 때 그 내용을 다시 구체적으로 물어보면 수정된 코드를 작성해주기 때문에 이러한 방식으로 최종 코드를 완성하였다.

 

물론, 내가 코딩을 정말 1도 모른다면 인공지능으로 코딩하는 것에 한계가 있을 것이라고 생각한다.

 

애초에 어떤 질문을 해야 하는지 모르기 때문이다. 하지만 어떤 언어라도 코딩을 해본 경험이 있다면 파이썬 문법을 모르기 때문에 파이썬을 사용하지 못할 일은 없다는 것이다.

개인적으로 코딩을 가장 빠르게 배우는 방법은 실제로 내가 필요한 기능을 수행하는 코드를 짜보는 것이라고 생각한다. 그렇기 위해서는 우선 예시처럼 내가 구현하고 싶은 기능을 인공지능이 이해하기 쉽게 설명할 수 있어야 한다. 그 다음은 인공지능이 짜준 코드를 실제 돌려보면서 기능대로 작동하는지 확인하고 인공지능이 어떻게 코딩해서 기능을 구현해냈는지 보는 것도 좋은 공부 방법이라 생각한다. 대체로 인공지능이 군더더기 없는 코딩을 하기 때문이다.

 

필자는 대학원에서 실험 데이터를 분석하기 위해서 처음으로 코딩을 접했었는데 그때는 선배의 코드를 뜯어보거나 필요한 세부적인 기능들을 인터넷에서 뒤지면서 오랜 시간 걸려 코딩을 배웠었다.

오랜 시간 들인 만큼 기억에 잘 남아있고 그것이 기반이 되어 지금 코딩하는데 도움이 되었겠지만 실무를 하는 엔지니어에게 그런 시간은 쉽게 허락되지 않는다. 하지만 인공지능을 통해서 이 시간을 획기적으로 줄여줄 수 있으니 코딩을 모르는 엔지니어도 시도 해볼 만하다고 생각한다.

 

국내에서는 가능한 엑셀 파일로 모든 계산서를 작성하는 것 같다. 그래야 누구든지 쉽게 사용할 수 있기 때문이다. 하지만 해외 영엔지니어들은 엑셀 뿐만 아니라 파이썬의 활용도 활성화 돼있고 깃허브 같은 플랫폼을 회사 자체에서 만들어서 해석 및 검토 tool을 협업하여 작성하고 공유하기도 한다. Technical Excellence와 업무의 효율을 위해서 말이다.

깃허브, 파이썬 모두 무료이기 때문에 국내 엔지니어들도 충분히 시도할 수 있고 국제적인 경쟁력을 확보하기 위해서는 가능한 시도해봐야 한다고 생각한다.

내가 제공한 코드를 기본으로 인공지능에게 추가하고 싶은 기능들을 추가 해 달라고 하고 그 기능이 구현되는지 확인해가면서 자기만의 tool을 개발하는데 도움이 되면 좋겠다.

 

 

 

About the Editor
KilHo Choi
구조 엔지니어 Specialist, COWI Korea 경력 7년

인생 전주기 관점에서 최적화를 통한 건강, 가족, 자유를 얻으려고
하는 ENFP, Engineer

 

7년 차 토목구조설계엔지니어
유튜버(www.yotube.com/@ENFPgineer)
Matlab, Python 유저

 

학력

  • 경기북과학고졸업

  • 서울대학교 건설환경공학부 학사/석사졸업

 

※ Topics 아래 키워드를 누르시면 관련 콘텐츠를 보실 수 있습니다.

MOTIVE 뉴스레터 구독

더보기 더보기
댓글