You are here

scale 에 대한 문제요

제가 요즘 tcl/tk 를 좀 배우는데요.
문제점이 하나 있는데....

못 풀겠네요 ㅡ.ㅡ

data 를 읽어서 x y coordinate 를 갖고 line 을 그려주는 program
인데요

package require Tk

proc build_GUI {} {
   
    set c [canvas .c  -width 600 -height 500
              -yscrollcommand [list .yscroll set]
              -xscrollcommand [list .xscroll set] ]
                 
    scrollbar .yscroll -command [list .c yview] -orient vertical
    scrollbar .xscroll -command [list .c xview] -orient horizontal  
    grid .c .yscroll -sticky ns
    grid .xscroll    -sticky ew
    grid configure .c -sticky news
   
    grid columnconfigure . 0 -weight 1
    grid rowconfigure . 0 -weight 1
    .c xview

#  Add a couple of zooming buttons

    button .zoomin  -text "Zoom In"  -command "zoom $c 1.8"
    button .zoomout -text "Zoom Out" -command "zoom $c 0.8"
    grid .zoomin .zoomout
}

proc plot {pointlist} {
    eval .c create line $pointlist -fill black
    .c configure -scrollregion [.c bbox all]
   
}

set lastpoint [list]

proc PD {args} {
  global lastpoint
 # PenDown
  set points [split [join $args] ,]
 # Line plotting
  puts "Plot: $points"
  plot [concat $lastpoint $points]
  set lastpoint [lrange $points end-1 end]
}

proc PU {args} {
  global lastpoint
 # PenUp
  set points [split [join $args] ,]
  set lastpoint [lrange $points end-1 end]
}

proc dummy_unknown {args} {
   # unkown prox

  # unkown tags
   return
}

build_GUI
# open file
set datei "plot.txt"
set fd [open $datei]
set data [read $fd]
close $fd

# interpreter

set i [interp create -safe ]
$i eval {namespace delete ::}
interp alias $i unknown {} dummy_unknown
interp alias $i PD {} PD
interp alias $i PU {} PU

# Plotdata

set data [string map {  n "" ; n  } $data]

# exec

interp eval $i $data

zoom process 는 뺐습니다.
요기서 문제점이.

그려지는 파일이 다 거꿀로 나오네요!

어떻게 하면 그림을 똑바로 그려지게 하나요?

그리고 전체적으로 plot file 이 너무 크면 (한 16000줄 정도요)
프로그램이 엄청 느린데.
그건 어떻게 해결해야되나요?

plotting file 은 대략 이런식으로 생겼습니다:

 IN;PW.01;SP1;
;PU     0,     0
,  -160,  -400
,   240,     0
;PD 11280,     0
, 11280,  7200
,   240,  7200
,   240,     0
;PU   240,  6400
;PD 11280,  6400
;PU  1840,  6400
;PD  1840,  7200
;PU  9280,  6400
;PD  9280,  7200
;PU   640,  6519
,   640,  6519
;PD   640,  6906
;PU   640,  6905
;PD   640,  6909
,   640,  6913
,   640,  6917
,   640,  6921
,   640,  6924
,   641,  6928
,   641,  6932
,   642,  6936
,   643,  6940
,   644,  6944
,   645,  6947
,   646,  6951
,   647,  6955

도와주세요 ㅡ.ㅡㅡㅡㅡ