canvas 개체는 캔버스 도면을 조작할때 사용할수 있습니다. 도면에서 제공하는 기능은 canvas개체를 이용해 수행 할 수 있습니다. 주요기능은 도면에 있는 그래픽 아이템 얻기, 타이머 실행, 애니메이션 실행, 캔버스 화면에 맞추기, 캔버스 최대화/최소화 등이 있습니다.

Methods


리턴 값

함수

설명


clearMark( shape )

캔버스에 해당 개체(shape)의 setMark를 해제합니다.


closeCanvas()

캔버스를 닫습니다.


connectValueChange( func, pointNames )

포인트값 변경시 변경된 값을 수신할 이벤트 핸들러를 등록합니다.


connectZoomChanged( )

캔버스 화면배율 변경시 화면 배율 변경 이벤트를 수신 합니다.

  PowerShape

createObject( objType, layerName )

그래픽 개체를 만들어 특정 레이어에 추가합니다

  str

fileName()

스크립트가 실행된 캔버스 도면의 파일경로를 얻어옵니다.


fitInScreen()

캔버스를 창 크기에 맞춥니다.

  list[str]

getAllObjectNames()

캔버스 내에 있는 모든 그래픽 개체의 이름을 얻어옵니다.

PowerShape

getObject( targetObj )

선택한 그래픽 개체(targetObj)를 얻어옵니다.

  list[str]

getObjectNamesInLayer( layer )

특정 레이어에 속한 그래픽 개체의 이름을 얻어옵니다.

  PowerShape

hoveredObject()

현재 마우스 위에 있는 그래픽 개체를 얻어옵니다.

boolean

isLayerVisible( layer )

layer의 보이기/안보이기 상태를 얻어옵니다.


maximize()

캔버스 창을 최대화합니다.


minimize()

캔버스 창을 최소화합니다.


moveAnimation( targetObj, xLength, yLength, msec, repeat )

선택한 그래픽 개체(targetObj)를 지정한 거리 및 방향으로 지정한 시간(msec)동안 이동합니다.


moveOnCurveAnimation( moveObj, targetObj, dir, msec, repeat )

움직일 그래픽 개체(moveObj)가 선택한 그래픽 개체(targetObj)의 지정 지점(dir)에서 지정 시간(msec)동안 이동합니다.


opacityAnimation( targetObj, start, end, msec, repeat, curve )

선택한 그래픽 개체(targetObj)의 투명도를 변경합니다.


replacePointName( texts )

해당 도면의 포인트명을 바꿉니다.


replacePointName2( objs, texts )

특정 그래픽 개체들를 지정해 포인트명을 바꿉니다.


rotateAnimation( targetObj, angle, x, y, duration, repeat )

선택한 그래픽 개체(targetObj)를 x, y 크기로 지정한 시간(msec)만큼 확대/축소합니다.


rotateAnimation2( targetObj, angle, x, y, duration, repeat )

선택한 그래픽 개체(targetObj)를 회전합니다.


saveScreen( loaction )

현재 화면을 캡쳐하여 지정된 폴더에 저장합니다.


scaleAnimation( targetObj, x, y, msec, repeat, ankor )

선택한 그래픽 개체(targetObj)를 지정한 각 만큼 회전합니다.


scrollAnimation( name, dir, msec )

선택한 그래픽 개체의 문자를 스크롤합니다.

  pyShape

selectedObject()

사용자가 선택한 그래픽 개체를 얻어옵니다.


setCurrentLogDate( name/nameList, year, month, day, hour )

그래픽 개체에 링크된 이력 날짜의 기준 시간을 설정합니다.


setInterval( functionName, msec )

함수를 특정 시간(msec) 간격으로 반복 실행합니다.


setLayerVisible( layer, visible )

레이어를 보이기/안보이기 설정합니다.


setMark( shape )

캔버스에 해당 개체(shape)를 표시합니다.


setZoomLevel( level )

캔버스의 zoomLevel을 설정합니다.


showTopLevel()

캔버스를 최상위로 표시합니다


singleShot( functionName, msec )

함수를 특정 시간(msec) 후에 한번 실행합니다.


startBlink( targetObj, msec )

선택한 그래픽개체(targetObj)의 깜빡임 효과를 줍니다.


stopBlink( targetObj )

선택한 개체(targetObj)의 startBlink를 중지합니다.


stopBlink2( name )

선택한 개체(name)의 startBlink를 중지합니다.


stopInterval( functionName )

setInterval로 실행한 함수를 중지합니다.


stopMoveAnimation( targetObj )

선택한 개체(targetObj)의 moveAnimation을 중지합니다.


stopMoveAnimation2( name )

선택한 개체(name)의 moveAnimation을 중지합니다.


stopOpacityAnimation( targetObj )

선택한 개체(targetObj)의 opacityAnimation을 중지합니다.


stopOpacityAnimation2( name )

선택한 개체(name)의 opacityAnimation을 중지합니다.


stopRotateAnimation( targetObj )

선택한 개체(targetObj)의 rotateAnimation을 중지합니다.


stopRotateAnimation2( name )

선택한 개체(name)의 rotateAnimation를 중지합니다.


stopScaleAnimation( targetObj )

선택한 개체(targetObj)의 scaleAnimation을 중지합니다.


stopScaleAnimation2( name )

