Dynamo를 활용한 Excel 데이터 기반 프로젝트 시트 생성 방법

2024년 10월 19일

목적 및 작동영상

Dynamo를 사용하면 복잡한 작업을 자동화할 수 있으며, 특히 Excel 파일을 기반으로 데이터를 가져와 프로젝트 내에서 시트를 생성하는 과정을 쉽게 처리할 수 있습니다. 이 글에서는 Excel 파일에서 데이터를 불러와 새로운 시트를 생성하고, 중복된 시트 번호와 이름을 확인하여 시트 중복 생성을 방지하는 과정을 다룹니다.

전체코드

엑셀로 다중 시트 생성하기 전체코드
이미지 1. 엑셀로 다중 시트 생성하기 ⓒ디지털디자인포럼

알고리즘

1. Excel 데이터 불러오기

Excel 데이터를 프로젝트로 가져오는 첫 번째 단계입니다. 이를 위해 파일 경로를 선택하고 데이터를 불러오는 과정을 수행합니다.

  • File Path (Filename): 사용자가 Excel 파일을 선택할 수 있도록 하는 노드입니다. 이 노드를 통해 Dynamo는 Excel 파일의 경로를 받습니다.
  • ImportExcel: 선택한 Excel 파일에서 데이터를 읽어오는 노드입니다. 사용자는 시트 이름을 지정하고, 데이터를 문자열로 읽을지 여부(readAsStrings)와 Excel을 시각적으로 열지 여부(showExcel)를 설정할 수 있습니다.
    • 입력 파라미터:
      • file: 파일 경로 (File Path 노드의 출력)
      • sheetName: 읽을 시트 이름
      • readAsStrings: false로 설정하여 데이터를 본래 형식으로 읽음
      • showExcel: true로 설정하여 Excel 프로그램을 열고 데이터를 확인 가능

이 과정은 Excel 파일에서 데이터를 다루기 위한 첫 단계로, 이후에 필요한 시트 번호와 이름을 추출할 수 있도록 데이터를 준비하는 역할을 합니다.

2. 시트 번호 및 시트 이름 추출

0=Sheet Number, 1=Sheet Name 그룹은 Excel 데이터를 활용하여 시트 번호와 시트 이름을 구분하기 위한 단계입니다. 여기서 List.Deconstruct노드를 사용해서 첫 번째 아이템을 제거한 이유는 엑셀에서 첫 행이 Sheet Number와 Sheet Name등 해당 열의 제목으로 설정되어 있기 때문에 제거하기 위함입니다.

  • Code Block (0; 1;): 시트 번호와 시트 이름을 구분하기 위한 인덱스를 설정하는 코드 블록입니다.
    • 0: 시트 번호를 나타냅니다.
    • 1: 시트 이름을 나타냅니다.

이 단계에서는 시트 번호와 이름을 구분하여 추출하기 위한 준비 작업이 이루어집니다. 인덱스 설정을 통해 데이터를 적절하게 구분할 수 있습니다.

3. 기존 시트 확인 및 필터링

이 단계에서는 이미 프로젝트에 존재하는 시트 목록을 불러와, 새로운 시트의 번호와 이름이 기존 시트와 중복되지 않도록 필터링하는 작업이 진행됩니다.

  • All Elements of Category (Sheets): 프로젝트 내 존재하는 모든 시트 목록을 불러오는 노드입니다. 이 노드는 현재 프로젝트 내에서 사용 중인 시트 리스트를 반환합니다.
  • == (Equal): 새로운 시트의 번호 또는 이름이 기존 시트와 같은지 비교하는 노드입니다. 결과로 두 값이 같으면 True, 다르면 False를 반환합니다.

이 단계에서는 기존 시트 목록과 비교하여 중복된 시트가 생성되지 않도록 필터링하여 시트 관리의 일관성을 유지합니다.

4. 시트 생성

