globalreg_old.tcl
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:8k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. # old global reg ui
  2. proc globalRegistrationDialog {} {
  3.     if {[window_Activate .globalReg]} { return }
  4.     plv_globalreg init_import
  5.     # create UI window
  6.     set gr [toplevel .globalReg]
  7.     wm title $gr "Global registration"
  8.     window_Register $gr
  9.     # TEMPORARY
  10.     button $gr.new -text "Switch to new UI!" 
  11. -command "destroy $gr; New_globalRegistrationDialog"
  12.     pack $gr.new -side top -fill x
  13.     frame $gr.file -relief groove -border 2
  14.     label $gr.file.l -text "File options" -anchor w
  15.     frame $gr.file.b
  16.     button $gr.file.b.force_reload -text "Reload" 
  17. -command "plv_globalreg re_import"
  18.     button $gr.file.b.delete -text "Delete..." 
  19. -command globalRegDeleteDialog
  20.     packchildren $gr.file.b -side left -fill x -expand true
  21.     packchildren $gr.file -side top -fill x -expand true
  22.     frame $gr.opts -relief groove -border 2
  23.     label $gr.opts.l -text "Render options" -anchor w
  24.     frame $gr.opts.b
  25.     button $gr.opts.b.showpartners -text "Show only partners" 
  26. -command {globalreg_SelectPairsFor $theMesh}
  27.     button $gr.opts.b.showgroup -text "Show only group" 
  28. -command {globalreg_SelectPairsFor $theMesh transitive}
  29.     packchildren $gr.opts.b -side left -fill x -expand true
  30.     frame $gr.opts.c
  31.     label $gr.opts.c.colorL -text "Color:"
  32.     tk_optionMenu $gr.opts.c.color 
  33. theColorMode gray false registration
  34.     packchildren $gr.opts.c -side left
  35.     packchildren $gr.opts -side top -fill x -expand true
  36.     frame $gr.show -relief groove -border 2
  37.     label $gr.show.l -text "Dump registered pairs" -anchor w
  38.     frame $gr.show.pairwise
  39.     button $gr.show.pairwise.point_point 
  40. -text "Pairwise (point-point)" 
  41. -command { 
  42.     badAlignDialog [plv_globalreg dumpallpairs 0 [.globalReg.show.thresh.entry get]]
  43. }
  44.     button $gr.show.pairwise.point_plane 
  45. -text "Pairwise (point-plane)" 
  46. -command { 
  47.     badAlignDialog [plv_globalreg dumpallpairs 1 [.globalReg.show.thresh.entry get]]
  48. }
  49.     packchildren $gr.show.pairwise -side left -fill x -expand true
  50.     frame $gr.show.dump
  51.     button $gr.show.dump.globalreg -text "Globalreg Error" 
  52. -command { 
  53.     badAlignDialog [plv_globalreg dumpallpairs 2 [.globalReg.show.thresh.entry get]]
  54. }
  55.     button $gr.show.dump.partners -text "Partners" 
  56. -command {dumpRegistrationPartners $theMesh}
  57.     packchildren $gr.show.dump -side left -fill x -expand true
  58. #     frame $gr.show.select
  59. #     button $gr.show.select.gr -text "Worst global to ICP" 
  60. #  -command { puts "Howdy" }
  61. #     button $gr.show.select.pw -text "Worst pairwise to ICP" 
  62. #  -command { 
  63. #      puts "Doody"
  64. #      ICPdialog
  65. #  }
  66. #     packchildren $gr.show.select -side left -fill x -expand true
  67.     frame $gr.show.thresh
  68.     label $gr.show.thresh.l -text "Show offenders threshold (mm):"
  69.     entry  $gr.show.thresh.entry 
  70.   -relief sunken -width 6
  71.     $gr.show.thresh.entry insert end 5
  72.     packchildren $gr.show.thresh -side left
  73.     frame $gr.show.npairs
  74.     label $gr.show.npairs.l -text "Pointpair counts"
  75.     button $gr.show.npairs.curr -text "Current" 
  76. -command {plv_globalreg point_pair_count $theMesh *}
  77.     button $gr.show.npairs.icp  -text "ICP dlg" 
  78. -command {plv_globalreg point_pair_count 
  79.       [globalset regICPFrom] [globalset regICPTo]}
  80.     packchildren $gr.show.npairs -side left -fill x -expand true
  81.     set p [frame $gr.show.part]
  82.     button $p.list -text "List" -command "listFewPartners $p.val"
  83.     label $p.l1 -text "meshes with fewer than"
  84.     entry $p.val -width 3
  85.     $p.val insert end 3
  86.     label $p.l2 -text "partners"
  87.     packchildren $p -side left
  88.     button $gr.show.groups -text "List connected subgroups" 
  89. -command globalreg_listGroupStatus
  90.     packchildren $gr.show -side top -fill x -expand true
  91.     frame $gr.auto -relief groove -border 2
  92.     set p [frame $gr.auto.choices]
  93.     label $p.lf -text "Auto add pairs: from" -anchor w
  94.     tk_optionMenu $gr.auto.choices.from autoFrom visible current
  95.     label $p.lt -text "to" -anchor w
  96.     tk_optionMenu $p.to autoTo visible all
  97.     packchildren $p -side left -fill x -expand 1
  98.     set f [frame $gr.auto.errorThresh]
  99.     label $f.l -text "Error threshold (mm):"
  100.     entry  $f.entry -relief sunken -width 6
  101.     $f.entry insert end 5
  102.     packchildren $f -side left -pady 2
  103.     set f [frame $gr.auto.nPairs]
  104.     label $f.l -text "Target number of pairs to calculate:"
  105.     entry $f.entry -relief sunken -width 6
  106.     $f.entry insert end 200
  107.     packchildren $f -side left
  108.     checkbutton $gr.auto.preserve 
  109. -text "Preserve existing mesh pairs (don't recalculate)" 
  110. -variable preserveExistingInAutoAlign -anchor w
  111.     
  112.     checkbutton $gr.auto.normspace 
  113. -text "Normal-space sampling" 
  114. -variable normSpaceSample -anchor w
  115.     frame $gr.auto.b
  116.     button $gr.auto.b.go 
  117. -text "Go" 
  118. -command {
  119.     scz_auto_register $autoFrom $autoTo $theMesh 
  120. [.globalReg.auto.errorThresh.entry get] 
  121. [.globalReg.auto.nPairs.entry get] 
  122. $preserveExistingInAutoAlign 
  123.                 $normSpaceSample
  124. }
  125.     
  126.     packchildren $gr.auto.b -side top -anchor c
  127.     packchildren $gr.auto -side top -anchor w -fill x
  128.     frame $gr.reg -relief groove -border 2
  129.     label $gr.reg.l -text "Register:" -anchor w
  130.     frame $gr.reg.b
  131.     button $gr.reg.b.register -text "All<->All" 
  132. -command {doGlobalRegister}
  133.     button $gr.reg.b.register1 -text "Selected->all" 
  134. -command {doGlobalRegister $theMesh}
  135.     button $gr.reg.b.register12 -text "ICP 1->2" 
  136. -command {if {[winfo exists .regICP]} {
  137.     if {[_reg_check2meshes $regICPFrom $regICPTo]} {
  138. doGlobalRegister $regICPFrom $regICPTo
  139.     }
  140. } else {
  141.     tk_messageBox -title "scanalyze" -icon error 
  142. -parent .globalReg 
  143. -message "ICP dialog must be visible."
  144. }}
  145.     packchildren $gr.reg.b -side left -fill x -expand 1
  146.     frame $gr.reg.convTol
  147.     label $gr.reg.convTol.l -text "Convergence Tolerance:"
  148.     entry  $gr.reg.convTol.entry -relief sunken -width 6
  149.     $gr.reg.convTol.entry insert end .01
  150.     packchildren $gr.reg.convTol -side left -pady 2
  151.     packchildren $gr.reg -side top -fill x
  152.     packchildren $gr -side top -fill x -expand true 
  153. -pady 3 -padx 3
  154. }
  155. # obsolete w/above
  156. proc doGlobalRegister {args} {
  157.     eval plv_globalreg register [.globalReg.reg.convTol.entry get] $args
  158.     redraw 1
  159.     update idletasks
  160. }
  161. proc dumpRegistrationPartners {mesh} {
  162.     set partner [plv_globalreg listpairsfor $mesh]
  163.     set trans [plv_globalreg listpairsfor $mesh transitive]
  164.     puts "$mesh is registered to:"
  165.     puts "directly:     $partner"
  166.     puts "transitively: $trans"
  167. }
  168. proc listFewPartners {widget} {
  169.     set min [$widget get]
  170.     foreach mesh [lsort -dictionary [getVisibleMeshes]] {
  171. set part [plv_globalreg getpaircount $mesh]
  172. if {$part < $min} {
  173.     puts "$mesh: $part partners"
  174. }
  175.     }
  176. }
  177. proc globalRegDeleteDialog {} {
  178.     set grd [toplevel .globalregdel]
  179.     wm resizable $grd 0 0
  180.     wm title $grd "Delete from globalreg"
  181.     button $grd.all -text "Clear all registration pairs!" 
  182. -command "plv_globalreg reset"
  183.     button $grd.current -text "Clear all pairs involving current mesh" 
  184. -command {plv_globalreg killpair [globalset theMesh] *}
  185.     button $grd.these -text "Clear pair selected in ICP dialog" 
  186. -command {plv_globalreg killpair 
  187.     [globalset regICPFrom] [globalset regICPTo]}
  188.     set f [frame $grd.f1]
  189.     set fb [frame $f.fb]
  190.     button $fb.b1 -text "Clear all" 
  191. -command { plv_globalreg deleteautopairs $auto_del_thrsh }
  192.     button $fb.b2 
  193. -text "Clear current mesh's" 
  194. -command { 
  195.     plv_globalreg deleteautopairs $auto_del_thrsh $theMesh
  196. }
  197.     packchildren $fb -side top -fill x -expand 1
  198.     label $f.gt -text "auto pairs greater than"
  199.     entry  $f.entry 
  200.     -textvariable auto_del_thrsh 
  201.     -relief sunken -width 6
  202.     globalset auto_del_thrsh 1.0
  203.     packchildren $f -side left -fill x -expand 1
  204.     button $grd.cancel -text "Close" -command "destroy $grd"
  205.     packchildren $grd -side top -fill x -expand 1
  206. }
  207. proc chooseICP {a b} {
  208.     global regICPTo regICPFrom
  209.     set regICPFrom $a
  210.     set regICPTo $b
  211.     ICPdialog
  212.     showAllMeshes 0
  213.     showMesh $a
  214.     showMesh $b
  215. }
  216. proc badAlignDialog {str} {
  217.     if {[winfo exists .badalign]} {
  218. destroy .badalign
  219.     }
  220.     set bad [toplevel .badalign]
  221.     wm resizable $bad 0 0
  222.     wm title $bad "Bad aligns"
  223.     set l [split $str]
  224.     for {set i 0} {$i < [llength $l]} {incr i 4} {
  225. if {[expr $i + 3] < [llength $l]} {
  226.     button $bad.$i 
  227. -text [join [lrange $l $i [expr $i + 3]]]
  228. -command "chooseICP [lindex $l [expr $i + 0]] [lindex $l [expr $i + 1]]"
  229. }
  230.     }
  231.     packchildren $bad -side top -fill x -expand 1
  232. }