선택한 개체(name)의 scaleAnimation을 중지합니다.


waitForClose()

캔버스가 닫힐 때까지 대기합니다.

  float

zoomLevel()

캔버스의 확대/축소 비율을 읽어옵니다.



 

 clearMark( shape:해제할 개체 )

 

 캔버스에서 shape 개체의 setMark를 해제합니다.


  • shape는 캔버스에서 그래픽 개체를 얻어와 입력합니다.


 예)

# 'LED2-OFF_1' 그래픽 개체를 얻어옵니다.

Ob = canvas.getObject('LED2-OFF_1');  


# 얻어온 그래픽 개체의 setMark를 해제합니다.

canvas.clearMark(Ob);  


 clearMark 동작 예입니다.

 




 

 closeCanvas()

 

 캔버스를 닫습니다.


 예)

canvas.closeCanvas();  # 캔버스를 닫습니다


 closeCanvas 동작 예입니다.

 



 

 connectValueChange ( func:함수, pointNames:포인트명 )

 

 포인트 값 변경시 변경된 값을 수신받을 이벤트 핸들러를 등록 합니다. 포인트 값이 변경된 경우 등록한 함수를 통해 포인트 이름과 포인트 값을 받을수 있습니다.


  • func 에는 실행될 핸들러 함수명을 입력합니다. 핸들러 함수의 원형은 다음과 같습니다.

              def handleChange(name: 변경된 포인트명, value: 변경된 포인트값)

  • pointNames 에는 포인트명을 리스트형태로 입력합니다.


 예)

 def handleChange(name, value):

    if name == 'COM.1 충전상태':

       batteryObj = canvas.getObject('GroupBattery_1')

    elif name == 'COM.2 충전상태':

       batteryObj = canvas.getObject('GroupBattery_2')


    chargeObj = batteryObj.getObject('GroupCharge')

    dischargeObj = batteryObj.getObject('RectDischarge')


    if value == 0:

       chargeObj.setProperty('Visible', 0)

       dischargeObj.setProperty('Visible', 1)

    else:

       chargeObj.setProperty('Visible', 1)

       dischargeObj.setProperty('Visible', 0)


lst = ['COM.1 충전상태', 'COM.2 충전상태']

canvas.connectValueChange(handleChange, lst)


 'COM.1 충전상태', 'COM.2 충전상태' 포인트값의 변경에 따라 그래픽 개체의 보이기/감추기 속성이 변경됩니다.

 

 


 

 connectZoomChanged ( )

 

 캔버스 화면배율 변경시 화면 배율 변경 이벤트를 수신 합니다. 수신 받을 핸들러의 이름과 형식은 아래와 같으며 함수 이름은 고정되어 있습니다. 이벤트 수신 함수의 형식은 다음과 같습니다.


def onZoomChanged ( canvasObject: 이벤트가 발생한 캔버스, zoom :변경된 화면 배율)


 예)

#화면 배율 변경시 수신받을 이벤트 핸들러

def onZooomChanged(canvasObject,zoom):

    print zoom


# Zoom 이벤트 핸들러를 활성화 합니다.

canvas.connectZoomChanged();  




 PowerShape getObject( targetObj:그래픽 개체 )

 

 그래픽 개체(targetObj)를 얻어옵니다.


  • targetObj 입력 방법은 다음과 같습니다.
    • 얻어올 그래픽 개체가 단일 개체인 경우 : '그래픽 개체명'을 targetObj에 입력합니다.
    • 얻어올 그래픽 개체가 그룹화된 개체인 경우 : '그룹명.그래픽 개체명'을 targetObj에 입력합니다.

                     예) 'Group_1.Arc_1'


  • getObject를 통해 얻어온 그래픽 개체는 canvas의 여러 함수들의 파라미터로 쓰이며 getProperty(), setProperty() 등의 함수 호출을 통해 그래픽 개체의 상태를 바꿀 수 있습니다.


getObject 통해 얻은 그래픽 개체의 자세한 활용법은 그래픽 오브젝트 - 속성 에서 설명합니다.

 

 예) 단일 그래픽 개체의 채우기 색을 변경할 경우


# 'BlueCircle' 그래픽 개체를 얻어옵니다.

obj = canvas.getObject('BlueCircle');  


# 얻어온 그래픽 개체의 채우기 색을 QColor(255, 0, 0) 색상으로 변경합니다.

obj.setProperty('BrushColor', QColor(255, 0, 0));  


 


 예) 그룹화된 그래픽 개체의 채우기 색을 변경할 경우


# '그룹'의 '사각형_0' 그래픽 개체를 얻어옵니다.

obj = canvas.getObject('그룹.사각형_0');  


# 얻어온 그래픽 개체의 채우기 색을 QColor(255, 0, 0) 색상으로 변경합니다.

obj.setProperty('BrushColor', QColor(255, 0, 0));  


 



 

 setInterval( exp:표현식, msec:실행 주기 )

 

 사용자가 설정한 식(exp)를 msec(1000=1초) 간격으로 실행합니다.


  • exp는 문자열로 입력합니다.
  • msec은 숫자로 입력합니다.


 예)

import datetime


week = ( '월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일' )

