【MAYA】 일시적으로 파이썬 라이브러리 경로 추가 (조금 높은 기능

10822 단어 파이썬maya
일시적으로 파이썬 라이브러리 경로를 추가하는 편리한 녀석을 만들었습니다. 코드는 게시물의 엉덩이에.
  • 중복 등록하지 않음
  • 패스 캐릭터 라인의 자동 성형 같은 기능
  • 경로 존재 확인
  • win/mac 양대응
  • win/mac 환경에 맞는 문자열로 변환 한 다음 등록합니다

  • 같은 기능이 있습니다. 덧붙여 일시 등록이므로 MAYA를 재기동하면 설정은 사라져 없어집니다.
    패스를 통과하지 않고 무거운 파일 열어 버렸을 때라든가, 실험용의 코드를 취급하는 경우등에 사용해 주세요.
    MAYA 2018 + MacOS SierraMAYA 2017 + Windows10 Pro 에서 동작 확인했습니다.


    코드를 실행하면, 이런 느낌의 다이얼로그가 나옵니다.


    추가 성공하면.


    해당 경로가 이미 존재하면 추가할 수 없습니다.


    추가하려는 폴더가 없으면 추가할지 여부를 선택할 수 있습니다.


    Mac에서\로 구분 된 경로를 등록하려고하면 내부적으로 mac 표현식의 경로 설명으로 변환하여 작동합니다. Mac에 C 드라이브라든지는 없는 것입니다만, 파일 서버를 smb로 시작되는 패스로 등록할 때 등은 편리할지도 모릅니다?

    / 로 등록한 패스를 ¥ 로 등록하려 해도


    이렇게 연주됩니다.


    windows 기계에서 이러한 경로를 등록하고


    그 후 다른 쓰는 방법으로 등록하려고하면


    제대로 연주됩니다.

    선반 등록용 빠른 실행 코드


    import sys
    import os
    import pymel.core as pm
    import platform
    
    
    def temp_def():
        result = pm.promptDialog(
                    title='Python Path Appender',
                    message='追加するライブラリパスを入力してください (win / mac OK)',
                    button=['OK', 'Cancel'],
                    defaultButton='OK',
                    cancelButton='Cancel',
                    dismissString='Cancel')
    
        if result != 'OK':
            return
    
        lib_path = pm.promptDialog(query=True, text=True)
    
        # 左右の空白を取り除く
        lib_path = lib_path.strip()
    
        # 一度posix(mac形式)のパス起票に統一して直す(両者の混在などをなくす)
        lib_path = lib_path.replace('\\', '/')
    
        if len(lib_path) <= 1:
            # あまり短いのは省いておく
            pm.confirmDialog(title='確認', message='パスが短すぎます。', button='OK')
            return
    
        if lib_path.endswith('/'):
            # 最後のパス区切り文字は消しておく(そのままでも大丈夫だが統一して重複をなくす)
            lib_path = lib_path[:-1]
    
        if platform.system() == 'Windows':
            # 元に戻す
            lib_path = lib_path.replace('/', os.path.sep)
    
        if lib_path in sys.path:
            pm.confirmDialog(title='確認', message='パスはすでに登録されています。', button='OK')
            return
    
        file_exsistence = os.path.exists(lib_path)
        if not file_exsistence:
            result = pm.confirmDialog(
                title='確認', message='"{}"\nパスがファイルシステムに存在しません、それでも登録しますか?'.format(lib_path),
                button=('OK', 'Cancel'),
                defaultButton='OK', cancelButton='Cancel', dismissString='Cancel')
            if result != 'OK':
                return
    
        sys.path.append(lib_path)
        pm.confirmDialog(title='確認', message='"{}"\n上記をパスに追加しました。'.format(lib_path), button='OK')
    
    
    temp_def()
    del temp_def
    

    좋은 웹페이지 즐겨찾기