본문 바로가기
블렌더

3D 블렌더 2.83 파이썬 비기 - 내부 콘솔창에 한글 출력하기

제목이 좀 거창한가요? :)
좀 힘들게 알아낸 탓인듯 합니다 ㅎㅎ

블렌더에는 파이썬 스크립트 작업시 내부 콘솔창과 시스템 콘솔창이 있습니다.

블렌더 내부 콘솔창은 여기를 말하는 것이고,

시스템 콘솔창은 이 메뉴를 선택하면 새로운 창이 등장하지요.

문제는 블렌더의 텍스트 에디터에서 사용하는 print() 명령문으로는 시스템 콘솔창 으로만 출력이 가능하고, '한글'이 전혀 출력이 안된다는 것입니다. 내장 콘솔은 스크립트를 여러줄 짜서 한다기 보다는 그냥 인터프리터 ( 바로 실행 ) 용이지요.

아래와 같이 utf-8 로 코드 페이지를 바꾸는 명령어도 시도해보았고,

os.system('chcp 65001')

현재 콘솔창의 한글에 맞추어 코드를 변환 출력도 해보았으나 상위 MSB 1bit 부분을 특정 조건에서 떼버리는지
제대로 출력이 되지 않는 문제가 있습니다.

그러던 중 한 외국소스를 발견해서 일부 개량해본 결과 한글 출력이 잘되고 그것도 시스템 콘솔이 아닌 내부 콘솔로 잘 되는 것을 발견하게 되어 공유합니다

소스는 아래와 같습니다. 이 함수를 파이썬 소스 앞쪽에 정의해주신 다음에,
※ print(1, 2)와 같이 명령을 사용하는 경우가 있다는 사실을 나중에 알아내여 가변 파라미터 방식으로 다시 수정하였습니다.

import bpy

def print(*datas):
    window=bpy.context.window_manager.windows[0]
    screen = window.screen
    for area in screen.areas:
        if area.type == 'CONSOLE':
            for data in datas:
                bpy.ops.console.scrollback_append(
                    {'window': window, 'screen': screen, 'area': area},
                    text=str(data))

그냥 평소 출력하듯이 print() 명령문을 사용해주시면 됩니다.

print("블렌더 내부 콘솔창에 한글 출력을!")

앞으로의 진행과정에 한글로 출력하면서 디버깅할일이 많을것 같아 관련 기술을 먼저 알아보았습니다.
필요하신 분에게 도움이 되시길 바라는 마음으로!
오늘도 여기까지 읽어주셔서 감사합니다 :)

 

반응형