def setCurrentTime():

    currentTime = datetime.datetime.now()

    o = canvas.getObject('hour')

    o.setProperty('FaceText',currentTime.hour)


    o = canvas.getObject('ap')

    if ( currentTime.hour < 12 ):

        o.setProperty('FaceText','오전')

    else:

        o.setProperty('FaceText','오후')


    o = canvas.getObject('minute' )

    o.setProperty('FaceText','%02d' % currentTime.minute )


    o = canvas.getObject('date')

    str = '%d-%02d-%02d %s' %( currentTime.year , currentTime.month , currentTime.day,week[currentTime.weekday()] )

    o.setProperty('FaceText',str)


setCurrentTime()

# setCurrentTime 함수를 1초 간격으로 실행합니다.

canvas.setInterval('setCurrentTime()', 1000)  


 setInterval을 이용한 시간표시 결과입니다.

 


 결과)

 



 

 stopInterval( exp:표현식 )

 

 사용자가 설정한 식(exp)를 중지합니다.


  • exp는 문자열로 입력합니다.


 예) stopInterval을 이용하여 setInterval에 등록된 setCurrentTime()을 중지합니다.

# setCurrentTime 함수를 중지합니다.

canvas.stopInterval('setCurrentTime()');  


 결과) 화면상의 시계가 동작을 멈춥니다.

 



 

 singleShot( exp:표현식, msec:실행 주기 )

 

 사용자가 설정한 식(exp)를 설정시간(msec 1000=1초) 후에 실행합니다.


  • exp는 문자열로 입력합니다.
  • msec은 숫자로 입력합니다.


 예)

# SingleShow 함수를 1초 후에 실행합니다.

canvas.singleShot('SingleShow()', 1000 );  


 singleShot은 다음과 같이 동작합니다.


 



 

 setMark( shape:표시할 개체 )

 

 캔버스에서 shape 개체를 표시합니다.


  • shape는 캔버스에서 그래픽 개체를 얻어와 입력합니다.


 예)

# 'LED2-OFF_1' 그래픽 개체를 얻어옵니다.

Ob = canvas.getObject('LED2-OFF_1');  


# 얻어온 그래픽 개체를 표시합니다.

canvas.setMark(Ob);  


 setMark 동작 예입니다.

 




 

 moveAnimation( targetObj:그래픽 개체, xLength:이동할 x축 거리, yLength:이동할 y축 거리, msec:애니메이션 시간, repeat:반복 횟수 )

 

 그래픽 개체를 이동합니다.


  • targetObj는 xLength와 yLength 방향으로 msec동안 이동합니다.
  • targetObj는 이동할 그래픽 개체입니다.
  • xLength는 이동할 x축 거리를 의미합니다.
    • 양수인 경우 : 오른쪽으로 이동합니다.
    • 음수인 경우 : 왼쪽으로 이동합니다.
  • yLength는 이동할 y축 거리를 의미합니다.
    • 양수인 경우 : 아래쪽으로 이동합니다.
    • 음수인 경우: 위쪽으로 이동합니다.
  • msec은 이동 시간입니다.
  • repeat는 해당 그래픽 개체의 애니메이션 반복 횟수를 나타냅니다.
    • 1 입력 시 한번만 실행됩니다.
    • 0 입력 시 무한 반복 실행됩니다.


 예)

# 'Image' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Image');  


# 얻어온 그래픽 개체를 왼쪽으로 1670.79 픽셀, 위쪽으로 1629.82 픽셀로 2.5초 동안 1번 이동시킵니다.

canvas.moveAnimation(obj1, -1670.79, 1629.82, 2500, 1);  


 moveAnimation 동작 예입니다.

 


  • Image 개체를 왼쪽으로 1670.79 픽셀, 아래쪽으로 1629.82 픽셀으로 2.5초 동안 1번 이동시킵니다.
  • canvas.moveAnimation(obj1, -1670.79, 1629.82, 2500, 2); 와 같이 작성하면 2.5초동안 2번 이동합니다.



 

 stopMoveAnimation( targetObj:그래픽 개체 )

 

 그래픽개체(targetObj)의 moveAnimation을 중지합니다.


 예)

# 'Image' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Image');  


# 얻어온 그래픽 개체의 moveAnimation을 중지합니다.

canvas.stopMoveAnimation(obj1);  




 stopMoveAnimation2( name:그래픽 개체 이름 )

 

 그래픽개체(name)의 moveAnimation을 중지합니다.


 예)

# 'Image' 그래픽 개체의 moveAnimation을 중지합니다.

canvas.stopMoveAnimation2('Image');  



 

 rotateAnimation( targetObj:그래픽 개체, angle:회전각, x:화면 기준 x축, y:화면 기준 y축, duration:회전 시간, repeat:반복횟수 )

 

 그래픽 개체를 회전합니다.


  • targetObj는 x와 y를 기준으로 duration 동안 angle만큼 회전합니다.
  • targetObj는 회전할 그래픽 개체입니다.
  • angle은 회전각을 의미합니다.
  • x는 x축을 의미합니다.
    • 0인 경우 : 도면의 왼쪽 끝을 의미합니다.
    • 양수인 경우 : 오른쪽으로 기준 축이 이동합니다.
    • 음수인 경우 : 왼쪽으로 기준 축이 이동합니다.
  • y는 y축을 의미합니다.
    • 0인 경우 : 도면의 위쪽 끝을 의미합니다.
    • 양수인 경우 : 아래쪽으로 기준 축이 이동합니다.
    • 음수인 경우 : 위쪽으로 기준 축이 이동합니다.
  • duration은 회전 시간입니다.
  • repeat는 해당 그래픽 개체의 애니메이션 반복 횟수를 나타냅니다.
    • 1 입력 시 한번만 실행됩니다.
    • 0 입력 시 무한 반복 실행됩니다.


 예)

