Allplan VisulScript/Python

P.P강좌

Allplan Version 체크하기

홍사훈     0건     964회

본문

기본적인 Python 문법은 생략하고 시작합니다. 

 

PythonPart를 시작할때 Allplan버전별로 실행여부를 체크 해야 합니다.

버전별로 지원해주는 모듈이 다르기때문인데요. (2016과 2017은 지원 모듈이 많이 다릅니다.)

그래서 스크립트를 시작하기 전에 버전 체크하는 법을 먼저 익혀야 겠죠?

일단 대화상자는 기본 스크립트만 작성하여 version.pyp으로 저장합니다.

version.pyp

<?xml version="1.0" encoding="utf-8"?>

<Element>

    <Script>

        <Name>sahoon\version.py</Name>

        <Title>version</Title>

        <Version>1.0</Version>

    </Script>

    <Page>

        <Name>Page1</Name>

        <Text>Page1</Text>

    </Page>

</Element>

코드 내용중 sahoon\version.py는 사용자의 폴더에 따라 폴더명을 다르게 주어도 됩니다.

 

기본적으로 특별한 경우가 아니면 PythonPart스크립트는 check_allplan_version, create_element 함수를 읽어드립니다. 함수 이름에서 알수 있듯이 전자는 버전 체크이고 후자는 객체(Object)생성 함수 입니다.

아래 코드는 아무런 반응도 하지 않는 기본적 코드입니다. (실행해보면 Allplan에서는 아무런 반응이 없을것입니다.)

def check_allplan_version(build_ele, version):

    """

    Check the current Allplan version

 

    Args:

        build_ele: the building element.

        version:   the current Allplan version

 

    Returns:

        True/False if version is supported by this script

    """

 

    # Delete unused arguments

    del build_ele

    del version

 

    # Support all versions

    return True

 

def create_element(build_ele, doc):

    pass

※ pass 는 함수의 내용을 생략한다는 의미 입니다.

 

위 코드중 check_allplan_version함수가 실행 후 에 True를 반환하도록 되어있습니다. True를 False로 바꾸어 실행해보시면 지원 Allplan버전이 아니라는 메세지를 만날수 있을것입니다. 

함수의 변수로 build_ele, version가 들어옵니다. version은 Allplan의 버전이 값을 가지고 있으며, "2016.1"이나 "2017.0" 이란 문자로 값이 들어옵니다.

split 메소드로 version함수의 값을 나누워 줍니다.

versions = version.split('.')

 

나누어 준 값을 이용하여 버전을 체크 합니다.

(조건식이 거짓이면 버전이 맞지 않다는 메세지를 보여줍니다.)

return float(versions[0]) > 2016 or float(versions[0]) == 2016 and float(versions[1]) >= 1 

 

예외가 생길경우를 대비해 try 를 사용하여 예외 처리를 해줍니다.

try:

    return float(versions[0]) > 2016 or float(versions[0]) == 2016 and float(versions[1]) >= 1

 

except (ValueError, IndexError):

    return False

 

수정이 다 되었으면 version.py로 저장하여 Allplan에서 테스트 해보고 2016숫자를 바꾸어서 테스트 해보세요. (버전이 맞으면 아무런 반응이 없고, 버전이 맞지 않으면 버전이 맞지 않다는 메세지를 확인하세요)

def check_allplan_version(build_ele, version):

      """

    Check the current Allplan version

 

    Args:

        build_ele: the building element.

        version:   the current Allplan version

 

    Returns:

        True/False if version is supported by this script

    """

 

    # Delete unused arguments

    del build_ele

    

    # Check version >= 2016.1

    versions = version.split('.')

    print(versions)

 

    try:

        return float(versions[0]) > 2016 or float(versions[0]) == 2016 and float(versions[1]) >= 1

 

    except (ValueError, IndexError):

        return False

 

def create_element(build_ele, doc):

    pass

등록된 댓글이 없습니다.



Copyrightⓡ1996~2025, sahoon.com All Rights Reserved.