GhPython 코드 디버깅

개시하다


Grasshop per가 자체 제작한 구성 요소를 만들 때 파이톤이나 C#로 코드를 쓰는 사람이 비교적 많다고 생각합니다.
파이썬은 C#에 비해 간단하게 코드를 쓸 수 있지만, 한편으로는 비주얼스튜디오를 사용하지 않은 강력한 디버깅 환경이 단점이다.
조사해보니 Rhino 7부터 GhPython과 Visual Studio를 이용해 디버깅을 할 수 있을 것 같다며 슬그머니 공식적으로 방법을 썼다.
이번에는 그 기사를 쓴 대로 조금 보충하면서 소개하겠습니다.
Debugging GhPython components Visual Studio

환경 구조


Pythhonista에 익숙하지 않은 Visual Studio를 사용합니다.
  • Rhino7
  • Visual Stuidio 2019
  • Python Tools for Visual Studio (PTVSD)
  • PTVSD 설치


    Python 지원을 설치하려면 여기를 참고하십시오.
    Windows에 Visual Studio Python 지원 설치 방법
  • 새 프로젝트 만들기 선택

  • 아래로 스크롤하여 추가 설치 도구 및 기능 선택

  • Visual Studio Installer에 "Python 개발"설치

  • Visual Studio 설정

  • "새 프로젝트 만들기"에서 "IronPython 응용 프로그램"을 선택하고 프로젝트 이름과 목적지를 입력한 다음 "만들기"를 선택합니다.

  • 디버깅 → 옵션 → Python→ 디버깅을 디버깅기로 검사

  • 해냈어.py 파일 다시 쓰기
    기본적으로 Hello World가 있어야 합니다. 다음 코드로 변경하십시오.
    버전과 설치 장소에 따라loc를 다시 쓰십시오.
    import sys
    
    # This is the path where the Visual Studio Python modules are locate. 
    # Change to your own: 
    loc = r'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\Python\Core'
    
    if loc not in sys.path:
        sys.path.append(loc)
    
    import ptvsd
    
    if not ptvsd.is_attached():
        #set up secret, address and port for ptvsd
        ptvsd.enable_attach(secret = 'dev', address = ('localhost', 2019))
        ptvsd.wait_for_attach() #in order for GH to wait for the process to be attached
    
  • 설명 코드
    3. 다음은 실행하고자 하는 코드를 기술합니다.
    이번에는 예를 들어 간단한 for문 코드를 쓰자.
    import Rhino.Geometry as rg
    
    points = []
    circles = []
    for i in range(count):
        point = rg.Point3d(x*i*10, y*10,0)
        points.append(point)
        circle = rg.Circle(point,radius)
        circles.append(circle)
    
  • 폭발점 지정
    디버깅을 중지하여 변수 컨텐트를 볼 위치를 지정합니다.
    일시 정지 줄 왼쪽의 공백을 누르면 빨간색 ● 코드가 이 줄에서 정지됩니다.

  • Rhino7 설정

  • Grasshopper를 통해 Python 구성 요소 출력
  • "Python"부분을 오른쪽 단추로 클릭하고 Show "code" input parameter입력이 나타납니다code.

  • 파이톤Input is path을 다시 우클릭

  • File Path 구성 요소 연결 code
  • 입력한 매개 변수는 다음과 같다
  • x: float
    y: float
    radius: float
    count: int
    

    6. 우클릭File Path 구성 요소 선택Select one existing file을 아까 제작한 것.py 파일 선택
    ※ 이것을 하면 GH가 다운됩니다. 하지만 이 정도면 괜찮습니다.

    디버깅


    설정이 끝났기 때문에 디버깅을 진행합니다.
  • Visual Studio 메뉴 모음에서 "디버깅"→"부착"
  • 선택
  • '연결의 종류'를'Python 원격(ptvsd)','연결 목적지'를 tcp://dev@localhost:2019/로 설정

  • 업데이트를 누르면 프로세스가 표시되므로 부착을 선택합니다.

  • 후 디버깅이 시작되면 코드가 방금 지정한 단점에서 멈추고 변수의 내용을 표시합니다.

  • [스텝] [스텝] [스텝] [스텝] 코드를 클릭하면 전진합니다.

  • for문장이 계속 진행되면 목록에 추가되어 대상의 내용을 볼 수 있습니다.

  • 디버그 중단 및 재디버그


    디버깅 중지


    Visual Studio에서 ■"디버깅 중단"을 클릭합니다.

    다시 디버깅 시작

  • Visual Studio에서 "디버깅"→"프로세스 재부착 중"
  • 클릭
  • GH에서 다음 중 하나를 만들 때 디버깅이 시작됩니다.
  • 마우스 휠 클릭→"Recompute"

  • 슬라이더 다시 연결
  • 이동 슬라이더
  • 최후


    상대의 내용을 볼 수 있어서 편리하군요.
    코드가 복잡해지면 오류가 발생하더라도 그 줄이 아닌 다른 곳에서 문제가 생기는 경우가 많아 원인을 특히나 파이톤의 경우 유형이 자유롭기 때문에 오류를 발견하기 어려우므로 이 방법을 추천한다.

    참고 자료


    Debugging GhPython components Visual Studio
    Windows에 Visual Studio Python 지원 설치 방법

    좋은 웹페이지 즐겨찾기