# 'Windmill' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Windmill');  


# 얻어온 그래픽 개체는 설정한 중심 축을 기준으로 1초동안 360도 회전하는 애니메이션을 무한 반복 실행합니다.

canvas.rotateAnimation(obj1, 360, 295, 508, 1000, 0);  


 rotateAnimation 동작 예입니다.

 



 

 rotateAnimation2( targetObj:그래픽 개체, angle:회전각, x:그래픽 개체 기준 x축, y:그래픽 개체 기준 y축, duration:회전 시간, repeat:반복횟수 )

 

 그래픽 개체를 회전합니다.


  • targetObj를 x와 y를 기준으로 duration 동안 angle만큼 회전합니다.
  • targetObj는 회전할 그래픽 개체입니다.
  • angle은 회전각을 의미합니다.
  • x는 x축을 의미합니다.
    • 0인 경우 : 그래픽 개체 중앙을 의미합니다.
    • 양수인 경우 : 오른쪽으로 기준 축이 이동합니다.
    • 음수인 경우 : 왼쪽으로 기준 축이 이동합니다.
  • y는 y축을 의미합니다.
    • 0인 경우 : 그래픽 개체 중앙을 의미합니다.
    • 양수인 경우 : 아래쪽으로 기준 축이 이동합니다.
    • 음수인 경우 : 위쪽으로 기준 축이 이동합니다.
  • duration은 회전 시간입니다.
  • repeat는 해당 그래픽 개체의 애니메이션 반복 횟수를 나타냅니다.
    • 1 입력 시 한번만 실행됩니다.
    • 0 입력 시 무한 반복 실행됩니다.


 예)

# 'Windmill' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Windmill');  


# 얻어온 그래픽 개체는 설정한 기준 축을 기준으로 1초동안 360도 회전하는 애니메이션을 무한 반복 실행합니다.

canvas.rotateAnimation2(obj1, 360, -0.2, 8.5, 1000, 0);  


 rotateAnimation2 동작 예입니다.

 



 

 stopRotateAnimation( targetObj:그래픽 개체 )

 

 그래픽개체(targetObj)의 rotateAnimation을 중지합니다.


 예)

# 'Windmill' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Windmill');  


# 얻어온 그래픽 개체의 rotaeAnimation을 중지합니다.

canvas.stopRotateAnimation(obj1);  



 

 stopRotateAnimation2( name:그래픽 개체 이름 )

 

 그래픽개체(name)의 rotateAnimation를 중지합니다.


 예)

# 'Windmill' 그래픽 개체의 rotaeAnimation을 중지합니다.

canvas.stopRotateAnimation2('Windmill');  



 

 scaleAnimation( targetObj:그래픽 개체, x:x축 scale 크기, y:y축 scale 크기, msec:scale 시간, repeat:반복횟수, ankor:중심축 )

 

 그래픽 개체를 확대/축소합니다.


  • targetObj를 자신의 ankor를 중심으로 x, y 크기로 msec동안 확대/축소합니다.
  • targetObj는 확대 또는 축소할 그래픽 개체를 의미합니다.
  • angle은 회전각을 의미합니다.
  • x는 x축 기준 확대/축소 비율이며 기준점은 100입니다.
    • x가 200인 경우 : 기준 ankor에서 가로로 2배 확대합니다.
  • y는 y축 기준 확대/축소 비율이며 기준점은 100입니다.
    • y가 50인 경우 : 기준 ankor에서 세로로 1/2배 축소합니다.
  • msec은 확대/축소하는 시간입니다.
  • repeat는 해당 그래픽 개체의 애니메이션 반복 횟수를 나타냅니다.
    • 1 입력 시 한번만 실행됩니다.
    • 0 입력 시 무한 반복 실행됩니다.
  • ankor는 확대/축소 중심점이며 총 9가지 방향을 기준점으로 정할 수 있습니다.
  • ankor 9가지 방향
    • app.Center : 중앙
    • app.Top : 상단 끝
    • app.Bottom : 하단 끝
    • app.Left : 좌측 끝
    • app.Right : 우측 끝
    • app.TopLeft : 좌상단
    • app.TopRight : 우상단
    • app.BottomLeft : 좌하단
    • app.BottomRight : 우하단


 예)

# 'Image' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Image');  


# 얻어온 그래픽 개체를 중앙을 기준으로 1초동안 가로로 3배, 세로로 3배 확대합니다.

canvas.scaleAnimation(obj1, 300,  300, 1000, 1, app.Center );  


 scaleAnimation 동작 예입니다.

 



 

 stopScaleAnimation( targetObj:그래픽 개체 )

 

 그래픽개체(targetObj)의 scaleAnimation을 중지합니다.


 예)

# 'Image' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Image');  


# 얻어온 그래픽 개체의 scaleAnimation을 중지합니다.

canvas.stopScaleAnimation(obj1);  



 

 stopScaleAnimation2( name:그래픽 개체 이름 )

 

 그래픽개체(name)의 scaleAnimation을 중지합니다.


 예)