필터링을 통해 중복되지 않은 새로운 시트만을 생성하는 마지막 단계입니다.

  • List.FilterByBoolMask: 앞아서 반환한 True, False값을 기준으로 특정 조건에 맞는 값들만 필터링하는 노드입니다. 여기서는 새로운 시트 번호와 이름이 기존 시트와 중복되는지 확인하여, 중복된 시트는 생성하지 않도록 필터링합니다.
    • 입력:
      • 이름 또는 번호
      • mask: 기존 시트와 중복되는지 여부를 판단하는 비교 결과
  • Sheet.ByNameNumberTitleBlockAndViews: 새로운 시트를 생성하는 노드입니다. 필터링된 시트 번호와 이름을 사용하여 시트를 생성합니다.
    • 입력:
      • Sheet Name: 추출된 시트 이름
      • Sheet Number: 추출된 시트 번호
      • TitleBLockFamilyType: 시트에 생성될 타이틀블록 타입
      • Views: 임의로 아무 뷰나 선택

필터링을 거쳐 중복되지 않은 시트만 프로젝트 내에 새롭게 생성됩니다. 이 단계는 알고리즘의 마지막 단계로, Excel 데이터를 활용한 시트 생성이 완료됩니다.

결론

이번 글에서는 Dynamo를 이용해 Excel 데이터를 불러와 프로젝트에 새로운 시트를 생성하는 방법을 알아보았습니다. Excel에서 데이터를 불러오고, 시트 번호와 이름을 추출하며, 필터링을 통해 중복된 시트 생성을 방지하는 일련의 과정이 설명되었습니다. Dynamo를 통해 데이터 기반의 자동화 작업을 구현하면 효율적으로 프로젝트를 관리할 수 있으며, 특히 대규모 데이터 작업 시 매우 유용합니다.


“Dynamo를 활용한 Excel 데이터 기반 프로젝트 시트 생성 방법”에 대한 4개의 응답

  1. txxm 아바타

    안녕하세요 올려주시는내용 잘보고있습니다. 2가지 질문사항이 있어 답글남깁니다

    1.여기서 마지막 시트생성하는Sheet.ByNameNumberTitleBlockAndViews노드에서 경고가뜨는데
    시트이름,숫자에 연결하는 노드에 연결되는 Boolmask에서 out값으로 연결하면 Var[]분류로 바뀌여서
    string 이 들어가야한다고 경고가 뜹니다.

    2.마지막인 views인풋값에서도
    게시해주신 이미지에있는 FloorPlanView.ByLevel를 사용하면 floor plan View가 아웃풋으로 나오는데
    시트생성해주는 Sheet.ByNameNumberTitleBlockAndViews에서는 그냥 View가 있어야 한다고 경고가뜨는상태입니다.

    어떻게 노드가 진행되는지 논리는 이해가 됬지만 노드가 원하는값을 치환하는 노하우를 잘모르겠어서 질문드립니다.

    1. 포매 아바타

      안녕하세요!
      1.엑셀에서 숫자로만 입력된 데이터가 있고, Data.ImportExcel노드에서 readAsStrings가 false로 되어 있으면 다이나모에서 문자형이 아니라 숫자형으로 데이터를 인식할 수 있습니다. readAsStrings를 true로 바꾸시거나 시트 이름과 번호 연결 직전에 string from object노드를 연결해서 모든 데이터를 강제로 문자형으로 바꿔 보시겠어요??

      2.1번이 해결되면 FloorPlanView를 연결해도 잘 작동될 것 같습니다.

      1. txxm 아바타

        string from object 로 해결이 됬습니다 감사합니다.

        1. 포매 아바타

          해결하셨다니 다행입니다 🙂

답글 남기기


관련 포스트

  • 다이나모로 파라메트릭 타워 만들기 – 1

  • 다이나모로 Revit에서 패밀리 타입을 한 번에 만들기

  • Revit에서 그리드 축과 틀어진 기둥 찾기

  • CAD에서 작성한 라인과 텍스트로 Revit에서 룸 생성하기

  • 다이나모로 파사드에 랜덤 두께 설정하기

  • Dynamo에서 자동으로 슬래브 분할 및 병합하는 방법

  • Revit에서 다이나모를 활용한 천장 높이 자동 생성 방법

  • Revit에서 그리드를 기준으로 구조 보 작성하기