# 'Image' 그래픽 개체의 scaleAnimation을 중지합니다.

canvas.stopScaleAnimation2('Image');  



 

 opacityAnimation( targetObj:그래픽 개체, start:시작 투명도, end:끝 투명도, msec:투명도 변경 시간, repeat:반복횟수, curve:투명화 방법 )

 

 그래픽 개체의 투명도를 변경합니다.


  • targetObj를 start 투명도에서 end 투명도로 변경합니다.
  • targetObj는 투명도를 변경할 그래픽 개체를 의미합니다.
  • start, end의 설정은 0~100까지이며 0은 투명상태로 화면에 안보입니다.
    • start를 0, end를 100으로 설정할 경우 : 안보이는 상태에서 점점 화면에 보입니다.
    • start를 100, end를 0으로 설정할 경우 : 보이는 상태에서 점점 화면에 안보입니다.
  • msec은 투명도가 변경되는 시간입니다.
  • repeat는 해당 그래픽 개체의 애니메이션 반복 횟수를 나타냅니다.
    • 1 입력 시 한번만 실행됩니다.
    • 0 입력 시 무한 반복 실행됩니다.
  • curve는 투명화 방법으로 0에서 5까지 총 6가지 종류가 있습니다.
  • curve는 첨부에서 설명합니다.


 예)

# 'Image' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Image');  


# 얻어온 그래픽 개체의 투명도를 20에서 100까지 변경하는 애니메이션을 10초동안 1회 실행합니다.

canvas.opacityAnimation(obj1, 20, 100, 10000, 1, 0);  


 opacityAnimation 동작 예입니다.

 




 stopOpacityAnimation( targetObj:그래픽 개체 )

 

 그래픽개체(targetObj)의 opacityAnimation을 중지합니다.


 예)

# 'Image' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('Image');  


# 얻어온 그래픽 개체의 opacityAnimation을 중지합니다.

canvas.stopOpacityAnimation(obj1);  



 

 stopOpacityAnimation2( name:그래픽 개체 이름  )

 

 그래픽개체(name)의 opacityAnimation을 중지합니다.


 예)

# 'Image' 그래픽 개체의 opacityAnimation을 중지합니다.

canvas.stopOpacityAnimation2('Image');  



 

 startBlink( targetObj:그래픽 개체, msec:깜빡임 간격 )

 

 그래픽 개체(targetObj)를 지정한 간격(msec)으로 깜빡입니다.


 예)

# 'BlueCircle' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('BlueCircle');  


# 얻어온 그래픽 개체를 1초마다 깜빡입니다.

canvas.startBlink(obj1, 1000);  


 startBlink 동작 예입니다.

 




 stopBlink( targetObj:그래픽 개체 )

 

 그래픽 개체(targetObj)의 깜빡임을 중지합니다.


 예)

# 'BlueCircle' 그래픽 개체를 얻어옵니다.

obj1 = canvas.getObject('BlueCircle');  


# 얻어온 그래픽 개체의 깜빡임을 중지합니다.

canvas.stopBlink(obj1);  




 stopBlink2( name:그래픽 개체 이름 )

 

 그래픽개체(name)의 깜빡임을 중지합니다.


 예)

# 'BlueCircle' 그래픽 개체의 깜빡임을 중지합니다.

canvas.stopBlink2('BlueCircle');  



 

 replacePointName( texts:문자열 또는 문자열 리스트 )


 사용자가 데이터 링크 시 임의로 설정한 포인트 명을 변경할 수 있습니다.


  • 그래픽 개체에 데이터 링크 시 설정 가능한 포인트 명은 두가지입니다.
    • 실제 포인트 명
    • 사용자 임의의 포인트 명
  • 사용자 임의로 포인트 명을 설정한 경우 replacePointName 함수를 사용하여 실제 포인트 명으로 변경할 수 있습니다.
  • texts는 문자열 또는 문자열 리스트로 입력할 수 있습니다.
    • 입력 형식은 콜론( : )을 기준으로 앞에는 임의로 설정한 포인트 명, 뒤에는 실제 포인트 명을 입력합니다.
    • 변경할 포인트 명이 1개인 경우 : 문자열로 입력

                        예) '임의로 설정한 포인트 명:스테이션 명.포인트 명'

    • 변경할 포인트 명이 2개 이상인 경우 : 문자열 리스트로 입력

                        예) ['임의로 설정한 포인트 명1:스테이션 명1.포인트 명1', '임의로 설정한 포인트 명2:스테이션 명2.포인트 명2']


 예) 변경할 포인트 명이 1개인 경우

  • 사용자 임의로 설정한 포인트 명 : A1
  • 실제 포인트 명 : 충전기 1.충전 상태


# 사용자가 임의로 설정한 포인트 명인 'A1'를 실제 포인트 명인 '충전기 1.충전 상태'로 변경됩니다.

canvas.replacePointName( 'A1:충전기 1.충전 상태' );  

                                                                                                                                                               

 

                                                   [ 사용자가 임의로 설정한 포인트 명으로 데이터 링크 시 ]


 

                                                               [ 실제 포인트 명으로 데이터 링크 시]



 예) 변경할 포인트 명이 2개 이상인 경우

  • 사용자 임의로 설정한 포인트 명 : A1, A2
  • 실제 포인트 명 : 충전기 1.충전 상태, 충전기 1.차량 SOC


# 사용자가 임의로 설정한 포인트 명인 'A1'과 'A2'를 각각 실제 포인트 명인 '충전기 1.충전 상태', '충전기 1.차량 SOC'로 변경됩니다.

canvas.replacePointName( ['A1:충전기 1.충전 상태', 'A2:충전기 1.차량 SOC'] );  

                                                                                                                                                                   

 

                                                    [ 사용자가 임의로 설정한 포인트 명으로 데이터 링크 시 ]


 

                                                               [ 실제 포인트 명으로 데이터 링크 시 ]




 

 replacePointName2( objs:그래픽 개체 명, texts:문자열 또는 문자열 리스트 )

 

 사용자가 특정 그래픽 개체에 데이터 링크 시 임의로 설정한 포인트 명을 변경할 수 있습니다.


  • 그래픽 개체에 데이터 링크 시 설정 가능한 포인트 명은 두가지입니다.
    • 실제 포인트 명
    • 사용자 임의의 포인트 명
  • 사용자 임의로 포인트 명을 설정한 경우 replacePointName2 함수를 사용하여 실제 포인트 명으로 변경할 수 있습니다.
  • 그래픽 개체명은 문자열 또는 문자열 리스트로 입력할 수 있습니다.
    • 선택할 그래픽 개체가 1개인 경우 : 문자열로 입력

                        예) '그래픽 개체 명'

    • 선택할 그래픽 개체가 2개 이상인 경우 : 문자열 리스트로 입력

                        예) ['그래픽 개체 명1', '그래픽 개체 명2']

  • texts는 문자열 또는 문자열 리스트로 입력할 수 있습니다.
    • 입력 형식은 콜론( : )을 기준으로 앞에는 임의로 설정한 포인트 명, 뒤에는 실제 포인트 명을 입력합니다.
    • 변경할 포인트 명이 1개인 경우 : 문자열로 입력

                        예) '임의로 설정한 포인트 명:스테이션 명.포인트 명'

    • 변경할 포인트 명이 2개 이상인 경우 : 문자열 리스트로 입력

                        예) ['임의로 설정한 포인트 명1:스테이션 명1.포인트 명1', '임의로 설정한 포인트 명2:스테이션 명2.포인트 명2']


 예) 특정 그래픽 개체 1개에 변경할 포인트 명이 1개인 경우

  • 그래픽 개체 명 : 빨간 온도계
  • 사용자 임의로 설정한 포인트 명 : 슬라이더Test
  • 실제 포인트 명 : 게이지.슬라이더게이지


# '빨간 온도계' 그래픽 개체에 사용자 임의로 설정한 포인트 명인 '슬라이더Test'를 실제 포인트 명인 '게이지.슬라이더게이지'로 변경합니다.

canvas.replacePointName2( '빨간 온도계', '슬라이더Test:게이지.슬라이더게이지' );  


 


 예) 특정 그래픽 개체 2개에 변경할 포인트 명이 2개인 경우

  • 그래픽 개체 명 : 빨간 온도계, 둥근 LED 바
  • 사용자 임의로 설정한 포인트 명 : 슬라이더Test, LED테스트
  • 실제 포인트 명 : 게이지.슬라이더게이지, 게이지.LED게이지


# '빨간 온도계', '둥근 LED 바' 그래픽 개체에 사용자 임의로 설정한 포인트 명인 '슬라이더Test'와 'LED테스트'를 각각 실제 포인트 명인 '게이지.슬라이더게이지', '게이지.LED게이지'로 변경합니다.

canvas.replacePointName2( ['빨간 온도계', '둥근 LED 바'], ['슬라이더Test:게이지.슬라이더게이지', 'LED테스트:게이지.LED게이지'] );

                                 



 

 setLayerVisible( layer:레이어 이름, visible:보이기 또는 안보이기)

 

 레이어의 보이기/안보이기를 설정합니다.


  • layer는 레이어의 이름을 입력합니다.
  • visible는 보이기/ 안보이기 설정 값으로 숫자를 입력합니다.
    • 1 : 보이기
    • 0 : 안보이기 


 예)

# '레이어 1'를 안보임 상태로 설정합니다.

canvas.setLayerVisible('레이어 1', 0);  


# '레이어 2'를 보임 상태로 설정합니다.

canvas.setLayerVisible('레이어 2', 1);  


 

  • 레이어 1과 레이어 2는 하나의 도면입니다.
  • 하나의 도면에서 여러 개의 레이어를 설정할 수 있습니다.


 


 

# '레이어 1'를 보임 상태로 설정합니다.

canvas.setLayerVisible('레이어 1', 1);  


# '레이어 2'를 안보임 상태로 설정합니다.

canvas.setLayerVisible('레이어 2', 0);  


 ②

# '레이어 1'를 안보임 상태로 설정합니다.

canvas.setLayerVisible('레이어 1', 0);  


# '레이어 2'를 보임 상태로 설정합니다.

canvas.setLayerVisible('레이어 2', 1);  



 

 boolean isLayerVisible( layer:레이어 이름 )

 

 레이어의 보이기/안보이기 상태를 얻어옵니다.


  • 레이어가 보임 상태면 True(1)를 반환합니다.
  • 레이어가 안보임 상태면 False(0)를 반환합니다.


 예)

# '레이어 1'의 보이기/안보이기 상태를 얻어옵니다.

Layer1 = canvas.isLayerVisible('레이어 1');  


# '레이어 2'의 보이기/안보이기 상태를 얻어옵니다.

Layer2 = canvas.isLayerVisible('레이어 2');  


 isLayerVisible 동작 예입니다.

 




 

 str fileName()

 

 스크립트가 실행된 도면(canvas)의 경로를 읽어옵니다. 반환값은 문자열입니다.


 예)

# 도면의 경로를 읽어옵니다.

canvas_File_Name = canvas.fileName();  


 fileName을 통해 얻은 경로를 messageBox를 이용한 출력 예입니다.

 




 float zoomLevel()

 

 캔버스의 확대/축소 비율을 읽어옵니다. 결과값 줌 배율은 숫자로 반환됩니다.


  • 기본 배율은 1.0 입니다.


 예)

# 캔버스의 확대/축소 비율을 읽어옵니다.

Zoom_Value= canvas.zoomLevel();  


 zoomLevel 출력 예입니다.

 



 

 setZoomLevel( level:줌 배율 )

 

 캔버스의 확대/축소 줌배율을 설정합니다. level(줌 배율)은 숫자로 입력합니다.


  • 기본 배율은 100 입니다.


 예)

# 캔버스의 확대/축소 줌배율을 100으로 설정합니다.

canvas.setZoomLevel(100);  


 버튼에 스크립트 setZoomLevel 기능 사용 예입니다.

 


 



 

 maximize()

 

 캔버스 창을 최대화합니다.


 예)

# 캔버스 창을 최대화합니다.

canvas.maximize();  


 maximize 기능 사용 예입니다.

 



 

 minimize()

 

 캔버스 창을 최소화합니다.


 예)

# 캔버스 창을 최소화합니다.

canvas.minimize();  


 minimize 기능 사용 예입니다.

 



 

 fitInScreen()

 

 캔버스창을 도면 전체 화면이 보일 수 있도록 PowerScene 창 크기에 맞춥니다.


 예)

# 캔버스 창을 파워씬 창 크기에 맞춥니다.

canvas.fitInScreen();  


 fitInScreen 기능 사용 예입니다.

 



 

 pyShape selectedObject()

 

 사용자가 선택한 그래픽 개체를 얻어옵니다.


 예)

# 선택한 그래픽 개체를 얻어옵니다.

obj = canvas.selectedObject();  


 사용자가 선택한 개체의 Text 정보 출력 화면입니다.

 



 

 saveScreen( location:스크린샷을 저장할 폴더 경로 )


 현재 캔버스 화면을 캡쳐하여 지정된 경로에 저장합니다.


  • 파일은 지정한 경로에 ‘캔버스명_현재 시간-현재 분-현재 초’의 이름으로 저장됩니다.
  • location에는 폴더 경로까지만 입력하면 됩니다.


 예)

# c:\ 경로에 현재 캔버스 화면을 캡쳐하여 저장합니다.

canvas.saveScreen('c:\\');  


 'c:\'경로에 캔버스 현재 화면을 저장한 결과입니다.

 


 저장된 이미지를 불러온 결과입니다.

 




 

 list[str] getAllObjectNames()

 

 캔버스 내에 있는 모든 그래픽 개체 명을 취득합니다.


 예)

# 캔버스 내의 모든 그래픽 개체 명을 리스트로 가져옵니다.

objList = canvas.getAllObjectNames();  


 getAllObjectNames 호출 결과입니다.

 



 

 list[str] getObjectNamesInLayer( layer:그래픽 개체를 불러올 layer명 )

 

 특정 layer에 속한 모든 그래픽 개체 명을 취득합니다.


 예)

# '사용량 분석'에 속한 모든 그래픽 개체 명을 리스트로 가져옵니다.

objList = canvas.getObjectNamesInLayer('사용량 분석');  


 getObjectNamesInLayer(‘사용량 분석’) 호출 결과입니다.

 

 


 

 showTopLevel()

 

 캔버스를 최상위로 표시합니다. 캔버스가 여러개 겹쳐져 있을 때 showTopLevel 기능을 이용하면 다른 캔버스 위에 표시합니다.


 예)

# 캔버스를 최상위로 표시합니다.

canvas.showTopLevel()  



 

 PowerShape hoveredObject()

 

 현재 마우스가 올려진 개체를 읽어옵니다.


 예)

# 현재 마우스가 올려진 개체를 읽어옵니다.

obj =  canvas.hoveredObject()  



 

 PowerShape createObject( objectType:생성할 도형 타입 , layerName: 생성된 도형이 추가될 레이어 )

 

 그래픽 개체를 새로 만들어 입력한 레이어에 추가 합니다.


  • objectType은 생성할 도형 타입이며 도형 별 이름은 아래 표와 같습니다.
  • layerName은 생성된 도형이 추가될 레이어 명입니다.
    • 레이어 명을 지정하지 않을 경우 현재 활성화된 레이어에 추가됩니다.

도형 종류

인자

사각형

rectShape

lineShape

ellipseShape

둥근 사각형

roundrectShape

연결선

polylineShape

다각형

polygonShape

텍스트

textShape

이미지

pixmapShape

파이

pieShape

아크

arcShape

GIF 이미지

gifShape

그래픽 버튼

graphicButtonShape

패스

pathShape

콤보 박스

ComboBoxWidget

체크 박스

CheckBoxWidget

리스트 박스

listBoxWidget

누름 버튼

PushButtonWidget

라인 편집 위젯

LineEditWidget

SVG 이미지

svgShape

텍스트 테이블

textTable


 예)

# 레이어 1에 사각형을 추가합니다.

r = canvas.createObject('rectShape', '레이어 1')  

# 현재 활성화된 레이어에 원을 추가합니다.

e = canvas.createObject('ellipseShape')  



 

 moveOnCurveAnimation( moveObj:움직일 그래픽 개체, targetObj:그래픽 개체, dir:지점, msec:시간, repeat:반복 횟수 )

 

 moveOnCurveAnimation은 moveObj가 targetObj를 따라 이동하는 애니메이션입니다.


  • moveObj는 움직일 그래픽 개체입니다.
  • moveObj는 targetObj 위에서 움직입니다.
  • dir은 지점을 나타내며 0 입력 시 moveObj가 targetObj의 시작 지점에서 끝 지점으로 이동하며 1 입력 시 targetObj의 끝 지점에서 시작 지점으로 이동합니다.
    • 시작 지점   :   0
    • 끝 지점      :   1
  • msec는 시간을 의미하며 1초는 1000msec입니다.
  • repeat는 반복 횟수를 의미하며 default 값은 0입니다. repeat 값이 0일 때는 무한대로 반복합니다.


 아래는 arrow 개체가 Line_1개체의 시작시점에서 끝지점으로 3초동안 움직이는 예시입니다.


 예)

# 'arrow' 그래픽 개체는 'Line_1' 그래픽 개체의 시작 지점에서 끝 지점으로 3초동안 이동하며 무한 반복 실행됩니다.

canvas.moveOnCurveAnimation('arrow', 'Line_1', 0, 3000)  

 

 



 

 waitForClose ()

 

 캔버스 표시모드가 '윈도우 창 띄우기', '팝업' 인 캔버스가 닫힐 때까지 대기합니다.


 아래는 추가버튼을 눌러 띄운 사용자 팝업에서 사용자를 추가한 후 사용자 목록을 갱신하는 예시입니다.


 예)

# 추가버튼 마우스 누름 스크립트

# 사용자 추가 팝업을 띄웁니다.

userAddPopup = canvasManager.open(u'사용자_팝업.pws')  

# 사용자 추가 팝업이 종료될때까지 대기합니다.

userAddPopup.waitForClose()  

# 사용자 목록 텍스트테이블을 갱신합니다.

updateUserList(canvas.getObject('TextTable_1'))  


 추가 버튼을 눌러 사용자 추가 팝업을 띄우면 waitForClose() 에서 팝업 종료까지 대기합니다.

 


 사용자 정보 입력 후 확인을 눌러 팝업이 닫히면 다음 스크립트인 updateUserList() 가 실행됩니다.

 




 scrollAnimation( name:그래픽 개체 이름, dir:방향, msec:애니메이션 시간 )


 문자 그래픽 개체의 문자를 스크롤합니다. (문자 그래픽 개체에만 동작합니다.)


  • name : 그래픽 개체 이름을 입력합니다.
  • dir : 스크롤 방향을 입력합니다.
    • 가로 방향 : app.Horizontal
    • 세로 방향 : app.Vertical
  • msec : 시간을 의미하며 1초는 1000msec입니다.


 예)

canvas.scrollAnimation('Text_1', app.Horizontal, 50000)


 문자 그래픽 개체의 문자가 오른쪽에서 왼쪽으로 스크롤됩니다.

 

 



 setCurrentLogDate( name/nameList:그래픽 개체 이름, year:년, month:월, day:일, hour:시간 )


 그래픽 개체에 이력 데이터 표시가 링크되어 있는 경우 사용하실 수 있으며 그래픽 개체에 링크된 이력 날짜의 기준 시간을 설정합니다.


  • name : 그래픽 개체 이름을 입력합니다.
  • nameList : 그래픽 개체 이름을 리스트 형식으로 입력합니다.
  • year : 이력 데이터의 년을 입력합니다.
  • month : 이력 데이터의 월을 입력합니다.
  • day : 이력 데이터의 일을 입력합니다.
  • hour : 이력 데이터의 시간을 입력합니다.


 예) 그래픽 개체의 이력 날짜 기준 시간을 2022년 3월 5일 0시로 설정합니다.

# 'd_powerkw' 그래픽 개체에 이력 날짜의 기준 시간을 2022년 3월 5일 0시로 설정합니다.

canvas.setCurrentLogDate('d_powerkw', 2022, 3, 5, 0)


# 리스트에 추가된 그래픽 개체에 이력 날짜의 기준 시간을 2022년 3월 5일 0시로 설정합니다.

nameList = ['d_powerkw','d_airkw','d_ahukw','d_icekw','d_lightkw','d_etckw','d_powerkwh','d_airkwh','d_ahukwh','d_icekwh','d_lightkwh','d_etckwh']

canvas.setCurrentLogDate(nameList, 2022, 3, 5, 0)


 그래픽 개체에 2022년 3월 5일 0시부터 2022년 3월 6일 0시까지의 데이터가 합산되어 표시됩니다.